@forsion/extend 0.8.3 → 0.9.1
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/CHANGELOG.md +67 -0
- package/README.md +2 -0
- package/SIGNATURE +9 -7
- package/dist/desktop.mjs +51 -38
- package/dist/main.js +759 -65
- package/manifest.json +4 -4
- package/package.json +4 -1
- package/spaces/guide/space.json +13 -0
- package/spaces/penzor/space.json +13 -0
package/dist/main.js
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
"use strict";var __fxExtend=(()=>{var
|
|
2
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Pl(t,e){return Al(t)||Cl(t,e)||El(t,e)||Tl()}function El(t,e){if(t){if(typeof t=="string")return oi(t,e);var n={}.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oi(t,e):void 0}}function wn(t){var e,n;function a(o,s){try{var l=t[o](s),c=l.value,u=c instanceof Sl;Promise.resolve(u?c.v:c).then(function(f){if(u){var m=o==="return"&&c.k?o:"next";if(!c.k||f.done)return a(m,f);f=t[m](f).value}i(!!l.done,f)},function(f){a("throw",f)})}catch(f){i(2,f)}}function i(o,s){o===2?e.reject(s):e.resolve({value:s,done:o}),(e=e.next)?a(e.key,e.arg):n=null}this._invoke=function(o,s){return new Promise(function(l,c){var u={key:o,arg:s,resolve:l,reject:c,next:null};n?n=n.next=u:(e=n=u,a(o,s))})},typeof t.return!="function"&&(this.return=void 0)}wn.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},wn.prototype.next=function(t){return this._invoke("next",t)},wn.prototype.throw=function(t){return this._invoke("throw",t)},wn.prototype.return=function(t){return this._invoke("return",t)};var ki=Object.entries,si=Object.setPrototypeOf,Rl=Object.isFrozen,Ml=Object.getPrototypeOf,Il=Object.getOwnPropertyDescriptor,ke=Object.freeze,_e=Object.seal,Nt=Object.create,wi=typeof Reflect<"u"&&Reflect,Ar=wi.apply,Cr=wi.construct;ke||(ke=function(e){return e});_e||(_e=function(e){return e});Ar||(Ar=function(e,n){for(var a=arguments.length,i=new Array(a>2?a-2:0),o=2;o<a;o++)i[o-2]=arguments[o];return e.apply(n,i)});Cr||(Cr=function(e){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return new e(...a)});var bt=xe(Array.prototype.forEach);Array.prototype.indexOf;var Ll=xe(Array.prototype.lastIndexOf),li=xe(Array.prototype.pop),jt=xe(Array.prototype.push);Array.prototype.slice;var Dl=xe(Array.prototype.splice),Ot=Array.isArray,Kt=xe(String.prototype.toLowerCase),vr=xe(String.prototype.toString),ci=xe(String.prototype.match),Xt=xe(String.prototype.replace),ui=xe(String.prototype.indexOf),zl=xe(String.prototype.trim),Nl=xe(Number.prototype.toString),Ol=xe(Boolean.prototype.toString),di=typeof BigInt>"u"?null:xe(BigInt.prototype.toString),pi=typeof Symbol>"u"?null:xe(Symbol.prototype.toString),Pe=xe(Object.prototype.hasOwnProperty),Vt=xe(Object.prototype.toString),Ae=xe(RegExp.prototype.test),ot=Bl(TypeError);function xe(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return Ar(t,e,a)}}function Bl(t){return function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];return Cr(t,n)}}function Y(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Kt;if(si&&si(t,null),!Ot(e))return t;let a=e.length;for(;a--;){let i=e[a];if(typeof i=="string"){let o=n(i);o!==i&&(Rl(e)||(e[a]=o),i=o)}t[i]=!0}return t}function Fl(t){for(let e=0;e<t.length;e++)Pe(t,e)||(t[e]=null);return t}function Ie(t){let e=Nt(null);for(let a of ki(t)){var n=Pl(a,2);let i=n[0],o=n[1];Pe(t,i)&&(Ot(o)?e[i]=Fl(o):o&&typeof o=="object"&&o.constructor===Object?e[i]=Ie(o):e[i]=o)}return e}function $l(t){switch(typeof t){case"string":return t;case"number":return Nl(t);case"boolean":return Ol(t);case"bigint":return di?di(t):"0";case"symbol":return pi?pi(t):"Symbol()";case"undefined":return Vt(t);case"function":case"object":{if(t===null)return Vt(t);let e=t,n=ze(e,"toString");if(typeof n=="function"){let a=n(e);return typeof a=="string"?a:Vt(a)}return Vt(t)}default:return Vt(t)}}function ze(t,e){for(;t!==null;){let a=Il(t,e);if(a){if(a.get)return xe(a.get);if(typeof a.value=="function")return xe(a.value)}t=Ml(t)}function n(){return null}return n}function Ul(t){try{return Ae(t,""),!0}catch{return!1}}var fi=ke(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),yr=ke(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),kr=ke(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Hl=ke(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),wr=ke(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),ql=ke(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),mi=ke(["#text"]),gi=ke(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),_r=ke(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),hi=ke(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),_n=ke(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Wl=_e(/{{[\w\W]*|^[\w\W]*}}/g),jl=_e(/<%[\w\W]*|^[\w\W]*%>/g),Xl=_e(/\${[\w\W]*/g),Vl=_e(/^data-[\-\w.\u00B7-\uFFFF]+$/),Kl=_e(/^aria-[\-\w]+$/),bi=_e(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Jl=_e(/^(?:\w+script|data):/i),Yl=_e(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Gl=_e(/^html$/i),Zl=_e(/^[a-z][.\w]*(-[.\w]+)+$/i),xi=_e(/<[/\w!]/g),vi=_e(/<[/\w]/g),Ql=_e(/<\/no(script|embed|frames)/i),ec=_e(/\/>/i),Me={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},_i=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],tc=ke(Y({},_i)),nc=(function(){let t={};return bt(_i,e=>{t[e]=_e(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))}),ke(t)})(),rc=function(){return typeof window>"u"?null:window},ac=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let a=null,i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(a=n.getAttribute(i));let o="dompurify"+(a?"#"+a:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},yi=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},st=function(e,n,a,i){return Pe(e,n)&&Ot(e[n])?Y(i.base?Ie(i.base):{},e[n],i.transform):a},Sr=function(e,n,a){let i=Pe(e,n)?e[n]:void 0;return i&&typeof i=="object"?Ie(i):a()};function Si(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:rc(),e=A=>Si(A);if(e.version="3.4.16",e.removed=[],!t||!t.document||t.document.nodeType!==Me.document||!t.Element)return e.isSupported=!1,e;let n=t.document,a=n,i=a.currentScript;t.DocumentFragment;let o=t.HTMLTemplateElement,s=t.Node,l=t.Element,c=t.NodeFilter;t.NamedNodeMap===void 0&&(t.NamedNodeMap||t.MozNamedAttrMap),t.HTMLFormElement;let u=t.DOMParser,f=t.trustedTypes,m=l.prototype,d=ze(m,"cloneNode"),g=ze(m,"remove"),h=ze(m,"removeAttributeNode"),v=ze(m,"nextSibling"),k=ze(m,"childNodes"),y=ze(m,"parentNode"),x=ze(m,"shadowRoot"),w=ze(m,"attributes"),C=s&&s.prototype?ze(s.prototype,"nodeType"):null,R=s&&s.prototype?ze(s.prototype,"nodeName"):null,U=s&&s.prototype?ze(s.prototype,"ownerDocument"):null,J=function(p){return C?C(p):p.nodeType},H=function(p){return R?R(p):p.nodeName};if(typeof o=="function"){let A=n.createElement("template");A.content&&A.content.ownerDocument&&(n=A.content.ownerDocument)}let V,ee="",z,Q=!1,oe=0,Ee=function(){if(oe>0)throw ot('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},I=function(p){Ee(),oe++;try{return V.createHTML(p)}finally{oe--}},pe=function(p){Ee(),oe++;try{return V.createScriptURL(p)}finally{oe--}},ft=function(){return Q||(z=ac(f,i),Q=!0),z},cn=n,nr=cn.implementation,Ra=cn.createNodeIterator,Xs=cn.createDocumentFragment,Vs=cn.getElementsByTagName,Ks=a.importNode,se=yi();e.isSupported=typeof ki=="function"&&typeof y=="function"&&nr&&nr.createHTMLDocument!==void 0;let Js=Wl,Ys=jl,Gs=Xl,Zs=Vl,Qs=Kl,el=Jl,Ma=Yl,tl=Zl,Ia=bi,le=null,rr=Y({},[...fi,...yr,...kr,...wr,...mi]),ce=null,ar=Y({},[...gi,..._r,...hi,..._n]),We=Object.seal(Nt(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ht=null,La=null,rt=Object.seal(Nt(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Da=!0,ir=!0,za=!1,Na=!0,at=!1,mt=!0,gt=!1,or=!1,un=null,dn=null,sr=!1,Pt=!1,pn=!1,fn=!1,Oa=!0,Ba=!1,Fa="user-content-",lr=!0,cr=!1,Et={},Rt=null,$a=Y({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),Ua=null,Ha=Y({},["audio","video","img","source","image","track"]),qa=null,Wa=Y({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),mn="http://www.w3.org/1998/Math/MathML",gn="http://www.w3.org/2000/svg",je="http://www.w3.org/1999/xhtml",Mt=je,ur=!1,dr=null,nl=Y({},[mn,gn,je],vr),ja=ke(["mi","mo","mn","ms","mtext"]),pr=Y({},ja),Xa=ke(["annotation-xml"]),fr=Y({},Xa),rl=Y({},["title","style","font","a","script"]),qt=null,al=["application/xhtml+xml","text/html"],il="text/html",fe=null,It=null,ol=n.createElement("form"),Va=function(p){return p instanceof RegExp||p instanceof Function},mr=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(It&&It===p)return;(!p||typeof p!="object")&&(p={}),p=Ie(p),qt=al.indexOf(p.PARSER_MEDIA_TYPE)===-1?il:p.PARSER_MEDIA_TYPE,fe=qt==="application/xhtml+xml"?vr:Kt,le=st(p,"ALLOWED_TAGS",rr,{transform:fe}),ce=st(p,"ALLOWED_ATTR",ar,{transform:fe}),dr=st(p,"ALLOWED_NAMESPACES",nl,{transform:vr}),qa=st(p,"ADD_URI_SAFE_ATTR",Wa,{transform:fe,base:Wa}),Ua=st(p,"ADD_DATA_URI_TAGS",Ha,{transform:fe,base:Ha}),Rt=st(p,"FORBID_CONTENTS",$a,{transform:fe}),Ht=st(p,"FORBID_TAGS",Ie({}),{transform:fe}),La=st(p,"FORBID_ATTR",Ie({}),{transform:fe}),Et=Pe(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?Ie(p.USE_PROFILES):p.USE_PROFILES:!1,Da=p.ALLOW_ARIA_ATTR!==!1,ir=p.ALLOW_DATA_ATTR!==!1,za=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Na=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,at=p.SAFE_FOR_TEMPLATES||!1,mt=p.SAFE_FOR_XML!==!1,gt=p.WHOLE_DOCUMENT||!1,Pt=p.RETURN_DOM||!1,pn=p.RETURN_DOM_FRAGMENT||!1,fn=p.RETURN_TRUSTED_TYPE||!1,sr=p.FORCE_BODY||!1,Oa=p.SANITIZE_DOM!==!1,Ba=p.SANITIZE_NAMED_PROPS||!1,lr=p.KEEP_CONTENT!==!1,cr=p.IN_PLACE||!1,Ia=Ul(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:bi,Mt=typeof p.NAMESPACE=="string"?p.NAMESPACE:je,pr=Sr(p,"MATHML_TEXT_INTEGRATION_POINTS",()=>Y({},ja)),fr=Sr(p,"HTML_INTEGRATION_POINTS",()=>Y({},Xa));let b=Sr(p,"CUSTOM_ELEMENT_HANDLING",()=>Nt(null));if(We=Nt(null),Pe(b,"tagNameCheck")&&Va(b.tagNameCheck)&&(We.tagNameCheck=b.tagNameCheck),Pe(b,"attributeNameCheck")&&Va(b.attributeNameCheck)&&(We.attributeNameCheck=b.attributeNameCheck),Pe(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(We.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),_e(We),at&&(ir=!1),pn&&(Pt=!0),Et&&(le=Y({},mi),ce=Nt(null),Et.html===!0&&(Y(le,fi),Y(ce,gi)),Et.svg===!0&&(Y(le,yr),Y(ce,_r),Y(ce,_n)),Et.svgFilters===!0&&(Y(le,kr),Y(ce,_r),Y(ce,_n)),Et.mathMl===!0&&(Y(le,wr),Y(ce,hi),Y(ce,_n))),rt.tagCheck=null,rt.attributeCheck=null,Pe(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?rt.tagCheck=p.ADD_TAGS:Ot(p.ADD_TAGS)&&(le===rr&&(le=Ie(le)),Y(le,p.ADD_TAGS,fe))),Pe(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?rt.attributeCheck=p.ADD_ATTR:Ot(p.ADD_ATTR)&&(ce===ar&&(ce=Ie(ce)),Y(ce,p.ADD_ATTR,fe))),Pe(p,"ADD_FORBID_CONTENTS")&&Ot(p.ADD_FORBID_CONTENTS)&&(Rt===$a&&(Rt=Ie(Rt)),Y(Rt,p.ADD_FORBID_CONTENTS,fe)),lr&&(le["#text"]=!0),gt&&Y(le,["html","head","body"]),le.table&&(Y(le,["tbody"]),delete Ht.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw ot('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ot('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let _=V;V=p.TRUSTED_TYPES_POLICY;try{ee=I("")}catch(T){throw V=_,T}}else p.TRUSTED_TYPES_POLICY===null?(V=void 0,ee=""):(V===void 0&&(V=ft()),V&&typeof ee=="string"&&(ee=I("")));ke&&ke(p),It=p},Ka=Y({},[...yr,...kr,...Hl]),Ja=Y({},[...wr,...ql]),sl=function(p,b,_){return b.namespaceURI===je?p==="svg":b.namespaceURI===mn?p==="svg"&&(_==="annotation-xml"||pr[_]):!!Ka[p]},ll=function(p,b,_){return b.namespaceURI===je?p==="math":b.namespaceURI===gn?p==="math"&&fr[_]:!!Ja[p]},cl=function(p,b,_){return b.namespaceURI===gn&&!fr[_]||b.namespaceURI===mn&&!pr[_]?!1:!Ja[p]&&(rl[p]||!Ka[p])},ul=function(p){let b=y(p);(!b||!b.tagName)&&(b={namespaceURI:Mt,tagName:"template"});let _=Kt(p.tagName),T=Kt(b.tagName);return dr[p.namespaceURI]?p.namespaceURI===gn?sl(_,b,T):p.namespaceURI===mn?ll(_,b,T):p.namespaceURI===je?cl(_,b,T):!!(qt==="application/xhtml+xml"&&dr[p.namespaceURI]):!1},it=function(p){jt(e.removed,{element:p});try{y(p).removeChild(p)}catch{if(g(p),!y(p))throw ot("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ya=function(p,b,_){try{h(p,b)}catch{try{p.removeAttribute(_)}catch{}}},hn=function(p){bn(p);let b=k(p);if(b){let T=[];bt(b,L=>{jt(T,L)}),bt(T,L=>{try{g(L)}catch{}})}let _=w(p);if(_)for(let T=_.length-1;T>=0;--T){let L=_[T],q=L&&L.name;typeof q=="string"&&Ya(p,L,q)}},ht=function(p,b,_){if(!_)try{_=b.getAttributeNode(p)}catch{_=null}jt(e.removed,{attribute:_||null,from:b});try{_?h(b,_):b.removeAttribute(p)}catch{try{b.removeAttribute(p)}catch{}}if(p==="is")if(Pt||pn)try{it(b)}catch{}else try{b.setAttribute(p,"")}catch{}},dl=function(p){let b=w(p);if(b)for(let _=b.length-1;_>=0;--_){let T=b[_],L=T&&T.name;typeof L!="string"||ce[fe(L)]||Ya(p,T,L)}},bn=function(p){let b=[p];for(;b.length>0;){let _=b.pop();J(_)===Me.element&&dl(_);let T=k(_);if(T)for(let L=T.length-1;L>=0;--L)b.push(T[L])}},Ga=function(p,b){return mt?p==="patchsrc"?!0:p==="for"&&b!=="label"&&b!=="output":!1},pl=function(p){if(!mt)return;let b=[p];for(;b.length>0;){let _=b.pop(),T=J(_);if(T===Me.processingInstruction||T===Me.comment&&Ae(vi,_.data)){try{g(_)}catch{}continue}if(T===Me.element){let q=_,K=fe(H(_));try{q.hasAttribute&&q.hasAttribute("patchsrc")&&q.removeAttribute("patchsrc"),q.hasAttribute&&q.hasAttribute("for")&&Ga("for",K)&&q.removeAttribute("for")}catch{}}let L=k(_);if(L)for(let q=L.length-1;q>=0;--q)b.push(L[q])}},Za=function(p){let b=null,_=null;if(sr)p="<remove></remove>"+p;else{let q=ci(p,/^[\r\n\t ]+/);_=q&&q[0]}qt==="application/xhtml+xml"&&Mt===je&&(p='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+p+"</body></html>");let T=V?I(p):p;if(Mt===je)try{b=new u().parseFromString(T,qt)}catch{}if(!b||!b.documentElement){b=nr.createDocument(Mt,"template",null);try{b.documentElement.innerHTML=ur?ee:T}catch{}}let L=b.body||b.documentElement;return p&&_&&L.insertBefore(n.createTextNode(_),L.childNodes[0]||null),Mt===je?Vs.call(b,gt?"html":"body")[0]:gt?b.documentElement:L},Qa=function(p){let b=U?U(p):p.ownerDocument;return Ra.call(b||p,p,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},xn=function(p){return p=Xt(p,Js," "),p=Xt(p,Ys," "),p=Xt(p,Gs," "),p},gr=function(p){var b;p.normalize();let _=U?U(p):p.ownerDocument,T=Ra.call(_||p,p,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),L=T.nextNode();for(;L;)L.data=xn(L.data),L=T.nextNode();let q=(b=p.querySelectorAll)===null||b===void 0?void 0:b.call(p,"template");q&&bt(q,K=>{Lt(K.content)&&gr(K.content)})},vn=function(p){let b=R?R(p):null;return typeof b!="string"||fe(b)!=="form"?!1:typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||p.attributes!==w(p)||typeof p.removeAttribute!="function"||typeof p.removeAttributeNode!="function"||typeof p.getAttributeNode!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function"||p.nodeType!==C(p)||p.childNodes!==k(p)},Lt=function(p){if(!C||typeof p!="object"||p===null)return!1;try{return C(p)===Me.documentFragment}catch{return!1}},Wt=function(p){if(!C||typeof p!="object"||p===null)return!1;try{return typeof C(p)=="number"}catch{return!1}};function Xe(A,p,b){A.length!==0&&bt(A,_=>{_.call(e,p,b,It)})}let fl=function(p,b){return!!(mt&&p.hasChildNodes()&&!Wt(p.firstElementChild)&&Ae(xi,p.textContent)&&Ae(xi,p.innerHTML)||mt&&p.namespaceURI===je&&tc[b]&&(Wt(p.firstElementChild)||typeof p.textContent=="string"&&Ae(nc[b],p.textContent))||p.nodeType===Me.processingInstruction||mt&&p.nodeType===Me.comment&&Ae(vi,p.data))},yn=function(p,b){if(p instanceof RegExp)return Ae(p,b);if(p instanceof Function){for(var _=arguments.length,T=new Array(_>2?_-2:0),L=2;L<_;L++)T[L-2]=arguments[L];return!!p(b,...T)}return!1},ml=function(p,b,_){if(!Ht[b]&&ri(b)&&yn(We.tagNameCheck,b))return!1;if(lr&&!Rt[b]){let T=y(p),L=k(p);if(L&&T){let q=L.length;for(let K=q-1;K>=0;--K){let de=p===_?d(L[K],!0):L[K];T.insertBefore(de,v(p))}}}return it(p),!0},ei=function(p,b,_,T){return p.length===0?b:b===_||b===T?Ie(b):b},Dt=function(p,b){return p===b||y(p)!==null?!1:(cr&&bn(p),!0)},ti=function(p,b){if(Xe(se.beforeSanitizeElements,p,null),Dt(p,b))return!0;if(vn(p))return it(p),!0;let _=fe(H(p));if(le=ei(se.uponSanitizeElement,le,rr,un),Xe(se.uponSanitizeElement,p,{tagName:_,allowedTags:le}),Dt(p,b))return!0;if(fl(p,_))return it(p),!0;if(Ht[_]||!(rt.tagCheck instanceof Function&&rt.tagCheck(_))&&!le[_]){let T=ml(p,_,b);return T===!1&&(Xe(se.afterSanitizeElements,p,null),Dt(p,b))?!0:T}if(J(p)===Me.element&&!ul(p)||(_==="noscript"||_==="noembed"||_==="noframes")&&Ae(Ql,p.innerHTML))return it(p),!0;if(at&&p.nodeType===Me.text){let T=xn(p.textContent);p.textContent!==T&&(jt(e.removed,{element:p.cloneNode()}),p.textContent=T)}return Xe(se.afterSanitizeElements,p,null),Dt(p,b)},ni=function(p,b,_){if(La[b]||Ga(b,p)||Oa&&(b==="id"||b==="name")&&(_ in n||_ in ol))return!1;let T=ce[b]||rt.attributeCheck instanceof Function&&rt.attributeCheck(b,p);return ir&&Ae(Zs,b)||Da&&Ae(Qs,b)?!0:T?qa[b]||Ae(Ia,Xt(_,Ma,""))||(b==="src"||b==="xlink:href"||b==="href")&&p!=="script"&&ui(_,"data:")===0&&Ua[p]||za&&!Ae(el,Xt(_,Ma,""))?!0:!_:ri(p)&&yn(We.tagNameCheck,p)&&yn(We.attributeNameCheck,b,p)||b==="is"&&We.allowCustomizedBuiltInElements&&yn(We.tagNameCheck,_)},gl=Y({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),ri=function(p){return!gl[Kt(p)]&&Ae(tl,p)},hl=function(p,b,_,T){if(V&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!_)switch(f.getAttributeType(p,b)){case"TrustedHTML":return I(T);case"TrustedScriptURL":return pe(T)}return T},bl=function(p,b,_,T){try{return _?p.setAttributeNS(_,b,T):p.setAttribute(b,T),vn(p)?(it(p),!1):!0}catch{return ht(b,p),!1}},ai=function(p,b){if(Xe(se.beforeSanitizeAttributes,p,null),Dt(p,b))return;let _=p.attributes;if(!_||vn(p))return;ce=ei(se.uponSanitizeAttribute,ce,ar,dn);let T={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ce,forceKeepAttr:void 0},L=_.length,q=fe(p.nodeName);for(;L--;){let K=_[L],de=K.name,De=K.namespaceURI,Re=K.value,zt=fe(de),br=Re,Te=de==="value"?br:zl(br),ii=!1;if(T.attrName=zt,T.attrValue=Te,T.keepAttr=!0,T.forceKeepAttr=void 0,Xe(se.uponSanitizeAttribute,p,T),Te=T.attrValue,Ba&&(zt==="id"||zt==="name")&&ui(Te,Fa)!==0&&(ht(de,p,K),Te=Fa+Te,ii=!0),mt&&Ae(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Te)){ht(de,p,K);continue}if(zt==="attributename"&&ci(Te,"href")){ht(de,p,K);continue}if(!T.forceKeepAttr){if(!T.keepAttr){ht(de,p,K);continue}if(!Na&&Ae(ec,Te)){ht(de,p,K);continue}if(at&&(Te=xn(Te)),!ni(q,zt,Te)){ht(de,p,K);continue}Te=hl(q,zt,De,Te),Te!==br&&bl(p,de,De,Te)&&ii&&li(e.removed)}}Xe(se.afterSanitizeAttributes,p,null),Dt(p,b)},kn=function(p){let b=null,_=Qa(p);for(Xe(se.beforeSanitizeShadowDOM,p,null);b=_.nextNode();)if(Xe(se.uponSanitizeShadowNode,b,null),ti(b,p),ai(b,p),Lt(b.content)&&kn(b.content),J(b)===Me.element){let T=x(b);Lt(T)&&(hr(T),kn(T))}Xe(se.afterSanitizeShadowDOM,p,null)},hr=function(p){let b=[{node:p,shadow:null}];for(;b.length>0;){let _=b.pop();if(_.shadow){kn(_.shadow);continue}let T=_.node,L=J(T)===Me.element,q=k(T);if(q)for(let K=q.length-1;K>=0;--K)b.push({node:q[K],shadow:null});if(L){let K=R?R(T):null;if(typeof K=="string"&&fe(K)==="template"){let de=T.content;Lt(de)&&b.push({node:de,shadow:null})}}if(L){let K=x(T);Lt(K)&&b.push({node:null,shadow:K},{node:K,shadow:null})}}};return e.sanitize=function(A){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,_=null,T=null,L=null;if(ur=!A,ur&&(A="<!-->"),typeof A!="string"&&!Wt(A)&&(A=$l(A),typeof A!="string"))throw ot("dirty is not a string, aborting");if(!e.isSupported)return A;or?(le=un,ce=dn):mr(p),(se.uponSanitizeElement.length>0||se.uponSanitizeAttribute.length>0)&&(le=Ie(le)),se.uponSanitizeAttribute.length>0&&(ce=Ie(ce)),e.removed=[];let q=cr&&typeof A!="string"&&Wt(A);if(q){pl(A);let De=H(A);if(typeof De=="string"){let Re=fe(De);if(!le[Re]||Ht[Re])throw hn(A),ot("root node is forbidden and cannot be sanitized in-place")}if(vn(A))throw hn(A),ot("root node is clobbered and cannot be sanitized in-place");try{hr(A)}catch(Re){throw hn(A),Re}}else if(Wt(A))b=Za("<!---->"),_=b.ownerDocument.importNode(A,!0),_.nodeType===Me.element&&_.nodeName==="BODY"||_.nodeName==="HTML"?b=_:b.appendChild(_),hr(b);else{if(!Pt&&!at&&!gt&&A.indexOf("<")===-1)return V&&fn?I(A):A;if(b=Za(A),!b)return Pt?null:fn?ee:""}b&&sr&&it(b.firstChild);let K=q?A:b;try{let De=Qa(K);for(;T=De.nextNode();)ti(T,K),ai(T,K),Lt(T.content)&&kn(T.content)}catch(De){throw q&&(hn(A),bt(e.removed,Re=>{Re.element&&bn(Re.element)})),De}if(q){let De=!1;if(bt(e.removed,Re=>{Re.element&&(Re.element===A&&(De=!0),bn(Re.element))}),De)throw ot("a node selected for removal could not be safely returned; refusing to sanitize in place");return at&&gr(A),A}if(Pt){if(at&&gr(b),pn)for(L=Xs.call(b.ownerDocument);b.firstChild;)L.appendChild(b.firstChild);else L=b;return(ce.shadowroot||ce.shadowrootmode)&&(L=Ks.call(a,L,!0)),L}let de=gt?b.outerHTML:b.innerHTML;return gt&&le["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&Ae(Gl,b.ownerDocument.doctype.name)&&(de="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
|
|
3
|
-
`+
|
|
4
|
-
]`).replace("lheading",
|
|
5
|
-
`),n=
|
|
6
|
-
`)}function
|
|
7
|
-
`).map(
|
|
8
|
-
`)}function
|
|
9
|
-
`),depth:
|
|
10
|
-
`)}}blockquote(
|
|
1
|
+
"use strict";var __fxExtend=(()=>{var Wo=Object.defineProperty;var mu=Object.getOwnPropertyDescriptor;var gu=Object.getOwnPropertyNames;var hu=Object.prototype.hasOwnProperty;var bu=(e,t)=>{for(var n in t)Wo(e,n,{get:t[n],enumerable:!0})},vu=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of gu(t))!hu.call(e,a)&&a!==n&&Wo(e,a,{get:()=>t[a],enumerable:!(o=mu(t,a))||o.enumerable});return e};var yu=e=>vu(Wo({},"__esModule",{value:!0}),e);var ih={};bu(ih,{dispose:()=>tu});function xu(e,t){this.v=e,this.k=t}function $i(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function ku(e){if(Array.isArray(e))return e}function wu(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var o,a,i,s,l=[],c=!0,d=!1;try{if(i=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(o=i.call(n)).done)&&(l.push(o.value),l.length!==t);c=!0);}catch(f){d=!0,a=f}finally{try{if(!c&&n.return!=null&&(s=n.return(),Object(s)!==s))return}finally{if(d)throw a}}return l}}function zu(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _u(e,t){return ku(e)||wu(e,t)||Su(e,t)||zu()}function Su(e,t){if(e){if(typeof e=="string")return $i(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$i(e,t):void 0}}function Jr(e){var t,n;function o(i,s){try{var l=e[i](s),c=l.value,d=c instanceof xu;Promise.resolve(d?c.v:c).then(function(f){if(d){var u=i==="return"&&c.k?i:"next";if(!c.k||f.done)return o(u,f);f=e[u](f).value}a(!!l.done,f)},function(f){o("throw",f)})}catch(f){a(2,f)}}function a(i,s){i===2?t.reject(s):t.resolve({value:s,done:i}),(t=t.next)?o(t.key,t.arg):n=null}this._invoke=function(i,s){return new Promise(function(l,c){var d={key:i,arg:s,resolve:l,reject:c,next:null};n?n=n.next=d:(t=n=d,o(i,s))})},typeof e.return!="function"&&(this.return=void 0)}Jr.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},Jr.prototype.next=function(e){return this._invoke("next",e)},Jr.prototype.throw=function(e){return this._invoke("throw",e)},Jr.prototype.return=function(e){return this._invoke("return",e)};var es=Object.entries,Bi=Object.setPrototypeOf,Cu=Object.isFrozen,Tu=Object.getPrototypeOf,Au=Object.getOwnPropertyDescriptor,$e=Object.freeze,Ve=Object.seal,Jn=Object.create,ts=typeof Reflect<"u"&&Reflect,Qo=ts.apply,ea=ts.construct;$e||($e=function(t){return t});Ve||(Ve=function(t){return t});Qo||(Qo=function(t,n){for(var o=arguments.length,a=new Array(o>2?o-2:0),i=2;i<o;i++)a[i-2]=arguments[i];return t.apply(n,a)});ea||(ea=function(t){for(var n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];return new t(...o)});var An=Fe(Array.prototype.forEach);Array.prototype.indexOf;var Eu=Fe(Array.prototype.lastIndexOf),Ui=Fe(Array.prototype.pop),hr=Fe(Array.prototype.push);Array.prototype.slice;var Pu=Fe(Array.prototype.splice),Yn=Array.isArray,yr=Fe(String.prototype.toLowerCase),Go=Fe(String.prototype.toString),qi=Fe(String.prototype.match),br=Fe(String.prototype.replace),Hi=Fe(String.prototype.indexOf),Mu=Fe(String.prototype.trim),Iu=Fe(Number.prototype.toString),Ru=Fe(Boolean.prototype.toString),Vi=typeof BigInt>"u"?null:Fe(BigInt.prototype.toString),ji=typeof Symbol>"u"?null:Fe(Symbol.prototype.toString),rt=Fe(Object.prototype.hasOwnProperty),vr=Fe(Object.prototype.toString),Ke=Fe(RegExp.prototype.test),pn=Lu(TypeError);function Fe(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),a=1;a<n;a++)o[a-1]=arguments[a];return Qo(e,t,o)}}function Lu(e){return function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return ea(e,n)}}function ge(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:yr;if(Bi&&Bi(e,null),!Yn(t))return e;let o=t.length;for(;o--;){let a=t[o];if(typeof a=="string"){let i=n(a);i!==a&&(Cu(t)||(t[o]=i),a=i)}e[a]=!0}return e}function Du(e){for(let t=0;t<e.length;t++)rt(e,t)||(e[t]=null);return e}function lt(e){let t=Jn(null);for(let o of es(e)){var n=_u(o,2);let a=n[0],i=n[1];rt(e,a)&&(Yn(i)?t[a]=Du(i):i&&typeof i=="object"&&i.constructor===Object?t[a]=lt(i):t[a]=i)}return t}function Nu(e){switch(typeof e){case"string":return e;case"number":return Iu(e);case"boolean":return Ru(e);case"bigint":return Vi?Vi(e):"0";case"symbol":return ji?ji(e):"Symbol()";case"undefined":return vr(e);case"function":case"object":{if(e===null)return vr(e);let t=e,n=ht(t,"toString");if(typeof n=="function"){let o=n(t);return typeof o=="string"?o:vr(o)}return vr(e)}default:return vr(e)}}function ht(e,t){for(;e!==null;){let o=Au(e,t);if(o){if(o.get)return Fe(o.get);if(typeof o.value=="function")return Fe(o.value)}e=Tu(e)}function n(){return null}return n}function Ou(e){try{return Ke(e,""),!0}catch{return!1}}var Wi=$e(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Xo=$e(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Ko=$e(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Fu=$e(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Jo=$e(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),$u=$e(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Gi=$e(["#text"]),Xi=$e(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),Yo=$e(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Ki=$e(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Yr=$e(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Bu=Ve(/{{[\w\W]*|^[\w\W]*}}/g),Uu=Ve(/<%[\w\W]*|^[\w\W]*%>/g),qu=Ve(/\${[\w\W]*/g),Hu=Ve(/^data-[\-\w.\u00B7-\uFFFF]+$/),Vu=Ve(/^aria-[\-\w]+$/),Ji=Ve(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ju=Ve(/^(?:\w+script|data):/i),Wu=Ve(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Gu=Ve(/^html$/i),Xu=Ve(/^[a-z][.\w]*(-[.\w]+)+$/i),Yi=Ve(/<[/\w!]/g),Zi=Ve(/<[/\w]/g),Ku=Ve(/<\/no(script|embed|frames)/i),Ju=Ve(/\/>/i),st={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},ns=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],Yu=$e(ge({},ns)),Zu=(function(){let e={};return An(ns,t=>{e[t]=Ve(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),$e(e)})(),Qu=function(){return typeof window>"u"?null:window},ep=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let o=null,a="data-tt-policy-suffix";n&&n.hasAttribute(a)&&(o=n.getAttribute(a));let i="dompurify"+(o?"#"+o:"");try{return t.createPolicy(i,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},Qi=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},fn=function(t,n,o,a){return rt(t,n)&&Yn(t[n])?ge(a.base?lt(a.base):{},t[n],a.transform):o},Zo=function(t,n,o){let a=rt(t,n)?t[n]:void 0;return a&&typeof a=="object"?lt(a):o()};function rs(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Qu(),t=O=>rs(O);if(t.version="3.4.16",t.removed=[],!e||!e.document||e.document.nodeType!==st.document||!e.Element)return t.isSupported=!1,t;let n=e.document,o=n,a=o.currentScript;e.DocumentFragment;let i=e.HTMLTemplateElement,s=e.Node,l=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let d=e.DOMParser,f=e.trustedTypes,u=l.prototype,p=ht(u,"cloneNode"),g=ht(u,"remove"),m=ht(u,"removeAttributeNode"),y=ht(u,"nextSibling"),_=ht(u,"childNodes"),E=ht(u,"parentNode"),x=ht(u,"shadowRoot"),k=ht(u,"attributes"),R=s&&s.prototype?ht(s.prototype,"nodeType"):null,B=s&&s.prototype?ht(s.prototype,"nodeName"):null,j=s&&s.prototype?ht(s.prototype,"ownerDocument"):null,w=function(h){return R?R(h):h.nodeType},A=function(h){return B?B(h):h.nodeName};if(typeof i=="function"){let O=n.createElement("template");O.content&&O.content.ownerDocument&&(n=O.content.ownerDocument)}let P,I="",N,V=!1,X=0,oe=function(){if(X>0)throw pn('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},b=function(h){oe(),X++;try{return P.createHTML(h)}finally{X--}},C=function(h){oe(),X++;try{return P.createScriptURL(h)}finally{X--}},L=function(){return V||(N=ep(f,a),V=!0),N},K=n,ie=K.implementation,pe=K.createNodeIterator,He=K.createDocumentFragment,Pe=K.getElementsByTagName,yt=o.importNode,ve=Qi();t.isSupported=typeof es=="function"&&typeof E=="function"&&ie&&ie.createHTMLDocument!==void 0;let et=Bu,jt=Uu,kn=qu,wn=Hu,zn=Vu,lr=ju,Wt=Wu,Ye=Xu,Gt=Ji,he=null,Xt=ge({},[...Wi,...Xo,...Ko,...Jo,...Gi]),ye=null,Kt=ge({},[...Xi,...Yo,...Ki,...Yr]),tt=Object.seal(Jn(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),_n=null,Br=null,Dt=Object.seal(Jn(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Ur=!0,Nt=!0,qr=!1,xt=!0,at=!1,nt=!0,pt=!1,Ot=!1,Hn=null,kt=null,Jt=!1,ft=!1,Vn=!1,Sn=!1,cr=!0,dr=!1,jn="user-content-",ur=!0,Wn=!1,Ft={},wt=null,pr=ge({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),$t=null,We=ge({},["audio","video","img","source","image","track"]),Hr=null,fr=ge({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cn="http://www.w3.org/1998/Math/MathML",zt="http://www.w3.org/2000/svg",mt="http://www.w3.org/1999/xhtml",cn=mt,mr=!1,v=null,S=ge({},[Cn,zt,mt],Go),T=$e(["mi","mo","mn","ms","mtext"]),U=ge({},T),H=$e(["annotation-xml"]),W=ge({},H),xe=ge({},["title","style","font","a","script"]),ke=null,Uo=["application/xhtml+xml","text/html"],_t="text/html",Me=null,dn=null,nu=n.createElement("form"),Ci=function(h){return h instanceof RegExp||h instanceof Function},qo=function(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(dn&&dn===h)return;(!h||typeof h!="object")&&(h={}),h=lt(h),ke=Uo.indexOf(h.PARSER_MEDIA_TYPE)===-1?_t:h.PARSER_MEDIA_TYPE,Me=ke==="application/xhtml+xml"?Go:yr,he=fn(h,"ALLOWED_TAGS",Xt,{transform:Me}),ye=fn(h,"ALLOWED_ATTR",Kt,{transform:Me}),v=fn(h,"ALLOWED_NAMESPACES",S,{transform:Go}),Hr=fn(h,"ADD_URI_SAFE_ATTR",fr,{transform:Me,base:fr}),$t=fn(h,"ADD_DATA_URI_TAGS",We,{transform:Me,base:We}),wt=fn(h,"FORBID_CONTENTS",pr,{transform:Me}),_n=fn(h,"FORBID_TAGS",lt({}),{transform:Me}),Br=fn(h,"FORBID_ATTR",lt({}),{transform:Me}),Ft=rt(h,"USE_PROFILES")?h.USE_PROFILES&&typeof h.USE_PROFILES=="object"?lt(h.USE_PROFILES):h.USE_PROFILES:!1,Ur=h.ALLOW_ARIA_ATTR!==!1,Nt=h.ALLOW_DATA_ATTR!==!1,qr=h.ALLOW_UNKNOWN_PROTOCOLS||!1,xt=h.ALLOW_SELF_CLOSE_IN_ATTR!==!1,at=h.SAFE_FOR_TEMPLATES||!1,nt=h.SAFE_FOR_XML!==!1,pt=h.WHOLE_DOCUMENT||!1,ft=h.RETURN_DOM||!1,Vn=h.RETURN_DOM_FRAGMENT||!1,Sn=h.RETURN_TRUSTED_TYPE||!1,Jt=h.FORCE_BODY||!1,cr=h.SANITIZE_DOM!==!1,dr=h.SANITIZE_NAMED_PROPS||!1,ur=h.KEEP_CONTENT!==!1,Wn=h.IN_PLACE||!1,Gt=Ou(h.ALLOWED_URI_REGEXP)?h.ALLOWED_URI_REGEXP:Ji,cn=typeof h.NAMESPACE=="string"?h.NAMESPACE:mt,U=Zo(h,"MATHML_TEXT_INTEGRATION_POINTS",()=>ge({},T)),W=Zo(h,"HTML_INTEGRATION_POINTS",()=>ge({},H));let z=Zo(h,"CUSTOM_ELEMENT_HANDLING",()=>Jn(null));if(tt=Jn(null),rt(z,"tagNameCheck")&&Ci(z.tagNameCheck)&&(tt.tagNameCheck=z.tagNameCheck),rt(z,"attributeNameCheck")&&Ci(z.attributeNameCheck)&&(tt.attributeNameCheck=z.attributeNameCheck),rt(z,"allowCustomizedBuiltInElements")&&typeof z.allowCustomizedBuiltInElements=="boolean"&&(tt.allowCustomizedBuiltInElements=z.allowCustomizedBuiltInElements),Ve(tt),at&&(Nt=!1),Vn&&(ft=!0),Ft&&(he=ge({},Gi),ye=Jn(null),Ft.html===!0&&(ge(he,Wi),ge(ye,Xi)),Ft.svg===!0&&(ge(he,Xo),ge(ye,Yo),ge(ye,Yr)),Ft.svgFilters===!0&&(ge(he,Ko),ge(ye,Yo),ge(ye,Yr)),Ft.mathMl===!0&&(ge(he,Jo),ge(ye,Ki),ge(ye,Yr))),Dt.tagCheck=null,Dt.attributeCheck=null,rt(h,"ADD_TAGS")&&(typeof h.ADD_TAGS=="function"?Dt.tagCheck=h.ADD_TAGS:Yn(h.ADD_TAGS)&&(he===Xt&&(he=lt(he)),ge(he,h.ADD_TAGS,Me))),rt(h,"ADD_ATTR")&&(typeof h.ADD_ATTR=="function"?Dt.attributeCheck=h.ADD_ATTR:Yn(h.ADD_ATTR)&&(ye===Kt&&(ye=lt(ye)),ge(ye,h.ADD_ATTR,Me))),rt(h,"ADD_FORBID_CONTENTS")&&Yn(h.ADD_FORBID_CONTENTS)&&(wt===pr&&(wt=lt(wt)),ge(wt,h.ADD_FORBID_CONTENTS,Me)),ur&&(he["#text"]=!0),pt&&ge(he,["html","head","body"]),he.table&&(ge(he,["tbody"]),delete _n.tbody),h.TRUSTED_TYPES_POLICY){if(typeof h.TRUSTED_TYPES_POLICY.createHTML!="function")throw pn('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof h.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw pn('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let D=P;P=h.TRUSTED_TYPES_POLICY;try{I=b("")}catch($){throw P=D,$}}else h.TRUSTED_TYPES_POLICY===null?(P=void 0,I=""):(P===void 0&&(P=L()),P&&typeof I=="string"&&(I=b("")));$e&&$e(h),dn=h},Ti=ge({},[...Xo,...Ko,...Fu]),Ai=ge({},[...Jo,...$u]),ru=function(h,z,D){return z.namespaceURI===mt?h==="svg":z.namespaceURI===Cn?h==="svg"&&(D==="annotation-xml"||U[D]):!!Ti[h]},ou=function(h,z,D){return z.namespaceURI===mt?h==="math":z.namespaceURI===zt?h==="math"&&W[D]:!!Ai[h]},au=function(h,z,D){return z.namespaceURI===zt&&!W[D]||z.namespaceURI===Cn&&!U[D]?!1:!Ai[h]&&(xe[h]||!Ti[h])},iu=function(h){let z=E(h);(!z||!z.tagName)&&(z={namespaceURI:cn,tagName:"template"});let D=yr(h.tagName),$=yr(z.tagName);return v[h.namespaceURI]?h.namespaceURI===zt?ru(D,z,$):h.namespaceURI===Cn?ou(D,z,$):h.namespaceURI===mt?au(D,z,$):!!(ke==="application/xhtml+xml"&&v[h.namespaceURI]):!1},un=function(h){hr(t.removed,{element:h});try{E(h).removeChild(h)}catch{if(g(h),!E(h))throw pn("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Ei=function(h,z,D){try{m(h,z)}catch{try{h.removeAttribute(D)}catch{}}},Vr=function(h){jr(h);let z=_(h);if(z){let $=[];An(z,Z=>{hr($,Z)}),An($,Z=>{try{g(Z)}catch{}})}let D=k(h);if(D)for(let $=D.length-1;$>=0;--$){let Z=D[$],ue=Z&&Z.name;typeof ue=="string"&&Ei(h,Z,ue)}},Tn=function(h,z,D){if(!D)try{D=z.getAttributeNode(h)}catch{D=null}hr(t.removed,{attribute:D||null,from:z});try{D?m(z,D):z.removeAttribute(h)}catch{try{z.removeAttribute(h)}catch{}}if(h==="is")if(ft||Vn)try{un(z)}catch{}else try{z.setAttribute(h,"")}catch{}},su=function(h){let z=k(h);if(z)for(let D=z.length-1;D>=0;--D){let $=z[D],Z=$&&$.name;typeof Z!="string"||ye[Me(Z)]||Ei(h,$,Z)}},jr=function(h){let z=[h];for(;z.length>0;){let D=z.pop();w(D)===st.element&&su(D);let $=_(D);if($)for(let Z=$.length-1;Z>=0;--Z)z.push($[Z])}},Pi=function(h,z){return nt?h==="patchsrc"?!0:h==="for"&&z!=="label"&&z!=="output":!1},lu=function(h){if(!nt)return;let z=[h];for(;z.length>0;){let D=z.pop(),$=w(D);if($===st.processingInstruction||$===st.comment&&Ke(Zi,D.data)){try{g(D)}catch{}continue}if($===st.element){let ue=D,fe=Me(A(D));try{ue.hasAttribute&&ue.hasAttribute("patchsrc")&&ue.removeAttribute("patchsrc"),ue.hasAttribute&&ue.hasAttribute("for")&&Pi("for",fe)&&ue.removeAttribute("for")}catch{}}let Z=_(D);if(Z)for(let ue=Z.length-1;ue>=0;--ue)z.push(Z[ue])}},Mi=function(h){let z=null,D=null;if(Jt)h="<remove></remove>"+h;else{let ue=qi(h,/^[\r\n\t ]+/);D=ue&&ue[0]}ke==="application/xhtml+xml"&&cn===mt&&(h='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+h+"</body></html>");let $=P?b(h):h;if(cn===mt)try{z=new d().parseFromString($,ke)}catch{}if(!z||!z.documentElement){z=ie.createDocument(cn,"template",null);try{z.documentElement.innerHTML=mr?I:$}catch{}}let Z=z.body||z.documentElement;return h&&D&&Z.insertBefore(n.createTextNode(D),Z.childNodes[0]||null),cn===mt?Pe.call(z,pt?"html":"body")[0]:pt?z.documentElement:Z},Ii=function(h){let z=j?j(h):h.ownerDocument;return pe.call(z||h,h,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},Wr=function(h){return h=br(h,et," "),h=br(h,jt," "),h=br(h,kn," "),h},Ho=function(h){var z;h.normalize();let D=j?j(h):h.ownerDocument,$=pe.call(D||h,h,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),Z=$.nextNode();for(;Z;)Z.data=Wr(Z.data),Z=$.nextNode();let ue=(z=h.querySelectorAll)===null||z===void 0?void 0:z.call(h,"template");ue&&An(ue,fe=>{Gn(fe.content)&&Ho(fe.content)})},Gr=function(h){let z=B?B(h):null;return typeof z!="string"||Me(z)!=="form"?!1:typeof h.nodeName!="string"||typeof h.textContent!="string"||typeof h.removeChild!="function"||h.attributes!==k(h)||typeof h.removeAttribute!="function"||typeof h.removeAttributeNode!="function"||typeof h.getAttributeNode!="function"||typeof h.setAttribute!="function"||typeof h.namespaceURI!="string"||typeof h.insertBefore!="function"||typeof h.hasChildNodes!="function"||h.nodeType!==R(h)||h.childNodes!==_(h)},Gn=function(h){if(!R||typeof h!="object"||h===null)return!1;try{return R(h)===st.documentFragment}catch{return!1}},gr=function(h){if(!R||typeof h!="object"||h===null)return!1;try{return typeof R(h)=="number"}catch{return!1}};function Bt(O,h,z){O.length!==0&&An(O,D=>{D.call(t,h,z,dn)})}let cu=function(h,z){return!!(nt&&h.hasChildNodes()&&!gr(h.firstElementChild)&&Ke(Yi,h.textContent)&&Ke(Yi,h.innerHTML)||nt&&h.namespaceURI===mt&&Yu[z]&&(gr(h.firstElementChild)||typeof h.textContent=="string"&&Ke(Zu[z],h.textContent))||h.nodeType===st.processingInstruction||nt&&h.nodeType===st.comment&&Ke(Zi,h.data))},Xr=function(h,z){if(h instanceof RegExp)return Ke(h,z);if(h instanceof Function){for(var D=arguments.length,$=new Array(D>2?D-2:0),Z=2;Z<D;Z++)$[Z-2]=arguments[Z];return!!h(z,...$)}return!1},du=function(h,z,D){if(!_n[z]&&Ni(z)&&Xr(tt.tagNameCheck,z))return!1;if(ur&&!wt[z]){let $=E(h),Z=_(h);if(Z&&$){let ue=Z.length;for(let fe=ue-1;fe>=0;--fe){let Ie=h===D?p(Z[fe],!0):Z[fe];$.insertBefore(Ie,y(h))}}}return un(h),!0},Ri=function(h,z,D,$){return h.length===0?z:z===D||z===$?lt(z):z},Xn=function(h,z){return h===z||E(h)!==null?!1:(Wn&&jr(h),!0)},Li=function(h,z){if(Bt(ve.beforeSanitizeElements,h,null),Xn(h,z))return!0;if(Gr(h))return un(h),!0;let D=Me(A(h));if(he=Ri(ve.uponSanitizeElement,he,Xt,Hn),Bt(ve.uponSanitizeElement,h,{tagName:D,allowedTags:he}),Xn(h,z))return!0;if(cu(h,D))return un(h),!0;if(_n[D]||!(Dt.tagCheck instanceof Function&&Dt.tagCheck(D))&&!he[D]){let $=du(h,D,z);return $===!1&&(Bt(ve.afterSanitizeElements,h,null),Xn(h,z))?!0:$}if(w(h)===st.element&&!iu(h)||(D==="noscript"||D==="noembed"||D==="noframes")&&Ke(Ku,h.innerHTML))return un(h),!0;if(at&&h.nodeType===st.text){let $=Wr(h.textContent);h.textContent!==$&&(hr(t.removed,{element:h.cloneNode()}),h.textContent=$)}return Bt(ve.afterSanitizeElements,h,null),Xn(h,z)},Di=function(h,z,D){if(Br[z]||Pi(z,h)||cr&&(z==="id"||z==="name")&&(D in n||D in nu))return!1;let $=ye[z]||Dt.attributeCheck instanceof Function&&Dt.attributeCheck(z,h);return Nt&&Ke(wn,z)||Ur&&Ke(zn,z)?!0:$?Hr[z]||Ke(Gt,br(D,Wt,""))||(z==="src"||z==="xlink:href"||z==="href")&&h!=="script"&&Hi(D,"data:")===0&&$t[h]||qr&&!Ke(lr,br(D,Wt,""))?!0:!D:Ni(h)&&Xr(tt.tagNameCheck,h)&&Xr(tt.attributeNameCheck,z,h)||z==="is"&&tt.allowCustomizedBuiltInElements&&Xr(tt.tagNameCheck,D)},uu=ge({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Ni=function(h){return!uu[yr(h)]&&Ke(Ye,h)},pu=function(h,z,D,$){if(P&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!D)switch(f.getAttributeType(h,z)){case"TrustedHTML":return b($);case"TrustedScriptURL":return C($)}return $},fu=function(h,z,D,$){try{return D?h.setAttributeNS(D,z,$):h.setAttribute(z,$),Gr(h)?(un(h),!1):!0}catch{return Tn(z,h),!1}},Oi=function(h,z){if(Bt(ve.beforeSanitizeAttributes,h,null),Xn(h,z))return;let D=h.attributes;if(!D||Gr(h))return;ye=Ri(ve.uponSanitizeAttribute,ye,Kt,kt);let $={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ye,forceKeepAttr:void 0},Z=D.length,ue=Me(h.nodeName);for(;Z--;){let fe=D[Z],Ie=fe.name,gt=fe.namespaceURI,it=fe.value,Kn=Me(Ie),jo=it,Ze=Ie==="value"?jo:Mu(jo),Fi=!1;if($.attrName=Kn,$.attrValue=Ze,$.keepAttr=!0,$.forceKeepAttr=void 0,Bt(ve.uponSanitizeAttribute,h,$),Ze=$.attrValue,dr&&(Kn==="id"||Kn==="name")&&Hi(Ze,jn)!==0&&(Tn(Ie,h,fe),Ze=jn+Ze,Fi=!0),nt&&Ke(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Ze)){Tn(Ie,h,fe);continue}if(Kn==="attributename"&&qi(Ze,"href")){Tn(Ie,h,fe);continue}if(!$.forceKeepAttr){if(!$.keepAttr){Tn(Ie,h,fe);continue}if(!xt&&Ke(Ju,Ze)){Tn(Ie,h,fe);continue}if(at&&(Ze=Wr(Ze)),!Di(ue,Kn,Ze)){Tn(Ie,h,fe);continue}Ze=pu(ue,Kn,gt,Ze),Ze!==jo&&fu(h,Ie,gt,Ze)&&Fi&&Ui(t.removed)}}Bt(ve.afterSanitizeAttributes,h,null),Xn(h,z)},Kr=function(h){let z=null,D=Ii(h);for(Bt(ve.beforeSanitizeShadowDOM,h,null);z=D.nextNode();)if(Bt(ve.uponSanitizeShadowNode,z,null),Li(z,h),Oi(z,h),Gn(z.content)&&Kr(z.content),w(z)===st.element){let $=x(z);Gn($)&&(Vo($),Kr($))}Bt(ve.afterSanitizeShadowDOM,h,null)},Vo=function(h){let z=[{node:h,shadow:null}];for(;z.length>0;){let D=z.pop();if(D.shadow){Kr(D.shadow);continue}let $=D.node,Z=w($)===st.element,ue=_($);if(ue)for(let fe=ue.length-1;fe>=0;--fe)z.push({node:ue[fe],shadow:null});if(Z){let fe=B?B($):null;if(typeof fe=="string"&&Me(fe)==="template"){let Ie=$.content;Gn(Ie)&&z.push({node:Ie,shadow:null})}}if(Z){let fe=x($);Gn(fe)&&z.push({node:null,shadow:fe},{node:fe,shadow:null})}}};return t.sanitize=function(O){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},z=null,D=null,$=null,Z=null;if(mr=!O,mr&&(O="<!-->"),typeof O!="string"&&!gr(O)&&(O=Nu(O),typeof O!="string"))throw pn("dirty is not a string, aborting");if(!t.isSupported)return O;Ot?(he=Hn,ye=kt):qo(h),(ve.uponSanitizeElement.length>0||ve.uponSanitizeAttribute.length>0)&&(he=lt(he)),ve.uponSanitizeAttribute.length>0&&(ye=lt(ye)),t.removed=[];let ue=Wn&&typeof O!="string"&&gr(O);if(ue){lu(O);let gt=A(O);if(typeof gt=="string"){let it=Me(gt);if(!he[it]||_n[it])throw Vr(O),pn("root node is forbidden and cannot be sanitized in-place")}if(Gr(O))throw Vr(O),pn("root node is clobbered and cannot be sanitized in-place");try{Vo(O)}catch(it){throw Vr(O),it}}else if(gr(O))z=Mi("<!---->"),D=z.ownerDocument.importNode(O,!0),D.nodeType===st.element&&D.nodeName==="BODY"||D.nodeName==="HTML"?z=D:z.appendChild(D),Vo(z);else{if(!ft&&!at&&!pt&&O.indexOf("<")===-1)return P&&Sn?b(O):O;if(z=Mi(O),!z)return ft?null:Sn?I:""}z&&Jt&&un(z.firstChild);let fe=ue?O:z;try{let gt=Ii(fe);for(;$=gt.nextNode();)Li($,fe),Oi($,fe),Gn($.content)&&Kr($.content)}catch(gt){throw ue&&(Vr(O),An(t.removed,it=>{it.element&&jr(it.element)})),gt}if(ue){let gt=!1;if(An(t.removed,it=>{it.element&&(it.element===O&&(gt=!0),jr(it.element))}),gt)throw pn("a node selected for removal could not be safely returned; refusing to sanitize in place");return at&&Ho(O),O}if(ft){if(at&&Ho(z),Vn)for(Z=He.call(z.ownerDocument);z.firstChild;)Z.appendChild(z.firstChild);else Z=z;return(ye.shadowroot||ye.shadowrootmode)&&(Z=yt.call(o,Z,!0)),Z}let Ie=pt?z.outerHTML:z.innerHTML;return pt&&he["!doctype"]&&z.ownerDocument&&z.ownerDocument.doctype&&z.ownerDocument.doctype.name&&Ke(Gu,z.ownerDocument.doctype.name)&&(Ie="<!DOCTYPE "+z.ownerDocument.doctype.name+`>
|
|
3
|
+
`+Ie),at&&(Ie=Wr(Ie)),P&&Sn?b(Ie):Ie},t.setConfig=function(){let O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};qo(O),Ot=!0,Hn=he,kt=ye},t.clearConfig=function(){dn=null,Ot=!1,Hn=null,kt=null,P=N,I=""},t.isValidAttribute=function(O,h,z){dn||qo({});let D=Me(O),$=Me(h);return Di(D,$,z)},t.addHook=function(O,h){typeof h=="function"&&rt(ve,O)&&hr(ve[O],h)},t.removeHook=function(O,h){if(rt(ve,O)){if(h!==void 0){let z=Eu(ve[O],h);return z===-1?void 0:Pu(ve[O],z,1)[0]}return Ui(ve[O])}},t.removeHooks=function(O){rt(ve,O)&&(ve[O]=[])},t.removeAllHooks=function(){ve=Qi()},t}var ta=rs();function aa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Mn=aa();function ms(e){Mn=e}var En={exec:()=>null};function Zn(e){let t=[];return n=>{let o=Math.max(0,Math.min(3,n-1)),a=t[o];return a||(a=e(o),t[o]=a),a}}function se(e,t=""){let n=typeof e=="string"?e:e.source,o={replace:(a,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(Ge.caret,"$1"),n=n.replace(a,s),o},getRegex:()=>new RegExp(n,t)};return o}var tp=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),Ge={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Zn(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Zn(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:Zn(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Zn(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Zn(e=>new RegExp(`^ {0,${e}}(?:</?(?:${zr})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:Zn(e=>new RegExp(`^ {0,${e}}>`))},np=/^(?:[ \t]*(?:\n|$))+/,rp=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,op=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,wr=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ap=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ia=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,gs=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,hs=se(gs).replace(/bull/g,ia).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),ip=se(gs).replace(/bull/g,ia).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,sp=/^[^\n]+/,la=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,lp=se(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",la).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),cp=se(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,ia).getRegex(),zr="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ca=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,dp=se("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ca).replace("tag",zr).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bs=e=>se(sa).replace("hr",wr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",zr).getRegex(),up=bs(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),pp=bs(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),fp=se(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",pp).getRegex(),da={blockquote:fp,code:rp,def:lp,fences:op,heading:ap,hr:wr,html:dp,lheading:hs,list:cp,newline:np,paragraph:up,table:En,text:sp},os=se("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",wr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",zr).getRegex(),mp={...da,lheading:ip,table:os,paragraph:se(sa).replace("hr",wr).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",os).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",zr).getRegex()},gp={...da,html:se(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ca).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:En,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:se(sa).replace("hr",wr).replace("heading",` *#{1,6} *[^
|
|
4
|
+
]`).replace("lheading",hs).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},hp=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,bp=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,vs=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,vp=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Yt=/[\p{P}\p{S}]/u,Qn=/[\s\p{P}\p{S}]/u,_r=/[^\s\p{P}\p{S}]/u,yp=se(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Qn).getRegex(),xp=/[\p{Pi}\p{Ps}"']/u,ys=/(?!~)[\p{P}\p{S}]/u,kp=/(?!~)[\s\p{P}\p{S}]/u,wp=/(?:[^\s\p{P}\p{S}]|~)/u,zp=se(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",tp?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),xs=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,_p=se(xs,"u").replace(/punct/g,Yt).getRegex(),Sp=se(xs,"u").replace(/punct/g,ys).getRegex(),Cp=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Tp=se(Cp,"u").replace(/openQuote/g,xp).replace(/punct/g,Yt).getRegex(),ks="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ap=se(ks,"gu").replace(/notPunctSpace/g,_r).replace(/punctSpace/g,Qn).replace(/punct/g,Yt).getRegex(),Ep=se(ks,"gu").replace(/notPunctSpace/g,wp).replace(/punctSpace/g,kp).replace(/punct/g,ys).getRegex(),Pp="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Mp=se(Pp,"gu").replace(/notPunctSpace/g,_r).replace(/punctSpace/g,Qn).replace(/punct/g,Yt).getRegex(),Ip=se("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,_r).replace(/punctSpace/g,Qn).replace(/punct/g,Yt).getRegex(),Rp="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",Lp=se(Rp,"gu").replace(/notPunctSpace/g,_r).replace(/punctSpace/g,Qn).replace(/punct/g,Yt).getRegex(),Dp=se(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Yt).getRegex(),Np="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Op=se(Np,"gu").replace(/notPunctSpace/g,_r).replace(/punctSpace/g,Qn).replace(/punct/g,Yt).getRegex(),Fp=se(/\\(punct)/,"gu").replace(/punct/g,Yt).getRegex(),$p=se(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Bp=se(ca).replace("(?:-->|$)","-->").getRegex(),Up=se("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Bp).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ws=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Qr=se(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",ws).getRegex(),qp=se(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Qr).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Hp=se(/^!?\[(label)\]\[(ref)\]/).replace("label",Qr).replace("ref",la).getRegex(),Vp=se(/^!?\[(ref)\](?:\[\])?/).replace("ref",la).getRegex(),as=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,jp=se(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",ws).getRegex(),Wp=se("reflink|nolink(?!\\()","g").replace("reflink",se(/^!?\[(label)\]\[(ref)\]/).replace("label",jp).replace("ref",as).getRegex()).replace("nolink",se(/^!?\[(ref)\](?:\[\])?/).replace("ref",as).getRegex()).getRegex(),is=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Gp=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,Xp=se(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Gp).getRegex(),ua={_backpedal:En,anyPunctuation:Fp,autolink:$p,blockSkip:zp,br:vs,code:bp,del:En,delLDelim:En,delRDelim:En,emStrongLDelim:_p,emStrongRDelimAst:Ap,emStrongRDelimUnd:Ip,escape:hp,link:qp,nolink:Vp,punctuation:yp,reflink:Hp,reflinkSearch:Wp,tag:Up,text:vp,url:En},Kp={...ua,emStrongLDelim:Tp,emStrongRDelimAst:Mp,emStrongRDelimUnd:Lp,link:se(/^!?\[(label)\]\((.*?)\)/).replace("label",Qr).getRegex(),reflink:se(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Qr).getRegex()},na={...ua,emStrongRDelimAst:Ep,emStrongLDelim:Sp,delLDelim:Dp,delRDelim:Op,url:se(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",Xp).replace("protocol",is).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:se(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",is).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},Jp={...na,br:se(vs).replace("{2,}","*").getRegex(),text:se(na.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Zr={normal:da,gfm:mp,pedantic:gp},xr={normal:ua,gfm:na,breaks:Jp,pedantic:Kp},Yp={"&":"&","<":"<",">":">",'"':""","'":"'"},ss=e=>Yp[e];function ct(e,t){if(t){if(Ge.escapeTest.test(e))return e.replace(Ge.escapeReplace,ss)}else if(Ge.escapeTestNoEncode.test(e))return e.replace(Ge.escapeReplaceNoEncode,ss);return e}function Zp(e){return e.replace(Ge.numericCharacterReference,(t,n,o)=>{let a=n===void 0?Number.parseInt(o,16):Number.parseInt(n,10);return a===0||a>1114111||a>=55296&&a<=57343?"\uFFFD":String.fromCodePoint(a)})}function ls(e){try{e=encodeURI(e).replace(Ge.percentDecode,"%")}catch{return null}return e}function cs(e,t){let n=e.replace(Ge.findPipe,(i,s,l)=>{let c=!1,d=s;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),o=n.split(Ge.splitPipe),a=0;if(o[0].trim()||o.shift(),o.length>0&&!o.at(-1)?.trim()&&o.pop(),t)if(o.length>t)o.splice(t);else for(;o.length<t;)o.push("");for(;a<o.length;a++)o[a]=o[a].trim().replace(Ge.slashPipe,"|");return o}function mn(e,t,n){let o=e.length;if(o===0)return"";let a=0;for(;a<o;){let i=e.charAt(o-a-1);if(i===t&&!n)a++;else if(i!==t&&n)a++;else break}return e.slice(0,o-a)}function ds(e){let t=e.split(`
|
|
5
|
+
`),n=t.length-1;for(;n>=0&&Ge.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
6
|
+
`)}function eo(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function Qp(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let o=0;o<e.length;o++)if(e[o]==="\\")o++;else if(e[o]===t[0])n++;else if(e[o]===t[1]&&(n--,n<0))return o;return n>0?-2:-1}function us(e,t=0){let n=t,o="";for(let a of e)if(a===" "){let i=4-n%4;o+=" ".repeat(i),n+=i}else o+=a,n++;return o}function ps(e,t,n,o,a){let i=t.href,s=t.title||null,l=e[1].replace(a.other.outputLinkReplace,"$1"),c=e[0].charAt(0)==="!";o.state.inLink=!0;let d=o.state.linkEmitted,f=o.state.inRawBlock;o.state.linkEmitted=!1;let u=o.inlineTokens(l),p=o.state.linkEmitted;if(o.state.linkEmitted=d,o.state.inLink=!1,!c){if(p){o.state.inRawBlock=f;return}o.state.linkEmitted=!0}return{type:c?"image":"link",raw:n,href:i,title:s,text:l,tokens:u}}function ef(e,t,n){let o=e.match(n.other.indentCodeCompensation);if(o===null)return t;let a=o[1];return t.split(`
|
|
7
|
+
`).map(i=>{let s=i.match(n.other.beginningSpace);if(s===null)return i;let[l]=s;return i.slice(Math.min(l.length,a.length))}).join(`
|
|
8
|
+
`)}function fs(e,t,n,o){if(!t.includes("<"))return!1;for(let a=0;a<t.length;a++){if(t[a]==="\\"){a++;continue}if(t[a]==="`"){let l=o.inline.code.exec(t.slice(a));if(l){a+=l[0].length-1;continue}}if(t[a]!=="<")continue;let i=e.slice(n+a),s=o.inline.tag.exec(i)||o.inline.autolink.exec(i);if(s){if(s[0].length>t.length-a)return!0;a+=s[0].length-1}}return!1}var to=class{options;rules;lexer;constructor(e){this.options=e||Mn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:ds(t[0]),o=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:o}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],o=ef(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:o}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let o=mn(n,"#");(this.options.pedantic||!o||this.rules.other.endingSpaceTabChar.test(o))&&(n=o.trim())}return{type:"heading",raw:mn(t[0],`
|
|
9
|
+
`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:mn(t[0],`
|
|
10
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=mn(t[0],`
|
|
11
11
|
`).split(`
|
|
12
|
-
`),
|
|
13
|
-
`),f=
|
|
14
|
-
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");
|
|
15
|
-
${
|
|
16
|
-
${f}`:f;let
|
|
17
|
-
`),
|
|
18
|
-
`+
|
|
19
|
-
`).length:0,
|
|
20
|
-
${
|
|
21
|
-
`)}`),
|
|
12
|
+
`),o="",a="",i=[];for(;n.length>0;){let s=!1,l=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))l.push(n[c]),s=!0;else if(!s)l.push(n[c]);else break;n=n.slice(c);let d=l.join(`
|
|
13
|
+
`),f=d.replace(this.rules.other.blockquoteSetextReplace,`
|
|
14
|
+
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");o=o?`${o}
|
|
15
|
+
${d}`:d,a=a?`${a}
|
|
16
|
+
${f}`:f;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(f,i,!0),this.lexer.state.top=u,n.length===0)break;let p=i.at(-1);if(p?.type==="code")break;if(p?.type==="blockquote"){let g=p,m=n.join(`
|
|
17
|
+
`),y=g.raw+`
|
|
18
|
+
`+m.replace(this.rules.other.blockquoteSetextReplace2,""),_=this.blockquote(y);i[i.length-1]=_;let E=y.substring(_.raw.length).replace(/^\n/,""),x=E?E.split(`
|
|
19
|
+
`).length:0,k=x?n.slice(0,-x):n;k.length>0&&(o=`${o}
|
|
20
|
+
${k.join(`
|
|
21
|
+
`)}`),a=a.substring(0,a.length-g.text.length)+_.text;break}else if(p?.type==="list"){let g=p,m=g.raw+`
|
|
22
22
|
`+n.join(`
|
|
23
|
-
`),
|
|
24
|
-
`);continue}}return{type:"blockquote",raw:
|
|
25
|
-
`,1)[0],
|
|
26
|
-
`,1)[0],
|
|
27
|
-
`,
|
|
28
|
-
`,1)[0],
|
|
29
|
-
`+
|
|
30
|
-
`+
|
|
31
|
-
`,
|
|
32
|
-
`),href:
|
|
33
|
-
`):[],
|
|
34
|
-
`),header:[],align:[],rows:[]};if(n.length===
|
|
35
|
-
`),depth:
|
|
36
|
-
`?
|
|
37
|
-
`),this.blockTokens(
|
|
38
|
-
`:n.push(
|
|
23
|
+
`),y=this.list(m);i[i.length-1]=y,o=o.substring(0,o.length-p.raw.length)+y.raw,a=a.substring(0,a.length-g.raw.length)+y.raw,n=m.substring(i.at(-1).raw.length).split(`
|
|
24
|
+
`);continue}}return{type:"blockquote",raw:o,tokens:i,text:a}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),o=n.length>1,a={type:"list",raw:"",ordered:o,start:o?+n.slice(0,-1):"",loose:!1,items:[]};n=o?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=o?n:"[*+-]");let i=this.rules.other.listItemRegex(n),s=!1;for(;e;){let c=!1,d="",f="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let u=t[2].split(`
|
|
25
|
+
`,1)[0],p=t[1].length,g=this.options.pedantic?us(u,p):u.replace(this.rules.other.leadingSpaceTab,E=>us(E,p)),m=e.split(`
|
|
26
|
+
`,1)[0],y=!g.trim(),_=0;if(this.options.pedantic?(_=2,f=g.trimStart()):y?_=p+1:(_=g.search(this.rules.other.nonSpaceChar),_=_>4?1:_,f=g.slice(_),_+=p),y&&this.rules.other.blankLine.test(m)&&(d+=m+`
|
|
27
|
+
`,e=e.substring(m.length+1),c=!0),!c){let E=this.rules.other.nextBulletRegex(_),x=this.rules.other.hrRegex(_),k=this.rules.other.fencesBeginRegex(_),R=this.rules.other.headingBeginRegex(_),B=this.rules.other.htmlBeginRegex(_),j=this.rules.other.blockquoteBeginRegex(_);for(;e;){let w=e.split(`
|
|
28
|
+
`,1)[0],A;if(m=w,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),A=m):A=m.replace(this.rules.other.leadingSpaceTab,P=>P.replace(this.rules.other.tabCharGlobal," ")),k.test(m)||R.test(m)||B.test(m)||j.test(m)||E.test(m)||x.test(m))break;if(A.search(this.rules.other.nonSpaceChar)>=_||!m.trim())f+=`
|
|
29
|
+
`+A.slice(_);else{if(y||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||k.test(g)||R.test(g)||x.test(g))break;f+=`
|
|
30
|
+
`+m}y=!m.trim(),d+=w+`
|
|
31
|
+
`,e=e.substring(w.length+1),g=A.slice(_)}}a.loose||(s?a.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(s=!0)),a.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(f),loose:!1,text:f,tokens:[]}),a.raw+=d}let l=a.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let c of a.items)if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),!a.loose){let d=c.tokens.filter(u=>u.type==="space"),f=d.length>0&&d.some(u=>this.rules.other.anyLine.test(u.raw));a.loose=f}for(let c of a.items){let d=c.tokens[0];if(c.task&&(d?.type==="text"||d?.type==="paragraph")){c.text=c.text.replace(this.rules.other.listReplaceTask,""),d.raw=d.raw.replace(this.rules.other.listReplaceTask,""),d.text=d.text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}let f=this.rules.other.listTaskCheckbox.exec(c.raw);if(f){let u={type:"checkbox",raw:f[0]+" ",checked:f[0]!=="[ ]"};c.checked=u.checked,a.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=u.raw+c.tokens[0].raw,c.tokens[0].text=u.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(u)):c.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):c.tokens.unshift(u)}}else c.task&&(c.task=!1)}if(a.loose)for(let c of a.items){c.loose=!0;for(let d of c.tokens)d.type==="text"&&(d.type="paragraph")}return a}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=ds(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=eo(t[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:mn(t[0],`
|
|
32
|
+
`),href:o,title:a}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=cs(t[1]),o=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),a=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
33
|
+
`):[],i={type:"table",raw:mn(t[0],`
|
|
34
|
+
`),header:[],align:[],rows:[]};if(n.length===o.length){for(let s of o)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of a)i.rows.push(cs(s,i.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[c]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:mn(t[0],`
|
|
35
|
+
`),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
36
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&fs(e,t[1],n,this.rules))return;let o=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(o)){if(!this.rules.other.endAngleBracket.test(o))return;let s=mn(o.slice(0,-1),"\\");if((o.length-s.length)%2===0)return}else{let s=Qp(t[2],"()");if(s===-2)return;if(s>-1){let l=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,l).trim(),t[3]=""}}let a=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(a);s&&(a=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(o)?a=a.slice(1):a=a.slice(1,-1)),ps(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let o=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&fs(e,n[1],o,this.rules))return;let a=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[eo(a)];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return ps(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let o=this.rules.inline.emStrongLDelim.exec(e);if(!(!o||!o[1]&&!o[2]&&!o[3]&&!o[4]||o[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(o[1]||o[3])||!n||this.rules.inline.punctuation.exec(n))){let a=[...o[0]].length-1,i,s,l=a,c=0,d=o[0][0],f=n===d,u=d==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+a);(o=u.exec(t))!==null;){if(i=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!i)continue;if(s=[...i].length,o[3]||o[4]){l+=s;continue}else if(o[5]||o[6]){if(a%3&&!((a+s)%3)){c+=s;continue}if(f)break}if(l-=s,l>0)continue;s=Math.min(s,s+l+c);let p=[...o[0]][0].length,g=e.slice(0,a+o.index+p+s);if(Math.min(a,s)%2){let y=g.slice(1,-1);return{type:"em",raw:g,text:y,tokens:this.lexer.inlineTokens(y)}}let m=g.slice(2,-2);return{type:"strong",raw:g,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),o=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return o&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let o=this.rules.inline.delLDelim.exec(e);if(o&&(!o[1]||!n||this.rules.inline.punctuation.exec(n))){let a=[...o[0]].length-1,i,s,l=a,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+a);(o=c.exec(t))!==null;){if(i=o[1]||o[2]||o[3]||o[4]||o[5]||o[6],!i||(s=[...i].length,s!==a))continue;if(o[3]||o[4]){l+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l);let d=[...o[0]][0].length,f=e.slice(0,a+o.index+d+s),u=f.slice(a,-a);return{type:"del",raw:f,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,o;return t[2]==="@"?(n=t[1],o="mailto:"+n):(n=t[1],o=n),{type:"link",raw:t[0],text:n,href:o,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,o;if(t[2]==="@")n=t[0],o="mailto:"+n;else{let a;do a=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(a!==t[0]);n=t[0],t[1]==="www."?o="http://"+t[0]:o=t[0]}return{type:"link",raw:t[0],text:n,href:o,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:n?t[0]:Zp(t[0]),escaped:n}}}},St=class ra{tokens;options;state;inlineQueue;tokenizer;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Mn,this.options.tokenizer=this.options.tokenizer||new to,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let n={other:Ge,block:Zr.normal,inline:xr.normal};this.options.pedantic?(n.block=Zr.pedantic,n.inline=xr.pedantic):this.options.gfm&&(n.block=Zr.gfm,this.options.breaks?n.inline=xr.breaks:n.inline=xr.gfm),this.tokenizer.rules=n}static get rules(){return{block:Zr,inline:xr}}static lex(t,n){return new ra(n).lex(t)}static lexInline(t,n){return new ra(n).inlineTokens(t)}lex(t){t=t.replace(Ge.carriageReturn,`
|
|
37
|
+
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let o=this.inlineQueue[n];this.inlineTokens(o.src,o.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],o=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(Ge.tabCharGlobal," ").replace(Ge.spaceLine,""));let a=1/0;for(;t;){if(t.length<a)a=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(l=>(i=l.call({lexer:this},t,n))?(t=t.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let l=n.at(-1);i.raw.length===1&&l!==void 0?l.raw+=`
|
|
38
|
+
`:n.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
39
39
|
`)?"":`
|
|
40
|
-
`)+
|
|
41
|
-
`+
|
|
40
|
+
`)+i.raw,l.text+=`
|
|
41
|
+
`+i.text,this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
42
42
|
`)?"":`
|
|
43
|
-
`)+
|
|
44
|
-
`+
|
|
43
|
+
`)+i.raw,l.text+=`
|
|
44
|
+
`+i.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},n.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),n.push(i);continue}let s=t;if(this.options.extensions?.startBlock){let l=1/0,c=t.slice(1),d;this.options.extensions.startBlock.forEach(f=>{d=f.call({lexer:this},c),typeof d=="number"&&d>=0&&(l=Math.min(l,d))}),l<1/0&&l>=0&&(s=t.substring(0,l+1))}if(this.state.top&&(i=this.tokenizer.paragraph(s))){let l=n.at(-1);o&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(`
|
|
45
45
|
`)?"":`
|
|
46
|
-
`)+
|
|
47
|
-
`+
|
|
46
|
+
`)+i.raw,l.text+=`
|
|
47
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i),o=s.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
48
48
|
`)?"":`
|
|
49
|
-
`)+
|
|
50
|
-
`+
|
|
51
|
-
`:"";return
|
|
52
|
-
`:"<pre><code>"+(n?
|
|
53
|
-
`}blockquote({tokens:
|
|
54
|
-
${this.parser.parse(
|
|
55
|
-
`}html({text:
|
|
56
|
-
`}hr(
|
|
57
|
-
`}list(
|
|
58
|
-
`+
|
|
59
|
-
`}listitem(
|
|
60
|
-
`}checkbox({checked:
|
|
61
|
-
`}table(
|
|
49
|
+
`)+i.raw,l.text+=`
|
|
50
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let o of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(o[0])&&t.charAt(o.index-1)!=="!")return!0;for(let o of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let a=o[0],i=a.lastIndexOf("[");if(!(a.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,eo(a.slice(i+1,-1))))&&!(i>1&&this.linkInText(a.slice(1,i-1))))return!0}return!1}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let o=t;if(this.tokens.links&&t.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,c=d=>{let f=d.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,eo(d.slice(f+1,-1))))return d;if(f>1&&d.charAt(0)!=="!"){let u=d.slice(1,f-1);if(this.linkInText(u))return"["+u.replace(l,c)+"]["+"a".repeat(d.length-f-2)+"]"}return"["+"a".repeat(d.length-2)+"]"};o=o.replace(l,c)}o=o.replace(this.tokenizer.rules.inline.anyPunctuation,l=>"+".repeat(l.length)),o=o.replace(this.tokenizer.rules.inline.blockSkip,(l,c,d)=>{let f=d?d.length:0;return l.slice(0,f)+"["+"a".repeat(l.length-f-2)+"]"}),o=this.options.hooks?.emStrongMask?.call({lexer:this},o)??o;let a=!1,i="",s=1/0;for(;t;){if(t.length<s)s=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}a||(i=""),a=!1;let l;if(this.options.extensions?.inline?.some(d=>(l=d.call({lexer:this},t,n))?(t=t.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let d=n.at(-1);l.type==="text"&&d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(l=this.tokenizer.emStrong(t,o,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(t,o,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),n.push(l);continue}let c=t;if(this.options.extensions?.startInline){let d=1/0,f=t.slice(1),u;this.options.extensions.startInline.forEach(p=>{u=p.call({lexer:this},f),typeof u=="number"&&u>=0&&(d=Math.min(d,u))}),d<1/0&&d>=0&&(c=t.substring(0,d+1))}if(l=this.tokenizer.inlineText(c)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(i=l.raw.slice(-1)),a=!0;let d=n.at(-1);d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},no=class{options;parser;constructor(e){this.options=e||Mn}space(e){return""}code({text:e,lang:t,escaped:n}){let o=(t||"").match(Ge.notSpaceStart)?.[0],a=e?e.replace(Ge.endingNewline,"")+`
|
|
51
|
+
`:"";return o?'<pre><code class="language-'+ct(o)+'">'+(n?a:ct(a,!0))+`</code></pre>
|
|
52
|
+
`:"<pre><code>"+(n?a:ct(a,!0))+`</code></pre>
|
|
53
|
+
`}blockquote({tokens:e}){return`<blockquote>
|
|
54
|
+
${this.parser.parse(e)}</blockquote>
|
|
55
|
+
`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
56
|
+
`}hr(e){return`<hr>
|
|
57
|
+
`}list(e){let t=e.ordered,n=e.start,o="";for(let s=0;s<e.items.length;s++){let l=e.items[s];o+=this.listitem(l)}let a=t?"ol":"ul",i=t&&n!==1?' start="'+n+'"':"";return"<"+a+i+`>
|
|
58
|
+
`+o+"</"+a+`>
|
|
59
|
+
`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
|
|
60
|
+
`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
|
|
61
|
+
`}table(e){let t="",n="";for(let a=0;a<e.header.length;a++)n+=this.tablecell(e.header[a]);t+=this.tablerow({text:n});let o="";for(let a=0;a<e.rows.length;a++){let i=e.rows[a];n="";for(let s=0;s<i.length;s++)n+=this.tablecell(i[s]);o+=this.tablerow({text:n})}return o&&(o=`<tbody>${o}</tbody>`),`<table>
|
|
62
62
|
<thead>
|
|
63
|
-
`+
|
|
64
|
-
`+
|
|
65
|
-
`}tablerow({text:
|
|
66
|
-
${
|
|
67
|
-
`}tablecell(
|
|
68
|
-
`}strong({tokens:
|
|
69
|
-
Please report this to https://github.com/markedjs/marked.`,t){let a="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return e?Promise.resolve(a):a}if(e)return Promise.reject(n);throw n}}},vt=new Fr;function ne(t,e){return vt.parse(t,e)}ne.options=ne.setOptions=function(t){return vt.setOptions(t),ne.defaults=vt.defaults,zi(ne.defaults),ne};ne.getDefaults=Mr;ne.defaults=yt;function iu(...t){return vt.use(...t),ne.defaults=vt.defaults,zi(ne.defaults),ne}ne.use=iu;ne.walkTokens=function(t,e){return vt.walkTokens(t,e)};ne.parseInline=vt.parseInline;ne.Parser=Fe;ne.parser=Fe.parse;ne.Renderer=Pn;ne.TextRenderer=Br;ne.Lexer=Be;ne.lexer=Be.lex;ne.Tokenizer=Tn;ne.Hooks=Yt;ne.parse=ne;var pp=ne.options,fp=ne.setOptions,mp=ne.walkTokens,gp=ne.parseInline;var hp=Fe.parse,bp=Be.lex;var Nn,te,Vi,ou,ct,Wi,Ki,Ji,$r,Rn,en,Yi,Wr,Ur,Hr,Gi,Ln={},Dn=[],su=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,On=Array.isArray;function Ze(t,e){for(var n in e)t[n]=e[n];return t}function jr(t){t&&t.parentNode&&t.parentNode.removeChild(t)}function lu(t,e,n){var a,i,o,s={};for(o in e)o=="key"?a=e[o]:o=="ref"?i=e[o]:s[o]=e[o];if(arguments.length>2&&(s.children=arguments.length>3?Nn.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return Mn(t,s,a,i,null)}function Mn(t,e,n,a,i){var o={type:t,props:e,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:i??++Vi,__i:-1,__u:0};return i==null&&te.vnode!=null&&te.vnode(o),o}function N(t){return t.children}function In(t,e){this.props=t,this.context=e}function kt(t,e){if(e==null)return t.__?kt(t.__,t.__i+1):null;for(var n;e<t.__k.length;e++)if((n=t.__k[e])!=null&&n.__e!=null)return n.__e;return typeof t.type=="function"?kt(t):null}function cu(t){if(t.__P&&t.__d){var e=t.__v,n=e.__e,a=[],i=[],o=Ze({},e);o.__v=e.__v+1,te.vnode&&te.vnode(o),Xr(t.__P,o,e,t.__n,t.__P.namespaceURI,32&e.__u?[n]:null,a,n??kt(e),!!(32&e.__u),i),o.__v=e.__v,o.__.__k[o.__i]=o,no(a,o,i),e.__e=e.__=null,o.__e!=n&&Zi(o)}}function Zi(t){if((t=t.__)!=null&&t.__c!=null)return t.__e=t.__c.base=null,t.__k.some(function(e){if(e!=null&&e.__e!=null)return t.__e=t.__c.base=e.__e}),Zi(t)}function qr(t){(!t.__d&&(t.__d=!0)&&ct.push(t)&&!zn.__r++||Wi!=te.debounceRendering)&&((Wi=te.debounceRendering)||Ki)(zn)}function zn(){try{for(var t,e=1;ct.length;)ct.length>e&&ct.sort(Ji),t=ct.shift(),e=ct.length,cu(t)}finally{ct.length=zn.__r=0}}function Qi(t,e,n,a,i,o,s,l,c,u,f){var m,d,g,h,v,k,y=a&&a.__k||Dn,x=e.length;for(c=uu(n,e,y,c,x),m=0;m<x;m++)(g=n.__k[m])!=null&&(d=g.__i!=-1&&y[g.__i]||Ln,g.__i=m,k=Xr(t,g,d,i,o,s,l,c,u,f),h=g.__e,g.ref&&d.ref!=g.ref&&(d.ref&&Vr(d.ref,null,g),f.push(g.ref,g.__c||h,g)),v==null&&h!=null&&(v=h),4&g.__u?(c=eo(g,c,t),d.__e&&(d.__e=null)):typeof g.type=="function"&&k!==void 0?c=k:h&&(c=h.nextSibling),g.__u&=-7);return n.__e=v,c}function uu(t,e,n,a,i){var o,s,l,c,u,f=n.length,m=f,d=0;for(t.__k=new Array(i),o=0;o<i;o++)(s=e[o])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=t.__k[o]=Mn(null,s,null,null,null):On(s)?s=t.__k[o]=Mn(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=t.__k[o]=Mn(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):t.__k[o]=s,c=o+d,s.__=t,s.__b=t.__b+1,l=null,(u=s.__i=du(s,n,c,m))!=-1&&(m--,(l=n[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(i>f?d--:i<f&&d++),typeof s.type!="function"&&(s.__u|=4)):u!=c&&(u==c-1?d--:u==c+1?d++:(u>c?d--:d++,s.__u|=4))):t.__k[o]=null;if(m)for(o=0;o<f;o++)(l=n[o])!=null&&(2&l.__u)==0&&(l.__e==a&&(a=kt(l)),ao(l,l));return a}function eo(t,e,n){var a,i;if(typeof t.type=="function"){for(a=t.__k,i=0;a&&i<a.length;i++)a[i]&&(a[i].__=t,e=eo(a[i],e,n));return e}t.__e!=e&&(e&&t.type&&!e.parentNode&&(e=kt(t)),e=n.insertBefore(t.__e,e||null));do e=e&&e.nextSibling;while(e!=null&&e.nodeType==8);return e}function du(t,e,n,a){var i,o,s,l=t.key,c=t.type,u=e[n],f=u!=null&&(2&u.__u)==0;if(u===null&&l==null||f&&l==u.key&&c==u.type)return n;if(a>(f?1:0)){for(i=n-1,o=n+1;i>=0||o<e.length;)if((u=e[s=i>=0?i--:o++])!=null&&(2&u.__u)==0&&l==u.key&&c==u.type)return s}return-1}function ji(t,e,n){e[0]=="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||su.test(e)?n:n+"px"}function En(t,e,n,a,i){var o,s;e:if(e=="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof a=="string"&&(t.style.cssText=a=""),a)for(e in a)n&&e in n||ji(t.style,e,"");if(n)for(e in n)a&&n[e]==a[e]||ji(t.style,e,n[e])}else if(e[0]=="o"&&e[1]=="n")o=e!=(e=e.replace(Yi,"$1")),s=e.toLowerCase(),e=s in t||e=="onFocusOut"||e=="onFocusIn"?s.slice(2):e.slice(2),t.l||(t.l={}),t.l[e+o]=n,n?a?n[en]=a[en]:(n[en]=Wr,t.addEventListener(e,o?Hr:Ur,o)):t.removeEventListener(e,o?Hr:Ur,o);else{if(i=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e[4]!="-"?t.removeAttribute(e):t.setAttribute(e,e=="popover"&&n==1?"":n))}}function Xi(t){return function(e){if(this.l){var n=this.l[e.type+t];if(e[Rn]==null)e[Rn]=Wr++;else if(e[Rn]<n[en])return;return n(te.event?te.event(e):e)}}}function Xr(t,e,n,a,i,o,s,l,c,u){var f,m,d,g,h,v,k,y,x,w,C,R,U,J,H,V,ee=e.type;if(e.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),o=[l=e.__e=n.__e]),(f=te.__b)&&f(e);e:if(typeof ee=="function"){m=s.length;try{if(x=e.props,w=ee.prototype&&ee.prototype.render,C=(f=ee.contextType)&&a[f.__c],R=f?C?C.props.value:f.__:a,n.__c?y=(d=e.__c=n.__c).__=d.__E:(w?e.__c=d=new ee(x,R):(e.__c=d=new In(x,R),d.constructor=ee,d.render=fu),C&&C.sub(d),d.state||(d.state={}),d.__n=a,g=d.__d=!0,d.__h=[],d._sb=[]),w&&d.__s==null&&(d.__s=d.state),w&&ee.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=Ze({},d.__s)),Ze(d.__s,ee.getDerivedStateFromProps(x,d.__s))),h=d.props,v=d.state,d.__v=e,g)w&&ee.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),w&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(w&&ee.getDerivedStateFromProps==null&&x!==h&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(x,R),e.__v==n.__v||!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(x,d.__s,R)===!1){e.__v!=n.__v&&(d.props=x,d.state=d.__s,d.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.some(function(z){z&&(z.__=e)}),Dn.push.apply(d.__h,d._sb),d._sb=[],d.__h.length&&s.push(d),l=kt(n);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(x,d.__s,R),w&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(h,v,k)})}if(d.context=R,d.props=x,d.__P=t,d.__e=!1,U=te.__r,J=0,w)d.state=d.__s,d.__d=!1,U&&U(e),f=d.render(d.props,d.state,d.context),Dn.push.apply(d.__h,d._sb),d._sb=[];else do d.__d=!1,U&&U(e),f=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++J<25);d.state=d.__s,d.getChildContext!=null&&(a=Ze(Ze({},a),d.getChildContext())),w&&!g&&d.getSnapshotBeforeUpdate!=null&&(k=d.getSnapshotBeforeUpdate(h,v)),H=f!=null&&f.type===N&&f.key==null?ro(f.props.children):f,l=Qi(t,On(H)?H:[H],e,n,a,i,o,s,l,c,u),d.base=e.__e,e.__u&=-161,d.__h.length&&s.push(d),y&&(d.__E=d.__=null)}catch(z){if(s.length=m,e.__v=null,c||o!=null){if(z.then){for(e.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;o!=null&&(o[o.indexOf(l)]=null),e.__e=l}else if(o!=null)for(V=o.length;V--;)jr(o[V])}else e.__e=n.__e;e.__k==null&&(e.__k=n.__k||[]),z.then||to(e),te.__e(z,e,n)}}else o==null&&e.__v==n.__v?(e.__k=n.__k,e.__e=n.__e):l=e.__e=pu(n.__e,e,n,a,i,o,s,c,u);return(f=te.diffed)&&f(e),128&e.__u?void 0:l}function to(t){t&&(t.__c&&(t.__c.__e=!0),t.__k&&t.__k.some(to))}function no(t,e,n){for(var a=0;a<n.length;a++)Vr(n[a],n[++a],n[++a]);te.__c&&te.__c(e,t),t.some(function(i){try{t=i.__h,i.__h=[],t.some(function(o){o.call(i)})}catch(o){te.__e(o,i.__v)}})}function ro(t){return typeof t!="object"||t==null||t.__b>0?t:On(t)?t.map(ro):t.constructor!==void 0?null:Ze({},t)}function pu(t,e,n,a,i,o,s,l,c){var u,f,m,d,g,h,v,k=n.props||Ln,y=e.props,x=e.type;if(x=="svg"?i="http://www.w3.org/2000/svg":x=="math"?i="http://www.w3.org/1998/Math/MathML":i||(i="http://www.w3.org/1999/xhtml"),o!=null){for(u=0;u<o.length;u++)if((g=o[u])&&"setAttribute"in g==!!x&&(x?g.localName==x:g.nodeType==3)){t=g,o[u]=null;break}}if(t==null){if(x==null)return document.createTextNode(y);t=document.createElementNS(i,x,y.is&&y),l&&(te.__m&&te.__m(e,o),l=!1),o=null}if(x==null)k===y||l&&t.data==y||(t.data=y);else{if(o=x=="textarea"&&y.defaultValue!=null?null:o&&Nn.call(t.childNodes),!l&&o!=null)for(k={},u=0;u<t.attributes.length;u++)k[(g=t.attributes[u]).name]=g.value;for(u in k)g=k[u],u=="dangerouslySetInnerHTML"?m=g:u=="children"||u in y||u=="value"&&"defaultValue"in y||u=="checked"&&"defaultChecked"in y||En(t,u,null,g,i);for(u in y)g=y[u],u=="children"?d=g:u=="dangerouslySetInnerHTML"?f=g:u=="value"?h=g:u=="checked"?v=g:l&&typeof g!="function"||k[u]===g||En(t,u,g,k[u],i);if(f)l||m&&(f.__html==m.__html||f.__html==t.innerHTML)||(t.innerHTML=f.__html),e.__k=[];else if(m&&(t.innerHTML=""),Qi(e.type=="template"?t.content:t,On(d)?d:[d],e,n,a,x=="foreignObject"?"http://www.w3.org/1999/xhtml":i,o,s,o?o[0]:n.__k&&kt(n,0),l,c),o!=null)for(u=o.length;u--;)jr(o[u]);l&&x!="textarea"||(u="value",x=="progress"&&h==null?t.removeAttribute("value"):h!=null&&(h!==t[u]||x=="progress"&&!h||x=="option"&&h!=k[u])&&En(t,u,h,k[u],i),u="checked",v!=null&&v!=t[u]&&En(t,u,v,k[u],i))}return t}function Vr(t,e,n){try{if(typeof t=="function"){var a=typeof t.__u=="function";a&&t.__u(),a&&e==null||(t.__u=t(e))}else t.current=e}catch(i){te.__e(i,n)}}function ao(t,e,n){var a,i;if(te.unmount&&te.unmount(t),(a=t.ref)&&(a.current&&a.current!=t.__e||Vr(a,null,e)),(a=t.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(o){te.__e(o,e)}a.base=a.__P=a.__n=null}if(a=t.__k)for(i=0;i<a.length;i++)a[i]&&ao(a[i],e,n||typeof t.type!="function");n||jr(t.__e),t.__c=t.__=t.__e=void 0}function fu(t,e,n){return this.constructor(t,n)}function ut(t,e,n){var a,i,o,s;e==document&&(e=document.documentElement),te.__&&te.__(t,e),i=(a=typeof n=="function")?null:n&&n.__k||e.__k,o=[],s=[],Xr(e,t=(!a&&n||e).__k=lu(N,null,[t]),i||Ln,Ln,e.namespaceURI,!a&&n?[n]:i?null:e.firstChild?Nn.call(e.childNodes):null,o,!a&&n?n:i?i.__e:e.firstChild,a,s),no(o,t,s),t.props.children=null}function io(t){function e(n){var a,i;return this.getChildContext||(a=new Set,(i={})[e.__c]=this,this.getChildContext=function(){return i},this.componentWillUnmount=function(){a=null},this.shouldComponentUpdate=function(o){this.props.value!=o.value&&a.forEach(function(s){s.__e=!0,qr(s)})},this.sub=function(o){a.add(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){a&&a.delete(o),s&&s.call(o)}}),n.children}return e.__c="__cC"+Gi++,e.__=t,e.Provider=e.__l=(e.Consumer=function(n,a){return n.children(a)}).contextType=e,e}Nn=Dn.slice,te={__e:function(t,e,n,a){for(var i,o,s;e=e.__;)if((i=e.__c)&&!i.__)try{if((o=i.constructor)&&o.getDerivedStateFromError!=null&&(i.setState(o.getDerivedStateFromError(t)),s=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(t,a||{}),s=i.__d),s)return i.__E=i}catch(l){t=l}throw t}},Vi=0,ou=function(t){return t!=null&&t.constructor===void 0},In.prototype.setState=function(t,e){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Ze({},this.state),typeof t=="function"&&(t=t(Ze({},n),this.props)),t&&Ze(n,t),t!=null&&this.__v&&(e&&this._sb.push(e),qr(this))},In.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),qr(this))},In.prototype.render=N,ct=[],Ki=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ji=function(t,e){return t.__v.__b-e.__v.__b},zn.__r=0,$r=Math.random().toString(8),Rn="__d"+$r,en="__a"+$r,Yi=/(PointerCapture)$|Capture$/i,Wr=0,Ur=Xi(!1),Hr=Xi(!0),Gi=0;var dt,ie,Kr,oo,tn=0,go=[],me=te,so=me.__b,lo=me.__r,co=me.diffed,uo=me.__c,po=me.unmount,fo=me.__;function $t(t,e){me.__h&&me.__h(ie,t,tn||e),tn=0;var n=ie.__H||(ie.__H={__:[],__h:[]});return t>=n.__.length&&n.__.push({}),n.__[t]}function S(t){return tn=1,mu(xo,t)}function mu(t,e,n){var a=$t(dt++,2);if(a.t=t,!a.__c&&(a.__=[n?n(e):xo(void 0,e),function(l){var c=a.__N?a.__N[0]:a.__[0],u=a.t(c,l);c!==u&&(a.__N=[u,a.__[1]],a.__c.setState({}))}],a.__c=ie,!ie.__f)){var i=function(l,c,u){if(!a.__c.__H)return!0;var f=!1,m=a.__c.props!==l;if(a.__c.__H.__.some(function(g){if(g.__N){f=!0;var h=g.__[0];g.__=g.__N,g.__N=void 0,h!==g.__[0]&&(m=!0)}}),o){var d=o.call(this,l,c,u);return f?d||m:d}return!f||m};ie.__f=!0;var o=ie.shouldComponentUpdate,s=ie.componentWillUpdate;ie.componentWillUpdate=function(l,c,u){if(this.__e){var f=o;o=void 0,i(l,c,u),o=f}s&&s.call(this,l,c,u)},ie.shouldComponentUpdate=i}return a.__N||a.__}function X(t,e){var n=$t(dt++,3);!me.__s&&Gr(n.__H,e)&&(n.__=t,n.u=e,ie.__H.__h.push(n))}function ho(t,e){var n=$t(dt++,4);!me.__s&&Gr(n.__H,e)&&(n.__=t,n.u=e,ie.__h.push(n))}function W(t){return tn=5,Ve(function(){return{current:t}},[])}function Ve(t,e){var n=$t(dt++,7);return Gr(n.__H,e)&&(n.__=t(),n.__H=e,n.__h=t),n.__}function pt(t,e){return tn=8,Ve(function(){return t},e)}function bo(t){var e=ie.context[t.__c],n=$t(dt++,9);return n.c=t,e?(n.__==null&&(n.__=!0,e.sub(ie)),e.props.value):t.__}function Yr(){var t=$t(dt++,11);if(!t.__){for(var e=ie.__v;e!==null&&!e.__m&&e.__!==null;)e=e.__;var n=e.__m||(e.__m=[0,0]);t.__="P"+n[0]+"-"+n[1]++}return t.__}function gu(){for(var t;t=go.shift();){var e=t.__H;if(t.__P&&e)try{e.__h.some(Bn),e.__h.some(Jr),e.__h=[]}catch(n){e.__h=[],me.__e(n,t.__v)}}}me.__b=function(t){ie=null,so&&so(t)},me.__=function(t,e){t&&e.__k&&e.__k.__m&&(t.__m=e.__k.__m),fo&&fo(t,e)},me.__r=function(t){lo&&lo(t),dt=0;var e=(ie=t.__c).__H;e&&(Kr===ie?(e.__h=[],ie.__h=[],e.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(e.__h.some(Bn),e.__h.some(Jr),e.__h=[],dt=0)),Kr=ie},me.diffed=function(t){co&&co(t);var e=t.__c;e&&e.__H&&(e.__H.__h.length&&(go.push(e)!==1&&oo===me.requestAnimationFrame||((oo=me.requestAnimationFrame)||hu)(gu)),e.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Kr=ie=null},me.__c=function(t,e){e.some(function(n){try{n.__h.some(Bn),n.__h=n.__h.filter(function(a){return!a.__||Jr(a)})}catch(a){e.some(function(i){i.__h&&(i.__h=[])}),e=[],me.__e(a,n.__v)}}),uo&&uo(t,e)},me.unmount=function(t){po&&po(t);var e,n=t.__c;n&&n.__H&&(n.__H.__.some(function(a){try{Bn(a)}catch(i){e=i}}),n.__H=void 0,e&&me.__e(e,n.__v))};var mo=typeof requestAnimationFrame=="function";function hu(t){var e,n=function(){clearTimeout(a),mo&&cancelAnimationFrame(e),setTimeout(t)},a=setTimeout(n,35);mo&&(e=requestAnimationFrame(n))}function Bn(t){var e=ie,n=t.__c;typeof n=="function"&&(t.__c=void 0,n()),ie=e}function Jr(t){var e=ie;t.__c=t.__(),ie=e}function Gr(t,e){return!t||t.length!==e.length||e.some(function(n,a){return n!==t[a]})}function xo(t,e){return typeof e=="function"?e(t):e}var j=()=>typeof window<"u"&&window.tangu||{};function Fn(t){let e=typeof t?.status=="number"?t.status:0;if(e>=200&&e<300)return{ok:!0,status:e,data:t?.json??null};let n=t?.json&&typeof t.json=="object"?t.json:null,a=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,i=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:e,code:a,detail:i,transport:typeof t?.error=="string"?t.error:null}}var Zr=t=>({ok:!1,status:0,code:null,detail:null,transport:t});async function M(t,e={}){let n=j().cloudFetch;if(!n)return Zr("no_bridge");try{return Fn(await n({path:t,...e}))}catch(a){return Zr(String(a?.message||a))}}async function $n(t,e){if(!t)return e();try{return Fn(await t())}catch(n){return Zr(String(n?.message||n))}}var wt=t=>t.status===401&&(t.transport==="not_signed_in"||t.code===null&&t.detail===null&&t.transport===null);function $e(t){return String(t?.message??t??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function Ut(t,e,n){let a=j().cloudInvoke;if(!a)return!1;let i=t==="membership"&&e?n?[t,e,n]:[t,e]:[t];try{return!!(await a("auth:openPayCenter",...i))?.ok}catch{return!1}}async function _t(t){let e=j().openAccountCenter;if(!e)return!1;try{return!!(await e(t)).ok}catch{return!1}}var bu=0;function r(t,e,n,a,i,o){e||(e={});var s,l,c=e;if("ref"in c)for(l in c={},e)l=="ref"?s=e[l]:c[l]=e[l];var u={type:t,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--bu,__i:-1,__u:0,__source:i,__self:o};if(typeof t=="function"&&(s=t.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return te.vnode&&te.vnode(u),u}var xu={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4"};function E({name:t,size:e=14,class:n}){return r("svg",{class:n,width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:r("path",{d:xu[t]})})}function St({size:t=12}){return r("svg",{class:"spin",width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:r("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var vu={"sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.update":"\u63D0\u4EA4\u65B0\u7248\u672C","sub.updateTitle":"\u66F4\u65B0 {name}","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u6211\u7684\u6295\u7A3F\u4E2D\u3002","sub.updated":"\u65B0\u7248\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5DF2\u4E0A\u67B6\u7248\u672C\u4ECD\u53EF\u4E0B\u8F7D\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.remoteUpdate":"\u5728\u539F\u6E20\u9053\u53D1\u5E03\u65B0\u7248\u672C\u540E\uFF0C\u7531\u7BA1\u7406\u5458\u91CD\u65B0\u5BA1\u6838\u3002","sub.zip":"ZIP \u5305","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.version":"\u7248\u672C\u53F7","sub.versionHint":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u7248\u672C\uFF0C\u5E76\u4E0E manifest \u4E2D\u7684\u7248\u672C\u4E00\u81F4\u3002","sub.readme":"\u8BF4\u660E\u6587\u6863\uFF08Markdown\uFF09","sub.keep":"\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.errVersion":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","page.account":"\u8D26\u53F7","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u7535\u8111\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u7684\u684C\u9762\u7AEF\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5"},yu={"sub.mine":"My submissions","page.submission":"Submissions","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.update":"Submit new version","sub.updateTitle":"Update {name}","sub.submit":"Submit for review","sub.submitted":"Submitted. Review results will appear in your submissions.","sub.updated":"Update submitted for review. The published version remains available.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.remoteUpdate":"Publish a new version at the source for an administrator to review.","sub.zip":"ZIP archive","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.version":"Version","sub.versionHint":"Use a version newer than the current one, matching the manifest.","sub.readme":"README (Markdown)","sub.keep":"Leave blank to keep unchanged","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.errVersion":"Enter a version.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"Enter a version.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","page.account":"Account","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this computer: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of the desktop app can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again"},vo={zh:vu,en:yu},Ke=t=>t==="en"?"en":"zh";function Un(t,e,n){let a=vo[t][e]??vo.zh[e]??e;return n?a.replace(/\{(\w+)\}/g,(i,o)=>o in n?String(n[o]):i):a}var Hn=t=>(e,n)=>Un(t,e,n),Ne=(t,e)=>"raw"in t?t.raw:e(t.key,t.vars);var yo=`
|
|
63
|
+
`+t+`</thead>
|
|
64
|
+
`+o+`</table>
|
|
65
|
+
`}tablerow({text:e}){return`<tr>
|
|
66
|
+
${e}</tr>
|
|
67
|
+
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
68
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ct(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:o,autolink:a}){let i=a?ct(n,!0):this.parser.parseInline(o),s=ls(e);if(s===null)return i;e=ct(s,a);let l='<a href="'+e+'"';return t&&(l+=' title="'+ct(t)+'"'),l+=">"+i+"</a>",l}image({href:e,title:t,text:n,tokens:o}){o&&(n=this.parser.parseInline(o,this.parser.textRenderer));let a=ls(e);if(a===null)return ct(n);e=a;let i=`<img src="${ct(e)}" alt="${ct(n)}"`;return t&&(i+=` title="${ct(t)}"`),i+=">",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ct(e.text)}},pa=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Ct=class oa{options;renderer;textRenderer;constructor(t){this.options=t||Mn,this.options.renderer=this.options.renderer||new no,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new pa}static parse(t,n){return new oa(n).parse(t)}static parseInline(t,n){return new oa(n).parseInline(t)}parse(t){this.renderer.parser=this;let n="";for(let o=0;o<t.length;o++){let a=t[o];if(this.options.extensions?.renderers?.[a.type]){let s=a,l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(s.type)){n+=l||"";continue}}let i=a;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}parseInline(t,n=this.renderer){this.renderer.parser=this;let o="";for(let a=0;a<t.length;a++){let i=t[a];if(this.options.extensions?.renderers?.[i.type]){let l=this.options.extensions.renderers[i.type].call({parser:this},i);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(i.type)){o+=l||"";continue}}let s=i;switch(s.type){case"escape":{o+=n.text(s);break}case"html":{o+=n.html(s);break}case"link":{o+=n.link(s);break}case"image":{o+=n.image(s);break}case"checkbox":{o+=n.checkbox(s);break}case"strong":{o+=n.strong(s);break}case"em":{o+=n.em(s);break}case"codespan":{o+=n.codespan(s);break}case"br":{o+=n.br(s);break}case"del":{o+=n.del(s);break}case"text":{o+=n.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return o}},kr=class{options;block;constructor(e){this.options=e||Mn}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?St.lex:St.lexInline}provideParser(e=this.block){return e?Ct.parse:Ct.parseInline}},fa=class{defaults=aa();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Ct;Renderer=no;TextRenderer=pa;Lexer=St;Tokenizer=to;Hooks=kr;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let o of e)switch(n=n.concat(t.call(this,o)),o.type){case"table":{let a=o;for(let i of a.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of a.rows)for(let s of i)n=n.concat(this.walkTokens(s.tokens,t));break}case"list":{let a=o;n=n.concat(this.walkTokens(a.items,t));break}default:{let a=o;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{let s=a[i].flat(1/0);n=n.concat(this.walkTokens(s,t))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let o={...n};if(o.async=this.defaults.async||o.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let i=t.renderers[a.name];i?t.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=i.apply(this,s)),l}:t.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=t[a.level];i?i.unshift(a.tokenizer):t[a.level]=[a.tokenizer],a.start&&(a.level==="block"?t.startBlock?t.startBlock.push(a.start):t.startBlock=[a.start]:a.level==="inline"&&(t.startInline?t.startInline.push(a.start):t.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(t.childTokens[a.name]=a.childTokens)}),o.extensions=t),n.renderer){let a=this.defaults.renderer||new no(this.defaults);for(let i in n.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let s=i,l=n.renderer[s],c=a[s];a[s]=(...d)=>{let f=l.apply(a,d);return f===!1&&(f=c.apply(a,d)),f||""}}o.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new to(this.defaults);for(let i in n.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let s=i,l=n.tokenizer[s],c=a[s];a[s]=(...d)=>{let f=l.apply(a,d);return f===!1&&(f=c.apply(a,d)),f}}o.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new kr;for(let i in n.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let s=i,l=n.hooks[s],c=a[s];kr.passThroughHooks.has(i)?a[s]=d=>{if(this.defaults.async&&kr.passThroughHooksRespectAsync.has(i))return(async()=>{let u=await l.call(a,d);return c.call(a,u)})();let f=l.call(a,d);return c.call(a,f)}:a[s]=(...d)=>{if(this.defaults.async)return(async()=>{let u=await l.apply(a,d);return u===!1&&(u=await c.apply(a,d)),u})();let f=l.apply(a,d);return f===!1&&(f=c.apply(a,d)),f}}o.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,i=n.walkTokens;o.walkTokens=function(s){let l=[];return l.push(i.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...o}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return St.lex(e,t??this.defaults)}parser(e,t){return Ct.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let o={...n},a={...this.defaults,...o},i=this.onError(!!a.silent,!!a.async);if(this.defaults.async===!0&&o.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return(async()=>{let s=a.hooks?await a.hooks.preprocess(t):t,l=await(a.hooks?await a.hooks.provideLexer(e):e?St.lex:St.lexInline)(s,a),c=a.hooks?await a.hooks.processAllTokens(l):l;a.walkTokens&&await Promise.all(this.walkTokens(c,a.walkTokens));let d=await(a.hooks?await a.hooks.provideParser(e):e?Ct.parse:Ct.parseInline)(c,a);return a.hooks?await a.hooks.postprocess(d):d})().catch(i);try{a.hooks&&(t=a.hooks.preprocess(t));let s=(a.hooks?a.hooks.provideLexer(e):e?St.lex:St.lexInline)(t,a);a.hooks&&(s=a.hooks.processAllTokens(s)),a.walkTokens&&this.walkTokens(s,a.walkTokens);let l=(a.hooks?a.hooks.provideParser(e):e?Ct.parse:Ct.parseInline)(s,a);return a.hooks&&(l=a.hooks.postprocess(l)),l}catch(s){return i(s)}}}onError(e,t){return n=>{if(n.message+=`
|
|
69
|
+
Please report this to https://github.com/markedjs/marked.`,e){let o="<p>An error occurred:</p><pre>"+ct(n.message+"",!0)+"</pre>";return t?Promise.resolve(o):o}if(t)return Promise.reject(n);throw n}}},Pn=new fa;function we(e,t){return Pn.parse(e,t)}we.options=we.setOptions=function(e){return Pn.setOptions(e),we.defaults=Pn.defaults,ms(we.defaults),we};we.getDefaults=aa;we.defaults=Mn;function tf(...e){return Pn.use(...e),we.defaults=Pn.defaults,ms(we.defaults),we}we.use=tf;we.walkTokens=function(e,t){return Pn.walkTokens(e,t)};we.parseInline=Pn.parseInline;we.Parser=Ct;we.parser=Ct.parse;we.Renderer=no;we.TextRenderer=pa;we.Lexer=St;we.lexer=St.lex;we.Tokenizer=to;we.Hooks=kr;we.parse=we;var ch=we.options,dh=we.setOptions,uh=we.walkTokens,ph=we.parseInline;var fh=Ct.parse,mh=St.lex;var co,ae,Cs,nf,gn,zs,Ts,As,ma,oo,Sr,Es,va,ga,ha,Ps,io={},so=[],rf=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Cr=Array.isArray;function Zt(e,t){for(var n in t)e[n]=t[n];return e}function ya(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Rn(e,t,n){var o,a,i,s={};for(i in t)i=="key"?o=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?co.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return ao(e,s,o,a,null)}function ao(e,t,n,o,a){var i={type:e,props:t,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++Cs,__i:-1,__u:0};return a==null&&ae.vnode!=null&&ae.vnode(i),i}function F(e){return e.children}function Tt(e,t){this.props=e,this.context=t}function In(e,t){if(t==null)return e.__?In(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?In(e):null}function of(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,o=[],a=[],i=Zt({},t);i.__v=t.__v+1,ae.vnode&&ae.vnode(i),xa(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,o,n??In(t),!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,Ds(o,i,a),t.__e=t.__=null,i.__e!=n&&Ms(i)}}function Ms(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Ms(e)}function ba(e){(!e.__d&&(e.__d=!0)&&gn.push(e)&&!lo.__r++||zs!=ae.debounceRendering)&&((zs=ae.debounceRendering)||Ts)(lo)}function lo(){try{for(var e,t=1;gn.length;)gn.length>t&&gn.sort(As),e=gn.shift(),t=gn.length,of(e)}finally{gn.length=lo.__r=0}}function Is(e,t,n,o,a,i,s,l,c,d,f){var u,p,g,m,y,_,E=o&&o.__k||so,x=t.length;for(c=af(n,t,E,c,x),u=0;u<x;u++)(g=n.__k[u])!=null&&(p=g.__i!=-1&&E[g.__i]||io,g.__i=u,_=xa(e,g,p,a,i,s,l,c,d,f),m=g.__e,g.ref&&p.ref!=g.ref&&(p.ref&&ka(p.ref,null,g),f.push(g.ref,g.__c||m,g)),y==null&&m!=null&&(y=m),4&g.__u?(c=Rs(g,c,e),p.__e&&(p.__e=null)):typeof g.type=="function"&&_!==void 0?c=_:m&&(c=m.nextSibling),g.__u&=-7);return n.__e=y,c}function af(e,t,n,o,a){var i,s,l,c,d,f=n.length,u=f,p=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=ao(null,s,null,null,null):Cr(s)?s=e.__k[i]=ao(F,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=ao(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,c=i+p,s.__=e,s.__b=e.__b+1,l=null,(d=s.__i=sf(s,n,c,u))!=-1&&(u--,(l=n[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(a>f?p--:a<f&&p++),typeof s.type!="function"&&(s.__u|=4)):d!=c&&(d==c-1?p--:d==c+1?p++:(d>c?p--:p++,s.__u|=4))):e.__k[i]=null;if(u)for(i=0;i<f;i++)(l=n[i])!=null&&(2&l.__u)==0&&(l.__e==o&&(o=In(l)),Os(l,l));return o}function Rs(e,t,n){var o,a;if(typeof e.type=="function"){for(o=e.__k,a=0;o&&a<o.length;a++)o[a]&&(o[a].__=e,t=Rs(o[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=In(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Tr(e,t){return t=t||[],e==null||typeof e=="boolean"||(Cr(e)?e.some(function(n){Tr(n,t)}):t.push(e)),t}function sf(e,t,n,o){var a,i,s,l=e.key,c=e.type,d=t[n],f=d!=null&&(2&d.__u)==0;if(d===null&&l==null||f&&l==d.key&&c==d.type)return n;if(o>(f?1:0)){for(a=n-1,i=n+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return s}return-1}function _s(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||rf.test(t)?n:n+"px"}function ro(e,t,n,o,a){var i,s;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(t in o)n&&t in n||_s(e.style,t,"");if(n)for(t in n)o&&n[t]==o[t]||_s(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(Es,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?o?n[Sr]=o[Sr]:(n[Sr]=va,e.addEventListener(t,i?ha:ga,i)):e.removeEventListener(t,i?ha:ga,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Ss(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[oo]==null)t[oo]=va++;else if(t[oo]<n[Sr])return;return n(ae.event?ae.event(t):t)}}}function xa(e,t,n,o,a,i,s,l,c,d){var f,u,p,g,m,y,_,E,x,k,R,B,j,w,A,P,I=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),i=[l=t.__e=n.__e]),(f=ae.__b)&&f(t);e:if(typeof I=="function"){u=s.length;try{if(x=t.props,k=I.prototype&&I.prototype.render,R=(f=I.contextType)&&o[f.__c],B=f?R?R.props.value:f.__:o,n.__c?E=(p=t.__c=n.__c).__=p.__E:(k?t.__c=p=new I(x,B):(t.__c=p=new Tt(x,B),p.constructor=I,p.render=cf),R&&R.sub(p),p.state||(p.state={}),p.__n=o,g=p.__d=!0,p.__h=[],p._sb=[]),k&&p.__s==null&&(p.__s=p.state),k&&I.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=Zt({},p.__s)),Zt(p.__s,I.getDerivedStateFromProps(x,p.__s))),m=p.props,y=p.state,p.__v=t,g)k&&I.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),k&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(k&&I.getDerivedStateFromProps==null&&x!==m&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(x,B),t.__v==n.__v||!p.__e&&p.shouldComponentUpdate!=null&&p.shouldComponentUpdate(x,p.__s,B)===!1){t.__v!=n.__v&&(p.props=x,p.state=p.__s,p.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(N){N&&(N.__=t)}),so.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),l=In(n);break e}p.componentWillUpdate!=null&&p.componentWillUpdate(x,p.__s,B),k&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(m,y,_)})}if(p.context=B,p.props=x,p.__P=e,p.__e=!1,j=ae.__r,w=0,k)p.state=p.__s,p.__d=!1,j&&j(t),f=p.render(p.props,p.state,p.context),so.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,j&&j(t),f=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++w<25);p.state=p.__s,p.getChildContext!=null&&(o=Zt(Zt({},o),p.getChildContext())),k&&!g&&p.getSnapshotBeforeUpdate!=null&&(_=p.getSnapshotBeforeUpdate(m,y)),A=f!=null&&f.type===F&&f.key==null?Ns(f.props.children):f,l=Is(e,Cr(A)?A:[A],t,n,o,a,i,s,l,c,d),p.base=t.__e,t.__u&=-161,p.__h.length&&s.push(p),E&&(p.__E=p.__=null)}catch(N){if(s.length=u,t.__v=null,c||i!=null){if(N.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i!=null&&(i[i.indexOf(l)]=null),t.__e=l}else if(i!=null)for(P=i.length;P--;)ya(i[P])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),N.then||Ls(t),ae.__e(N,t,n)}}else i==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=lf(n.__e,t,n,o,a,i,s,c,d);return(f=ae.diffed)&&f(t),128&t.__u?void 0:l}function Ls(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ls))}function Ds(e,t,n){for(var o=0;o<n.length;o++)ka(n[o],n[++o],n[++o]);ae.__c&&ae.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){ae.__e(i,a.__v)}})}function Ns(e){return typeof e!="object"||e==null||e.__b>0?e:Cr(e)?e.map(Ns):e.constructor!==void 0?null:Zt({},e)}function lf(e,t,n,o,a,i,s,l,c){var d,f,u,p,g,m,y,_=n.props||io,E=t.props,x=t.type;if(x=="svg"?a="http://www.w3.org/2000/svg":x=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((g=i[d])&&"setAttribute"in g==!!x&&(x?g.localName==x:g.nodeType==3)){e=g,i[d]=null;break}}if(e==null){if(x==null)return document.createTextNode(E);e=document.createElementNS(a,x,E.is&&E),l&&(ae.__m&&ae.__m(t,i),l=!1),i=null}if(x==null)_===E||l&&e.data==E||(e.data=E);else{if(i=x=="textarea"&&E.defaultValue!=null?null:i&&co.call(e.childNodes),!l&&i!=null)for(_={},d=0;d<e.attributes.length;d++)_[(g=e.attributes[d]).name]=g.value;for(d in _)g=_[d],d=="dangerouslySetInnerHTML"?u=g:d=="children"||d in E||d=="value"&&"defaultValue"in E||d=="checked"&&"defaultChecked"in E||ro(e,d,null,g,a);for(d in E)g=E[d],d=="children"?p=g:d=="dangerouslySetInnerHTML"?f=g:d=="value"?m=g:d=="checked"?y=g:l&&typeof g!="function"||_[d]===g||ro(e,d,g,_[d],a);if(f)l||u&&(f.__html==u.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),t.__k=[];else if(u&&(e.innerHTML=""),Is(t.type=="template"?e.content:e,Cr(p)?p:[p],t,n,o,x=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:n.__k&&In(n,0),l,c),i!=null)for(d=i.length;d--;)ya(i[d]);l&&x!="textarea"||(d="value",x=="progress"&&m==null?e.removeAttribute("value"):m!=null&&(m!==e[d]||x=="progress"&&!m||x=="option"&&m!=_[d])&&ro(e,d,m,_[d],a),d="checked",y!=null&&y!=e[d]&&ro(e,d,y,_[d],a))}return e}function ka(e,t,n){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&t==null||(e.__u=e(t))}else e.current=t}catch(a){ae.__e(a,n)}}function Os(e,t,n){var o,a;if(ae.unmount&&ae.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||ka(o,null,t)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(i){ae.__e(i,t)}o.base=o.__P=o.__n=null}if(o=e.__k)for(a=0;a<o.length;a++)o[a]&&Os(o[a],t,n||typeof e.type!="function");n||ya(e.__e),e.__c=e.__=e.__e=void 0}function cf(e,t,n){return this.constructor(e,n)}function Be(e,t,n){var o,a,i,s;t==document&&(t=document.documentElement),ae.__&&ae.__(e,t),a=(o=typeof n=="function")?null:n&&n.__k||t.__k,i=[],s=[],xa(t,e=(!o&&n||t).__k=Rn(F,null,[e]),a||io,io,t.namespaceURI,!o&&n?[n]:a?null:t.firstChild?co.call(t.childNodes):null,i,!o&&n?n:a?a.__e:t.firstChild,o,s),Ds(i,e,s),e.props.children=null}function uo(e){function t(n){var o,a;return this.getChildContext||(o=new Set,(a={})[t.__c]=this,this.getChildContext=function(){return a},this.componentWillUnmount=function(){o=null},this.shouldComponentUpdate=function(i){this.props.value!=i.value&&o.forEach(function(s){s.__e=!0,ba(s)})},this.sub=function(i){o.add(i);var s=i.componentWillUnmount;i.componentWillUnmount=function(){o&&o.delete(i),s&&s.call(i)}}),n.children}return t.__c="__cC"+Ps++,t.__=e,t.Provider=t.__l=(t.Consumer=function(n,o){return n.children(o)}).contextType=t,t}co=so.slice,ae={__e:function(e,t,n,o){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,o||{}),s=a.__d),s)return a.__E=a}catch(l){e=l}throw e}},Cs=0,nf=function(e){return e!=null&&e.constructor===void 0},Tt.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Zt({},this.state),typeof e=="function"&&(e=e(Zt({},n),this.props)),e&&Zt(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),ba(this))},Tt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),ba(this))},Tt.prototype.render=F,gn=[],Ts=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,As=function(e,t){return e.__v.__b-t.__v.__b},lo.__r=0,ma=Math.random().toString(8),oo="__d"+ma,Sr="__a"+ma,Es=/(PointerCapture)$|Capture$/i,va=0,ga=Ss(!1),ha=Ss(!0),Ps=0;var hn,Ce,wa,Fs,Ar=0,Ws=[],Ne=ae,$s=Ne.__b,Bs=Ne.__r,Us=Ne.diffed,qs=Ne.__c,Hs=Ne.unmount,Vs=Ne.__;function er(e,t){Ne.__h&&Ne.__h(Ce,e,Ar||t),Ar=0;var n=Ce.__H||(Ce.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function M(e){return Ar=1,Gs(Xs,e)}function Gs(e,t,n){var o=er(hn++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):Xs(void 0,t),function(l){var c=o.__N?o.__N[0]:o.__[0],d=o.t(c,l);c!==d&&(o.__N=[d,o.__[1]],o.__c.setState({}))}],o.__c=Ce,!Ce.__f)){var a=function(l,c,d){if(!o.__c.__H)return!0;var f=!1,u=o.__c.props!==l;if(o.__c.__H.__.some(function(g){if(g.__N){f=!0;var m=g.__[0];g.__=g.__N,g.__N=void 0,m!==g.__[0]&&(u=!0)}}),i){var p=i.call(this,l,c,d);return f?p||u:p}return!f||u};Ce.__f=!0;var i=Ce.shouldComponentUpdate,s=Ce.componentWillUpdate;Ce.componentWillUpdate=function(l,c,d){if(this.__e){var f=i;i=void 0,a(l,c,d),i=f}s&&s.call(this,l,c,d)},Ce.shouldComponentUpdate=a}return o.__N||o.__}function Q(e,t){var n=er(hn++,3);!Ne.__s&&Sa(n.__H,t)&&(n.__=e,n.u=t,Ce.__H.__h.push(n))}function Er(e,t){var n=er(hn++,4);!Ne.__s&&Sa(n.__H,t)&&(n.__=e,n.u=t,Ce.__h.push(n))}function te(e){return Ar=5,At(function(){return{current:e}},[])}function At(e,t){var n=er(hn++,7);return Sa(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Qt(e,t){return Ar=8,At(function(){return e},t)}function _a(e){var t=Ce.context[e.__c],n=er(hn++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(Ce)),t.props.value):e.__}function fo(){var e=er(hn++,11);if(!e.__){for(var t=Ce.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function df(){for(var e;e=Ws.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(po),t.__h.some(za),t.__h=[]}catch(n){t.__h=[],Ne.__e(n,e.__v)}}}Ne.__b=function(e){Ce=null,$s&&$s(e)},Ne.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Vs&&Vs(e,t)},Ne.__r=function(e){Bs&&Bs(e),hn=0;var t=(Ce=e.__c).__H;t&&(wa===Ce?(t.__h=[],Ce.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(po),t.__h.some(za),t.__h=[],hn=0)),wa=Ce},Ne.diffed=function(e){Us&&Us(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Ws.push(t)!==1&&Fs===Ne.requestAnimationFrame||((Fs=Ne.requestAnimationFrame)||uf)(df)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),wa=Ce=null},Ne.__c=function(e,t){t.some(function(n){try{n.__h.some(po),n.__h=n.__h.filter(function(o){return!o.__||za(o)})}catch(o){t.some(function(a){a.__h&&(a.__h=[])}),t=[],Ne.__e(o,n.__v)}}),qs&&qs(e,t)},Ne.unmount=function(e){Hs&&Hs(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(o){try{po(o)}catch(a){t=a}}),n.__H=void 0,t&&Ne.__e(t,n.__v))};var js=typeof requestAnimationFrame=="function";function uf(e){var t,n=function(){clearTimeout(o),js&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);js&&(t=requestAnimationFrame(n))}function po(e){var t=Ce,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),Ce=t}function za(e){var t=Ce;e.__c=e.__(),Ce=t}function Sa(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function Xs(e,t){return typeof t=="function"?t(e):t}var Ca=null;function Ks(e){Ca=e}function en(e){return Ca&&e&&typeof window<"u"&&e===window.tangu?{...e,...Ca}:e}var Ln=e=>!!e&&(!e.unitPage||!!e.unitPublicEntry),re=()=>en(typeof window<"u"?window.tangu:void 0)||{};function mo(e){let t=typeof e?.status=="number"?e.status:0;if(t>=200&&t<300)return{ok:!0,status:t,data:e?.json??null};let n=e?.json&&typeof e.json=="object"?e.json:null,o=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,a=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:t,code:o,detail:a,transport:typeof e?.error=="string"?e.error:null}}var Ta=e=>({ok:!1,status:0,code:null,detail:null,transport:e});async function J(e,t={}){let n=re().cloudFetch;if(!n)return Ta("no_bridge");try{return mo(await n({path:e,...t}))}catch(o){return Ta(String(o?.message||o))}}async function go(e,t){if(!e)return t();try{return mo(await e())}catch(n){return Ta(String(n?.message||n))}}var Dn=e=>e.status===401&&(e.transport==="not_signed_in"||e.code===null&&e.detail===null&&e.transport===null);function Et(e){return String(e?.message??e??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function bn(e,t,n){let o=re().cloudInvoke;if(!o)return!1;let a=e==="membership"&&t?n?[e,t,n]:[e,t]:[e];try{return!!(await o("auth:openPayCenter",...a))?.ok}catch{return!1}}async function Nn(e){let t=re().openAccountCenter;if(!t)return!1;try{return!!(await t(e)).ok}catch{return!1}}var pf=0;function r(e,t,n,o,a,i){t||(t={});var s,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?s=t[l]:c[l]=t[l];var d={type:e,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--pf,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return ae.vnode&&ae.vnode(d),d}var ff={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4"};function Y({name:e,size:t=14,class:n}){return r("svg",{class:n,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:r("path",{d:ff[e]})})}function tr({size:e=12}){return r("svg",{class:"spin",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:r("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var mf={"sub.identity":"\u63D2\u4EF6 ID","sub.identityHint":"\u63D0\u4EA4\u540E\u81EA\u52A8\u5206\u914D\u552F\u4E00 ID\u3002\u540D\u79F0\u53EF\u4EE5\u91CD\u590D\uFF0C\u66F4\u65B0\u6CBF\u7528\u540C\u4E00\u4E2A ID\u3002","sub.description":"\u8BE6\u7EC6\u63CF\u8FF0","sub.tags":"\u6807\u7B7E","sub.tagsHint":"\u4EE5\u9017\u53F7\u5206\u9694\uFF0C\u6700\u591A 8 \u4E2A","sub.minAppVersion":"\u6700\u4F4E Forsion \u7248\u672C","sub.maxAppVersion":"\u6700\u9AD8\u7248\u672C\uFF08\u4E0D\u542B\uFF09","sub.optional":"\u9009\u586B","sub.platforms":"\u652F\u6301\u7684\u7AEF","sub.requirementsHint":"\u652F\u6301 desktop\u3001macos\u3001windows\u3001linux\u3001android\u3001ios\u3001web\u3002\u7559\u7A7A\u8868\u793A\u672A\u58F0\u660E\u3002ZIP \u6E05\u5355\u4E2D\u7684\u8981\u6C42\u4F1A\u81EA\u52A8\u8BFB\u53D6\uFF0C\u624B\u586B\u503C\u987B\u4E0E\u6E05\u5355\u4E00\u81F4\u3002","sub.err.market_requirements_invalid":"\u7248\u672C\u8981\u6C42\u6216\u5E73\u53F0\u65E0\u6548\u3002","sub.err.market_requirements_mismatch":"\u624B\u586B\u7248\u672C\u8981\u6C42\u4E0E ZIP \u6E05\u5355\u4E0D\u4E00\u81F4\u3002","sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.update":"\u63D0\u4EA4\u65B0\u7248\u672C","sub.updateTitle":"\u66F4\u65B0 {name}","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u6211\u7684\u6295\u7A3F\u4E2D\u3002","sub.updated":"\u65B0\u7248\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5DF2\u4E0A\u67B6\u7248\u672C\u4ECD\u53EF\u4E0B\u8F7D\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.remoteUpdate":"\u5728\u539F\u6E20\u9053\u53D1\u5E03\u65B0\u7248\u672C\u540E\uFF0C\u7531\u7BA1\u7406\u5458\u91CD\u65B0\u5BA1\u6838\u3002","sub.zip":"ZIP \u5305","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.version":"\u7248\u672C\u53F7","sub.versionHint":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u7248\u672C\uFF0C\u5E76\u4E0E manifest \u4E2D\u7684\u7248\u672C\u4E00\u81F4\u3002","sub.readme":"\u8BF4\u660E\u6587\u6863\uFF08Markdown\uFF09","sub.keep":"\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.errVersion":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u8BF7\u586B\u5199\u7248\u672C\u53F7\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","page.account":"\u8D26\u53F7","page.membershipUsage":"\u4F1A\u5458\u4E0E\u7528\u91CF","page.membershipQuota":"\u4F1A\u5458\u4E0E\u989D\u5EA6","page.pointsInvite":"\u79EF\u5206\u4E0E\u9080\u8BF7","page.helpDiagnostics":"\u5E2E\u52A9\u4E0E\u8BCA\u65AD","account.details.title":"\u767B\u5F55\u4E0E\u8D44\u6599","account.details.desc":"\u5934\u50CF\u3001\u6635\u79F0\u4E0E\u7B80\u4ECB\u5728\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u4E2D\u7F16\u8F91\u3002","account.details.username":"\u7528\u6237\u540D","diag.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u8BCA\u65AD\u6570\u636E\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u7535\u8111\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u7684\u684C\u9762\u7AEF\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5","guide.title":"\u4F7F\u7528\u6307\u5357","guide.readOnly":"\u53EA\u8BFB","guide.more":"\u66F4\u591A","guide.unlockAll":"\u5168\u90E8\u89E3\u9501","guide.relock":"\u6539\u56DE\u6309\u7B49\u7EA7\u89E3\u9501","guide.reminders":"\u4F7F\u7528\u6307\u5357\u63D0\u9192","guide.spotlight":"\u73B0\u573A\u6307\u5F15","guide.spotStep":"\u7B2C {n} \u6B65\uFF0C\u5171 {total} \u6B65","guide.figure":"\u793A\u610F\u56FE","guide.openAchievements":"\u6253\u5F00\u6210\u5C31","guide.tasks":"\u672C\u7AE0\u4EFB\u52A1","guide.go":"\u5E26\u6211\u53BB","guide.desktopOnly":"\u5728\u7535\u8111\u4E0A\u505A","guide.taskDone":"\u5DF2\u5B8C\u6210","guide.askTangu":"\u95EE Tangu","guide.progress":"\u8FDB\u5EA6","guide.justUnlocked":"\u521A\u89E3\u9501","guide.lockedHint":"\u672A\u89E3\u9501","guide.whatsNew":"\u65B0\u7248\u672C \xB7 {version}","guide.level.lv1":"Lv.1 \u521D\u6765\u4E4D\u5230","guide.level.lv2":"Lv.2 \u719F\u95E8\u719F\u8DEF","guide.level.lv3":"Lv.3 \u5F97\u5FC3\u5E94\u624B","guide.level.lv4":"Lv.4 \u878D\u4F1A\u8D2F\u901A","guide.locked.title":"\u8FD9\u4E00\u7AE0\u8FD8\u6CA1\u89E3\u9501","guide.locked.body":"\u505A\u5B8C\u300C{level}\u300D\u7684\u4EFB\u52A1\u5C31\u80FD\u8BFB\u5168\u6587\u3002","guide.locked.left":"\u8FD8\u5DEE\u8FD9\u51E0\u9879\uFF1A","guide.locked.hint":"\u7528\u8FC7\u4E00\u9635\u4E86\uFF1F\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002","guide.levelProgress":"\u672C\u7EA7\u8FDB\u5EA6 {done}/{total}","guide.next":"\u4E0B\u4E00\u7EA7","guide.allDone":"\u5168\u90E8\u5B8C\u6210","guide.allDoneBody":"\u6307\u5357\u91CC\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u968F\u65F6\u56DE\u6765\u7FFB\u770B\u3002","guide.review":"\u56DE\u770B","guide.ask.hint":"\u5BF9\u300C{chapter}\u300D\u6709\u7591\u95EE\uFF1F\u95EE Tangu \u4F1A\u5F00\u4E00\u4E2A\u5E26\u4E0A\u672C\u7AE0\u5185\u5BB9\u7684\u65B0\u5BF9\u8BDD\u3002","guide.ask.placeholder":"\u60F3\u95EE\u4EC0\u4E48\uFF1F","guide.ask.send":"\u5F00\u59CB\u5BF9\u8BDD","guide.ask.prompt":"\u6211\u6B63\u5728\u8BFB Forsion \u4F7F\u7528\u6307\u5357\u91CC\u300C{chapter}\u300D\u8FD9\u4E00\u7AE0\uFF0C\u5185\u5BB9\u9644\u5728\u4E0B\u9762\u3002{question}","guide.ask.unavailable":"\u8FD9\u91CC\u5F00\u4E0D\u4E86\u5BF9\u8BDD","guide.ask.chatTitle":"\u4F7F\u7528\u6307\u5357\u95EE\u7B54","guide.companion.back":"\u56DE\u5230\u6307\u5357","guide.companion.close":"\u6536\u8D77","guide.toast.taskDone":"\u5B8C\u6210\uFF1A{task}","guide.letter.levelTitle":"{level} \u5DF2\u89E3\u9501\uFF1A\u63A5\u4E0B\u6765\u8BD5\u8BD5\u8FD9\u51E0\u4EF6\u4E8B","guide.letter.levelBody":"\u4E0A\u4E00\u7EA7\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u4E0B\u9762\u8FD9\u51E0\u7AE0\u73B0\u5728\u53EF\u4EE5\u8BFB\u4E86\u3002\u6BCF\u9879\u4EFB\u52A1\u90FD\u80FD\u300C\u5E26\u6211\u53BB\u300D\u3002","guide.letter.versionTitle":"{version} \u6709 {n} \u4EF6\u65B0\u4E1C\u897F\u53EF\u4EE5\u4F53\u9A8C","guide.letter.versionBody":"\u8FD9\u4E2A\u7248\u672C\u65B0\u52A0\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4E0A\u624B\uFF1A","guide.letter.open":"\u6253\u5F00\u6307\u5357","guide.status.done":"\u5DF2\u5B8C\u6210","guide.cmd.open":"\u6253\u5F00\u4F7F\u7528\u6307\u5357","penzor.title":"\u84EC\u6D32\u4E91","penzor.kicker":"\u84EC\u6D32\u4E91 \xB7 Penzor Cloud","penzor.overview":"\u6982\u89C8","penzor.places":"\u4F4D\u7F6E","penzor.details":"\u8BE6\u60C5","penzor.ledger.sync":"\u667A\u5E93\u540C\u6B65","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"\u5E94\u7528\u6587\u4EF6","penzor.ledger.exports":"\u5BFC\u51FA","penzor.trash":"\u56DE\u6536\u7AD9","penzor.items":"{n} \u9879","penzor.total.sub":"\u5B58\u5728 Forsion \u4E91\u7AEF \xB7 {time}\u66F4\u65B0","penzor.justNow":"\u521A\u521A","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} \u4E2A\u5E93 \xB7 \u4E0A\u6B21\u5199\u5165 {time}","penzor.card.syncSubNone":"{n} \u4E2A\u5E93","penzor.card.syncFoot":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 {size} \u4E0D\u4E0A\u4F20","penzor.card.syncWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u65B0\u6587\u4EF6\u4E0D\u518D\u4E0A\u4F20\uFF0C\u5DF2\u5728\u4E91\u7AEF\u7684\u7167\u5E38\u540C\u6B65","penzor.card.amaSmall":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.card.amaSub":"{n} \u4E2A\u4E91\u7AEF\u667A\u5E93","penzor.card.amaFoot":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u7684 Cloud \u4FA7","penzor.card.appsFoot":"\u56DE\u6536\u7AD9 {n} \u9879 \xB7 {size}","penzor.card.appsWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u5E94\u7528\u4E0D\u80FD\u518D\u5B58\u65B0\u6587\u4EF6\uFF1B\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF0C\u6E05\u7A7A\u80FD\u817E\u51FA\u7A7A\u95F4","penzor.card.expSmall":"{n} \u4E2A\u6587\u4EF6","penzor.card.expSub":"\u6700\u8FD1\uFF1A{name} \xB7 {time}","penzor.card.expFoot":"\u5404\u5E94\u7528\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.card.none":"\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.largest":"\u5360\u7528\u6700\u591A","penzor.col.name":"\u540D\u79F0","penzor.col.size":"\u5927\u5C0F","penzor.col.mtime":"\u4FEE\u6539\u65F6\u95F4","penzor.col.device":"\u5199\u5165\u8BBE\u5907","penzor.col.deleted":"\u5220\u9664\u4E8E","penzor.col.origin":"\u539F\u4F4D\u7F6E","penzor.col.app":"\u6765\u6E90","penzor.sort.mtime":"\u6309\u4FEE\u6539\u65F6\u95F4","penzor.sort.size":"\u6309\u5927\u5C0F","penzor.sort.name":"\u6309\u540D\u79F0","penzor.search":"\u641C\u7D22\u8FD9\u91CC\u7684\u6587\u4EF6\u540D","penzor.sync.thisDevice":"\u672C\u673A\u5728\u540C\u6B65","penzor.meta.files":"{size} \xB7 {n} \u4E2A\u6587\u4EF6","penzor.sync.last":"\u4E0A\u6B21\u5199\u5165 {time} \xB7 {device}","penzor.sync.lastNoDevice":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.devices":"{n} \u53F0\u8BBE\u5907\u540C\u6B65\u8FD9\u4E2A\u5E93","penzor.sync.meter":"\u667A\u5E93\u540C\u6B65\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}","penzor.apps.meter":"\u5E94\u7528\u6587\u4EF6\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}\uFF08\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF09","penzor.apps.by":"\u7531 {app} \u5199\u5165","penzor.ama.notCounted":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.ama.open":"\u5728 Amadeus \u4E2D\u6253\u5F00","penzor.trash.meta":"{n} \u9879 \xB7 {size}","penzor.trash.note":"\u4ECD\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC\uFF0C\u6C38\u4E45\u5220\u9664\u540E\u624D\u817E\u51FA\u7A7A\u95F4","penzor.trash.emptyBtn":"\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.act.download":"\u4E0B\u8F7D","penzor.act.rename":"\u91CD\u547D\u540D","penzor.act.move":"\u79FB\u52A8\u5230\u2026","penzor.act.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","penzor.act.delete":"\u5220\u9664","penzor.act.restore":"\u6062\u590D","penzor.act.purge":"\u6C38\u4E45\u5220\u9664","penzor.act.copyName":"\u590D\u5236\u5E93\u540D","penzor.act.openSync":"\u5728\u8BBE\u7F6E\u4E2D\u6253\u5F00\u540C\u6B65","penzor.act.refresh":"\u5237\u65B0","penzor.act.up":"\u4E0A\u4E00\u7EA7","penzor.toast.trashed":"\u5DF2\u628A\u300C{name}\u300D\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.restored":"\u5DF2\u6062\u590D\u300C{name}\u300D","penzor.toast.purged":"\u5DF2\u6C38\u4E45\u5220\u9664\u300C{name}\u300D","penzor.toast.emptied":"\u5DF2\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.toast.downloaded":"\u5DF2\u5B58\u5230\u300C\u4E0B\u8F7D\u300D\uFF1A{name}","penzor.toast.renamed":"\u5DF2\u6539\u540D\u4E3A\u300C{name}\u300D","penzor.toast.moved":"\u5DF2\u79FB\u5230\u300C{name}\u300D","penzor.toast.versionRestored":"\u5DF2\u6062\u590D\u5230\u7B2C {n} \u7248","penzor.toast.copied":"\u5DF2\u590D\u5236\u5E93\u540D","penzor.toast.failed":"\u6CA1\u6210\u529F\uFF1A{reason}","penzor.confirm.purge":"\u6C38\u4E45\u5220\u9664\u300C{name}\u300D\uFF1F\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.confirm.empty":"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F{n} \u9879\u4F1A\u88AB\u6C38\u4E45\u5220\u9664\uFF0C\u627E\u4E0D\u56DE\u6765\u3002","penzor.confirm.deleteExport":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF0C\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.cancel":"\u53D6\u6D88","penzor.side.where":"\u4F4D\u7F6E","penzor.side.mtime":"\u4FEE\u6539","penzor.side.device":"\u5199\u5165\u8BBE\u5907","penzor.side.thisDevice":"{name}\uFF08\u672C\u673A\uFF09","penzor.side.from":"\u6765\u6E90","penzor.side.versions":"\u5386\u53F2\u7248\u672C","penzor.side.versionsNone":"\u6CA1\u6709","penzor.side.versionRow":"\u7B2C {n} \u7248 \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"\u6062\u590D\u8FD9\u4E00\u7248","penzor.side.deletedAt":"\u5220\u9664\u4E8E","penzor.side.origin":"\u539F\u4F4D\u7F6E","penzor.side.inner":"\u91CC\u9762\u8FD8\u6709 {n} \u9879\uFF0C\u6062\u590D\u65F6\u4E00\u8D77\u56DE\u6765","penzor.side.inTrash":"\u5728\u56DE\u6536\u7AD9 \xB7 {size}","penzor.side.readonlySync":"\u540C\u6B65\u5E93\u91CC\u7684\u6587\u4EF6\u53EA\u5728\u8BBE\u5907\u4E0A\u5220\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u6587\u4EF6\uFF0C\u6BCF\u53F0\u540C\u6B65 {vault} \u7684\u8BBE\u5907\u4E0B\u6B21\u540C\u6B65\u65F6\u90FD\u4F1A\u8DDF\u7740\u5220\u6389\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.readonlyAma":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u91CC\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u9644\u4EF6\uFF0C\u5F15\u7528\u5B83\u7684\u7B14\u8BB0\u4F1A\u7F3A\u56FE\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.exportNote":"\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF1A\u5220\u9664\u5C31\u662F\u6C38\u4E45\u5220\u9664\u3002","penzor.side.none":"\u9009\u4E00\u4E2A\u6587\u4EF6\u770B\u8BE6\u60C5","penzor.side.folder":"\u6587\u4EF6\u5939 \xB7 {n} \u9879","penzor.side.folderPlain":"\u6587\u4EF6\u5939","penzor.move.title":"\u79FB\u5230\u54EA\u91CC","penzor.move.root":"{app} \u6700\u4E0A\u5C42","penzor.move.here":"\u79FB\u5230\u8FD9\u91CC","penzor.move.noFolders":"\u8FD9\u4E00\u5C42\u6CA1\u6709\u6587\u4EF6\u5939","penzor.rename.save":"\u4FDD\u5B58","penzor.empty.title":"\u84EC\u6D32\u4E91\u91CC\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.empty.lead":"\u8FD9\u4E9B\u4E1C\u897F\u5B58\u8FDB\u4E91\u7AEF\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF1A","penzor.empty.sync":"\u5728\u300C\u8BBE\u7F6E \u203A \u540C\u6B65\u300D\u91CC\u628A\u8FDC\u7A0B\u670D\u52A1\u9009\u6210\u300C\u84EC\u6D32\u4E91\u300D\uFF0C\u672C\u5730\u667A\u5E93\u5C31\u540C\u6B65\u5230\u8FD9\u91CC","penzor.empty.ama":"Amadeus \u5207\u5230 Cloud \u4FA7\u5199\u7684\u7B14\u8BB0","penzor.empty.apps":"\u5404\u5E94\u7528\u5B58\u5230\u4E91\u7AEF\u6216\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.empty.openSync":"\u6253\u5F00\u540C\u6B65\u8BBE\u7F6E","penzor.out.title":"\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u84EC\u6D32\u4E91","penzor.out.lead":"\u84EC\u6D32\u4E91\u653E\u7740\u4F60\u540C\u6B65\u5230 Forsion \u4E91\u7AEF\u7684\u5E93\u3001Amadeus Cloud \u7684\u7B14\u8BB0\uFF0C\u548C\u5404\u5E94\u7528\u5B58\u5728\u4E91\u7AEF\u7684\u6587\u4EF6\u3002","penzor.out.signIn":"\u767B\u5F55 Forsion \u8D26\u53F7","penzor.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","penzor.err":"\u6CA1\u8BFB\u5230\uFF1A{reason}","penzor.folderEmpty":"\u8FD9\u91CC\u6CA1\u6709\u6587\u4EF6","penzor.noMatch":"\u6CA1\u6709\u540D\u5B57\u91CC\u5E26\u300C{q}\u300D\u7684\u6587\u4EF6","penzor.cmd.open":"\u6253\u5F00\u84EC\u6D32\u4E91","penzor.unreachable":"\u8FDE\u4E0D\u4E0A Forsion \u4E91\u7AEF\uFF0C\u7A0D\u540E\u518D\u8BD5","penzor.toast.emptyPartial":"\u56DE\u6536\u7AD9\u91CC\u8FD8\u6709 {n} \u9879\u6CA1\u5220\u6389","penzor.sort.deleted":"\u6309\u5220\u9664\u65F6\u95F4","penzor.side.versionsN":"{n} \u4E2A","penzor.drive":"\u6211\u7684\u4E91\u76D8","penzor.drive.meta":"\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC","penzor.drive.empty":"\u8FD9\u91CC\u8FD8\u7A7A\u7740\u3002\u628A\u6587\u4EF6\u62D6\u8FDB\u6765\uFF0C\u6216\u8005\u70B9\u300C\u4E0A\u4F20\u300D\u3002","penzor.act.upload":"\u4E0A\u4F20","penzor.act.uploadMore":"\u66F4\u591A\u4E0A\u4F20\u65B9\u5F0F","penzor.act.uploadFiles":"\u4E0A\u4F20\u6587\u4EF6\u2026","penzor.act.uploadFolder":"\u4E0A\u4F20\u6587\u4EF6\u5939\u2026","penzor.act.uploadHere":"\u4E0A\u4F20\u5230\u8FD9\u91CC\u2026","penzor.act.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.act.clearSel":"\u53D6\u6D88\u9009\u62E9","penzor.newFolder.default":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.sel.bar":"\u5DF2\u9009 {n} \u9879 \xB7 {size}","penzor.sel.title":"\u5DF2\u9009 {n} \u9879","penzor.sel.sub":"{size} \xB7 {files} \u4E2A\u6587\u4EF6","penzor.sel.subDirs":"{size} \xB7 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u6587\u4EF6\u5939","penzor.sel.download":"\u4E0B\u8F7D {n} \u9879","penzor.sel.saveTo":"\u4E0B\u8F7D\u5230","penzor.sel.saveToValue":"\u4E0B\u8F7D / {folder}","penzor.sel.noDirs":"\u6587\u4EF6\u5939\u8FD9\u4E00\u7248\u8FD8\u4E0D\u80FD\u4E0B\u8F7D\uFF0C\u53EA\u4E0B\u8F7D\u9009\u4E2D\u7684\u6587\u4EF6\u3002","penzor.download.folder":"\u84EC\u6D32\u4E91 {date}","penzor.drop.to":"\u677E\u624B\u4E0A\u4F20\u5230\u300C{place}\u300D","penzor.tx.busy":"\u6B63\u5728\u4F20\u8F93 {n} \u9879","penzor.tx.allDone":"\u5168\u90E8\u4F20\u5B8C","penzor.tx.failedN":"{n} \u9879\u6CA1\u4F20\u5B8C","penzor.tx.counts":"\u4E0A\u4F20 {up} \xB7 \u4E0B\u8F7D {down}","penzor.tx.eta":"\u5269\u7EA6 {eta}","penzor.tx.doneN":"{n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.restDone":"\u5176\u4F59 {n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"\u6392\u961F\u4E2D","penzor.tx.paused":"\u5DF2\u6682\u505C \xB7 \u7EE7\u7EED\u4F1A\u4ECE\u5934\u4F20","penzor.tx.uploaded":"\u5DF2\u4E0A\u4F20 \xB7 {time}","penzor.tx.downloaded":"\u5DF2\u4E0B\u8F7D \xB7 {time}","penzor.tx.canceled":"\u5DF2\u53D6\u6D88","penzor.tx.left":"\u5269 {eta}","penzor.tx.sec":"{n} \u79D2","penzor.tx.min":"{n} \u5206\u949F","penzor.tx.pause":"\u6682\u505C","penzor.tx.resume":"\u7EE7\u7EED","penzor.tx.cancel":"\u53D6\u6D88","penzor.tx.retry":"\u91CD\u8BD5","penzor.tx.remove":"\u79FB\u9664","penzor.tx.locate":"\u5B9A\u4F4D","penzor.tx.reveal":"\u5728\u6587\u4EF6\u5939\u4E2D\u663E\u793A","penzor.tx.pauseAll":"\u5168\u90E8\u6682\u505C","penzor.tx.resumeAll":"\u5168\u90E8\u7EE7\u7EED","penzor.tx.retryAll":"\u5168\u90E8\u91CD\u8BD5","penzor.tx.clearDone":"\u6E05\u9664\u5DF2\u5B8C\u6210","penzor.tx.clear":"\u6E05\u9664","penzor.tx.collapse":"\u6536\u8D77","penzor.tx.expand":"\u5C55\u5F00\u4F20\u8F93\u5217\u8868","penzor.tx.quota":"\u7A7A\u95F4\u4E0D\u591F\uFF0C\u8FD8\u5DEE {size}","penzor.tx.quotaSub":"\u8FD9\u4E00\u6279\u4E00\u4E2A\u90FD\u6CA1\u5F00\u59CB\u4F20","penzor.tx.freeSpace":"\u53BB\u56DE\u6536\u7AD9\u817E\u5730\u65B9","penzor.err.too_large":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 50 MB\uFF08\u8FD9\u4E2A {size}\uFF09\uFF0C\u8FD9\u4E00\u7248\u4F20\u4E0D\u4E86","penzor.err.quota":"\u4E91\u7AEF\u7A7A\u95F4\u4E0D\u591F","penzor.err.network":"\u7F51\u7EDC\u65AD\u4E86\uFF0C\u4F20\u5230 {pct}% \u505C\u4E0B","penzor.err.account_changed":"\u6362\u4E86\u8D26\u53F7\uFF0C\u8FD9\u4E00\u9879\u6CA1\u6709\u63A5\u7740\u4F20","penzor.err.not_signed_in":"\u6CA1\u767B\u5F55","penzor.err.gone":"\u672C\u673A\u4E0A\u627E\u4E0D\u5230\u8FD9\u4E2A\u6587\u4EF6\u4E86","penzor.err.popup_blocked":"\u6D4F\u89C8\u5668\u62E6\u4E0B\u4E86\u65B0\u6807\u7B7E\u9875\uFF0C\u5141\u8BB8\u672C\u7AD9\u5F39\u51FA\u7A97\u53E3\u540E\u518D\u8BD5\u4E00\u6B21","penzor.err.changed":"\u4F20\u7684\u65F6\u5019\u6587\u4EF6\u6539\u52A8\u4E86\uFF0C\u91CD\u8BD5\u4E00\u6B21","penzor.err.storage_unavailable":"\u4E91\u7AEF\u5B58\u50A8\u6682\u65F6\u4E0D\u53EF\u7528","penzor.err.other":"\u6CA1\u4F20\u5B8C\uFF08{code}\uFF09","penzor.err.too_many":"\u4E00\u6B21\u6700\u591A {n} \u4E2A\u6587\u4EF6\uFF0C\u5206\u51E0\u6B21\u62D6\u8FDB\u6765","penzor.toast.upDoneOne":"\u5DF2\u4E0A\u4F20\u300C{name}\u300D","penzor.toast.upDoneMany":"\u5DF2\u4E0A\u4F20 {n} \u4E2A\u6587\u4EF6","penzor.toast.downDoneMany":"\u5DF2\u4E0B\u8F7D {n} \u4E2A\u6587\u4EF6\u5230\u300C\u4E0B\u8F7D\u300D","penzor.toast.txFailed":"{n} \u9879\u6CA1\u4F20\u5B8C\uFF0C\u56DE\u84EC\u6D32\u4E91\u770B\u770B","penzor.toast.folderExists":"\u5DF2\u7ECF\u6709\u53EB\u300C{name}\u300D\u7684\u6587\u4EF6\u5939\u4E86","penzor.toast.trashedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.movedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u300C{name}\u300D","penzor.toast.batchPartial":"\u6709 {n} \u9879\u6CA1\u6210\u529F","penzor.sync.title":"\u540C\u6B65","penzor.sync.onN":"{n} \u9879\u5DF2\u5F00","penzor.sync.allOff":"\u90FD\u6CA1\u5F00","penzor.sync.waiting":"\u7B49\u4F60\u51B3\u5B9A","penzor.sync.badgeWaiting":"{n} \u9879\u5DF2\u5F00 \xB7 1 \u9879\u7B49\u4F60\u51B3\u5B9A","penzor.sync.running":"\u540C\u6B65\u4E2D {pct}%","penzor.sync.runningPlain":"\u540C\u6B65\u4E2D","penzor.sync.metaDevice":"\u8FD9\u53F0 {name}","penzor.sync.metaLast":"\u4E0A\u6B21\u540C\u6B65 {time}","penzor.sync.metaNever":"\u8FD8\u6CA1\u540C\u6B65\u8FC7","penzor.sync.every":"\u6BCF {n} \u5206\u949F","penzor.sync.everyHours":"\u6BCF {n} \u5C0F\u65F6","penzor.sync.manual":"\u624B\u52A8","penzor.sync.onStart":"\u5F00\u673A\u65F6\u4E00\u6B21","penzor.sync.minAgo":"{n} \u5206\u949F\u524D","penzor.sync.hoursAgo":"{n} \u5C0F\u65F6\u524D","penzor.sync.notesNamed":"\u667A\u5E93\u300C{name}\u300D","penzor.sync.notesPlain":"\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93","penzor.sync.notesDesc":"\u6574\u4E2A\u672C\u673A\u667A\u5E93\uFF0C\u548C\u4F60\u7684\u5176\u4ED6\u7535\u8111\u4FDD\u6301\u4E00\u81F4","penzor.sync.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.sync.agentsDesc":"Agents \u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u3001\u6280\u80FD\u548C\u534F\u4F5C\u8BF4\u660E","penzor.sync.agentsN":"{n} \u4E2A Agent","penzor.sync.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.sync.pluginsDesc":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\u548C\u6570\u636E","penzor.sync.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.sync.off":"\u6CA1\u5F00","penzor.sync.done":"\u5DF2\u540C\u6B65","penzor.sync.doneSize":"\u5DF2\u540C\u6B65 \xB7 {size}","penzor.sync.firstPending":"\u7B49\u7B2C\u4E00\u6B21\u540C\u6B65","penzor.sync.failed":"\u4E0A\u6B21\u6CA1\u540C\u6B65\u6210\u529F","penzor.sync.overQuota":"\u8D85\u51FA\u989D\u5EA6\uFF0C\u6709\u7684\u6CA1\u4F20","penzor.sync.to":"\u540C\u6B65\u5230 {name}","penzor.sync.toFolder":"\u540C\u6B65\u5230\u672C\u673A\u6587\u4EF6\u5939","penzor.sync.decideAbove":"\u5728\u4E0A\u9762\u90A3\u5F20\u5361\u91CC\u9009","penzor.sync.kvSchedule":"\u540C\u6B65\u8BA1\u5212","penzor.sync.kvDirection":"\u65B9\u5411","penzor.sync.kvSkipped":"\u6CA1\u4F20\u7684","penzor.sync.kvWhere":"\u4E91\u7AEF\u4F4D\u7F6E","penzor.sync.change":"\u6539","penzor.sync.open":"\u6253\u5F00","penzor.sync.dir.both":"\u53CC\u5411","penzor.sync.dir.push":"\u4EC5\u4E0A\u4F20","penzor.sync.dir.pull":"\u4EC5\u4E0B\u8F7D","penzor.sync.skippedN":"{n} \u4E2A\u8D85\u8FC7 {size} \u7684\u6587\u4EF6","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"\u5728\u540C\u6B65\u7684\u8BBE\u5907","penzor.sync.thisOne":"\u8FD9\u53F0","penzor.sync.lastWrite":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.noDevices":"\u8FD8\u6CA1\u6709\u8BBE\u5907\u5728\u540C\u6B65","penzor.sync.phoneTitle":"\u624B\u673A\u548C\u7F51\u9875\u770B\u5230\u7684\u90A3\u4E00\u4EFD","penzor.sync.phoneTip":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF0C{size}\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.phoneTipPlain":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.foot":"\u540C\u6B65\u8BA1\u5212\u3001\u65B9\u5411\u548C\u5176\u4ED6\u5B58\u50A8\uFF08Dropbox / S3 / WebDAV\uFF09\u5728","penzor.sync.footLink":"\u8BBE\u7F6E \u203A \u540C\u6B65","penzor.sync.askTitle":"\u4E91\u7AEF\u5DF2\u7ECF\u6709\u4E00\u4EFD\u667A\u5E93","penzor.sync.askCloud":"\u4E91\u7AEF\u90A3\u4EFD\u6765\u81EA {device}\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askCloudNoDevice":"\u4E91\u7AEF\u90A3\u4EFD\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askLocal":"\u8FD9\u53F0\u6709 {local} \u4E2A\u6587\u4EF6\u4E91\u7AEF\u6CA1\u6709\uFF0C{conflicts} \u4E2A\u4E24\u8FB9\u5185\u5BB9\u4E0D\u540C\u3002","penzor.sync.askMerge":"\u5408\u5E76\u4E24\u8FB9","penzor.sync.askCloudBtn":"\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.askSkip":"\u8FD9\u53F0\u5148\u4E0D\u540C\u6B65\u667A\u5E93","penzor.sync.askExplain":"\u5408\u5E76\uFF1A\u4E24\u8FB9\u90FD\u7559\u7740\uFF0C\u5185\u5BB9\u4E0D\u540C\u7684\u53E6\u5B58\u4E00\u4EFD\u300C\uFF08\u51B2\u7A81\uFF09\u300D\u3002\u7528\u4E91\u7AEF\u90A3\u4EFD\uFF1A\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u5148\u632A\u8FDB\u65C1\u8FB9\u7684\u300C{backup}\u300D\u6587\u4EF6\u5939\uFF0C\u518D\u4E0B\u8F7D\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirm":"\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u4F1A\u5148\u632A\u8FDB\u300C{backup}\u300D\uFF0C\u518D\u6362\u6210\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirmGo":"\u632A\u8D70\u5E76\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.backupName":"{name} \u540C\u6B65\u524D\u5907\u4EFD {date}","penzor.sync.quotaTitle":"\u667A\u5E93 {size}\uFF0C\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684 {max} \u4E0A\u9650","penzor.sync.quotaTitlePlain":"\u667A\u5E93\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684\u4E0A\u9650","penzor.sync.quotaBody":"\u653E\u4E0D\u4E0B\u7684\u6587\u4EF6\u7559\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u6CA1\u6709\u5220\uFF0C\u4E5F\u6CA1\u6709\u4F20\uFF1B\u5176\u4F59\u51E0\u9879\u7167\u5E38\u540C\u6B65\u3002","penzor.sync.quotaLarge":"\u8D85\u8FC7 {size} \u7684\u5355\u4E2A\u6587\u4EF6\u4E00\u76F4\u4E0D\u4F20\uFF08{n} \u4E2A\uFF09\u3002","penzor.sync.quotaSee":"\u770B\u770B\u6CA1\u4F20\u7684\u6587\u4EF6"},gf={"sub.identity":"Plugin ID","sub.identityHint":"A unique ID is assigned after submission. Names may repeat; updates keep the same ID.","sub.description":"Detailed description","sub.tags":"Tags","sub.tagsHint":"Comma separated, up to 8","sub.minAppVersion":"Minimum Forsion version","sub.maxAppVersion":"Maximum version (exclusive)","sub.optional":"Optional","sub.platforms":"Supported platforms","sub.requirementsHint":"Supported: desktop, macos, windows, linux, android, ios, web. Leave blank if unspecified. ZIP requirements are read from the manifest; supplied values must match it.","sub.err.market_requirements_invalid":"Invalid version requirements or platforms.","sub.err.market_requirements_mismatch":"Supplied requirements differ from the ZIP manifest.","sub.mine":"My submissions","page.submission":"Submissions","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.update":"Submit new version","sub.updateTitle":"Update {name}","sub.submit":"Submit for review","sub.submitted":"Submitted. Review results will appear in your submissions.","sub.updated":"Update submitted for review. The published version remains available.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.remoteUpdate":"Publish a new version at the source for an administrator to review.","sub.zip":"ZIP archive","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.version":"Version","sub.versionHint":"Use a version newer than the current one, matching the manifest.","sub.readme":"README (Markdown)","sub.keep":"Leave blank to keep unchanged","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.errVersion":"Enter a version.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"Enter a version.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","page.account":"Account","page.membershipUsage":"Membership & usage","page.membershipQuota":"Membership & quota","page.pointsInvite":"Points & invites","page.helpDiagnostics":"Help & diagnostics","account.details.title":"Sign-in & details","account.details.desc":"Edit your photo, nickname and bio under Profile.","account.details.username":"Username","diag.unavailable":"This host does not support diagnostic data. Update Forsion and try again.","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this computer: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of the desktop app can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again","guide.title":"Guide","guide.readOnly":"Read-only","guide.more":"More","guide.unlockAll":"Unlock all","guide.relock":"Unlock level by level","guide.reminders":"Guide reminders","guide.spotlight":"On-screen hints","guide.spotStep":"Step {n} of {total}","guide.figure":"Diagram","guide.openAchievements":"Open achievements","guide.tasks":"Tasks in this chapter","guide.go":"Take me there","guide.desktopOnly":"Do it on your computer","guide.taskDone":"Done","guide.askTangu":"Ask Tangu","guide.progress":"Progress","guide.justUnlocked":"Just unlocked","guide.lockedHint":"Locked","guide.whatsNew":"What's new in {version}","guide.level.lv1":"Lv.1 Getting started","guide.level.lv2":"Lv.2 Finding your way","guide.level.lv3":"Lv.3 Making it yours","guide.level.lv4":"Lv.4 Going further","guide.locked.title":"This chapter is still locked","guide.locked.body":"Finish the tasks in {level} to read the rest.","guide.locked.left":"Still to do:","guide.locked.hint":"Been around a while? Unlock everything from the \xB7\xB7\xB7 menu.","guide.levelProgress":"This level: {done}/{total}","guide.next":"Next level","guide.allDone":"All done","guide.allDoneBody":"You've done every task in the guide. Come back any time.","guide.review":"Look back","guide.ask.hint":'Questions about "{chapter}"? Ask Tangu opens a new chat with this chapter attached.',"guide.ask.placeholder":"What would you like to know?","guide.ask.send":"Start a chat","guide.ask.prompt":`I'm reading the "{chapter}" chapter of the Forsion guide; it's attached below. {question}`,"guide.ask.unavailable":"Chat isn't available here","guide.ask.chatTitle":"Guide Q&A","guide.companion.back":"Back to the guide","guide.companion.close":"Close","guide.toast.taskDone":"Done: {task}","guide.letter.levelTitle":"{level} unlocked: try these next","guide.letter.levelBody":'You finished the previous level, so these chapters are open now. Every task has a "Take me there" button.',"guide.letter.versionTitle":"{n} new things to try in {version}","guide.letter.versionBody":"New in this version, ready to try:","guide.letter.open":"Open the guide","guide.status.done":"Done","guide.cmd.open":"Open the guide","penzor.title":"Penzor Cloud","penzor.kicker":"Penzor Cloud","penzor.overview":"Overview","penzor.places":"Places","penzor.details":"Details","penzor.ledger.sync":"Vault sync","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"App files","penzor.ledger.exports":"Exports","penzor.trash":"Trash","penzor.items":"{n} items","penzor.total.sub":"Stored in Forsion Cloud \xB7 updated {time}","penzor.justNow":"just now","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} vaults \xB7 last write {time}","penzor.card.syncSubNone":"{n} vaults","penzor.card.syncFoot":"Files over {size} are not uploaded","penzor.card.syncWarn":"Almost full: after {max}, new files stop uploading; files already in the cloud keep syncing","penzor.card.amaSmall":"Not counted in your quota","penzor.card.amaSub":"{n} cloud vaults","penzor.card.amaFoot":"Notes and attachments on the Cloud side of Amadeus","penzor.card.appsFoot":"Trash: {n} items \xB7 {size}","penzor.card.appsWarn":"Almost full: after {max}, apps can't save new files. Trash counts too, so emptying it frees space","penzor.card.expSmall":"{n} files","penzor.card.expSub":"Latest: {name} \xB7 {time}","penzor.card.expFoot":"Files exported from apps","penzor.card.none":"Nothing yet","penzor.largest":"Largest files","penzor.col.name":"Name","penzor.col.size":"Size","penzor.col.mtime":"Modified","penzor.col.device":"Written by","penzor.col.deleted":"Deleted","penzor.col.origin":"Original location","penzor.col.app":"From","penzor.sort.mtime":"By modified","penzor.sort.size":"By size","penzor.sort.name":"By name","penzor.search":"Search file names here","penzor.sync.thisDevice":"Syncing on this device","penzor.meta.files":"{size} \xB7 {n} files","penzor.sync.last":"Last write {time} \xB7 {device}","penzor.sync.lastNoDevice":"Last write {time}","penzor.sync.devices":"{n} devices sync this vault","penzor.sync.meter":"Vault sync shares {max}; {used} used","penzor.apps.meter":"App files share {max}; {used} used (trash included)","penzor.apps.by":"Written by {app}","penzor.ama.notCounted":"Not counted in your quota","penzor.ama.open":"Open in Amadeus","penzor.trash.meta":"{n} items \xB7 {size}","penzor.trash.note":"Still counts toward the {max} for app files; space frees up once deleted permanently","penzor.trash.emptyBtn":"Empty trash","penzor.act.download":"Download","penzor.act.rename":"Rename","penzor.act.move":"Move to\u2026","penzor.act.trash":"Move to trash","penzor.act.delete":"Delete","penzor.act.restore":"Restore","penzor.act.purge":"Delete permanently","penzor.act.copyName":"Copy vault name","penzor.act.openSync":"Open sync settings","penzor.act.refresh":"Refresh","penzor.act.up":"Up one level","penzor.toast.trashed":"Moved \u201C{name}\u201D to trash","penzor.toast.restored":"Restored \u201C{name}\u201D","penzor.toast.purged":"Deleted \u201C{name}\u201D permanently","penzor.toast.emptied":"Trash emptied","penzor.toast.downloaded":"Saved to Downloads: {name}","penzor.toast.renamed":"Renamed to \u201C{name}\u201D","penzor.toast.moved":"Moved to \u201C{name}\u201D","penzor.toast.versionRestored":"Restored version {n}","penzor.toast.copied":"Vault name copied","penzor.toast.failed":"That didn't work: {reason}","penzor.confirm.purge":"Delete \u201C{name}\u201D permanently? This can't be undone.","penzor.confirm.empty":"Empty the trash? {n} items will be deleted permanently.","penzor.confirm.deleteExport":"Delete \u201C{name}\u201D? Exports have no trash, so this can't be undone.","penzor.cancel":"Cancel","penzor.side.where":"Location","penzor.side.mtime":"Modified","penzor.side.device":"Written by","penzor.side.thisDevice":"{name} (this device)","penzor.side.from":"From","penzor.side.versions":"Versions","penzor.side.versionsNone":"None","penzor.side.versionRow":"Version {n} \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"Restore this version","penzor.side.deletedAt":"Deleted","penzor.side.origin":"Original location","penzor.side.inner":"{n} more items inside come back with it","penzor.side.inTrash":"In trash \xB7 {size}","penzor.side.readonlySync":"Files in a synced vault are changed on your devices. Deleting one here would delete it on every device that syncs {vault}, so here you can only view and download.","penzor.side.readonlyAma":"Notes and attachments are changed in Amadeus. Deleting an attachment here would leave the notes that use it with missing images, so here you can only view and download.","penzor.side.exportNote":"Exports have no trash: deleting is permanent.","penzor.side.none":"Select a file to see its details","penzor.side.folder":"Folder \xB7 {n} items","penzor.side.folderPlain":"Folder","penzor.move.title":"Move to","penzor.move.root":"Top of {app}","penzor.move.here":"Move here","penzor.move.noFolders":"No folders at this level","penzor.rename.save":"Save","penzor.empty.title":"Nothing in Penzor Cloud yet","penzor.empty.lead":"These show up here once they're in the cloud:","penzor.empty.sync":"Pick Penzor Cloud as the remote service in Settings \u203A Sync, and your local vault syncs here","penzor.empty.ama":"Notes you write on the Cloud side of Amadeus","penzor.empty.apps":"Files apps save to the cloud or export","penzor.empty.openSync":"Open sync settings","penzor.out.title":"Sign in to see your Penzor Cloud","penzor.out.lead":"Penzor Cloud holds the vaults you sync to Forsion Cloud, your Amadeus Cloud notes and the files apps keep in the cloud.","penzor.out.signIn":"Sign in to Forsion","penzor.loading":"Loading\u2026","penzor.err":"Couldn't load: {reason}","penzor.folderEmpty":"No files here","penzor.noMatch":"No file names contain \u201C{q}\u201D","penzor.cmd.open":"Open Penzor Cloud","penzor.unreachable":"Can\u2019t reach Forsion Cloud. Try again later","penzor.toast.emptyPartial":"{n} items in the trash couldn\u2019t be deleted","penzor.sort.deleted":"By deleted","penzor.side.versionsN":"{n}","penzor.drive":"My drive","penzor.drive.meta":"Counts toward the {max} for app files","penzor.drive.empty":"Nothing here yet. Drag files in, or click Upload.","penzor.act.upload":"Upload","penzor.act.uploadMore":"More upload options","penzor.act.uploadFiles":"Upload files\u2026","penzor.act.uploadFolder":"Upload folder\u2026","penzor.act.uploadHere":"Upload here\u2026","penzor.act.newFolder":"New folder","penzor.act.clearSel":"Clear selection","penzor.newFolder.default":"New folder","penzor.sel.bar":"{n} selected \xB7 {size}","penzor.sel.title":"{n} selected","penzor.sel.sub":"{size} \xB7 {files} files","penzor.sel.subDirs":"{size} \xB7 {files} files, {dirs} folders","penzor.sel.download":"Download {n}","penzor.sel.saveTo":"Saves to","penzor.sel.saveToValue":"Downloads / {folder}","penzor.sel.noDirs":"Folders can\u2019t be downloaded yet; only the selected files will be.","penzor.download.folder":"Penzor Cloud {date}","penzor.drop.to":"Drop to upload to \u201C{place}\u201D","penzor.tx.busy":"Transferring {n}","penzor.tx.allDone":"All done","penzor.tx.failedN":"{n} didn\u2019t finish","penzor.tx.counts":"{up} up \xB7 {down} down","penzor.tx.eta":"about {eta} left","penzor.tx.doneN":"{n} finished","penzor.tx.restDone":"The other {n} finished","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"Queued","penzor.tx.paused":"Paused \xB7 resumes from the start","penzor.tx.uploaded":"Uploaded \xB7 {time}","penzor.tx.downloaded":"Downloaded \xB7 {time}","penzor.tx.canceled":"Canceled","penzor.tx.left":"{eta} left","penzor.tx.sec":"{n}s","penzor.tx.min":"{n} min","penzor.tx.pause":"Pause","penzor.tx.resume":"Resume","penzor.tx.cancel":"Cancel","penzor.tx.retry":"Retry","penzor.tx.remove":"Remove","penzor.tx.locate":"Show","penzor.tx.reveal":"Show in folder","penzor.tx.pauseAll":"Pause all","penzor.tx.resumeAll":"Resume all","penzor.tx.retryAll":"Retry all","penzor.tx.clearDone":"Clear finished","penzor.tx.clear":"Clear","penzor.tx.collapse":"Collapse","penzor.tx.expand":"Show transfers","penzor.tx.quota":"Not enough space: {size} short","penzor.tx.quotaSub":"Nothing in this batch was started","penzor.tx.freeSpace":"Free up space in Trash","penzor.err.too_large":"Over the 50 MB per-file limit ({size}); can\u2019t upload it yet","penzor.err.quota":"Not enough cloud space","penzor.err.network":"Connection lost at {pct}%","penzor.err.account_changed":"You switched accounts, so this one stopped","penzor.err.not_signed_in":"Not signed in","penzor.err.gone":"The file is no longer on this device","penzor.err.popup_blocked":"Your browser blocked the new tab. Allow pop-ups for this site and try again","penzor.err.changed":"The file changed while uploading. Try again","penzor.err.storage_unavailable":"Cloud storage is unavailable right now","penzor.err.other":"Didn\u2019t finish ({code})","penzor.err.too_many":"Up to {n} files at a time. Add them in smaller batches","penzor.toast.upDoneOne":"Uploaded \u201C{name}\u201D","penzor.toast.upDoneMany":"Uploaded {n} files","penzor.toast.downDoneMany":"Downloaded {n} files to Downloads","penzor.toast.txFailed":"{n} transfers didn\u2019t finish. Open Penzor Cloud to check","penzor.toast.folderExists":"There\u2019s already a folder called \u201C{name}\u201D","penzor.toast.trashedN":"Moved {n} items to the trash","penzor.toast.movedN":"Moved {n} items to \u201C{name}\u201D","penzor.toast.batchPartial":"{n} items didn\u2019t go through","penzor.sync.title":"Sync","penzor.sync.onN":"{n} on","penzor.sync.allOff":"All off","penzor.sync.waiting":"Waiting for you","penzor.sync.badgeWaiting":"{n} on \xB7 1 waiting for you","penzor.sync.running":"Syncing {pct}%","penzor.sync.runningPlain":"Syncing","penzor.sync.metaDevice":"This computer: {name}","penzor.sync.metaLast":"Last synced {time}","penzor.sync.metaNever":"Not synced yet","penzor.sync.every":"Every {n} min","penzor.sync.everyHours":"Every {n} h","penzor.sync.manual":"Manual","penzor.sync.onStart":"once at startup","penzor.sync.minAgo":"{n} min ago","penzor.sync.hoursAgo":"{n} h ago","penzor.sync.notesNamed":"Notes vault \u201C{name}\u201D","penzor.sync.notesPlain":"This computer\u2019s notes vault","penzor.sync.notesDesc":"The whole local vault, kept the same on your other computers","penzor.sync.agents":"Agents & memory","penzor.sync.agentsDesc":"Your agents\u2019 memory, logs, skills and working notes","penzor.sync.agentsN":"Agents: {n}","penzor.sync.plugins":"Plugin data","penzor.sync.pluginsDesc":"Settings and data your plugins keep","penzor.sync.pluginsN":"Plugins: {n}","penzor.sync.off":"Off","penzor.sync.done":"Synced","penzor.sync.doneSize":"Synced \xB7 {size}","penzor.sync.firstPending":"Waiting for the first sync","penzor.sync.failed":"Last sync failed","penzor.sync.overQuota":"Over the limit, some files not uploaded","penzor.sync.to":"Syncing to {name}","penzor.sync.toFolder":"Syncing to a local folder","penzor.sync.decideAbove":"Choose in the card above","penzor.sync.kvSchedule":"Schedule","penzor.sync.kvDirection":"Direction","penzor.sync.kvSkipped":"Not uploaded","penzor.sync.kvWhere":"In the cloud","penzor.sync.change":"Change","penzor.sync.open":"Open","penzor.sync.dir.both":"Both ways","penzor.sync.dir.push":"Upload only","penzor.sync.dir.pull":"Download only","penzor.sync.skippedN":"{n} files over {size}","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"Devices syncing","penzor.sync.thisOne":"This computer","penzor.sync.lastWrite":"Last write {time}","penzor.sync.noDevices":"No devices are syncing yet","penzor.sync.phoneTitle":"What your phone and the web see","penzor.sync.phoneTip":"Your phone and the web read the cloud vault (the cloud side of Amadeus, {size}) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.phoneTipPlain":"Your phone and the web read the cloud vault (the cloud side of Amadeus) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.foot":"Schedule, direction and other storage (Dropbox / S3 / WebDAV) are in","penzor.sync.footLink":"Settings \u203A Sync","penzor.sync.askTitle":"There\u2019s already a notes vault in the cloud","penzor.sync.askCloud":"The cloud copy is from {device}: {files} files \xB7 {size}.","penzor.sync.askCloudNoDevice":"The cloud copy: {files} files \xB7 {size}.","penzor.sync.askLocal":"This computer has {local} files the cloud copy doesn\u2019t, and {conflicts} that differ.","penzor.sync.askMerge":"Merge both","penzor.sync.askCloudBtn":"Use the cloud copy","penzor.sync.askSkip":"Don\u2019t sync notes on this computer yet","penzor.sync.askExplain":"Merge keeps both sides; files that differ are saved again as a \u201C(conflict)\u201D copy. Use the cloud copy first moves this computer\u2019s differing files into a \u201C{backup}\u201D folder next to the vault, then downloads the cloud copy.","penzor.sync.askConfirm":"This computer\u2019s differing files move to \u201C{backup}\u201D first, then the cloud copy replaces them.","penzor.sync.askConfirmGo":"Move them and use the cloud copy","penzor.sync.backupName":"{name} backup before sync {date}","penzor.sync.quotaTitle":"Your notes vault is {size}, over the {max} limit of {ledger}","penzor.sync.quotaTitlePlain":"Your notes vault is over the {ledger} limit","penzor.sync.quotaBody":"Files that don\u2019t fit stay on this computer. Nothing is deleted, they just aren\u2019t uploaded, and everything else keeps syncing.","penzor.sync.quotaLarge":"Single files over {size} are never uploaded ({n}).","penzor.sync.quotaSee":"See what\u2019s not uploaded"},Js={zh:mf,en:gf},Qe=e=>e==="en"?"en":"zh";function Te(e,t,n){let o=Js[e][t]??Js.zh[t]??t;return n?o.replace(/\{(\w+)\}/g,(a,i)=>i in n?String(n[i]):a):o}var ho=e=>(t,n)=>Te(e,t,n),bt=(e,t)=>"raw"in e?e.raw:t(e.key,e.vars);var Ys=`
|
|
70
70
|
.fx-acct { color: var(--text); }
|
|
71
71
|
.fx-acct .fx-panel > .settings-panel-head:last-child { border-bottom-color: transparent; }
|
|
72
72
|
.fx-acct .fx-panel > .fx-block + .fx-block,
|
|
@@ -564,7 +564,7 @@ Please report this to https://github.com/markedjs/marked.`,t){let a="<p>An error
|
|
|
564
564
|
.fx-acct .fx-sub-summary { margin: 0; color: var(--text-muted); overflow-wrap: anywhere; font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
565
565
|
.fx-acct .fx-sub-item > .btn { justify-self: start; }
|
|
566
566
|
.fx-acct .fx-sub-item > .fx-note { margin: 0; overflow-wrap: anywhere; }
|
|
567
|
-
`,
|
|
567
|
+
`,Zs=`
|
|
568
568
|
.fx-ann-backdrop { position: fixed; inset: 0; z-index: 1600; display: grid; place-items: center; padding: 20px; background: color-mix(in srgb, var(--bg) 78%, transparent); backdrop-filter: blur(8px); animation: fx-ann-fade 300ms ease-out both; }
|
|
569
569
|
.fx-ann { position: relative; display: flex; flex-direction: column; width: min(100%, 560px); max-height: calc(100dvh - 40px); overflow: auto; padding: 24px 28px 22px; border: var(--border-width) solid var(--border); border-radius: var(--radius-lg); background: var(--bg-card); box-shadow: var(--card-shadow); color: var(--text); font-family: var(--font-ui); text-align: left; animation: fx-ann-enter 480ms cubic-bezier(.2,.75,.15,1) both; }
|
|
570
570
|
.fx-ann:focus { outline: none; }
|
|
@@ -591,7 +591,7 @@ html[data-glass='off'] .fx-ann-backdrop { backdrop-filter: none; background: var
|
|
|
591
591
|
@media (prefers-reduced-motion: reduce) {
|
|
592
592
|
.fx-ann-backdrop, .fx-ann, .fx-ann-eyebrow, .fx-ann-title, .fx-ann-body, .fx-ann-ok { animation: none; }
|
|
593
593
|
}
|
|
594
|
-
`,
|
|
594
|
+
`,Qs=`
|
|
595
595
|
:host { display: block; color: var(--text); font-family: var(--font-body, var(--font-ui)); font-size: var(--ui-font-body); line-height: 1.65; overflow-wrap: anywhere; }
|
|
596
596
|
.doc > :first-child { margin-top: 0; }
|
|
597
597
|
.doc > :last-child { margin-bottom: 0; }
|
|
@@ -615,5 +615,699 @@ img { border-radius: var(--radius-sm); }
|
|
|
615
615
|
hr { margin: 16px 0; border: 0; border-top: var(--border-width) solid var(--border); }
|
|
616
616
|
a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
617
617
|
strong, b { font-weight: 650; }
|
|
618
|
-
`;var At=t=>typeof t=="string"?t:"";function ku(t){if(!t||typeof t!="object")return null;let e=t,n=typeof e.id=="string"?e.id.trim():typeof e.id=="number"&&Number.isFinite(e.id)?String(e.id):"",a=At(e.titleZh),i=At(e.bodyZh);return!n||!a.trim()&&!i.trim()?null:{id:n,titleZh:a,titleEn:At(e.titleEn).trim()?At(e.titleEn):null,bodyZh:i,bodyEn:At(e.bodyEn).trim()?At(e.bodyEn):null,format:e.format==="html"?"html":"markdown",publishedAt:At(e.publishedAt)||null}}function wu(t,e){return e==="en"&&t.bodyEn?{lang:"en",title:t.titleEn??t.titleZh,body:t.bodyEn}:{lang:"zh",title:t.titleZh,body:t.bodyZh}}var _u=new Fr({gfm:!0,breaks:!0}),Su=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],Au=/^(?:https?:|mailto:|#)/i;function So(t){return Tr.sanitize(t,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:Su,ALLOWED_URI_REGEXP:Au})}function Cu(t,e){let n=e==="markdown"?_u.parse(t,{async:!1}):t;return So(n)}var qn=null;function Tu(){if(qn===null)try{let t=So('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');qn=Tr.isSupported&&!t.querySelector("script, iframe, [onclick], a[href]")}catch{qn=!1}return qn}function Pu(t){try{let e=new URL(String(t??"").trim());return e.protocol==="http:"||e.protocol==="https:"?e.href:null}catch{return null}}var Eu="http://www.w3.org/1999/xlink";function Wn(t){let e=t.target,n=e&&typeof e.closest=="function"?e.closest("a, area"):null;if(!n||(t.preventDefault(),t.type!=="click"))return;let a=Pu(n.getAttribute("href")??n.getAttributeNS(Eu,"href"));if(a)try{j().openExternal?.(a)?.catch(()=>{})}catch{}}function _o(t){return t.shadowRoot??t.attachShadow({mode:"open"})}function Ru(t){let{ctx:e,ann:n}=t,[a,i]=S(()=>Ke(e.getLocale?.()));X(()=>{i(Ke(e.getLocale?.()));let d=e.subscribeLocale?.(g=>i(Ke(g)));return()=>{typeof d=="function"&&d()}},[e]);let o=Ve(()=>Hn(a),[a]),s=wu(n,a),l=W(null),c=W(null),u=W(null),f=W(null),m=W(t.onClose);return m.current=t.onClose,X(()=>{let d=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let g=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),m.current();return}if(v.key!=="Tab")return;let k=c.current,y=u.current,x=l.current;if(!k||!y||!x)return;let w=document.activeElement;if(!w||!x.contains(w)){v.preventDefault(),(v.shiftKey?y:k).focus();return}v.shiftKey&&(w===k||w===x)?(v.preventDefault(),y.focus()):!v.shiftKey&&w===y&&(v.preventDefault(),k.focus())},h=v=>{let k=l.current;k&&v.target instanceof Node&&!k.contains(v.target)&&k.focus()};return window.addEventListener("keydown",g,!0),document.addEventListener("focusin",h,!0),()=>{window.removeEventListener("keydown",g,!0),document.removeEventListener("focusin",h,!0),d?.isConnected&&d.focus()}},[]),X(()=>{let d=f.current;if(!d)return;let g=_o(d);return g.addEventListener("click",Wn),g.addEventListener("auxclick",Wn),()=>{g.removeEventListener("click",Wn),g.removeEventListener("auxclick",Wn)}},[]),X(()=>{let d=f.current;if(!d)return;let g=document.createElement("style");g.textContent=wo;let h=document.createElement("div");h.className="doc",h.appendChild(Cu(s.body,n.format)),_o(d).replaceChildren(g,h)},[s.body,n.format]),r("div",{class:"fx-ann-backdrop",children:[r("style",{children:ko}),r("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[r("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":o("ann.close"),onClick:()=>m.current(),children:r(E,{name:"x",size:16})}),r("div",{class:"fx-ann-eyebrow",children:o("ann.eyebrow")}),r("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),r("div",{class:"fx-ann-body",children:r("div",{ref:f,id:"fx-ann-body",class:"fx-ann-doc"})}),r("div",{class:"fx-ann-footer",children:r("button",{ref:u,type:"button",class:"fx-ann-ok",onClick:()=>m.current(),children:o("ann.ok")})})]})]})}function Mu(t){try{return new URLSearchParams(t||"").has("window")}catch{return!1}}function Iu(t=document,e=12e3){let n=t.getElementById("tangu-splash");return n?.parentNode?new Promise(a=>{let i=()=>{o.disconnect(),clearTimeout(s),a()},o=new MutationObserver(()=>{n.isConnected||i()});o.observe(n.parentNode,{childList:!0});let s=setTimeout(i,e)}):Promise.resolve()}function Ao(t,e=window){let n=e?.tangu;if(!t||!n?.cloudFetch||n.unitPage||Mu(e.location?.search))return null;let a=0,i=!1,o=null,s=Promise.resolve(),l=f=>{let m=document.createElement("div");m.className="fx-ann-root",document.body.appendChild(m);let d=!1,g=h=>{d||(d=!0,o?.id===f.id&&(o=null),ut(null,m),m.remove(),h&&(s=M(`/announcements/${encodeURIComponent(f.id)}/seen`,{method:"POST"})))};o={id:f.id,finish:g},ut(r(Ru,{ctx:t,ann:f,onClose:()=>g(!0)}),m)},c=async()=>{let f=++a;await s;let m=await M("/announcements/pending");if(i||f!==a||!m.ok)return;let d=ku(m.data?.announcement);!d||o||Tu()&&(await Iu(),!(i||f!==a||o)&&l(d))},u=n.onAuthChanged?.(f=>{o?.finish(!1),f?.loggedIn?c():a++});return c(),{check:c,dispose(){i=!0,a++,typeof u=="function"&&u(),o?.finish(!1)}}}function Co(t){return typeof t!="string"?{ok:!1,rule:"format"}:t.length<8?{ok:!1,rule:"min"}:t.length>64?{ok:!1,rule:"max"}:/\s/.test(t)?{ok:!1,rule:"space"}:/[a-z]/.test(t)?/[A-Z]/.test(t)?/[^A-Za-z0-9]/.test(t)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function To(t){return{length:t.length>=8&&t.length<=64,lower:/[a-z]/.test(t),upper:/[A-Z]/.test(t),special:/[^A-Za-z0-9]/.test(t),space:t.length>0&&!/\s/.test(t)}}var Po={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var Eo={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},Ro={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha"},Qr={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function Lu(t){if(t.code&&Eo[t.code])return Eo[t.code];if(t.detail){if(Ro[t.detail])return Ro[t.detail];let e=Po[t.detail];if(e)return Qr[e];if(t.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function Ce(t){let e=Lu(t);return e?{key:e}:wt(t)?{key:"err.signedOut"}:t.status===0?{key:"err.network"}:t.status===401?{key:"err.session"}:t.status===429?{key:"err.tooFrequent"}:t.detail?{raw:t.detail}:t.status>=500?{key:"err.server",vars:{status:t.status}}:{key:"err.generic"}}function nn(t){let e=t.trim();return e?/cancelled\.?$/i.test(e)?null:e==="A sign-in is already in progress."?{key:"err.loginInProgress"}:e.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:e.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:e.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:e.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:e.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:e.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:e}:{key:"err.generic"}}var ea=io(null);function D(){let t=bo(ea);if(!t)throw new Error("forsion-extend: page rendered outside its host root");return t}var Ue=()=>D().t;function we(){let t=W(!0);return X(()=>(t.current=!0,()=>{t.current=!1}),[]),t}var Mo={pending:!1,error:null,success:null,captcha:!1};function O(){let t=we(),[e,n]=S(Mo),a=W(!1),i=pt(async s=>{if(a.current)return;a.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}a.current=!1,t.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),o=pt(()=>{a.current||n(Mo)},[]);return{...e,run:i,clear:o}}var ue=t=>({error:Ce(t),captcha:t.status===403&&t.code==="CAPTCHA_FAILED"});function Io(){let[t,e]=S(0),n=W(null);X(()=>()=>{n.current&&clearInterval(n.current)},[]);let a=pt((o=60)=>{n.current&&clearInterval(n.current),e(o),n.current=setInterval(()=>{e(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),i=pt(()=>{n.current&&clearInterval(n.current),n.current=null,e(0)},[]);return{left:t,start:a,stop:i}}function ve(t){let[e,n]=S({state:"loading"}),a=W(0),i=W(t);i.current=t;let o=pt((c=!1)=>{let u=++a.current;c||n({state:"loading"}),(async()=>{let f;try{f=await i.current()}catch(m){f={ok:!1,status:0,code:null,detail:null,transport:String(m?.message||m)}}u===a.current&&(f.ok?n({state:"ready",data:f.data,gen:u}):wt(f)?n({state:"signedOut"}):(f.status===401&&j().authStatus?.().catch(()=>{}),n({state:"error",fail:f})))})()},[]);X(()=>{o();let c=j().onAuthChanged?.(()=>o());return()=>{a.current++,c?.()}},[o]);let s=pt(()=>o(),[o]),l=pt(()=>o(!0),[o]);switch(e.state){case"ready":{let c=e.gen,u=f=>n(m=>m.state==="ready"&&m.gen===c?{...m,data:f(m.data)}:m);return{state:"ready",data:e.data,reload:l,update:u}}case"error":return{state:"error",error:Ce(e.fail),retry:s};default:return e}}function jn(t){let e=String(t||"").trim();if(!e)return"";let n=e.startsWith("+")?4:3;return e.length<=n+4?`${e.slice(0,2)}***`:`${e.slice(0,n)}****${e.slice(-4)}`}function Xn(t){let e=String(t||"").trim(),n=e.lastIndexOf("@");if(n<=0)return e?`${e.slice(0,1)}***`:"";let a=e.slice(0,n);return`${a.slice(0,a.length<=2?1:2)}***${e.slice(n)}`}function rn(t){let e=String(t||"").trim().toLowerCase()||"free";return e.charAt(0).toUpperCase()+e.slice(1)}var Du=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Lo(t,e){let n=String(t||"").trim(),a,i,o=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(o)a=Number(o[2]),i=Number(o[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);a=Number(l.find(c=>c.type==="month")?.value),i=Number(l.find(c=>c.type==="day")?.value)}return!(a>=1&&a<=12)||!(i>=1&&i<=31)?null:e==="zh"?`${a}\u6708${i}\u65E5`:`${Du[a-1]} ${i}`}var ta=t=>t==="zh"?"zh-CN":"en-US";function Do(t){if(t==null||t==="")return null;let e=new Date(typeof t=="string"&&/^\d+$/.test(t)?Number(t):t);return Number.isNaN(e.getTime())?null:e}function Vn(t,e){let n=Do(t);return n?new Intl.DateTimeFormat(ta(e),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Je(t,e){let n=Do(t);return n?new Intl.DateTimeFormat(ta(e),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function re(t,e){let n=typeof t=="number"?t:Number(t);return Number.isFinite(n)?new Intl.NumberFormat(ta(e),{maximumFractionDigits:2}).format(n):"\u2014"}var Qe=class extends Error{};async function Kn(t,e=256){if(t.size>20971520)throw new Qe;let n=URL.createObjectURL(t);try{let a=new Image;await new Promise((f,m)=>{a.onload=()=>f(),a.onerror=()=>m(new Error("image decode failed")),a.src=n});let i=a.naturalWidth,o=a.naturalHeight;if(!i||!o)throw new Error("empty image");if(i*o>5e7)throw new Qe;let s=Math.min(1,e/Math.max(i,o)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(i*s)),l.height=Math.max(1,Math.round(o*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(a,0,0,l.width,l.height);let u=l.toDataURL("image/jpeg",.85);if(u.length>262144)throw new Qe;return u}finally{URL.revokeObjectURL(n)}}function Jn(t){let e=String(t||"").trim();if(!e)return"?";let n=Array.from(e)[0];return/[㐀-鿿]/.test(n)?n:Array.from(e).slice(0,2).join("").toUpperCase()}var Ct=(t=>(t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t))(Ct||{}),zu=[0,1],No=[1,0],Oo=[2,3],Bo=[3,2],Nu={L:zu,M:No,Q:Oo,H:Bo},Ou=/^\d*$/,Bu=/^[A-Z0-9 $%*+./:-]*$/,na="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",oa=1,sa=40,zo=3,Fu=3,Yn=40,$u=10,Fo=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],$o=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],ra=class{constructor(e,n,a,i){if(this.version=e,this.ecc=n,e<oa||e>sa)throw new RangeError("Version value out of range");if(i<-1||i>7)throw new RangeError("Mask value out of range");this.size=e*4+17;let o=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(o.slice()),this.types.push(o.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(a);if(this.drawCodewords(s),i===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let u=this.getPenaltyScore();u<l&&(i=c,l=u),this.applyMask(c)}}this.mask=i,this.applyMask(i),this.drawFormatBits(i)}size;mask;modules=[];types=[];getModule(e,n){return e>=0&&e<this.size&&n>=0&&n<this.size&&this.modules[n][e]}drawFunctionPatterns(){for(let a=0;a<this.size;a++)this.setFunctionModule(6,a,a%2===0,Ct.Timing),this.setFunctionModule(a,6,a%2===0,Ct.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),n=e.length;for(let a=0;a<n;a++)for(let i=0;i<n;i++)a===0&&i===0||a===0&&i===n-1||a===n-1&&i===0||this.drawAlignmentPattern(e[a],e[i]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let n=this.ecc[1]<<3|e,a=n;for(let o=0;o<10;o++)a=a<<1^(a>>>9)*1335;let i=(n<<10|a)^21522;for(let o=0;o<=5;o++)this.setFunctionModule(8,o,et(i,o));this.setFunctionModule(8,7,et(i,6)),this.setFunctionModule(8,8,et(i,7)),this.setFunctionModule(7,8,et(i,8));for(let o=9;o<15;o++)this.setFunctionModule(14-o,8,et(i,o));for(let o=0;o<8;o++)this.setFunctionModule(this.size-1-o,8,et(i,o));for(let o=8;o<15;o++)this.setFunctionModule(8,this.size-15+o,et(i,o));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let a=0;a<12;a++)e=e<<1^(e>>>11)*7973;let n=this.version<<12|e;for(let a=0;a<18;a++){let i=et(n,a),o=this.size-11+a%3,s=Math.floor(a/3);this.setFunctionModule(o,s,i),this.setFunctionModule(s,o,i)}}drawFinderPattern(e,n){for(let a=-4;a<=4;a++)for(let i=-4;i<=4;i++){let o=Math.max(Math.abs(i),Math.abs(a)),s=e+i,l=n+a;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,o!==2&&o!==4,Ct.Position)}}drawAlignmentPattern(e,n){for(let a=-2;a<=2;a++)for(let i=-2;i<=2;i++)this.setFunctionModule(e+i,n+a,Math.max(Math.abs(i),Math.abs(a))!==1,Ct.Alignment)}setFunctionModule(e,n,a,i=Ct.Function){this.modules[n][e]=a,this.types[n][e]=i}addEccAndInterleave(e){let n=this.version,a=this.ecc;if(e.length!==Gn(n,a))throw new RangeError("Invalid argument");let i=$o[a[0]][n],o=Fo[a[0]][n],s=Math.floor(aa(n)/8),l=i-s%i,c=Math.floor(s/i),u=[],f=Ju(o);for(let d=0,g=0;d<i;d++){let h=e.slice(g,g+c-o+(d<l?0:1));g+=h.length;let v=Yu(h,f);d<l&&h.push(0),u.push(h.concat(v))}let m=[];for(let d=0;d<u[0].length;d++)u.forEach((g,h)=>{(d!==c-o||h>=l)&&m.push(g[d])});return m}drawCodewords(e){if(e.length!==Math.floor(aa(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let a=this.size-1;a>=1;a-=2){a===6&&(a=5);for(let i=0;i<this.size;i++)for(let o=0;o<2;o++){let s=a-o,c=(a+1&2)===0?this.size-1-i:i;!this.types[c][s]&&n<e.length*8&&(this.modules[c][s]=et(e[n>>>3],7-(n&7)),n++)}}}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let a=0;a<this.size;a++){let i;switch(e){case 0:i=(a+n)%2===0;break;case 1:i=n%2===0;break;case 2:i=a%3===0;break;case 3:i=(a+n)%3===0;break;case 4:i=(Math.floor(a/3)+Math.floor(n/2))%2===0;break;case 5:i=a*n%2+a*n%3===0;break;case 6:i=(a*n%2+a*n%3)%2===0;break;case 7:i=((a+n)%2+a*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][a]&&i&&(this.modules[n][a]=!this.modules[n][a])}}getPenaltyScore(){let e=0;for(let o=0;o<this.size;o++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let u=0;u<this.size;u++)this.modules[o][u]===s?(l++,l===5?e+=zo:l>5&&e++):(this.finderPenaltyAddHistory(l,c),s||(e+=this.finderPenaltyCountPatterns(c)*Yn),s=this.modules[o][u],l=1);e+=this.finderPenaltyTerminateAndCount(s,l,c)*Yn}for(let o=0;o<this.size;o++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let u=0;u<this.size;u++)this.modules[u][o]===s?(l++,l===5?e+=zo:l>5&&e++):(this.finderPenaltyAddHistory(l,c),s||(e+=this.finderPenaltyCountPatterns(c)*Yn),s=this.modules[u][o],l=1);e+=this.finderPenaltyTerminateAndCount(s,l,c)*Yn}for(let o=0;o<this.size-1;o++)for(let s=0;s<this.size-1;s++){let l=this.modules[o][s];l===this.modules[o][s+1]&&l===this.modules[o+1][s]&&l===this.modules[o+1][s+1]&&(e+=Fu)}let n=0;for(let o of this.modules)n=o.reduce((s,l)=>s+(l?1:0),n);let a=this.size*this.size,i=Math.ceil(Math.abs(n*20-a*10)/a)-1;return e+=i*$u,e}getAlignmentPatternPositions(){if(this.version===1)return[];{let e=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,a=[6];for(let i=this.size-7;a.length<e;i-=n)a.splice(1,0,i);return a}}finderPenaltyCountPatterns(e){let n=e[1],a=n>0&&e[2]===n&&e[3]===n*3&&e[4]===n&&e[5]===n;return(a&&e[0]>=n*4&&e[6]>=n?1:0)+(a&&e[6]>=n*4&&e[0]>=n?1:0)}finderPenaltyTerminateAndCount(e,n,a){return e&&(this.finderPenaltyAddHistory(n,a),n=0),n+=this.size,this.finderPenaltyAddHistory(n,a),this.finderPenaltyCountPatterns(a)}finderPenaltyAddHistory(e,n){n[0]===0&&(e+=this.size),n.pop(),n.unshift(e)}};function tt(t,e,n){if(e<0||e>31||t>>>e)throw new RangeError("Value out of range");for(let a=e-1;a>=0;a--)n.push(t>>>a&1)}function et(t,e){return(t>>>e&1)!==0}var an=class{constructor(e,n,a){if(this.mode=e,this.numChars=n,this.bitData=a,n<0)throw new RangeError("Invalid argument");this.bitData=a.slice()}getData(){return this.bitData.slice()}},Uu=[1,10,12,14],Hu=[2,9,11,13],qu=[4,8,16,16];function Uo(t,e){return t[Math.floor((e+7)/17)+1]}function Ho(t){let e=[];for(let n of t)tt(n,8,e);return new an(qu,t.length,e)}function Wu(t){if(!qo(t))throw new RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let a=Math.min(t.length-n,3);tt(Number.parseInt(t.substring(n,n+a),10),a*3+1,e),n+=a}return new an(Uu,t.length,e)}function ju(t){if(!Wo(t))throw new RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let a=na.indexOf(t.charAt(n))*45;a+=na.indexOf(t.charAt(n+1)),tt(a,11,e)}return n<t.length&&tt(na.indexOf(t.charAt(n)),6,e),new an(Hu,t.length,e)}function Xu(t){return t===""?[]:qo(t)?[Wu(t)]:Wo(t)?[ju(t)]:[Ho(Ku(t))]}function qo(t){return Ou.test(t)}function Wo(t){return Bu.test(t)}function Vu(t,e){let n=0;for(let a of t){let i=Uo(a.mode,e);if(a.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+a.bitData.length}return n}function Ku(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)t.charAt(n)!=="%"?e.push(t.charCodeAt(n)):(e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2);return e}function aa(t){if(t<oa||t>sa)throw new RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;e-=(25*n-10)*n-55,t>=7&&(e-=36)}return e}function Gn(t,e){return Math.floor(aa(t)/8)-Fo[e[0]][t]*$o[e[0]][t]}function Ju(t){if(t<1||t>255)throw new RangeError("Degree out of range");let e=[];for(let a=0;a<t-1;a++)e.push(0);e.push(1);let n=1;for(let a=0;a<t;a++){for(let i=0;i<e.length;i++)e[i]=ia(e[i],n),i+1<e.length&&(e[i]^=e[i+1]);n=ia(n,2)}return e}function Yu(t,e){let n=e.map(a=>0);for(let a of t){let i=a^n.shift();n.push(0),e.forEach((o,s)=>n[s]^=ia(o,i))}return n}function ia(t,e){if(t>>>8||e>>>8)throw new RangeError("Byte out of range");let n=0;for(let a=7;a>=0;a--)n=n<<1^(n>>>7)*285,n^=(e>>>a&1)*t;return n}function Gu(t,e,n=1,a=40,i=-1,o=!0){if(!(oa<=n&&n<=a&&a<=sa)||i<-1||i>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let m=Gn(s,e)*8,d=Vu(t,s);if(d<=m){l=d;break}if(s>=a)throw new RangeError("Data too long")}for(let m of[No,Oo,Bo])o&&l<=Gn(s,m)*8&&(e=m);let c=[];for(let m of t){tt(m.mode[0],4,c),tt(m.numChars,Uo(m.mode,s),c);for(let d of m.getData())c.push(d)}let u=Gn(s,e)*8;tt(0,Math.min(4,u-c.length),c),tt(0,(8-c.length%8)%8,c);for(let m=236;c.length<u;m^=253)tt(m,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((m,d)=>f[d>>>3]|=m<<7-(d&7)),new ra(s,e,f,i)}function jo(t,e){let{ecc:n="L",boostEcc:a=!1,minVersion:i=1,maxVersion:o=40,maskPattern:s=-1,border:l=1}=e||{},c=typeof t=="string"?Xu(t):Array.isArray(t)?[Ho(t)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=Gu(c,Nu[n],i,o,s,a),f=Zu({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},l);return e?.invert&&(f.data=f.data.map(m=>m.map(d=>!d))),e?.onEncoded?.(f),f}function Zu(t,e=1){if(!e)return t;let{size:n}=t,a=n+e*2;t.size=a,t.data.forEach(o=>{for(let s=0;s<e;s++)o.unshift(!1),o.push(!1)});for(let o=0;o<e;o++)t.data.unshift(Array.from({length:a},s=>!1)),t.data.push(Array.from({length:a},s=>!1));let i=Ct.Border;t.types.forEach(o=>{for(let s=0;s<e;s++)o.unshift(i),o.push(i)});for(let o=0;o<e;o++)t.types.unshift(Array.from({length:a},s=>i)),t.types.push(Array.from({length:a},s=>i));return t}function G(t){return r("section",{class:`settings-panel fx-panel${t.danger?" fx-panel--danger":""}`,"aria-label":t.label,children:[r("div",{class:`settings-panel-head${t.actions?" settings-panel-head--actions":""}`,children:[t.icon&&r("span",{class:"settings-panel-icon",children:r(E,{name:t.icon,size:16})}),r("div",{children:[r("strong",{children:t.title}),t.desc&&r("p",{children:t.desc})]}),t.actions&&r("div",{class:"settings-panel-actions settings-panel-actions--wide",children:t.actions})]}),t.children]})}function ge(t){return r("div",{class:`settings-control-row settings-setting-row fx-row fx-block${t.class?` ${t.class}`:""}`,children:[r("div",{class:"settings-control-copy",children:r("span",{children:[r("strong",{children:t.label}),t.desc&&r("small",{children:t.desc})]})}),t.children!==void 0&&t.children!==null&&r("div",{class:"settings-row-control fx-row-control",children:t.children})]})}function ae(t){return r("div",{class:`fx-sub${t.class?` ${t.class}`:""}`,children:t.children})}function He(t){return r("button",{type:"button",role:"switch","aria-checked":t.checked,"aria-label":t.label,class:`settings-switch${t.checked?" active":""}`,disabled:t.disabled,onClick:()=>t.onChange(!t.checked),children:r("span",{})})}function P(t){let e=t.variant??"ghost",n=e==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${e}`;return r("button",{type:t.submit?"submit":"button",class:n,disabled:t.disabled||t.pending,"aria-busy":t.pending||void 0,"aria-label":t.label,title:t.title,"data-armed":t.armed?"true":void 0,onClick:t.onClick,children:[t.pending&&r(St,{}),t.children]})}var Qu=5e3;function nt(t){let[e,n]=S(!1),a=W(null),i=()=>{a.current&&clearTimeout(a.current),a.current=null,n(!1)};X(()=>()=>{a.current&&clearTimeout(a.current)},[]),X(()=>{(t.pending||t.disabled)&&i()},[t.pending,t.disabled]);let o=()=>{if(!e){n(!0),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{a.current=null,n(!1)},Qu);return}i(),t.onConfirm()},s=t.variant??"ghost";return r(P,{variant:e?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:e,pending:t.pending,disabled:t.disabled,onClick:o,children:e?t.confirmLabel:t.label})}function B(t){let e=Ue(),{a:n}=t;return n.error?r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:Ne(n.error,e)}),n.captcha&&r("button",{type:"button",class:"fx-link",onClick:()=>void _t(t.captchaSection??"security"),children:[e("common.openInBrowser")," ",r(E,{name:"external",size:12})]})]}):n.success?r("div",{class:"fx-msg is-ok",role:"status",children:Ne(n.success,e)}):null}function $(t){return r("p",{class:`fx-note${t.tone?` is-${t.tone}`:""}`,children:t.children})}function Oe(t){return r("div",{class:"settings-empty-row fx-block",children:t.children})}function on(t){let e=Ue(),n=t.display;return r("div",{class:`fx-quota${n.low?" is-low":""}`,children:[r("div",{class:"fx-quota-top",children:[r("span",{class:"fx-quota-label",children:t.label}),r("span",{class:"fx-quota-value",children:n.unlimited?e("common.unlimited"):n.text})]}),r("div",{class:"fx-bar",role:"progressbar","aria-label":t.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?e("common.unlimited"):n.text,children:r("span",{style:{width:`${n.pct}%`}})}),t.note&&r("div",{class:"fx-quota-note",children:t.note})]})}function qe(t){return r("div",{class:"seg fx-seg",role:"radiogroup","aria-label":t.label,children:t.options.map(e=>r("button",{type:"button",role:"radio","aria-checked":e.value===t.value,class:e.value===t.value?"active":"",onClick:()=>{e.value!==t.value&&t.onChange(e.value)},children:e.label}))})}async function ed(t){try{return await navigator.clipboard.writeText(t),!0}catch{try{let e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();let n=document.execCommand("copy");return e.remove(),n}catch{return!1}}}function Ye(t){let e=Ue(),[n,a]=S("idle"),i=W(null);X(()=>()=>{i.current&&clearTimeout(i.current)},[]);let o=async()=>{let s=await ed(t.text);a(s?"copied":"failed"),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>a("idle"),1800)};return r(P,{disabled:t.disabled||!t.text,onClick:()=>void o(),children:[r(E,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?e("common.copied"):n==="failed"?e("common.copyFailed"):t.label]})}function td(t){let e=Ve(()=>{try{return jo(t.value,{ecc:"M",border:2})}catch{return null}},[t.value]);if(!e)return null;let n="";e.data.forEach((i,o)=>i.forEach((s,l)=>{s&&(n+=`M${l} ${o}h1v1h-1z`)}));let a=t.size??148;return r("svg",{class:"fx-qr",width:a,height:a,viewBox:`0 0 ${e.size} ${e.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":t.label,children:[r("rect",{width:e.size,height:e.size,fill:"#fff"}),r("path",{d:n,fill:"#000"})]})}function la(t){let e=Ue(),{device:n}=t;return r("div",{class:"fx-device",children:[r(td,{value:n.url,label:e("signin.qrLabel")}),r("div",{class:"fx-device-copy",children:[r("p",{children:e("signin.deviceHint")}),n.userCode&&r("div",{class:"fx-device-code",children:[r("span",{children:e("signin.code")}),r("code",{children:n.userCode})]}),r("div",{class:"fx-inline",children:[r("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[e("signin.openLink")," ",r(E,{name:"external",size:12})]}),r(Ye,{text:n.url,label:e("signin.copyLink")})]})]})]})}function ye(){let t=Ue(),e=O(),[n,a]=S(null);X(()=>j().onAuthDevice?.(o=>a(o)),[]);let i=()=>void e.run(async()=>{let o=j().forsionLogin;if(!o)return{error:{key:"err.unavailable"}};try{await o()}catch(s){a(null);let l=nn($e(s));return l?{error:l}:void 0}});return r("section",{class:"settings-panel fx-panel fx-signin","aria-label":t("signin.button"),children:r("div",{class:"settings-state fx-signin-body",children:[r("span",{class:"settings-state-icon",children:r(E,{name:"user",size:18})}),r("p",{class:"fx-signin-lead",children:t("signin.desc")}),r("div",{class:"settings-state-actions",children:r(P,{variant:"primary",pending:e.pending,onClick:i,children:e.pending?t("signin.pending"):t("signin.button")})}),n&&r(la,{device:n}),r(B,{a:e})]})})}function he(t){let e=Ue(),n=t.panels??2,a=t.rows??2;return r("div",{class:"fx-skeleton","aria-busy":"true","aria-label":e("common.loading"),children:Array.from({length:n},(i,o)=>r("section",{class:"settings-panel fx-panel",children:[r("div",{class:"settings-panel-head",children:[r("span",{class:"fx-skel fx-skel--icon"}),r("div",{children:[r("span",{class:"fx-skel fx-skel--title"}),r("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:a},(s,l)=>r("div",{class:"settings-control-row",children:r("span",{class:"fx-skel fx-skel--row"})},l))]},o))})}function be(t){let e=Ue();return r("section",{class:"settings-panel fx-panel",children:r("div",{class:"settings-state fx-error-state",role:"alert",children:[r("span",{class:"settings-state-icon",children:r(E,{name:"alert",size:18})}),r("strong",{children:e("common.loadFailed")}),r("p",{children:Ne(t.error,e)}),r("div",{class:"settings-state-actions",children:r(P,{variant:"primary",onClick:t.onRetry,children:[r(E,{name:"refresh",size:12})," ",e("common.retry")]})})]})})}var nd=t=>!!t&&typeof t=="object"&&typeof t.enabled=="boolean";async function ca(t,e){let n=j().cloudInvoke;if(!n)throw new Error("no_bridge");let a=await n(t,e);if(!nd(a))throw new Error(String(a?.error??"unavailable"));return a}var rd=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function Xo(){let{t,locale:e}=D(),n=we(),[a,i]=S(null),o=O(),s=O();if(X(()=>{let d=!1,g=()=>{ca("diagnostics:get").then(v=>{d||i(v)},()=>{d||i(null)})};g();let h=j().onAuthChanged?.(g);return()=>{d=!0,h?.()}},[]),!a?.signedIn)return null;let l=()=>void s.run(async()=>{try{let d=await ca("diagnostics:uploadNow");return n.current&&i(d),d.lastError?{error:{key:"diag.failed",vars:{reason:d.lastError}}}:d.enabled&&d.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(d){return{error:{raw:$e(d)||t("err.generic")}}}}),c=async d=>{let g=!1;await o.run(async()=>{s.clear();try{let h=await ca("diagnostics:set",d);n.current&&i(h),g=!0}catch(h){return{error:{raw:$e(h)||t("err.generic")}}}}),g&&d.enabled&&n.current&&l()},u=a.intervalHours??24,f=a.mode==="manual"?t("diag.freq.manual"):u===1?t("diag.freq.hour"):u%24===0?u===24?t("diag.freq.day"):t("diag.freq.days",{n:u/24}):t("diag.freq.hours",{n:u}),m=`${a.lastUploadAt?t("diag.last",{time:Je(a.lastUploadAt,e)}):t("diag.noUpload")} \xB7 ${f}`;return r(G,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[r(ge,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:r(He,{checked:a.enabled,disabled:o.pending,label:t("diag.enable"),onChange:d=>void c({enabled:d})})}),r(ae,{class:"fx-diag",children:[r("strong",{children:t("diag.collected")}),r("ul",{children:rd.map(d=>r("li",{children:t(d)},d))}),r($,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&r(ge,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:r(He,{checked:a.sessions,disabled:o.pending,label:t("diag.sessions"),onChange:d=>void c({sessions:d})})}),a.memory!==void 0&&r(ge,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:r(He,{checked:a.memory,disabled:o.pending,label:t("diag.memory"),onChange:d=>void c({memory:d})})}),r(ge,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:r(He,{checked:a.activity,disabled:o.pending,label:t("diag.activity"),onChange:d=>void c({activity:d})})}),a.enabled&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:m}),r(P,{pending:s.pending,disabled:o.pending,onClick:l,children:t("diag.uploadNow")})]}),r(ae,{class:"fx-sub--tight",children:[r($,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!s.error&&!s.success&&r("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),r(B,{a:o}),r(B,{a:s})]})]})}function Ko(){let t=ve(async()=>{let[n,a,i]=await Promise.all([M("/auth/me"),M("/membership/my"),M("/features")]);return n.ok?{ok:!0,status:n.status,data:{me:n.data,membership:a.ok?a.data?.membership??null:null,membershipFailed:!a.ok,features:i.ok&&i.data&&typeof i.data=="object"?i.data:{}}}:n});if(t.state==="loading")return r(he,{panels:3});if(t.state==="signedOut")return r(ye,{});if(t.state==="error")return r(be,{error:t.error,onRetry:t.retry});let{data:e}=t;return r(N,{children:[r(ad,{me:e.me,onPatch:n=>t.update(a=>({...a,me:{...a.me,...n}}))}),r(id,{membership:e.membership,failed:e.membershipFailed,payment:e.features.payment!==!1,onRetry:t.reload}),r(od,{}),r(Xo,{}),r(ld,{})]})}function ad(t){let{t:e}=D(),{me:n}=t,a=O(),i=O(),[o,s]=S(!1),[l,c]=S(""),u=W(null),f=n.nickname||n.username,m=h=>{h&&a.run(async()=>{let v;try{v=await Kn(h)}catch(y){return{error:{key:y instanceof Qe?"err.avatarTooLarge":"err.avatarInvalid"}}}let k=await M("/settings",{method:"PUT",body:{avatar:v}});return k.ok?(t.onPatch({avatar:v}),{success:{key:"account.avatar.saved"}}):{error:Ce(k)}})},d=()=>{i.clear(),c(f||""),s(!0)},g=()=>{let h=l.trim();if(!h||h===f){s(!1);return}i.run(async()=>{let v=await M("/settings",{method:"PUT",body:{nickname:h}});return v.ok?(t.onPatch({nickname:h}),s(!1),{success:{key:"account.nickname.saved"}}):{error:Ce(v)}})};return r(G,{icon:"user",title:e("account.profile.title"),desc:e("account.profile.desc"),children:[r("div",{class:"fx-identity fx-block",children:[r("button",{type:"button",class:"fx-avatar",disabled:a.pending,onClick:()=>u.current?.click(),"aria-label":e("account.avatar.change"),title:e("account.avatar.change"),children:[n.avatar?r("img",{src:n.avatar,alt:""}):r("span",{class:"fx-avatar-initial",children:Jn(f)}),r("span",{class:"fx-avatar-mask",children:a.pending?r(St,{size:14}):r(E,{name:"pencil",size:14})})]}),r("input",{ref:u,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:h=>{let v=h.currentTarget;m(v.files?.[0]),v.value=""}}),r("div",{class:"fx-identity-main",children:[o?r("form",{class:"fx-inline",onSubmit:h=>{h.preventDefault(),g()},children:[r("input",{class:"fx-input fx-input--name",value:l,maxLength:40,autoFocus:!0,"aria-label":e("account.nickname.label"),onInput:h=>c(h.currentTarget.value),onKeyDown:h=>{h.key==="Escape"&&(h.preventDefault(),s(!1))}}),r(P,{variant:"primary",submit:!0,pending:i.pending,children:e("common.save")}),r(P,{disabled:i.pending,onClick:()=>s(!1),children:e("common.cancel")})]}):r("div",{class:"fx-name-row",children:[r("span",{class:"fx-name",children:f}),r("button",{type:"button",class:"fx-icon-btn",onClick:d,"aria-label":e("account.nickname.edit"),title:e("account.nickname.edit"),children:r(E,{name:"pencil",size:13})}),n.role==="ADMIN"&&r("span",{class:"fx-tag",children:e("account.role.admin")})]}),r("div",{class:"fx-muted",children:e("account.username",{name:n.username})}),r(B,{a:i}),r(B,{a})]})]}),r(Vo,{kind:"phone",value:n.phone}),r(Vo,{kind:"email",value:n.email})]})}function Vo(t){let{t:e,goTo:n}=D(),a=!!t.value,i=a?t.kind==="phone"?jn(t.value):Xn(t.value):e("account.contact.unbound"),o=t.kind==="phone"?e("account.contact.phone"):e("account.contact.email");return r(ge,{label:o,children:n?r("button",{type:"button",class:`fx-link-row${a?"":" is-empty"}`,onClick:()=>n("security"),title:e("account.contact.manage"),children:[r("span",{children:i}),r(E,{name:"chevron",size:12})]}):r("span",{class:`fx-value${a?"":" is-empty"}`,children:i})})}function id(t){let{t:e,locale:n}=D(),a=O(),i=t.membership&&(t.membership.status===void 0||t.membership.status==="active")?t.membership:null,o=rn(i?.tier),s=o==="Free",l=s?"free":o.toLowerCase()==="pro"?"pro":"paid",c=()=>void a.run(async()=>await Ut("membership")?void 0:{error:{key:"err.openFailed"}});return r(G,{icon:"card",title:e("member.title"),desc:e("member.desc"),actions:t.payment&&!t.failed?r(P,{variant:"primary",pending:a.pending,onClick:c,children:e(s?"member.upgrade":"member.renew")}):void 0,children:[!t.failed&&r("div",{class:"fx-member fx-block",children:[r("span",{class:`fx-tier fx-tier--${l}`,children:o}),r("div",{class:"fx-member-copy",children:[r("strong",{children:s?e("member.freeName"):i?.plan?.name||o}),r("span",{class:"fx-muted",children:s?e("member.freeHint"):i?.expiresAt?e("member.expires",{date:Vn(i.expiresAt,n)}):e("member.noExpiry")})]})]}),t.failed&&r("div",{class:"fx-sub",children:r($,{tone:"warn",children:[e("member.loadFailed")," ",r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")})]})}),a.error&&r("div",{class:"fx-sub fx-sub--tight",children:r(B,{a})})]})}function od(){let{t}=D(),e=we(),[n,a]=S(null),[i,o]=S(!1),[s,l]=S(null),[c,u]=S(null),f=O(),m=O(),d=O(),g=!!j().authAccounts;X(()=>{let x=0,w=()=>{let U=j().authAccounts;if(!U)return;let J=++x;o(!1),U().then(H=>{J===x&&a(Array.isArray(H)?H:[])}).catch(()=>{J===x&&o(!0)})};w();let C=j().onAuthChanged?.(w),R=j().onAuthDevice?.(U=>u(U));return()=>{x++,C?.(),R?.()}},[]);let h=x=>{l(x),f.run(async()=>{let w=j().forsionSwitchAccount;if(!w)return{error:{key:"err.unavailable"}};try{await w(x)}catch(C){let R=nn($e(C));return R?{error:R}:void 0}finally{e.current&&l(null)}})},v=()=>void m.run(async()=>{let x=j().forsionLogin;if(!x)return{error:{key:"err.unavailable"}};u(null);try{await x()}catch(w){e.current&&u(null);let C=nn($e(w));return C?{error:C}:void 0}}),k=()=>void d.run(async()=>{let x=j().forsionLogout;if(!x)return{error:{key:"err.unavailable"}};try{await x()}catch(w){return{error:{raw:$e(w)||t("err.generic")}}}}),y=f.pending||m.pending||d.pending;return r(G,{icon:"laptop",title:t("local.title"),desc:t("local.desc"),children:[g&&n===null&&!i&&r(Oe,{children:[r(St,{})," ",t("common.loading")]}),i&&r("div",{class:"fx-sub",children:r($,{tone:"warn",children:t("local.loadFailed")})}),n&&n.length===0&&r(Oe,{children:t("local.empty")}),n&&n.length>0&&r("div",{class:"fx-list fx-block",role:"list",children:n.map(x=>r("div",{class:"fx-list-row",role:"listitem",children:[r("span",{class:"fx-list-icon",children:r(E,{name:"user",size:14})}),r("span",{class:"fx-list-main",children:[r("strong",{children:x.nickname||x.username||"Forsion"}),r("small",{children:[x.username&&x.nickname?x.username:null,sd(x.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),x.active?r("span",{class:"fx-tag fx-tag--accent",children:[r(E,{name:"check",size:11})," ",t("local.current")]}):r(P,{pending:s===x.id,disabled:y&&s!==x.id,onClick:()=>h(x.id),children:t("local.switch")})]},x.id))}),m.pending&&c&&r("div",{class:"fx-sub",children:r(la,{device:c})}),r("div",{class:"settings-panel-footer fx-footer",children:[r(P,{pending:m.pending,disabled:y&&!m.pending,onClick:v,children:[r(E,{name:"plus",size:12})," ",m.pending?t("signin.pending"):t("local.add")]}),r(P,{pending:d.pending,disabled:y&&!d.pending,onClick:k,children:[r(E,{name:"logout",size:12})," ",t("local.signOut")]})]}),(f.error||m.error||d.error)&&r("div",{class:"fx-sub fx-sub--tight",children:[r(B,{a:f}),r(B,{a:m}),r(B,{a:d})]})]})}function sd(t){try{return new URL(t).host}catch{return t}}function ld(){let{t}=D(),e=O();return r("div",{class:"fx-page-foot",children:[r("button",{type:"button",class:"fx-link",disabled:e.pending,onClick:()=>void e.run(async()=>await _t()?void 0:{error:{key:"err.openFailed"}}),children:[t("account.web.open")," ",r(E,{name:"external",size:12})]}),r("span",{class:"fx-muted",children:t("account.web.desc")}),r(B,{a:e})]})}var Jo=["cream","coral","teal","lavender"],Yo=["auto","light","dark"],Go=["none","mist","contour","dots"],Zo=["none","ring","pro"],Qo=["early","streak","author","inviter","event"];var es=t=>`/u/${encodeURIComponent(t)}`,ua=t=>!!t&&t.toLowerCase()!=="free";function da(t,e){let n={...t.settings,...e};return{...t,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!ua(t.tier)?"none":n.frame,modules:n.modules.filter(a=>a.show).map(a=>({id:a.id}))}}function pa(t,e,n){let a=t.findIndex(s=>s.id===e),i=a+n;if(a<0||i<0||i>=t.length)return t;let o=t.slice();return[o[a],o[i]]=[o[i],o[a]],o}function ts(t){let e=t.trim();if(!e)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(e)?e:`https://${e}`,a;try{a=new URL(n)}catch{return null}if(a.protocol!=="http:"&&a.protocol!=="https:"||!a.hostname.includes("."))return null;let i=a.toString();return i.length<=200?i:null}function fa(t){return t.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function ns(t,e){let n=e==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[a,i]of n)if(t>=a){let o=t/a;return{value:o>=100?String(Math.round(o)):String(Math.round(o*10)/10),unit:i}}return{value:Math.round(t).toLocaleString("en-US"),unit:""}}var rs=t=>t==="zh"?"zh-CN":"en-US";function as(t,e){let[n,a]=t.split("-").map(Number);if(!n||!a)return[];let i=new Intl.DateTimeFormat(rs(e),{month:"short",timeZone:"UTC"});return Array.from({length:12},(o,s)=>i.format(new Date(Date.UTC(n,a-12+s,1))))}function is(t,e){let[n,a]=t.split("-").map(Number);return!n||!a?"":new Intl.DateTimeFormat(rs(e),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,a-1,1)))}function os([t,e]){let n=a=>`${String((a%24+24)%24).padStart(2,"0")}:00`;return`${n(t)} \u2013 ${n(e)}`}function ss(t){let e=0,n=Promise.resolve(),a=()=>{let i=e;return t.read().then(o=>{i===e&&t.apply(o)})};return{read:a,write(i){let o=++e,s=n.then(i).then(l=>{o===e&&t.apply(l)});return n=s.catch(()=>o===e?a().catch(()=>{}):void 0),s}}}var ds={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},cs={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},us={plus:"Plus",pro:"Pro"},ga=t=>!!t&&/^https?:\/\//i.test(t);function ha(t){if(!ga(t))return;let e=j().openExternal;e?e(t).catch(()=>{}):window.open(t,"_blank","noopener")}async function dd(){let t=j().cloudInvoke;if(!t)return null;try{let e=await t("profile:publicOrigin");return e?.ok&&typeof e.origin=="string"&&/^https?:\/\/[^/]+$/i.test(e.origin)?e.origin:null}catch{return null}}async function pd(t,e,n){let a=await M(t,{method:e,body:n});if(!a.ok)throw a;if(!a.data?.profile)throw{ok:!1,status:a.status,code:null,detail:null,transport:"bad_response"};return a.data.profile}var ps=t=>t&&typeof t=="object"&&t.ok===!1?Ce(t):{raw:String(t?.message||t)};function fs(){let{t}=D(),e=ve(async()=>{let[a,i,o]=await Promise.all([M("/profile/me"),M("/auth/me"),dd()]);return i.ok?a.ok?a.data?.profile?{ok:!0,status:a.status,data:{profile:a.data.profile,me:i.data,origin:o}}:{ok:!0,status:404,data:null}:a.status===404?{ok:!0,status:404,data:null}:a:i});if(e.state==="loading")return r(he,{panels:2,rows:3});if(e.state==="signedOut")return r(ye,{});if(e.state==="error")return r(be,{error:e.error,onRetry:e.retry});if(!e.data)return r(G,{icon:"user",title:t("page.profile"),children:r(Oe,{children:t("profile.unsupported")})});let{update:n}=e;return r(fd,{data:e.data,update:a=>n(i=>i&&a(i))})}function fd(t){let{t:e}=D(),n=we(),{profile:a,me:i,origin:o}=t.data,[s,l]=S(null),[c,u]=S(null),[f,m]=S(!1),d=W(t.update);d.current=t.update;let g=(z,Q,oe)=>n.current?pd(z,Q,oe):Promise.reject(new Error("unmounted")),h=Ve(()=>ss({apply:z=>d.current(Q=>({...Q,profile:z})),read:()=>g("/profile/me")}),[]),v=i.username||a.username,k={...a,username:v,nickname:i.nickname||null},y=a.settings.isPublic,x=o?`${o}${es(v)}`:null,w=z=>{n.current&&u({tone:"error",m:ps(z)})},C=z=>{u(null),t.update(Q=>({...Q,profile:da(Q.profile,z)})),h.write(()=>g("/profile/me","PUT",z)).catch(w)},R=async z=>{t.update(Q=>({...Q,profile:da(Q.profile,{modules:Q.profile.settings.modules.map(oe=>({...oe,public:z.find(Ee=>Ee.id===oe.id)?.public??oe.public}))})})),await h.write(()=>g("/profile/me/visibility","POST",{public:!0,modules:z})),n.current&&(l(null),u({tone:"ok",m:{key:"profile.nowPublic"}}))},U=async()=>{m(!0),u(null);try{await h.write(()=>g("/profile/me/visibility","POST",{public:!1})),n.current&&u({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(z){w(z)}finally{n.current&&m(!1)}},J=W(Promise.resolve()),H=(z,Q)=>{let oe=J.current.then(async()=>{if(!n.current)return;let Ee=await M("/settings",{method:"PUT",body:z});if(n.current){if(!Ee.ok)return u({tone:"error",m:Ce(Ee)});d.current(I=>({...I,me:{...I.me,...z}})),u({tone:"ok",m:{key:Q}})}});return J.current=oe,oe},V=async z=>{u(null);let Q;try{Q=await Kn(z)}catch(oe){return u({tone:"error",m:{key:oe instanceof Qe?"err.avatarTooLarge":"err.avatarInvalid"}})}await H({avatar:Q},"account.avatar.saved")},ee=z=>{u(null),l(Q=>Q===z?null:z)};return r("div",{class:"fx-pf-page",children:[r(G,{icon:y?"globe":"lock",title:e(y?"profile.state.public":"profile.state.private"),desc:e(y?"profile.state.publicDesc":"profile.state.privateDesc"),actions:r(N,{children:[r(P,{onClick:()=>ee("deco"),children:[r(E,{name:"palette",size:12})," ",e("profile.decorate")]}),y?r(P,{pending:f,onClick:()=>void U(),children:[r(E,{name:"lock",size:12})," ",e("profile.makePrivate")]}):r(P,{variant:"primary",onClick:()=>ee("publish"),children:[r(E,{name:"globe",size:12})," ",e("profile.publish")]})]}),children:[y&&x&&r(ge,{label:e("profile.address"),desc:x.replace(/^https?:\/\//i,""),children:[r(Ye,{text:x,label:e("profile.copyLink")}),r(P,{onClick:()=>ha(x),children:[r(E,{name:"external",size:12})," ",e("profile.openPublic")]})]}),s==="publish"&&!y&&r(md,{profile:a,url:x,submit:R,onClose:()=>l(null)}),c&&r(ae,{class:"fx-sub--tight",children:r("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:Ne(c.m,e)})})]}),r("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[r("div",{class:"fx-pf-root",children:r(xd,{view:k,avatar:i.avatar||null,pinned:a.settings.pinned,owner:{onAvatar:z=>void V(z),onNickname:z=>{u(null),H({nickname:z},"account.nickname.saved")},onBio:z=>C({bio:z}),onLinks:z=>C({links:z}),onPinned:z=>C({pinned:z}),onInvalidLink:()=>u({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&r(gd,{profile:a,onChange:C,onClose:()=>l(null)})]})]})}function md(t){let{t:e}=D(),n=we(),{profile:a}=t,[i,o]=S({}),s=a.settings.modules.filter(g=>g.show).map(g=>({...g,public:i[g.id]??g.public})),[l,c]=S(!1),[u,f]=S(null),m=a.canPublish?null:a.publishBlockedReason||"publish_blocked";if(m)return r(ae,{children:[r($,{children:e(m==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),r("div",{class:"fx-inline fx-pf-foot",children:[m==="machine_username"&&r(P,{variant:"primary",onClick:()=>void _t("profile"),children:[e("profile.goRename")," ",r(E,{name:"external",size:12})]}),r(P,{onClick:t.onClose,children:e("common.cancel")})]})]});let d=async()=>{c(!0),f(null);try{await t.submit(s.map(({id:g,public:h})=>({id:g,public:h})))}catch(g){if(!n.current)return;f(ps(g)),c(!1)}};return r(ae,{children:[t.url&&r("div",{class:"fx-pf-url",children:[r(E,{name:"globe",size:14}),r("span",{children:t.url.replace(/^https?:\/\//i,"")})]}),r($,{children:e("profile.publishDesc")}),r("div",{class:"fx-pf-checks",children:s.map(g=>r("div",{class:"fx-pf-check",children:[r("div",{children:[e(`profile.mod.${g.id}`),r("small",{children:e(`profile.modDesc.${g.id}`)})]}),r(He,{checked:g.public,disabled:l,label:`${e(`profile.mod.${g.id}`)} \xB7 ${e("profile.col.public")}`,onChange:h=>o(v=>({...v,[g.id]:h}))})]},g.id))}),r($,{children:e("profile.publishNever")}),u&&r("div",{class:"fx-msg is-error",role:"alert",children:Ne(u,e)}),r("div",{class:"fx-inline fx-pf-foot",children:[r(P,{variant:"primary",pending:l,onClick:()=>void d(),children:e("profile.publishConfirm")}),r(P,{disabled:l,onClick:t.onClose,children:e("common.cancel")})]})]})}function gd(t){let{t:e}=D(),n=t.profile.settings,a=ua(t.profile.tier),i=(s,l)=>t.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),o=s=>r("span",{class:"fx-pf-thumb",children:s});return r("aside",{class:"fx-pf-deco","aria-label":e("profile.decorate"),children:r(G,{icon:"palette",title:e("profile.decorate"),actions:r(P,{onClick:t.onClose,children:e("common.done")}),children:r("div",{class:"fx-pf-deco-body",children:[r("h4",{children:e("profile.deco.cover")}),r("div",{class:"fx-pf-opts",children:Go.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>t.onChange({cover:s}),children:[o(r("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),e(`profile.cover.${s}`)]},s))}),r("h4",{children:e("profile.deco.frame")}),r("div",{class:"fx-pf-opts",children:Zo.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!a,title:s==="pro"&&!a?e("profile.frameProHint"):void 0,onClick:()=>t.onChange({frame:s}),children:[o(r("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:r("span",{class:"fx-pf-av"})})),e(`profile.frame.${s}`)]},s))}),!a&&r($,{children:e("profile.frameProHint")}),r("h4",{children:e("profile.deco.modules")}),r("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[r("span",{children:e("profile.col.show")}),r("span",{children:e("profile.col.public")})]}),n.modules.map((s,l)=>r("div",{class:"fx-pf-mod",children:[r("span",{children:e(`profile.mod.${s.id}`)}),r("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:e("profile.moveUp"),"aria-label":`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.moveUp")}`,onClick:()=>t.onChange({modules:pa(n.modules,s.id,-1)}),children:r(E,{name:"up",size:13})}),r("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:e("profile.moveDown"),"aria-label":`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.moveDown")}`,onClick:()=>t.onChange({modules:pa(n.modules,s.id,1)}),children:r(E,{name:"down",size:13})}),r(He,{checked:s.show,label:`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.col.show")}`,onChange:c=>i(s.id,{show:c})}),r(He,{checked:s.show&&s.public,disabled:!s.show,label:`${e(`profile.mod.${s.id}`)} \xB7 ${e("profile.col.public")}`,onChange:c=>i(s.id,{public:c})})]},s.id)),r($,{children:e("profile.modulesHint")}),r("h4",{children:e("profile.deco.skin")}),r("div",{class:"fx-pf-opts",children:Jo.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>t.onChange({skin:s}),children:[o(r("span",{class:"fx-pf-swatch","data-skin":s})),e(`profile.skin.${s}`)]},s))}),r("h4",{children:e("profile.deco.mode")}),r(qe,{value:n.mode,label:e("profile.deco.mode"),onChange:s=>t.onChange({mode:s}),options:Yo.map(s=>({value:s,label:e(`profile.mode.${s}`)}))}),r($,{children:e("profile.deco.publicHint")})]})})})}function ma(t){let[e,n]=S(null),a=W(!1),i=W(null),o=e!==null;ho(()=>{o&&i.current?.focus()},[o]);let s=t.class?` ${t.class}`:"";if(e===null)return r("button",{type:"button",class:`fx-pf-ed${s}${t.value?"":" is-empty"}`,title:t.label,"aria-label":t.label,onClick:()=>{a.current=!1,n(t.value)},children:[r("span",{children:t.value||t.placeholder}),r(E,{name:t.value?"pencil":"plus",size:12})]});let l=()=>{let c=e.trim();n(null),!a.current&&c!==t.value&&t.onSave(c)};return r("span",{class:`fx-pf-ed-on${s}`,children:[r("input",{ref:i,class:"fx-input",type:"text",value:e,maxLength:t.maxLength,placeholder:t.placeholder,"aria-label":t.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),a.current=!0,c.currentTarget.blur()))}}),t.counter&&r("small",{children:[Array.from(e).length,"/",t.maxLength]})]})}function Zn(t){return r("section",{class:"fx-pf-sec",style:{order:t.order},children:[r("div",{class:"fx-pf-sec-h",children:[r("h3",{children:t.title}),t.action]}),t.children]})}function hd(t){let{t:e}=D(),{work:n}=t,a=ds[n.type],i=r(N,{children:[r("div",{class:"fx-pf-work-top",children:[r("span",{class:"fx-pf-work-ico",children:r(E,{name:a?.icon??"box",size:17})}),r("div",{children:[r("div",{class:"fx-pf-work-name",children:n.name}),r("div",{class:"fx-pf-work-type",children:a?e(a.key):n.type})]})]}),r("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&r("div",{class:"fx-pf-work-foot",children:[r(E,{name:n.countKind==="visits"?"eye":"download",size:12}),e(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),o=n.url;return ga(o)?r("a",{class:"fx-pf-work",href:o,onClick:s=>{s.preventDefault(),ha(o)},children:i}):r("article",{class:"fx-pf-work",children:i})}function bd(t){let{t:e}=D(),n=we(),[a,i]=S(null),[o,s]=S(()=>t.pinned.map(f=>`${f.kind}:${f.id}`));X(()=>{M("/profile/me/works").then(f=>{n.current&&i(f.ok?f.data?.works??[]:"failed")})},[]);let l=f=>`${f.kind}:${f.id}`,c=f=>s(m=>m.includes(f)?m.filter(d=>d!==f):[...m,f]);if(a===null)return r("div",{class:"fx-pf-card fx-pf-empty",children:[r(St,{})," ",e("common.loading")]});if(a==="failed"||a.length===0)return r("div",{class:"fx-pf-card fx-pf-empty",children:[r("p",{children:e(a==="failed"?"common.loadFailed":"profile.worksNone")}),r("div",{class:"fx-inline fx-pf-foot",children:[a!=="failed"&&r(P,{variant:"primary",onClick:()=>void _t("submission"),children:[e("profile.goSubmit")," ",r(E,{name:"external",size:12})]}),r(P,{onClick:t.onClose,children:e("common.cancel")})]})]});let u=()=>{let f=new Map(a.map(m=>[l(m),m]));t.onSave(o.flatMap(m=>{let d=f.get(m);return d?[{kind:d.kind,id:d.id}]:[]})),t.onClose()};return r("div",{class:"fx-pf-card fx-pf-picker",children:[a.map(f=>{let m=l(f),d=o.includes(m),g=ds[f.type];return r("button",{type:"button",class:"fx-pf-pick","aria-pressed":d,disabled:!d&&o.length>=6,onClick:()=>c(m),children:[r("div",{children:[f.name,r("small",{children:[g?e(g.key):f.type," \xB7 ",f.summary]})]}),d&&r(E,{name:"check",size:15})]},m)}),r("div",{class:"fx-inline fx-pf-foot",children:[r("span",{class:"fx-grow",children:o.length?e("profile.worksPicked",{n:o.length,max:6}):e("profile.worksAuto")}),r(P,{variant:"primary",onClick:u,children:e("common.done")}),r(P,{onClick:t.onClose,children:e("common.cancel")})]})]})}function xd(t){let{t:e,locale:n}=D(),{view:a,owner:i}=t,o=W(null),[s,l]=S(!1),c=a.nickname||a.username,u=(a.tier||"free").toLowerCase(),f=a.modules.map(I=>I.id),m=I=>f.indexOf(I),d=I=>m(I)>=0,g=a.stats,h=g?ns(g.totalTokens,n):null,v=e("profile.unit.days"),k=g&&h?[[h.value,h.unit,e("profile.stat.tokens")],[String(g.activeDays),v,e("profile.stat.activeDays")],[String(g.longestStreak),v,e("profile.stat.longest")],[String(g.currentStreak),v,e("profile.stat.current")],[g.installs.toLocaleString("en-US"),"",e("profile.stat.installs")]]:[],y=g&&d("stats")&&r("div",{class:"fx-pf-stats",style:{order:m("stats")},children:k.map(([I,pe,ft])=>r("div",{class:"fx-pf-stat",children:[r("b",{children:[I,pe&&r("small",{children:pe})]}),r("span",{children:ft})]},ft))},"stats"),x=f[0]==="stats",w=a.works||[],C=d("works")&&r(Zn,{order:m("works"),title:e("profile.works"),action:!s&&r("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:e("profile.worksPick")}),children:s?r(bd,{pinned:t.pinned,onSave:i.onPinned,onClose:()=>l(!1)}):w.length?r("div",{class:"fx-pf-works",children:w.map(I=>r(hd,{work:I},`${I.kind}:${I.id}`))}):r("div",{class:"fx-pf-card fx-pf-empty",children:e("profile.worksEmpty")})},"works"),R=a.activity,U=d("activity")&&R&&r(Zn,{order:m("activity"),title:e("profile.activity"),children:r("div",{class:"fx-pf-card",children:[r("div",{class:"fx-pf-hm",role:"img","aria-label":e("profile.activityDays",{n:R.activeDays}),children:R.levels.map((I,pe)=>r("i",{class:I?`l${I}`:void 0},pe))}),r("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:as(R.end,n).map((I,pe)=>r("span",{children:I},pe))}),r("div",{class:"fx-pf-hm-foot",children:[r("span",{children:e("profile.activityDays",{n:R.activeDays})}),r("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[e("profile.less"),r("i",{}),r("i",{class:"l1"}),r("i",{class:"l2"}),r("i",{class:"l3"}),r("i",{class:"l4"}),e("profile.more")]})]})]})},"activity"),J=(a.badges||[]).filter(I=>Qo.includes(I.id)),H=d("badges")&&r(Zn,{order:m("badges"),title:e("profile.badges"),children:J.length?r("div",{class:"fx-pf-card fx-pf-rows",children:J.map(I=>r("div",{class:"fx-pf-brow",children:[r("span",{class:"fx-pf-badge",children:r(E,{name:cs[I.id],size:14})}),r("div",{children:[r("b",{children:e(`profile.badge.${I.id}`)}),r("span",{children:e(`profile.badgeSub.${I.id}`,{value:I.value??""})})]})]},I.id))}):r("div",{class:"fx-pf-card fx-pf-empty",children:e("profile.badgesEmpty")})},"badges"),V=a.insights,ee=[];V?.topModel&&ee.push([e("profile.insightModel"),V.topModel]),V?.activeHours&&ee.push([e("profile.insightHours"),os(V.activeHours)]);let z=d("insights")&&r(Zn,{order:m("insights"),title:e("profile.insights"),children:ee.length?r("div",{class:"fx-pf-card fx-pf-rows",children:ee.map(([I,pe])=>r("div",{class:"fx-pf-row",children:[r("span",{children:I}),r("b",{children:pe})]},I))}):r("div",{class:"fx-pf-card fx-pf-empty",children:e("profile.insightsEmpty")})},"insights"),Q=[!x&&y,C,U].filter(Boolean),oe=[H,z].filter(Boolean),Ee=I=>{if(!I)return;let pe=ts(I);if(!pe)return i.onInvalidLink();a.links.includes(pe)||i.onLinks([...a.links,pe])};return r("div",{class:"fx-pf","data-cover":a.cover,"data-frame":a.frame,children:[r("div",{class:"fx-pf-cover"}),r("div",{class:"fx-pf-id",children:[r("button",{type:"button",class:"fx-pf-avatar",title:e("account.avatar.change"),"aria-label":e("account.avatar.change"),onClick:()=>o.current?.click(),children:[r("span",{class:"fx-pf-av",children:t.avatar?r("img",{src:t.avatar,alt:""}):r("span",{class:"fx-pf-av-fallback",children:Jn(c)})}),r("span",{class:"fx-pf-av-mask",children:r(E,{name:"pencil",size:18})})]}),r("input",{ref:o,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:I=>{let pe=I.currentTarget,ft=pe.files?.[0];pe.value="",ft&&i.onAvatar(ft)}}),r("div",{class:"fx-pf-id-text",children:[r("div",{class:"fx-pf-name",children:[r(ma,{value:c,placeholder:a.username,maxLength:40,label:e("account.nickname.edit"),onSave:I=>{I&&i.onNickname(I)}}),us[u]&&r("span",{class:`fx-tag${u==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:us[u]})]}),r("div",{class:"fx-pf-handle",children:["@",a.username]})]}),J.length>0&&d("badges")&&r("div",{class:"fx-pf-badges",children:J.map(I=>r("span",{class:"fx-pf-badge",title:e(`profile.badge.${I.id}`),children:r(E,{name:cs[I.id],size:14})},I.id))})]}),r("div",{class:"fx-pf-sub",children:[r(ma,{class:"fx-pf-bio",value:a.bio,placeholder:e("profile.bioPlaceholder"),maxLength:80,label:e("profile.bio"),counter:!0,onSave:i.onBio}),r("div",{class:"fx-pf-meta",children:[a.joinedMonth&&r("span",{children:[r(E,{name:"calendar",size:13}),e("profile.joined",{date:is(a.joinedMonth,n)})]}),a.links.map(I=>r("span",{children:[r(E,{name:"link",size:13}),ga(I)?r("a",{href:I,onClick:pe=>{pe.preventDefault(),ha(I)},children:fa(I)}):r("span",{children:fa(I)}),r("button",{type:"button",class:"fx-pf-x",title:e("profile.linkRemove"),"aria-label":e("profile.linkRemove"),onClick:()=>i.onLinks(a.links.filter(pe=>pe!==I)),children:r(E,{name:"x",size:11})})]},I)),a.links.length<2&&r(ma,{value:"",placeholder:e("profile.linkAdd"),maxLength:200,label:e("profile.linkAdd"),onSave:Ee},a.links.length)]})]}),x&&y,r("div",{class:"fx-pf-body","data-cols":Q.length&&oe.length?2:1,children:[r("div",{class:"fx-pf-main",children:Q}),oe.length>0&&r("div",{class:"fx-pf-side",children:oe})]})]})}function Z(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function vd(t,e){let n=Z(e);if(n===null||n<0)return null;if(n===0)return 0;let a=Math.max(0,Z(t)??0);return Math.min(100,Math.max(0,Math.floor(a/n*100)))}var yd=15;function Tt(t,e){let n=vd(t,e);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let a=Math.max(0,Z(t)??0),i=n===0&&a>0&&(Z(e)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:i,low:n<=yd}}function Qn(t,e){let n=Z(e);if(n===null||n<=0)return null;let a=Z(t);if(a===null)return null;let i=Math.max(0,a);if(i===0)return"0%";let o=i/n*100;if(o<.1)return"<0.1%";let s=Math.round(o*10)/10;return s<10?`${s}%`:`${Math.round(o).toLocaleString("en-US")}%`}var kd=t=>t.ok?"ok":t.status===404?"hidden":"failed";function gs(){let t=ve(async()=>{let[s,l,c,u]=await Promise.all([M("/token-quota/my"),M("/credits/balance"),M("/features"),M("/invite/my-code")]);return s.ok?{ok:!0,status:s.status,data:{quota:s.data??{},balance:l.ok?Z(l.data?.balance):null,balanceFailed:!l.ok,features:c.ok&&c.data&&typeof c.data=="object"?c.data:{},invite:u.ok?u.data:null,inviteState:kd(u)}}:s});if(t.state==="loading")return r(he,{panels:3,rows:2});if(t.state==="signedOut")return r(ye,{});if(t.state==="error")return r(be,{error:t.error,onRetry:t.retry});let{data:e,update:n}=t,a=e.quota.background,i=e.features.redemption_codes!==!1,o=e.features.payment!==!1;return r(N,{children:[r(_d,{data:e,update:n,onFailed:t.reload}),r(Ad,{data:e,payment:o,onRetry:t.reload}),a?.modelId?r(Td,{bg:a,update:n}):null,(e.inviteState!=="hidden"||i)&&r(Pd,{data:e,update:n,redeemEnabled:i,onRedeemed:t.reload})]})}var ms=t=>({dailyLimit:t.dailyLimit,dailyRemaining:t.dailyRemaining,weeklyLimit:t.weeklyLimit,weeklyRemaining:t.weeklyRemaining});function wd(t,e){if(typeof t?.showResetCardCeremony!="function")return!1;try{return t.showResetCardCeremony(e),!0}catch{return!1}}function _d(t){let{t:e,locale:n,ctx:a}=D(),i=t.data.quota,o=Tt(i.dailyRemaining,i.dailyLimit),s=Tt(i.weeklyRemaining,i.weeklyLimit),l=Lo(i.weeklyResetAt,n),c=Math.max(0,Z(i.resetCards)??0),u=Z(i.resetCardPricePoints)??100,f=O(),m=O(),[d,g]=S(null),[h,v]=S("1"),k=/^\d+$/.test(h.trim())?Number(h.trim()):NaN,y=Number.isInteger(k)&&k>=1&&k<=50,x=y?k*u:null,w=t.data.balance,C=x!==null&&w!==null&&w<x,R=()=>void f.run(async()=>{let H={daily:o,weekly:s},V=ms(i);g(null);let ee=j(),z=await $n(ee.accountUseResetCard?()=>ee.accountUseResetCard("both"):null,()=>M("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!z.ok)return t.onFailed(),ue(z);let Q=z.data?.quota,oe=Z(z.data?.resetCards);return t.update(Ee=>({...Ee,quota:{...Ee.quota,...Q??{},resetCards:oe??Ee.quota.resetCards}})),Q&&!wd(a.app,{before:V,after:ms(Q),remainingCards:oe??void 0})&&g({before:H,after:{daily:Tt(Q.dailyRemaining,Q.dailyLimit),weekly:Tt(Q.weeklyRemaining,Q.weeklyLimit)},cards:oe}),{success:{key:"card.used"}}}),U=()=>void m.run(async()=>{if(!y)return{error:{key:"err.invalidCount"}};let H=await M("/points/exchange-reset-cards",{method:"POST",body:{count:k,expectedPricePerCard:u}});return H.ok?(t.update(V=>({...V,quota:{...V.quota,resetCards:Z(H.data?.resetCards)??V.quota.resetCards},balance:Z(H.data?.newPointsBalance)??V.balance})),v("1"),{success:{key:"card.exchanged",vars:{n:Z(H.data?.cardsGranted)??k}}}):(t.onFailed(),ue(H))}),J=H=>H.unlimited?e("common.unlimited"):H.text;return r(G,{icon:"gauge",title:e("quota.ai.title"),desc:e("quota.ai.desc"),children:[r("div",{class:"fx-quota-list fx-block",children:[r(on,{label:e("common.today"),display:o,note:o.unlimited?null:e("quota.resetDaily")}),r(on,{label:e("common.thisWeek"),display:s,note:s.unlimited||!l?null:e("quota.resetWeekly",{date:l})})]}),r(ge,{label:e("card.title"),desc:e("card.desc"),children:[r("span",{class:"fx-value","data-testid":"reset-card-count",children:e("card.owned",{n:c})}),r(nt,{label:e("card.use"),confirmLabel:e("card.useConfirm"),pending:f.pending,disabled:c<=0,onConfirm:R})]}),c<=0&&!f.success&&r(ae,{children:r($,{children:e("card.noneHint")})}),(f.error||f.success)&&r(ae,{children:[r(B,{a:f}),f.success&&d&&r("div",{class:"fx-ceremony",role:"status",children:[r("span",{children:[e("common.today")," ",r("b",{children:J(d.before.daily)})," \u2192 ",r("b",{children:J(d.after.daily)})]}),r("span",{children:[e("common.thisWeek")," ",r("b",{children:J(d.before.weekly)})," \u2192 ",r("b",{children:J(d.after.weekly)})]}),d.cards!==null&&r("span",{class:"fx-muted",children:e("card.left",{n:d.cards})})]})]}),r(ge,{label:e("card.exchange"),desc:e("card.price",{price:re(u,n)}),class:"fx-row--wide",children:[r("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:h,"aria-label":e("card.count"),onInput:H=>{v(H.currentTarget.value),m.clear()}}),r("span",{class:"fx-muted fx-cost",children:x!==null?e("card.cost",{cost:re(x,n)}):e("card.countHint")}),r(nt,{label:e("card.exchangeButton"),confirmLabel:e("card.exchangeConfirm",{cost:x!==null?re(x,n):"\u2014"}),pending:m.pending,disabled:!y||C,onConfirm:U})]}),(C||m.error||m.success)&&r(ae,{children:[C&&!m.error&&r($,{tone:"warn",children:e("err.insufficientPoints")}),r(B,{a:m})]})]})}function Sd(t,e,n){let a=O(),[i,o]=S(null);return{checked:i??t,toggle:l=>{o(l),a.run(async()=>{let c=await e(l);if(o(null),!c.ok)return ue(c);n(l)})},action:a}}function Ad(t){let{t:e,locale:n}=D(),a=O(),i=()=>void a.run(async()=>await Ut("credits")?void 0:{error:{key:"err.openFailed"}});return r(G,{icon:"coins",title:e("points.title"),desc:e("points.desc"),actions:t.payment?r(P,{variant:"primary",pending:a.pending,onClick:i,children:e("points.recharge")}):void 0,children:[r(ge,{label:e("points.balance"),children:t.data.balance!==null?r("span",{class:"fx-big","data-testid":"points-balance",children:re(t.data.balance,n)}):r("span",{class:"fx-value is-empty",children:[e("points.balanceFailed")," ",r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")})]})}),a.error&&r(ae,{children:r(B,{a})})]})}var Cd=[5,10,20];function Td(t){let{t:e}=D(),{bg:n}=t,a=Tt(n.dailyRemaining,n.dailyLimit),i=Tt(n.weeklyRemaining,n.weeklyLimit),o=O(),[s,l]=S(null),c=Sd(!!n.autoMain,f=>{let m=j();return $n(m.accountBgAutoMain?()=>m.accountBgAutoMain(f):null,()=>M("/token-quota/background/auto-main",{method:"POST",body:{enabled:f}}))},f=>t.update(m=>({...m,quota:{...m.quota,background:{...m.quota.background??{},autoMain:f}}}))),u=f=>{l(f),o.run(async()=>{let m=j(),d=await $n(m.accountBgConvert?()=>m.accountBgConvert(f):null,()=>M("/token-quota/background/convert",{method:"POST",body:{percent:f}}));if(l(null),!d.ok)return ue(d);let g=d.data?.quota;return g&&t.update(v=>({...v,quota:{...v.quota,...g,resetCards:v.quota.resetCards,resetCardPricePoints:v.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:f}}}})};return r(G,{icon:"clock",title:e("bg.title"),desc:e("bg.desc"),children:[r("div",{class:"fx-quota-list fx-block",children:[r(on,{label:e("common.today"),display:a}),r(on,{label:e("common.thisWeek"),display:i})]}),r(ge,{label:e("bg.autoMain"),desc:e("bg.autoMainDesc"),children:r(He,{checked:c.checked,disabled:c.action.pending,label:e("bg.autoMain"),onChange:c.toggle})}),r(ge,{label:e("bg.convert"),desc:e("bg.convertDesc"),class:"fx-row--wide",children:Cd.map(f=>r(nt,{label:`${f}%`,confirmLabel:e("bg.convertConfirm",{pct:f}),pending:o.pending&&s===f,disabled:o.pending&&s!==f,onConfirm:()=>u(f)},f))}),(o.error||o.success||c.action.error)&&r(ae,{children:[r(B,{a:c.action}),r(B,{a:o})]})]})}function Pd(t){let{t:e,locale:n}=D(),{invite:a,inviteState:i}=t.data,[o,s]=S(null),[l,c]=S(""),[u,f]=S(""),m=O(),d=O(),g=O();X(()=>{let x=!0;return j().authStatus?.().then(w=>{x&&s(w?.cloudUrl?w.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{x=!1}},[]);let h=async()=>{let x=await M("/invite/my-code");return t.update(w=>({...w,invite:x.ok?x.data:w.invite,inviteState:x.ok?"ok":x.status===404?"hidden":w.inviteState})),x},v=()=>void m.run(async()=>{let x=l.trim();if(!x)return{error:{key:"err.inviteEmpty"}};let w=await M("/invite/claim",{method:"POST",body:{code:x}});return w.ok?(c(""),h(),{success:{key:"invite.claimed"}}):ue(w)}),k=()=>void d.run(async()=>{let x=u.trim();if(!x)return{error:{key:"err.redeemEmpty"}};let w=await M("/redemption/redeem",{method:"POST",body:{code:x}});if(!w.ok)return ue(w);f(""),t.onRedeemed();let C=[],R=Z(w.data?.creditsAmount);R&&C.push(e("redeem.gotPoints",{n:re(R,n)})),w.data?.membershipPlanId&&C.push(e("redeem.gotMembership"));for(let U of Array.isArray(w.data?.items)?w.data.items:[]){let J=(n==="zh"?U?.label?.zh:U?.label?.en)||U?.label?.zh||U?.label?.en||U?.kind;J&&C.push(J)}return{success:C.length?{key:"redeem.successWith",vars:{what:C.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),y=a?.code&&o?`${o}/auth?invite=${encodeURIComponent(a.code)}`:"";return r(G,{icon:"gift",title:e("invite.title"),desc:e("invite.desc"),children:[i==="ok"&&a?.code&&r(ge,{label:e("invite.myCode"),desc:e("invite.count",{n:re(Z(a.invitedCount)??0,n)}),class:"fx-row--wide",children:[r("code",{class:"fx-code","data-testid":"invite-code",children:a.code}),r(Ye,{text:a.code,label:e("invite.copyCode")}),r(Ye,{text:y,label:e("invite.copyLink"),disabled:!y})]}),i==="failed"&&r(ae,{children:r($,{tone:"warn",children:[e("invite.loadFailed")," ",r("button",{type:"button",class:"fx-link",disabled:g.pending,onClick:()=>void g.run(async()=>{await h()}),children:e("common.retry")})]})}),i==="ok"&&a?.claim?.eligible&&r(ge,{label:e("invite.claim"),desc:e("invite.claimDesc"),class:"fx-row--wide",children:r("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),v()},children:[r("input",{class:"fx-input",value:l,placeholder:e("invite.claimPlaceholder"),"aria-label":e("invite.claim"),onInput:x=>c(x.currentTarget.value)}),r(P,{submit:!0,pending:m.pending,children:e("invite.claimSubmit")})]})}),(m.error||m.success)&&r(ae,{children:r(B,{a:m})}),t.redeemEnabled&&r(ge,{label:e("redeem.title"),desc:e("redeem.desc"),class:"fx-row--wide",children:r("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),k()},children:[r("input",{class:"fx-input",value:u,placeholder:e("redeem.placeholder"),"aria-label":e("redeem.title"),onInput:x=>f(x.currentTarget.value)}),r(P,{submit:!0,pending:d.pending,children:e("redeem.submit")})]})}),(d.error||d.success)&&r(ae,{children:r(B,{a:d})})]})}function Ed(t){let e=[],n,a=new Map;for(let i of t)if(i.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},e.push(n)),n.items.push(i);else if(i.itemType==="custom_item"&&i.itemDefinition?.stackable){let o=`${i.productId||i.id}:${JSON.stringify(i.itemDefinition)}`,s=a.get(o);s||(s={id:`custom:${o}`,items:[],resetCard:!1},a.set(o,s),e.push(s)),s.items.push(i)}else e.push({id:i.id,items:[i],resetCard:!1});return e}function hs(){let t=ve(()=>M("/shop/inventory"));return t.state==="loading"?r(he,{panels:1,rows:4}):t.state==="signedOut"?r(ye,{}):t.state==="error"?r(be,{error:t.error,onRetry:t.retry}):r(Rd,{items:t.data??[],onRefresh:t.reload,onUsed:e=>{t.update(n=>n.filter(a=>a.id!==e.itemId)),t.reload()}})}function Rd(t){let{t:e,locale:n,goTo:a}=D(),[i,o]=S(null),[s,l]=S(null),c=we(),u=Ed(t.items),f=u.find(h=>h.id===i),m=Math.max(24,Math.ceil(u.length/6)*6)-u.length,d=h=>h.resetCard?e("card.title"):h.items[0].itemDefinition?.name[n]||h.items[0].displayName||e("backpack.item"),g=h=>{c.current&&(l(h),t.onUsed(h))};return r(G,{icon:"backpack",title:e("page.backpack"),desc:e("backpack.desc"),actions:r(P,{onClick:t.onRefresh,children:[r(E,{name:"refresh",size:13}),e("backpack.refresh")]}),children:r("div",{class:"fx-backpack fx-block",children:[r("div",{class:"fx-backpack-summary",children:[r("span",{children:e("backpack.total",{n:re(t.items.length,n)})}),a&&r("button",{class:"fx-link",type:"button",onClick:()=>a("quota"),children:e("backpack.getCards")})]}),s&&r("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[r(E,{name:"gift",size:20}),r("div",{children:[r("strong",{children:s.message[n]}),r("div",{children:s.effects.map(h=>bs(h,e,n)).join(" \xB7 ")})]})]},s.itemId),r("div",{class:"fx-backpack-layout",children:[r("div",{children:[r("div",{class:"fx-backpack-grid",role:"group","aria-label":e("backpack.grid"),children:[u.map(h=>{let v=d(h);return r("button",{type:"button",class:`fx-backpack-slot${h.resetCard?" is-card":""}`,"data-rarity":h.items[0].itemDefinition?.rarity,"aria-pressed":f?.id===h.id,"aria-label":e("backpack.slot",{name:v,n:h.items.length}),title:v,onClick:()=>o(h.id),children:[r("span",{class:"fx-backpack-icon",children:h.items[0].itemDefinition?.icon?r("span",{class:"fx-backpack-emoji",children:h.items[0].itemDefinition.icon}):r(E,{name:h.resetCard?"card":"gift",size:30})}),r("span",{class:"fx-backpack-name",children:v}),(h.resetCard||h.items[0].itemDefinition?.stackable)&&r("span",{class:"fx-backpack-count",children:["\xD7",re(h.items.length,n)]})]},h.id)}),Array.from({length:m},(h,v)=>r("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${v}`))]}),!u.length&&r("p",{class:"fx-backpack-empty",children:e("backpack.empty")})]}),f?r(Md,{slot:f,name:d(f),onUsed:g},`${f.id}:${f.items[0].id}`):r("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[r(E,{name:"backpack",size:30}),r($,{children:e(u.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function bs(t,e,n){return t.type==="points"?e("backpack.effect.points",{n:re(t.amount,n)}):t.type==="reset_card"?e("backpack.effect.cards",{n:re(t.count,n)}):e("backpack.effect.quota")}function Md(t){let{t:e,locale:n,goTo:a}=D(),i=t.slot.items[0],[o,s]=S(null),l=O(),c=O(),[u,f]=S(!1),m=i.itemDefinition,d=we(),g=i.source==="points"?e("backpack.source.points"):i.source==="admin"?e("backpack.source.admin"):i.source==="reward"?e("backpack.source.reward"):e("backpack.source.other"),h=()=>void l.run(async()=>{let k=await M(`/shop/inventory/${encodeURIComponent(i.id)}`);if(d.current){if(!k.ok)return ue(k);s(k.data)}}),v=()=>void c.run(async()=>{let k=await M(`/shop/inventory/${encodeURIComponent(i.id)}/use`,{method:"POST"});if(!k.ok)return ue(k);t.onUsed(k.data)});return r("section",{class:"fx-backpack-detail","aria-label":e("backpack.details"),children:[r("span",{class:`fx-backpack-detail-icon${t.slot.resetCard?" is-card":""}`,children:m?.icon?r("span",{class:"fx-backpack-emoji",children:m.icon}):r(E,{name:t.slot.resetCard?"card":"gift",size:32})}),r("h3",{children:t.name}),r("span",{class:"fx-tag",children:[e(t.slot.resetCard||m?.use?"backpack.consumable":m?"backpack.collectible":"backpack.voucher"),m&&` \xB7 ${e(`backpack.rarity.${m.rarity}`)}`]}),r("dl",{class:"fx-backpack-facts",children:[r("div",{children:[r("dt",{children:e("backpack.quantity")}),r("dd",{children:re(t.slot.items.length,n)})]}),r("div",{children:[r("dt",{children:e("backpack.acquired")}),r("dd",{children:Je(i.acquiredAt,n)})]}),!t.slot.resetCard&&r("div",{children:[r("dt",{children:e("backpack.source")}),r("dd",{children:g})]})]}),m?r(N,{children:[m.description&&r($,{children:m.description[n]}),m.use&&r(N,{children:[r("div",{class:"fx-backpack-effects",children:m.use.effects.map((k,y)=>r("div",{children:bs(k,e,n)},y))}),u?r(N,{children:[r($,{children:e("backpack.consumeConfirm")}),r("div",{class:"fx-backpack-use-actions",children:[r(P,{variant:"primary",pending:c.pending,onClick:v,children:e("backpack.confirmUse")}),r(P,{disabled:c.pending,onClick:()=>f(!1),children:e("common.cancel")})]})]}):r(P,{variant:"primary",onClick:()=>f(!0),children:m.use.label?.[n]||e("backpack.use")}),r(B,{a:c,captchaSection:"backpack"})]})]}):t.slot.resetCard?r(N,{children:[r($,{children:e("card.desc")}),a&&r(P,{variant:"primary",onClick:()=>a("quota"),children:e("backpack.manageCards")})]}):o?r("div",{class:"fx-backpack-reveal",children:[o.codeName&&r("div",{class:"fx-muted",children:o.codeName}),o.key?r(N,{children:[r("code",{children:o.key}),r(Ye,{text:o.key,label:e("backpack.copyKey")})]}):r($,{children:e("backpack.noKey")})]}):r(P,{pending:l.pending,onClick:h,children:[r(E,{name:"key",size:14}),e("backpack.reveal")]}),r(B,{a:l,captchaSection:"backpack"})]})}var Id=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,Ld=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,xs=(t,e)=>t==="phone"?Id.test(e):Ld.test(e),sn=(t,e)=>t==="phone"?jn(e):Xn(e);function ys(){let t=ve(()=>M("/auth/me"));if(t.state==="loading")return r(he,{panels:3,rows:2});if(t.state==="signedOut")return r(ye,{});if(t.state==="error")return r(be,{error:t.error,onRetry:t.retry});let e=t.data;return r(N,{children:[r(Dd,{me:e,onBound:(n,a)=>t.update(i=>({...i,[n]:a}))}),r(Od,{me:e}),r($d,{}),r(Ud,{me:e})]})}function xa(){let t=Io(),e=O();return{cd:t,a:e,send:(i,o,s)=>e.run(async()=>{let l=await M("/auth/send-code",{method:"POST",body:{target:i,type:o,purpose:s}});return l.ok?(t.start(60),{success:{key:"sec.codeSent"}}):ue(l)}),reset:()=>{t.stop(),e.clear()}}}function Dd(t){let{t:e}=D(),[n,a]=S(null),[i,o]=S(null);return r(G,{icon:"key",title:e("sec.methods.title"),desc:e("sec.methods.desc"),children:["phone","email"].map(s=>{let l=t.me[s];return r(N,{children:[r(ge,{label:e(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?sn(s,l):e("account.contact.unbound"),children:r(P,{onClick:()=>{o(null),a(n===s?null:s)},children:e(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&r(zd,{kind:s,current:l??null,onDone:c=>{t.onBound(s,c),a(null),o(s)}}),i===s&&n!==s&&r(ae,{children:r("div",{class:"fx-msg is-ok",role:"status",children:e(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function zd(t){let{t:e}=D(),{kind:n}=t,[a,i]=S(""),[o,s]=S(""),l=xa(),c=O(),u=a.trim(),f=n==="phone"?"err.phoneInvalid":"err.emailInvalid",m=()=>{if(!xs(n,u)){l.a.run(async()=>({error:{key:f}}));return}l.send(u,n,"bind")},d=()=>void c.run(async()=>{if(!xs(n,u))return{error:{key:f}};if(!o.trim())return{error:{key:"err.codeRequired"}};let g=n==="phone"?{phone:u,verification_code:o.trim()}:{email:u,verification_code:o.trim()},h=await M(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:g});if(!h.ok)return ue(h);t.onDone(u)});return r(ae,{class:"fx-form",children:[r("label",{class:"fx-field",children:[r("span",{children:t.current?e(n==="phone"?"sec.newPhone":"sec.newEmail"):e(n==="phone"?"sec.phone":"sec.email")}),r("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:a,autoComplete:"off",placeholder:e(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:g=>i(g.currentTarget.value)})]}),r(va,{code:o,setCode:s,sender:l,onSend:m}),r("div",{class:"fx-inline",children:r(P,{variant:"primary",pending:c.pending,onClick:d,children:e("sec.bindSubmit")})}),r(B,{a:c})]})}function va(t){let{t:e}=D(),{cd:n,a}=t.sender;return r("div",{class:"fx-field",children:[r("span",{children:t.label??e("sec.code")}),r("div",{class:"fx-inline",children:[r("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:t.code,placeholder:e("sec.codePlaceholder"),"aria-label":t.label??e("sec.code"),onInput:i=>t.setCode(i.currentTarget.value)}),r(P,{pending:a.pending,disabled:n.left>0||t.disabled,onClick:t.onSend,children:n.left>0?e("sec.resendIn",{s:n.left}):e("sec.sendCode")})]}),r(B,{a})]})}function Nd(t){let{t:e}=D(),n=To(t.value),a=t.value.length>0,i=[[n.length,e("pw.req.length",{min:8,max:64})],[n.lower,e("pw.req.lower")],[n.upper,e("pw.req.upper")],[n.special,e("pw.req.special")],[n.space,e("pw.req.space")]];return r("ul",{class:"fx-rules","aria-label":e("pw.rulesLabel"),children:i.map(([o,s])=>r("li",{class:o?"is-ok":a?"is-bad":"",children:[o?r(E,{name:"check",size:11}):a?r(E,{name:"x",size:11}):r("span",{class:"fx-rule-dot","aria-hidden":"true"}),r("span",{children:s})]},s))})}function ks(t,e){let n=Co(t);return n.ok?t!==e?{error:{key:"pw.mismatch"}}:null:{error:{key:Qr[n.rule]}}}function Od(t){let{t:e}=D(),n=["phone","email"].filter(l=>!!t.me[l]),[a,i]=S("current"),[o,s]=S(!1);return r(G,{icon:"shield",title:e("pw.title"),desc:e("pw.desc",{min:8,max:64}),actions:r(P,{onClick:()=>s(!o),children:e(o?"common.cancel":"pw.change")}),children:o&&r(ae,{class:"fx-form",children:[r(qe,{label:e("pw.modeLabel"),value:a,onChange:i,options:[{value:"current",label:e("pw.mode.current")},{value:"code",label:e("pw.mode.code")}]}),a==="current"?r(Bd,{onDone:()=>s(!1)}):n.length?r(Fd,{me:t.me,targets:n,onDone:()=>s(!1)}):r($,{children:e("pw.codeNeedsContact")})]})})}function ws(t){let{t:e}=D();return r(N,{children:[r("label",{class:"fx-field",children:[r("span",{children:e("pw.new")}),r("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:t.pw,maxLength:72,onInput:n=>t.setPw(n.currentTarget.value)})]}),r(Nd,{value:t.pw}),r("label",{class:"fx-field",children:[r("span",{children:e("pw.confirm")}),r("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:t.confirm,onInput:n=>t.setConfirm(n.currentTarget.value)})]})]})}function Bd(t){let{t:e}=D(),[n,a]=S(""),[i,o]=S(""),[s,l]=S(""),c=O(),[u,f]=S(!1),m=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let d=ks(i,s);if(d)return d;let g=await M("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:i}});return g.ok?(a(""),o(""),l(""),f(!0),{success:{key:"pw.changed"}}):g.status===404?{error:{key:"pw.noPasswordYet"}}:ue(g)});return r(N,{children:[r("label",{class:"fx-field",children:[r("span",{children:e("pw.current")}),r("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:d=>a(d.currentTarget.value)})]}),r(ws,{pw:i,setPw:o,confirm:s,setConfirm:l}),r("div",{class:"fx-inline",children:[r(P,{variant:"primary",pending:c.pending,onClick:m,children:e("pw.submit")}),u&&r(P,{onClick:t.onDone,children:e("common.done")})]}),r(B,{a:c})]})}function Fd(t){let{t:e}=D(),[n,a]=S(t.targets[0]),[i,o]=S(""),[s,l]=S(""),[c,u]=S(""),f=xa(),m=O(),[d,g]=S(!1),h=t.me[n]||"",v=()=>void m.run(async()=>{if(!i.trim())return{error:{key:"err.codeRequired"}};let k=ks(s,c);if(k)return k;let y=n==="phone"?{phone:h,code:i.trim(),newPassword:s}:{email:h,code:i.trim(),newPassword:s},x=await M("/auth/reset-password",{method:"POST",body:y});return x.ok?(o(""),l(""),u(""),g(!0),{success:{key:"pw.changed"}}):ue(x)});return r(N,{children:[t.targets.length>1?r(qe,{label:e("pw.via"),value:n,onChange:k=>{a(k),o(""),f.reset()},options:t.targets.map(k=>({value:k,label:sn(k,t.me[k])}))}):r($,{children:e("pw.codeTo",{target:sn(n,h)})}),r(va,{code:i,setCode:o,sender:f,onSend:()=>void f.send(h,n,"reset_password")}),r(ws,{pw:s,setPw:l,confirm:c,setConfirm:u}),r("div",{class:"fx-inline",children:[r(P,{variant:"primary",pending:m.pending,onClick:v,children:e("pw.submitReset")}),d&&r(P,{onClick:t.onDone,children:e("common.done")})]}),r(B,{a:m})]})}function $d(){let{t}=D(),e=O(),n=()=>void e.run(async()=>{let a=await M("/auth/logout-all",{method:"POST"});if(!a.ok)return ue(a);try{await j().forsionLogout?.()}catch(i){return{error:{raw:$e(i)}}}return{success:{key:"sec.logoutAllDone"}}});return r(G,{icon:"laptop",title:t("sec.devices.title"),desc:t("sec.devices.desc"),children:[r(ge,{label:t("sec.logoutAll"),desc:t("sec.logoutAllDesc"),children:r(nt,{label:t("sec.logoutAll"),confirmLabel:t("sec.logoutAllConfirm"),pending:e.pending,onConfirm:n})}),(e.error||e.success)&&r(ae,{children:r(B,{a:e})})]})}function Ud(t){let{t:e}=D(),n=["phone","email"].filter(y=>!!t.me[y]),[a,i]=S(!1),[o,s]=S(n.length?"code":"password"),[l,c]=S(n[0]??null),[u,f]=S(""),[m,d]=S(""),g=xa(),h=O(),v=l&&t.me[l]||"",k=()=>void h.run(async()=>{if(o==="code"&&!u.trim())return{error:{key:"err.codeRequired"}};if(o==="password"&&!m)return{error:{key:"pw.currentRequired"}};let y=await M("/auth/delete-account",{method:"POST",body:o==="code"?{verification_code:u.trim()}:{password:m}});if(!y.ok)return ue(y);try{await j().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return r(G,{icon:"alert",danger:!0,title:e("del.title"),desc:e("del.desc"),actions:r(P,{variant:"danger",onClick:()=>{i(!a),h.clear()},children:e(a?"common.cancel":"del.start")}),children:a&&r(ae,{class:"fx-form",children:[r($,{tone:"error",children:e("del.warn")}),n.length>0&&r(qe,{label:e("del.methodLabel"),value:o,onChange:s,options:[{value:"code",label:e("del.byCode")},{value:"password",label:e("del.byPassword")}]}),o==="code"&&l?r(N,{children:[n.length>1&&r(qe,{label:e("pw.via"),value:l,onChange:y=>{c(y),f(""),g.reset()},options:n.map(y=>({value:y,label:sn(y,t.me[y])}))}),r(va,{code:u,setCode:f,sender:g,label:e("del.codeLabel",{target:sn(l,v)}),onSend:()=>void g.send(v,l,"delete_account")})]}):r("label",{class:"fx-field",children:[r("span",{children:e("del.passwordLabel")}),r("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:m,onInput:y=>d(y.currentTarget.value)})]}),r("div",{class:"fx-inline",children:r(nt,{variant:"danger",label:e("del.submit"),confirmLabel:e("del.confirm"),pending:h.pending,onConfirm:k})}),r(B,{a:h})]})})}var Ss=20;function As(){let t=ve(async()=>{let[e,n]=await Promise.all([M("/token-quota/my"),M(`/token-quota/my/logs?limit=${Ss}&offset=0`)]);if(!e.ok)return e;let a=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:e.status,data:{dailyLimit:Z(e.data?.dailyLimit),logs:a,total:n.ok?Z(n.data?.total)??a?.length??0:0,logsFail:n.ok?null:n}}});return t.state==="loading"?r(he,{panels:3,rows:2}):t.state==="signedOut"?r(ye,{}):t.state==="error"?r(be,{error:t.error,onRetry:t.retry}):r(N,{children:[r(Hd,{dailyLimit:t.data.dailyLimit}),r(Wd,{base:t.data,onRetry:t.reload})]})}function Hd(t){let{t:e,locale:n}=D(),[a,i]=S(30),[o,s]=S({state:"loading"}),[l,c]=S(!1),[u,f]=S(0),m=W(0);X(()=>{let w=++m.current;return c(!0),M(`/usage/stats?days=${a}`).then(C=>{w===m.current&&(c(!1),s(C.ok?{state:"ready",data:C.data??{}}:{state:"error",fail:C}))}),()=>{m.current++}},[a,u]);let d=t.dailyLimit!==null&&t.dailyLimit<0?"usage.unlimitedNote":Qn(1,t.dailyLimit)===null?"usage.noLimitNote":null,g=w=>Qn(w,t.dailyLimit)??"\u2014",h=r(qe,{label:e("usage.range"),value:a,onChange:i,options:[{value:7,label:e("usage.days",{n:7})},{value:30,label:e("usage.days",{n:30})},{value:90,label:e("usage.days",{n:90})}]}),v=o.state==="ready"?o.data:null,k=(v?.byModel??[]).filter(Boolean),y=(v?.byProject??[]).filter(Boolean),x=Z(v?.successRate);return r(N,{children:[r(G,{icon:"chart",title:e("usage.overview.title"),desc:e("usage.overview.desc"),actions:h,children:[o.state==="error"?r("div",{class:"fx-sub",children:r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:Ne(Ce(o.fail),e)}),r("button",{type:"button",class:"fx-link",onClick:()=>f(w=>w+1),children:e("common.retry")})]})}):r("div",{class:`fx-stats fx-block${l&&v?" is-refreshing":""}`,"aria-busy":l||void 0,children:[r(ya,{label:e("usage.requests"),value:v?re(Z(v.totalRequests)??0,n):null,testId:"usage-requests"}),r(ya,{label:e("usage.successRate"),value:v?x===null?"\u2014":`${x.toFixed(1)}%`:null}),r(ya,{label:e("usage.consumption"),value:v?g(v.totalPointsCost):null,sub:e("usage.ofToday"),testId:"usage-consumption"})]}),d&&r("div",{class:"fx-sub fx-sub--tight",children:r($,{children:e(d)})})]}),o.state!=="error"&&r(N,{children:[r(G,{icon:"gauge",title:e("usage.byModel.title"),desc:e("usage.byModel.desc"),children:r(_s,{loading:!v,empty:e("usage.empty"),head:[e("usage.col.model"),e("usage.col.requests"),e("usage.col.consumption")],rows:k.map(w=>[w.modelName||w.modelId||"\u2014",re(Z(w.count)??0,n),g(w.pointsCost)])})}),r(G,{icon:"laptop",title:e("usage.byApp.title"),desc:e("usage.byApp.desc"),children:r(_s,{loading:!v,empty:e("usage.empty"),head:[e("usage.col.app"),e("usage.col.requests"),e("usage.col.consumption")],rows:y.map(w=>[Cs(w.projectSource,e("usage.appUnknown")),re(Z(w.count)??0,n),g(w.pointsCost)])})})]})]})}var qd={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},Cs=(t,e)=>!t||t==="unknown"?e:qd[t]??t;function ya(t){return r("div",{class:"fx-stat",children:[r("span",{class:"fx-stat-label",children:t.label}),t.value===null?r("span",{class:"fx-skel fx-skel--stat"}):r("strong",{class:"fx-stat-value","data-testid":t.testId,children:t.value}),t.sub&&r("span",{class:"fx-stat-sub",children:t.sub})]})}function _s(t){return t.loading?r("div",{class:"fx-sub",children:[r("span",{class:"fx-skel fx-skel--row"}),r("span",{class:"fx-skel fx-skel--row"})]}):t.rows.length?r("div",{class:"fx-table-wrap fx-block",children:r("table",{class:"fx-table",children:[r("thead",{children:r("tr",{children:t.head.map((e,n)=>r("th",{class:n?"is-num":"",children:e},n))})}),r("tbody",{children:t.rows.map((e,n)=>r("tr",{children:e.map((a,i)=>r("td",{class:i?"is-num":"",children:a},i))},n))})]})}):r(Oe,{children:t.empty})}function Wd(t){let{t:e,locale:n}=D(),a=we(),[i,o]=S(t.base.logs??[]),[s,l]=S(t.base.total),c=O();X(()=>{o(t.base.logs??[]),l(t.base.total)},[t.base]);let u=()=>void c.run(async()=>{let m=await M(`/token-quota/my/logs?limit=${Ss}&offset=${i.length}`);if(!m.ok)return{error:Ce(m)};let d=Array.isArray(m.data?.logs)?m.data.logs:[];a.current&&(o(g=>[...g,...d]),l(g=>d.length?Z(m.data?.total)??g:i.length))}),f=t.base.dailyLimit;return r(G,{icon:"clock",title:e("usage.recent.title"),desc:e("usage.recent.desc"),children:[t.base.logsFail?r("div",{class:"fx-sub",children:r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:Ne(Ce(t.base.logsFail),e)}),r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")})]})}):i.length===0?r(Oe,{children:e("usage.recentEmpty")}):r("div",{class:"fx-list fx-block",role:"list",children:i.map((m,d)=>r("div",{class:"fx-list-row",role:"listitem",children:[r("span",{class:"fx-list-main",children:[r("strong",{children:[m.modelName||m.modelId||"\u2014",m.success===!1&&r("span",{class:"fx-tag fx-tag--danger",children:e("usage.failed")})]}),r("small",{children:[Je(m.createdAt,n),Cs(m.projectSource,e("usage.appUnknown"))].join(" \xB7 ")})]}),r("span",{class:"fx-value",children:Qn(m.pointsCost,f)??"\u2014"})]},m.id??d))}),i.length>0&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:e("usage.shown",{shown:re(i.length,n),total:re(Math.max(s,i.length),n)})}),i.length<s&&r(P,{pending:c.pending,onClick:u,children:e("common.loadMore")})]}),c.error&&r("div",{class:"fx-sub fx-sub--tight",children:r(B,{a:c})})]})}var jd=["plugin","amadeus-plugin","skill","agent","space","theme"],Xd=["github","npm","zip"],Vd=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale"]),Ps=t=>`sub.type.${t.replace("-","_")}`,Ts=t=>t==="approved"?"sub.approved":t==="rejected"?"sub.rejected":"sub.pending";function Kd({target:t,onDone:e,onCancel:n}){let a=Ue(),i=Yr(),o=we(),s=O(),[l,c]=S("github"),[u,f]=S({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",version:"",readme:""}),m=W(null),d=W(null);X(()=>{d.current?.scrollIntoView({block:"start"}),d.current?.querySelector("input")?.focus({preventScroll:!0})},[]);let g=!!t||l==="zip",h=(y,x)=>{f(w=>({...w,[y]:x})),s.clear()},v=()=>void s.run(async()=>{if(!t&&!u.name.trim())return{error:{key:"sub.errName"}};if(!g&&!(l==="github"?u.githubRepoUrl:u.npmPackage).trim())return{error:{key:"sub.errSource"}};let y=m.current?.files?.[0];if(g&&!y)return{error:{key:"sub.errZip"}};if(y&&y.size>50*1024*1024)return{error:{key:"sub.errLarge"}};if(g&&!u.version.trim())return{error:{key:"sub.errVersion"}};let x=j().cloudInvoke;if(!x)return{error:{key:"err.unavailable"}};let w=t?{summary:u.summary.trim(),version:u.version.trim(),readme:u.readme}:{type:u.type,source:l,name:u.name.trim(),summary:u.summary.trim(),...l==="github"?{githubRepoUrl:u.githubRepoUrl.trim()}:l==="npm"?{npmPackage:u.npmPackage.trim()}:{version:u.version.trim(),readme:u.readme}},C=g&&y?new Uint8Array(await y.arrayBuffer()):null;if(!o.current)return;let R=Fn(await x("cloud:marketSubmit",{...t?{id:t.id}:{},fields:w,...C&&y?{zip:{name:y.name,data:C}}:{}}));if(o.current){if(!R.ok)return R.status===401&&j().authStatus?.().catch(()=>{}),Vd.has(R.code||"")?{error:{key:`sub.err.${R.code}`}}:ue(R);e()}}),k=(y,x,w="")=>r("label",{class:"fx-sub-field",for:`${i}-${y}`,children:[r("span",{children:x}),r("input",{id:`${i}-${y}`,value:u[y],placeholder:w,maxLength:y==="summary"?2e3:500,onInput:C=>h(y,C.currentTarget.value)})]});return r(G,{title:t?a("sub.updateTitle",{name:t.name}):a("sub.new"),children:r("form",{ref:d,class:"fx-sub-form",onSubmit:y=>{y.preventDefault(),v()},children:[r("fieldset",{disabled:s.pending,children:[!t&&r(N,{children:[r("div",{class:"fx-sub-columns",children:[r("label",{class:"fx-sub-field",for:`${i}-type`,children:[r("span",{id:`${i}-type-label`,children:a("sub.type")}),r("select",{"aria-labelledby":`${i}-type-label`,id:`${i}-type`,value:u.type,onChange:y=>h("type",y.currentTarget.value),children:jd.map(y=>r("option",{value:y,children:a(Ps(y))},y))})]}),r("label",{class:"fx-sub-field",for:`${i}-source`,children:[r("span",{id:`${i}-source-label`,children:a("sub.source")}),r("select",{"aria-labelledby":`${i}-source-label`,id:`${i}-source`,value:l,onChange:y=>{c(y.currentTarget.value),s.clear()},children:Xd.map(y=>r("option",{value:y,children:y==="github"?"GitHub":y==="npm"?"npm":"ZIP"},y))})]})]}),k("name",a("sub.name"))]}),k("summary",a("sub.summary"),t?a("sub.keep"):""),g?r(N,{children:[r("label",{class:"fx-sub-field",for:`${i}-zip`,children:[r("span",{id:`${i}-zip-label`,children:a("sub.zip")}),r("input",{"aria-labelledby":`${i}-zip-label`,id:`${i}-zip`,type:"file",accept:".zip,application/zip",ref:m}),r("small",{children:a("sub.zipHint")})]}),k("version",a("sub.version"),t?.version?`> ${t.version}`:"1.0.0"),t&&r($,{children:a("sub.versionHint")}),r("label",{class:"fx-sub-field",for:`${i}-readme`,children:[r("span",{children:a("sub.readme")}),r("textarea",{id:`${i}-readme`,value:u.readme,rows:5,maxLength:2e5,placeholder:t?a("sub.keep"):"",onInput:y=>h("readme",y.currentTarget.value)})]})]}):r(N,{children:[l==="github"?k("githubRepoUrl",a("sub.repo"),"https://github.com/owner/repo"):k("npmPackage",a("sub.npm"),"@scope/plugin-name"),r($,{children:a(l==="github"?"sub.repoHint":"sub.npmHint")})]}),r($,{children:a("sub.reviewHint")})]}),r("div",{class:"fx-sub-actions",children:[r(P,{variant:"primary",pending:s.pending,submit:!0,children:a("sub.submit")}),r(P,{disabled:s.pending,onClick:n,children:a("common.cancel")})]}),r(B,{a:s,captchaSection:"submission"})]})})}function Jd({items:t,reload:e}){let n=Ue(),a=Yr(),[i,o]=S("all"),[s,l]=S(null),[c,u]=S(null),f=d=>{u(null),l(d)},m=t.filter(d=>i==="all"||(i==="pending"?d.status==="pending"||!!d.pendingUpdate:d.status===i));return r(N,{children:[s&&r(Kd,{target:s==="new"?null:s,onCancel:()=>l(null),onDone:()=>{u(s==="new"?"sub.submitted":"sub.updated"),l(null),e()}},s==="new"?"new":s.id),r(G,{title:n("sub.mine"),desc:n("sub.desc"),actions:r(N,{children:[r(P,{variant:"primary",disabled:!!s,onClick:()=>f("new"),children:n("sub.new")}),r(P,{disabled:!!s,onClick:e,children:n("sub.refresh")})]}),children:[c&&r("p",{class:"fx-msg is-ok fx-sub-result",role:"status",children:n(c)}),!!t.length&&r("div",{class:"fx-sub-filter",children:[r("label",{for:a,children:n("sub.filter")}),r("select",{id:a,value:i,onChange:d=>o(d.currentTarget.value),children:[r("option",{value:"all",children:n("sub.all")}),["pending","approved","rejected"].map(d=>r("option",{value:d,children:n(Ts(d))},d))]})]}),m.length?m.map(d=>r("article",{class:"fx-sub-item","data-submission-id":d.id,children:[r("div",{class:"fx-sub-item-head",children:[r("strong",{children:d.name}),r("span",{class:`fx-tag ${d.status==="approved"?"fx-status--resolved":d.status==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:n(Ts(d.status))})]}),r("div",{class:"fx-sub-meta",children:[r("span",{children:n(Ps(d.type))}),r("span",{children:d.source==="github"?"GitHub":d.source==="npm"?"npm":"ZIP"}),d.version&&r("span",{children:["v",d.version]}),r("span",{children:n("sub.downloads",{n:d.downloads||0})})]}),d.summary&&r("p",{class:"fx-sub-summary",children:d.summary}),d.status==="rejected"&&d.reviewNote&&r($,{tone:"error",children:d.reviewNote}),d.rejectedUpdate&&r($,{tone:"error",children:[n("sub.rejectedVersion",{version:d.rejectedUpdate.version}),d.rejectedUpdate.note?`: ${d.rejectedUpdate.note}`:""]}),d.pendingUpdate?r($,{children:n("sub.pendingVersion",{version:d.pendingUpdate.version})}):d.source==="zip"?r(P,{disabled:!!s,onClick:()=>f(d),children:n("sub.update")}):r($,{children:n("sub.remoteUpdate")})]},d.id)):r(Oe,{children:t.length?n("sub.noResults"):r(N,{children:[r("strong",{children:n("sub.empty")}),r("p",{children:n("sub.emptyHint")})]})})]})]})}function Es(){let t=ve(()=>M("/market/mine"));switch(t.state){case"loading":return r(he,{});case"signedOut":return r(ye,{});case"error":return r(be,{error:t.error,onRetry:t.retry});case"ready":return r(Jd,{items:t.data?.items||[],reload:t.reload})}}var ln=20,er=5,Yd=5*1024*1024,tr=1e4,Gd={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function Ms(t){let{t:e}=D(),n=t.status||"open",a=Gd[n];return r("span",{class:`fx-tag fx-status fx-status--${n}`,children:a?e(a):n})}function Is(){let[t,e]=S(null),n=ve(async()=>{let a=await M(`/feedback?limit=${ln}&offset=0`);return a.ok?{ok:!0,status:a.status,data:Array.isArray(a.data?.tickets)?a.data.tickets:[]}:a});return n.state==="loading"?r(he,{panels:1,rows:3}):n.state==="signedOut"?r(ye,{}):n.state==="error"?r(be,{error:n.error,onRetry:n.retry}):t?r(np,{id:t,onBack:()=>{e(null),n.reload()}}):r(Zd,{first:n.data,onOpen:e,onChanged:n.reload})}function Zd(t){let{t:e,locale:n}=D(),a=we(),[i,o]=S(t.first),[s,l]=S(t.first.length===ln),[c,u]=S(!1),[f,m]=S(!1),d=O();X(()=>{o(t.first),l(t.first.length===ln)},[t.first]);let g=()=>void d.run(async()=>{let h=await M(`/feedback?limit=${ln}&offset=${i.length}`);if(!h.ok)return{error:Ce(h)};let v=Array.isArray(h.data?.tickets)?h.data.tickets:[];a.current&&(o(k=>{let y=new Set(k.map(x=>x.id));return[...k,...v.filter(x=>!y.has(x.id))]}),l(v.length===ln))});return r(G,{icon:"message",title:e("fb.list.title"),desc:e("fb.list.desc"),actions:c?void 0:r(P,{variant:"primary",onClick:()=>{m(!1),u(!0)},children:[r(E,{name:"plus",size:12})," ",e("fb.new")]}),children:[c&&r(tp,{onCancel:()=>u(!1),onSubmitted:()=>{u(!1),m(!0),t.onChanged()}}),f&&!c&&r(ae,{children:r("div",{class:"fx-msg is-ok",role:"status",children:e("fb.submitted")})}),i.length===0?r(Oe,{children:e("fb.empty")}):r("div",{class:"fx-list fx-block",role:"list",children:i.map(h=>r("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>t.onOpen(h.id),children:[r("span",{class:`fx-dot${h.user_unread?" is-on":""}`,"aria-label":h.user_unread?e("fb.unread"):void 0}),r("span",{class:"fx-list-main",children:[r("strong",{children:h.title||(h.description||"").slice(0,60)||e("fb.untitled")}),r("small",{children:Je(h.updated_at||h.created_at,n)})]}),r(Ms,{status:h.status}),r(E,{name:"chevron",size:12})]},h.id))}),i.length>0&&(s||d.error)&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:e("fb.shown",{n:re(i.length,n)})}),s&&r(P,{pending:d.pending,onClick:g,children:e("common.loadMore")})]}),d.error&&r(ae,{children:r(B,{a:d})})]})}function Qd(t){return new Promise((e,n)=>{let a=new FileReader;a.onload=()=>e(String(a.result||"")),a.onerror=()=>n(a.error||new Error("read failed")),a.readAsDataURL(t)})}var ep=0;function tp(t){let{t:e}=D(),n=we(),[a,i]=S(""),[o,s]=S([]),[l,c]=S(null),[u,f]=S(!1),m=W(null),d=O(),[g,h]=S(0),v=W(0);v.current=o.length;let k=async x=>{c(null);for(let w of Array.from(x||[])){if(!w.type||!w.type.startsWith("image/")){c({key:"err.imageType"});continue}if(w.size>Yd){c({key:"err.imageTooLarge"});continue}if(v.current>=er){c({key:"err.tooManyImages"});break}v.current++,h(C=>C+1);try{let C=await Qd(w);if(!n.current)return;let R={id:`img-${++ep}`,filename:w.name||"image",mime_type:w.type,size:w.size,data_base64:C.replace(/^data:[^;]+;base64,/,""),url:C};s(U=>U.length>=er?U:[...U,R])}catch{v.current--,c({key:"err.imageRead"})}finally{n.current&&h(C=>C-1)}}},y=()=>void d.run(async()=>{let x=a.trim();if(!x)return{error:{key:"err.feedbackEmpty"}};if(x.length>tr)return{error:{key:"err.feedbackTooLong"}};let w=o.map(({filename:R,mime_type:U,size:J,data_base64:H})=>({filename:R,mime_type:U,size:J,data_base64:H})),C=await M("/feedback",{method:"POST",body:{description:x,attachments:w},timeoutMs:12e4});if(!C.ok)return ue(C);t.onSubmitted()});return r("div",{class:`fx-sub fx-form fx-composer${u?" is-drag":""}`,onPaste:x=>{let w=Array.from(x.clipboardData?.items||[]).filter(C=>C.kind==="file").map(C=>C.getAsFile()).filter(Boolean);w.length&&(x.preventDefault(),k(w))},onDragOver:x=>{x.preventDefault(),f(!0)},onDragLeave:()=>f(!1),onDrop:x=>{x.preventDefault(),f(!1),k(x.dataTransfer?.files)},children:[r("label",{class:"fx-field",children:[r("span",{children:e("fb.descLabel")}),r("textarea",{class:"fx-input fx-textarea",rows:5,value:a,maxLength:tr,autoFocus:!0,placeholder:e("fb.descPlaceholder"),onInput:x=>i(x.currentTarget.value)})]}),r("p",{class:"fx-note",children:e("fb.imagesHint",{n:er})}),o.length>0&&r("div",{class:"fx-thumbs",children:o.map(x=>r("span",{class:"fx-thumb",children:[r("img",{src:x.url,alt:x.filename}),r("button",{type:"button","aria-label":e("fb.removeImage"),title:e("fb.removeImage"),onClick:()=>{s(w=>w.filter(C=>C.id!==x.id)),c(null)},children:r(E,{name:"x",size:11})})]},x.id))}),l&&r("div",{class:"fx-msg is-error",role:"alert",children:Ne(l,e)}),r("input",{ref:m,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:x=>{let w=x.currentTarget;k(w.files),w.value=""}}),r("div",{class:"fx-inline",children:[r(P,{disabled:o.length>=er||d.pending,onClick:()=>m.current?.click(),children:[r(E,{name:"image",size:12})," ",e("fb.addImages")]}),r("span",{class:"fx-grow"}),r(P,{disabled:d.pending,onClick:t.onCancel,children:e("common.cancel")}),r(P,{variant:"primary",pending:d.pending,disabled:g>0,onClick:y,children:e("fb.submit")})]}),r(B,{a:d})]})}function np(t){let{t:e,locale:n}=D(),[a,i]=S({state:"loading"}),[o,s]=S(0),[l,c]=S(""),[u,f]=S(null),m=O(),d=W(0);X(()=>{let C=++d.current;return M(`/feedback/${encodeURIComponent(t.id)}`).then(R=>{if(C===d.current){if(!R.ok){i({state:"error",fail:R});return}i({state:"ready",data:{ticket:R.data.ticket,replies:R.data.replies??[],attachments:R.data.attachments??[]}}),M(`/feedback/${encodeURIComponent(t.id)}/read`,{method:"POST"})}}),()=>{d.current++}},[t.id,o]),X(()=>{if(!u)return;let C=R=>{R.key==="Escape"&&f(null)};return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[u]);let g=r("div",{class:"fx-back",children:r(P,{onClick:t.onBack,children:[r(E,{name:"back",size:12})," ",e("fb.back")]})});if(a.state==="loading")return r(N,{children:[g,r(he,{panels:1,rows:3})]});if(a.state==="error")return r(N,{children:[g,r(be,{error:Ce(a.fail),onRetry:()=>{i({state:"loading"}),s(C=>C+1)}})]});let{ticket:h,replies:v,attachments:k}=a.data,y=h.status==="closed",x=C=>k.filter(R=>(R.reply_id??null)===C),w=()=>void m.run(async()=>{let C=l.trim();if(!C)return{error:{key:"err.replyEmpty"}};if(C.length>tr)return{error:{key:"err.replyTooLong"}};let R=await M(`/feedback/${encodeURIComponent(h.id)}/replies`,{method:"POST",body:{content:C},timeoutMs:6e4});return R.ok?(c(""),s(U=>U+1),{success:{key:"fb.replySent"}}):ue(R)});return r(N,{children:[g,r(G,{icon:"message",title:h.title||e("fb.untitled"),actions:r(Ms,{status:h.status}),desc:`#${String(h.id).slice(0,8)} \xB7 ${Je(h.created_at,n)}`,children:[r("div",{class:"fx-thread fx-block",children:[r(Rs,{who:"user",when:h.created_at,text:h.description||"",files:x(null),onZoom:f}),v.map((C,R)=>r(Rs,{who:C.author_role==="user"?"user":"admin",when:C.created_at,text:C.content||"",files:C.id?x(C.id):[],onZoom:f},C.id??R))]}),y?r(ae,{children:r($,{children:e("fb.closedNote")})}):r(ae,{class:"fx-form",children:[r("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:tr,placeholder:e("fb.replyPlaceholder"),"aria-label":e("fb.replyPlaceholder"),onInput:C=>{c(C.currentTarget.value),m.success&&m.clear()}}),r("div",{class:"fx-inline",children:[r("span",{class:"fx-grow"}),r(P,{variant:"primary",pending:m.pending,onClick:w,children:e("fb.replySend")})]}),r(B,{a:m})]})]}),u&&r("div",{class:"fx-lightbox",role:"dialog","aria-label":e("fb.imagePreview"),onClick:()=>f(null),children:r("img",{src:u,alt:""})})]})}function Rs(t){let{t:e,locale:n}=D();return r("div",{class:`fx-bubble fx-bubble--${t.who}`,children:[r("div",{class:"fx-bubble-meta",children:[t.who==="user"?e("fb.you"):e("fb.support")," \xB7 ",Je(t.when,n)]}),r("div",{class:"fx-bubble-text",children:t.text}),t.files.length>0&&r("div",{class:"fx-thumbs",children:t.files.map((a,i)=>{let o=a.mime_type||"";if(o.startsWith("image/")&&a.data_base64){let s=`data:${o};base64,${a.data_base64}`;return r("button",{type:"button",class:"fx-thumb",onClick:()=>t.onZoom(s),"aria-label":e("fb.imagePreview"),children:r("img",{src:s,alt:a.filename||""})},a.id??i)}return r("span",{class:"fx-tag",children:[r(E,{name:"card",size:11})," ",a.filename||e("fb.attachment")]},a.id??i)})})]})}var Ds=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function Ls(t,e){let n=Ds.find(s=>s.id===e),a=Z(t.priceMonthly)??0,i=(Z(t[n.field])??0)||(e==="quarterly"?Math.round(a*300)/100:0),o=Z(t[n.discount])??0;return o>0&&o<i?o:i}function ka(t,e,n){let a=re(t,n),i=String(e||"CNY").toUpperCase();return i==="CNY"?`\xA5${a}`:i==="USD"?`$${a}`:`${a} ${i}`}async function rp(){let[t,e,n]=await Promise.all([M("/membership/my"),M("/credits/balance"),M("/features")]);return!t.ok&&wt(t)?t:!e.ok&&wt(e)?e:{ok:!0,status:200,data:{membership:t.ok?t.data?.membership??null:null,membershipFailed:!t.ok,balance:e.ok?Z(e.data?.balance):null,balanceFailed:!e.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function wa(t,e){let[n,a]=await Promise.all([rp(),M(t)]);return n.ok?a.ok?{ok:!0,status:a.status,data:{status:n.data,list:e(a.data)}}:a:n}var _a=t=>(Array.isArray(t)?t:[]).filter(e=>!!e&&typeof e=="object"&&e.isActive!==!1),ap=15*6e4;function Sa(t){let e=W(0),n=W(0),a=W(t);return a.current=t,X(()=>{let i=()=>{let o=Date.now();o>e.current||document.visibilityState==="hidden"||o-n.current<2e3||(n.current=o,a.current?.())};return window.addEventListener("focus",i),document.addEventListener("visibilitychange",i),()=>{window.removeEventListener("focus",i),document.removeEventListener("visibilitychange",i)}},[]),()=>{e.current=Date.now()+ap}}function zs(t){let e=t.membership;return e&&(e.status===void 0||e.status==="active")?e:null}function Aa(t){let{t:e,locale:n}=D(),a=t.status,i=zs(a),o=rn(i?.tier),s=o==="Free";return r("section",{class:"fx-shop-strip","aria-label":e("store.status"),children:[r("div",{class:"fx-shop-stat",children:[r("small",{children:e("store.tier")}),a.membershipFailed?r("b",{class:"is-empty",children:"\u2014"}):r("b",{"data-testid":"shop-tier",children:[s?e("member.freeName"):i?.plan?.name||o,!s&&r("i",{children:i?.expiresAt?e("member.expires",{date:Vn(i.expiresAt,n)}):e("member.noExpiry")})]})]}),r("div",{class:"fx-shop-stat",children:[r("small",{children:e("store.balance")}),r("b",{class:a.balance===null?"is-empty":"","data-testid":"shop-balance",children:a.balance===null?"\u2014":re(a.balance,n)})]}),(a.membershipFailed||a.balanceFailed)&&r("button",{type:"button",class:"fx-link",onClick:t.onRetry,children:e("common.retry")}),r("span",{class:"fx-grow"}),t.children]})}function Ca(t){return r("section",{class:"fx-shop-section",children:[r("div",{class:"fx-shop-head",children:[r("div",{children:[r("h2",{children:t.title}),t.desc&&r("p",{children:t.desc})]}),t.right]}),t.children]})}function Ta(t){let e=O(),[n,a]=S(null),i=(o,s,l,c)=>{a(o),e.run(async()=>{if(!await Ut(s,l,c))return{error:{key:"err.openFailed"}};t()})};return{a:e,payingId:e.pending?n:null,open:i}}function Pa(t){return r(P,{variant:"ghost",pending:t.pending,disabled:t.disabled,onClick:t.onClick,children:[t.label,r(E,{name:"external",size:12})]})}function Ea(t){return r("div",{class:"fx-shop-empty",children:t.children})}function Ns(){let{t,locale:e}=D(),n=ve(()=>wa("/payment/offerings",g=>_a(g?.membershipPlans))),a=Sa(n.state==="ready"?n.reload:null),i=Ta(a),[o,s]=S("monthly");if(n.state==="loading")return r(he,{panels:2,rows:2});if(n.state==="signedOut")return r(ye,{});if(n.state==="error")return r(be,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,u=l.features.payment!==!1,f=Ds.filter(g=>c.some(h=>Ls(h,g.id)>0)),m=f.some(g=>g.id===o)?o:f[0]?.id??"monthly",d=zs(l)?.tier?.toLowerCase()??null;return r(N,{children:[r(Aa,{status:l,onRetry:n.reload}),r(Ca,{title:t("store.choosePlan"),desc:t(u?"store.payHint":"store.payOff"),right:f.length>1?r(qe,{value:m,label:t("store.period"),onChange:s,options:f.map(g=>({value:g.id,label:t(`store.period.${g.id}`)}))}):void 0,children:[c.length===0?r(Ea,{children:t("store.noPlans")}):r("div",{class:"fx-shop-tiers",children:c.map(g=>{let h=Ls(g,m),v=!!d&&!l.membershipFailed&&g.tier?.toLowerCase()===d;return r("article",{class:"fx-shop-tier","data-tier":g.tier,children:[r("h3",{children:[g.name||rn(g.tier),v&&r("span",{class:"fx-shop-current",children:[r(E,{name:"check",size:12}),t("store.currentTier")]})]}),r("div",{class:"fx-shop-price",children:h>0?r(N,{children:[ka(h,g.currency,e),r("small",{children:t(`store.per.${m}`)})]}):"\u2014"}),r("p",{children:g.description}),u&&h>0&&r(Pa,{label:t(v?"member.renew":"store.pay"),pending:i.payingId===g.id,disabled:i.a.pending,onClick:()=>i.open(g.id,"membership",g.id,m)})]},g.id)})}),r(B,{a:i.a})]})]})}function Os(){let{t,locale:e}=D(),n=ve(()=>wa("/payment/offerings",c=>_a(c?.packages))),a=Sa(n.state==="ready"?n.reload:null),i=Ta(a);if(n.state==="loading")return r(he,{panels:2,rows:2});if(n.state==="signedOut")return r(ye,{});if(n.state==="error")return r(be,{error:n.error,onRetry:n.retry});let{status:o,list:s}=n.data,l=o.features.payment!==!1;return r(N,{children:[r(Aa,{status:o,onRetry:n.reload}),r(Ca,{title:t("store.packs"),desc:t(l?"store.packsHint":"store.payOff"),children:[s.length===0?r(Ea,{children:t("store.noPacks")}):r("div",{class:"fx-shop-grid",children:s.map(c=>{let u=Z(c.price)??0;return r(Bs,{icon:"coins",kind:t("store.kind.pack"),name:`${c.name||""} \xB7 ${t("store.nPoints",{n:re(c.credits,e)})}`,desc:c.description,meta:t("store.instant"),children:l&&u>0&&r(Pa,{label:t("store.payPrice",{price:ka(u,c.currency,e)}),pending:i.payingId===c.id,disabled:i.a.pending,onClick:()=>i.open(c.id,"credits")})},c.id)})}),r(B,{a:i.a})]})]})}function Bs(t){return r("article",{class:"fx-shop-card",children:[r("div",{class:"fx-shop-visual","aria-hidden":"true",children:t.emoji?r("span",{class:"fx-shop-emoji",children:t.emoji}):r(E,{name:t.icon,size:18})}),r("div",{class:"fx-shop-body",children:[r("span",{class:"fx-shop-kind",children:t.kind}),r("strong",{children:t.name}),t.desc&&r("p",{children:t.desc}),r("div",{class:"fx-shop-foot",children:[r("span",{class:"fx-shop-meta",children:t.meta}),r("span",{class:"fx-shop-acts",children:t.children})]}),t.below]})]})}var ip={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function op(t){let{t:e,locale:n}=D(),{p:a}=t,i=O(),[o,s]=S(null),[l,c]=S(!1),u=Z(a.pricePoints)??0,f=Z(a.priceRmb)??0,m=typeof a.availableKeys=="number"&&a.availableKeys<=0,d=u>0&&t.balance!==null&&t.balance<u,g=()=>void i.run(async()=>{let v=await M("/shop/purchase",{method:"POST",body:{productId:a.id,payMethod:"points"},timeoutMs:3e4});return v.ok?(s(typeof v.data?.key=="string"&&v.data.key?v.data.key:null),t.onRedeemed(),{success:{key:"store.redeemed"}}):v.status===0?(c(!0),{error:{key:"store.uncertain"}}):ue(v)}),h=m?e("store.soldOut"):d?e("err.insufficientPoints"):typeof a.availableKeys=="number"?e("store.left",{n:a.availableKeys}):e("store.toBackpack");return r(Bs,{icon:a.type==="api_quota_key"?"key":"gift",emoji:a.icon,kind:e(ip[a.type||""]??"store.kind.item"),name:a.name||"",desc:a.description,meta:h,below:r(N,{children:[r(B,{a:i}),o&&r("div",{class:"fx-shop-key",children:[r("code",{children:o}),r(Ye,{text:o,label:e("backpack.copyKey")})]})]}),children:[u>0&&r(nt,{variant:"primary",pending:i.pending,disabled:m||d||l,label:e("store.redeem",{n:re(u,n)}),confirmLabel:e("store.redeemConfirm",{n:re(u,n)}),onConfirm:g}),t.payment&&f>0&&r(Pa,{label:ka(f,a.currency,n),pending:t.paying,disabled:t.payBusy||m,onClick:t.onPay})]})}function Fs(){let{t,goTo:e}=D(),n=ve(()=>wa("/shop/products",u=>_a(u))),a=Sa(n.state==="ready"?n.reload:null),i=Ta(a);if(n.state==="loading")return r(he,{panels:2,rows:2});if(n.state==="signedOut")return r(ye,{});if(n.state==="error")return r(be,{error:n.error,onRetry:n.retry});let{status:o,list:s}=n.data,l=o.features.payment!==!1,c=o.features.shop!==!1;return r(N,{children:[r(Aa,{status:o,onRetry:n.reload,children:e&&r(P,{onClick:()=>e("backpack"),children:t("store.openBackpack")})}),r(Ca,{title:t("store.redeemTitle"),desc:t("store.redeemHint"),children:[!c||s.length===0?r(Ea,{children:t(c?"store.noItems":"store.itemsOff")}):r("div",{class:"fx-shop-grid",children:s.map(u=>r(op,{p:u,balance:o.balance,payment:l,paying:i.payingId===u.id,payBusy:i.a.pending,onPay:()=>i.open(u.id,"storefront"),onRedeemed:n.reload},u.id))}),r(B,{a:i.a})]})]})}var sp="forsion-extend",$s=[{id:"account",titleKey:"page.account",Component:Ko},{id:"profile",titleKey:"page.profile",Component:fs},{id:"quota",titleKey:"page.quota",Component:gs},{id:"backpack",titleKey:"page.backpack",Component:hs},{id:"submission",titleKey:"page.submission",Component:Es},{id:"security",titleKey:"page.security",Component:ys},{id:"usage",titleKey:"page.usage",Component:As},{id:"feedback",titleKey:"page.feedback",Component:Is}],Us=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:Ns},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:Os},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:Fs}],lp=t=>`forsion/fx:${sp}:${t}`;function Hs(t){let{ctx:e,page:n}=t,[a,i]=S(()=>Ke(e.getLocale?.()));X(()=>{i(Ke(e.getLocale?.()));let l=e.subscribeLocale?.(c=>i(Ke(c)));return()=>{typeof l=="function"&&l()}},[e]);let o=Ve(()=>{let l=e.app?.openSettings;return{ctx:e,locale:a,t:Hn(a),goTo:typeof l=="function"?c=>l.call(e.app,lp(c)):null}},[e,a]),s=n.Component;return r(ea.Provider,{value:o,children:r("div",{class:"fx-acct","data-fx-page":n.id,lang:a==="zh"?"zh-CN":"en",children:[r("style",{children:yo}),r(s,{})]})})}function qs(t,e=window){let n=e?.tangu;if(!t||!n?.cloudFetch||!n.cloudInvoke||n.unitPage||typeof t.registerStoreView!="function")return 0;let a=i=>()=>Un(Ke(t.getLocale?.()),i);for(let i of Us)t.registerStoreView({id:i.id,title:a(i.titleKey),description:a(i.descKey),group:a("store.group"),icon:i.icon,mount(o){return ut(r(Hs,{ctx:t,page:i}),o),()=>{ut(null,o)}}});return Us.length}function Ws(t,e=window){let n=e?.tangu;if(!t||!n?.cloudFetch||!n.cloudInvoke||n.unitPage||typeof t.registerSettingsView!="function")return 0;for(let a of $s)t.registerSettingsView({id:a.id,category:"forsion",title:()=>Un(Ke(t.getLocale?.()),a.titleKey),mount(i){return ut(r(Hs,{ctx:t,page:a}),i),()=>{ut(null,i)}}});return $s.length}var js;if(typeof ctx<"u"){Ws(ctx),qs(ctx);let t=Ao(ctx);t&&(js=()=>t.dispose())}return _l(cp);})();
|
|
618
|
+
`;var On=e=>typeof e=="string"?e:"";function hf(e){if(!e||typeof e!="object")return null;let t=e,n=typeof t.id=="string"?t.id.trim():typeof t.id=="number"&&Number.isFinite(t.id)?String(t.id):"",o=On(t.titleZh),a=On(t.bodyZh);return!n||!o.trim()&&!a.trim()?null:{id:n,titleZh:o,titleEn:On(t.titleEn).trim()?On(t.titleEn):null,bodyZh:a,bodyEn:On(t.bodyEn).trim()?On(t.bodyEn):null,format:t.format==="html"?"html":"markdown",publishedAt:On(t.publishedAt)||null}}function bf(e,t){return t==="en"&&e.bodyEn?{lang:"en",title:e.titleEn??e.titleZh,body:e.bodyEn}:{lang:"zh",title:e.titleZh,body:e.bodyZh}}var vf=new fa({gfm:!0,breaks:!0}),yf=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],xf=/^(?:https?:|mailto:|#)/i;function tl(e){return ta.sanitize(e,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:yf,ALLOWED_URI_REGEXP:xf})}function kf(e,t){let n=t==="markdown"?vf.parse(e,{async:!1}):e;return tl(n)}var bo=null;function wf(){if(bo===null)try{let e=tl('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');bo=ta.isSupported&&!e.querySelector("script, iframe, [onclick], a[href]")}catch{bo=!1}return bo}function zf(e){try{let t=new URL(String(e??"").trim());return t.protocol==="http:"||t.protocol==="https:"?t.href:null}catch{return null}}var _f="http://www.w3.org/1999/xlink";function vo(e){let t=e.target,n=t&&typeof t.closest=="function"?t.closest("a, area"):null;if(!n||(e.preventDefault(),e.type!=="click"))return;let o=zf(n.getAttribute("href")??n.getAttributeNS(_f,"href"));if(o)try{re().openExternal?.(o)?.catch(()=>{})}catch{}}function el(e){return e.shadowRoot??e.attachShadow({mode:"open"})}function Sf(e){let{ctx:t,ann:n}=e,[o,a]=M(()=>Qe(t.getLocale?.()));Q(()=>{a(Qe(t.getLocale?.()));let p=t.subscribeLocale?.(g=>a(Qe(g)));return()=>{typeof p=="function"&&p()}},[t]);let i=At(()=>ho(o),[o]),s=bf(n,o),l=te(null),c=te(null),d=te(null),f=te(null),u=te(e.onClose);return u.current=e.onClose,Q(()=>{let p=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let g=y=>{if(y.key==="Escape"){y.preventDefault(),y.stopPropagation(),u.current();return}if(y.key!=="Tab")return;let _=c.current,E=d.current,x=l.current;if(!_||!E||!x)return;let k=document.activeElement;if(!k||!x.contains(k)){y.preventDefault(),(y.shiftKey?E:_).focus();return}y.shiftKey&&(k===_||k===x)?(y.preventDefault(),E.focus()):!y.shiftKey&&k===E&&(y.preventDefault(),_.focus())},m=y=>{let _=l.current;_&&y.target instanceof Node&&!_.contains(y.target)&&_.focus()};return window.addEventListener("keydown",g,!0),document.addEventListener("focusin",m,!0),()=>{window.removeEventListener("keydown",g,!0),document.removeEventListener("focusin",m,!0),p?.isConnected&&p.focus()}},[]),Q(()=>{let p=f.current;if(!p)return;let g=el(p);return g.addEventListener("click",vo),g.addEventListener("auxclick",vo),()=>{g.removeEventListener("click",vo),g.removeEventListener("auxclick",vo)}},[]),Q(()=>{let p=f.current;if(!p)return;let g=document.createElement("style");g.textContent=Qs;let m=document.createElement("div");m.className="doc",m.appendChild(kf(s.body,n.format)),el(p).replaceChildren(g,m)},[s.body,n.format]),r("div",{class:"fx-ann-backdrop",children:[r("style",{children:Zs}),r("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[r("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":i("ann.close"),onClick:()=>u.current(),children:r(Y,{name:"x",size:16})}),r("div",{class:"fx-ann-eyebrow",children:i("ann.eyebrow")}),r("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),r("div",{class:"fx-ann-body",children:r("div",{ref:f,id:"fx-ann-body",class:"fx-ann-doc"})}),r("div",{class:"fx-ann-footer",children:r("button",{ref:d,type:"button",class:"fx-ann-ok",onClick:()=>u.current(),children:i("ann.ok")})})]})]})}function Cf(e){try{return new URLSearchParams(e||"").has("window")}catch{return!1}}function Tf(e=document,t=12e3){let n=e.getElementById("tangu-splash");return n?.parentNode?new Promise(o=>{let a=()=>{i.disconnect(),clearTimeout(s),o()},i=new MutationObserver(()=>{n.isConnected||a()});i.observe(n.parentNode,{childList:!0});let s=setTimeout(a,t)}):Promise.resolve()}function nl(e,t=window){let n=en(t?.tangu);if(!e||!n?.cloudFetch||!Ln(n)||Cf(t.location?.search))return null;let o=0,a=!1,i=null,s=null,l=()=>{s?.done(),s=null},c=Promise.resolve(),d=(p,g)=>{let m=document.createElement("div");m.className="fx-ann-root",document.body.appendChild(m);let y=!1,_=E=>{y||(y=!0,i?.id===p.id&&(i=null),Be(null,m),m.remove(),g?.done(),E&&(c=J(`/announcements/${encodeURIComponent(p.id)}/seen`,{method:"POST"})))};i={id:p.id,finish:_},Be(r(Sf,{ctx:e,ann:p,onClose:()=>_(!0)}),m)},f=async()=>{let p=++o;await c;let g=await J("/announcements/pending");if(a||p!==o||!g.ok)return;let m=hf(g.data?.announcement);if(!m||i||!wf()||(await Tf(),a||p!==o||i))return;let y=e.app?.queuePopup?.();if(y&&(l(),s=y,await y.ready,s===y&&(s=null),a||p!==o||i)){y.done();return}d(m,y)},u=n.onAuthChanged?.(p=>{i?.finish(!1),l(),p?.loggedIn?f():o++});return f(),{check:f,dispose(){a=!0,o++,typeof u=="function"&&u(),i?.finish(!1),l()}}}function rl(e){return typeof e!="string"?{ok:!1,rule:"format"}:e.length<8?{ok:!1,rule:"min"}:e.length>64?{ok:!1,rule:"max"}:/\s/.test(e)?{ok:!1,rule:"space"}:/[a-z]/.test(e)?/[A-Z]/.test(e)?/[^A-Za-z0-9]/.test(e)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function ol(e){return{length:e.length>=8&&e.length<=64,lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),special:/[^A-Za-z0-9]/.test(e),space:e.length>0&&!/\s/.test(e)}}var al={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var il={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},sl={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha"},Aa={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function Af(e){if(e.code&&il[e.code])return il[e.code];if(e.detail){if(sl[e.detail])return sl[e.detail];let t=al[e.detail];if(t)return Aa[t];if(e.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function dt(e){let t=Af(e);return t?{key:t}:Dn(e)?{key:"err.signedOut"}:e.status===0?{key:"err.network"}:e.status===401?{key:"err.session"}:e.status===429?{key:"err.tooFrequent"}:e.detail?{raw:e.detail}:e.status>=500?{key:"err.server",vars:{status:e.status}}:{key:"err.generic"}}function Pr(e){let t=e.trim();return t?/cancelled\.?$/i.test(t)?null:t==="A sign-in is already in progress."?{key:"err.loginInProgress"}:t.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:t.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:t.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:t.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:t.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:t.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:t}:{key:"err.generic"}}var Ea=uo(null);function ee(){let e=_a(Ea);if(!e)throw new Error("forsion-extend: page rendered outside its host root");return e}var Pt=()=>ee().t;function Ue(){let e=te(!0);return Q(()=>(e.current=!0,()=>{e.current=!1}),[]),e}var ll={pending:!1,error:null,success:null,captcha:!1};function le(){let e=Ue(),[t,n]=M(ll),o=te(!1),a=Qt(async s=>{if(o.current)return;o.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}o.current=!1,e.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),i=Qt(()=>{o.current||n(ll)},[]);return{...t,run:a,clear:i}}var Ee=e=>({error:dt(e),captcha:e.status===403&&e.code==="CAPTCHA_FAILED"});function cl(){let[e,t]=M(0),n=te(null);Q(()=>()=>{n.current&&clearInterval(n.current)},[]);let o=Qt((i=60)=>{n.current&&clearInterval(n.current),t(i),n.current=setInterval(()=>{t(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),a=Qt(()=>{n.current&&clearInterval(n.current),n.current=null,t(0)},[]);return{left:e,start:o,stop:a}}function Re(e){let[t,n]=M({state:"loading"}),o=te(0),a=te(e);a.current=e;let i=Qt((c=!1)=>{let d=++o.current;c||n({state:"loading"}),(async()=>{let f;try{f=await a.current()}catch(u){f={ok:!1,status:0,code:null,detail:null,transport:String(u?.message||u)}}d===o.current&&(f.ok?n({state:"ready",data:f.data,gen:d}):Dn(f)?n({state:"signedOut"}):(f.status===401&&re().authStatus?.().catch(()=>{}),n({state:"error",fail:f})))})()},[]);Q(()=>{i();let c=re().onAuthChanged?.(()=>i());return()=>{o.current++,c?.()}},[i]);let s=Qt(()=>i(),[i]),l=Qt(()=>i(!0),[i]);switch(t.state){case"ready":{let c=t.gen,d=f=>n(u=>u.state==="ready"&&u.gen===c?{...u,data:f(u.data)}:u);return{state:"ready",data:t.data,reload:l,update:d}}case"error":return{state:"error",error:dt(t.fail),retry:s};default:return t}}function yo(e){let t=String(e||"").trim();if(!t)return"";let n=t.startsWith("+")?4:3;return t.length<=n+4?`${t.slice(0,2)}***`:`${t.slice(0,n)}****${t.slice(-4)}`}function xo(e){let t=String(e||"").trim(),n=t.lastIndexOf("@");if(n<=0)return t?`${t.slice(0,1)}***`:"";let o=t.slice(0,n);return`${o.slice(0,o.length<=2?1:2)}***${t.slice(n)}`}function Mr(e){let t=String(e||"").trim().toLowerCase()||"free";return t.charAt(0).toUpperCase()+t.slice(1)}var Ef=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function dl(e,t){let n=String(e||"").trim(),o,a,i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(i)o=Number(i[2]),a=Number(i[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);o=Number(l.find(c=>c.type==="month")?.value),a=Number(l.find(c=>c.type==="day")?.value)}return!(o>=1&&o<=12)||!(a>=1&&a<=31)?null:t==="zh"?`${o}\u6708${a}\u65E5`:`${Ef[o-1]} ${a}`}var Pa=e=>e==="zh"?"zh-CN":"en-US";function ul(e){if(e==null||e==="")return null;let t=new Date(typeof e=="string"&&/^\d+$/.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function ko(e,t){let n=ul(e);return n?new Intl.DateTimeFormat(Pa(t),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Ut(e,t){let n=ul(e);return n?new Intl.DateTimeFormat(Pa(t),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function ze(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?new Intl.NumberFormat(Pa(t),{maximumFractionDigits:2}).format(n):"\u2014"}var Fn=(e=>(e[e.Border=-1]="Border",e[e.Data=0]="Data",e[e.Function=1]="Function",e[e.Position=2]="Position",e[e.Timing=3]="Timing",e[e.Alignment=4]="Alignment",e))(Fn||{}),Pf=[0,1],fl=[1,0],ml=[2,3],gl=[3,2],Mf={L:Pf,M:fl,Q:ml,H:gl},If=/^\d*$/,Rf=/^[A-Z0-9 $%*+./:-]*$/,Ma="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Da=1,Na=40,pl=3,Lf=3,wo=40,Df=10,hl=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],bl=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],Ia=class{constructor(t,n,o,a){if(this.version=t,this.ecc=n,t<Da||t>Na)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(o);if(this.drawCodewords(s),a===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let d=this.getPenaltyScore();d<l&&(a=c,l=d),this.applyMask(c)}}this.mask=a,this.applyMask(a),this.drawFormatBits(a)}size;mask;modules=[];types=[];getModule(t,n){return t>=0&&t<this.size&&n>=0&&n<this.size&&this.modules[n][t]}drawFunctionPatterns(){for(let o=0;o<this.size;o++)this.setFunctionModule(6,o,o%2===0,Fn.Timing),this.setFunctionModule(o,6,o%2===0,Fn.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),n=t.length;for(let o=0;o<n;o++)for(let a=0;a<n;a++)o===0&&a===0||o===0&&a===n-1||o===n-1&&a===0||this.drawAlignmentPattern(t[o],t[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let n=this.ecc[1]<<3|t,o=n;for(let i=0;i<10;i++)o=o<<1^(o>>>9)*1335;let a=(n<<10|o)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,tn(a,i));this.setFunctionModule(8,7,tn(a,6)),this.setFunctionModule(8,8,tn(a,7)),this.setFunctionModule(7,8,tn(a,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,tn(a,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,tn(a,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,tn(a,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let o=0;o<12;o++)t=t<<1^(t>>>11)*7973;let n=this.version<<12|t;for(let o=0;o<18;o++){let a=tn(n,o),i=this.size-11+o%3,s=Math.floor(o/3);this.setFunctionModule(i,s,a),this.setFunctionModule(s,i,a)}}drawFinderPattern(t,n){for(let o=-4;o<=4;o++)for(let a=-4;a<=4;a++){let i=Math.max(Math.abs(a),Math.abs(o)),s=t+a,l=n+o;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,i!==2&&i!==4,Fn.Position)}}drawAlignmentPattern(t,n){for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)this.setFunctionModule(t+a,n+o,Math.max(Math.abs(a),Math.abs(o))!==1,Fn.Alignment)}setFunctionModule(t,n,o,a=Fn.Function){this.modules[n][t]=o,this.types[n][t]=a}addEccAndInterleave(t){let n=this.version,o=this.ecc;if(t.length!==zo(n,o))throw new RangeError("Invalid argument");let a=bl[o[0]][n],i=hl[o[0]][n],s=Math.floor(Ra(n)/8),l=a-s%a,c=Math.floor(s/a),d=[],f=Vf(i);for(let p=0,g=0;p<a;p++){let m=t.slice(g,g+c-i+(p<l?0:1));g+=m.length;let y=jf(m,f);p<l&&m.push(0),d.push(m.concat(y))}let u=[];for(let p=0;p<d[0].length;p++)d.forEach((g,m)=>{(p!==c-i||m>=l)&&u.push(g[p])});return u}drawCodewords(t){if(t.length!==Math.floor(Ra(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let o=this.size-1;o>=1;o-=2){o===6&&(o=5);for(let a=0;a<this.size;a++)for(let i=0;i<2;i++){let s=o-i,c=(o+1&2)===0?this.size-1-a:a;!this.types[c][s]&&n<t.length*8&&(this.modules[c][s]=tn(t[n>>>3],7-(n&7)),n++)}}}applyMask(t){if(t<0||t>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let o=0;o<this.size;o++){let a;switch(t){case 0:a=(o+n)%2===0;break;case 1:a=n%2===0;break;case 2:a=o%3===0;break;case 3:a=(o+n)%3===0;break;case 4:a=(Math.floor(o/3)+Math.floor(n/2))%2===0;break;case 5:a=o*n%2+o*n%3===0;break;case 6:a=(o*n%2+o*n%3)%2===0;break;case 7:a=((o+n)%2+o*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][o]&&a&&(this.modules[n][o]=!this.modules[n][o])}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[i][d]===s?(l++,l===5?t+=pl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*wo),s=this.modules[i][d],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*wo}for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[d][i]===s?(l++,l===5?t+=pl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*wo),s=this.modules[d][i],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*wo}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let l=this.modules[i][s];l===this.modules[i][s+1]&&l===this.modules[i+1][s]&&l===this.modules[i+1][s+1]&&(t+=Lf)}let n=0;for(let i of this.modules)n=i.reduce((s,l)=>s+(l?1:0),n);let o=this.size*this.size,a=Math.ceil(Math.abs(n*20-o*10)/o)-1;return t+=a*Df,t}getAlignmentPatternPositions(){if(this.version===1)return[];{let t=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,o=[6];for(let a=this.size-7;o.length<t;a-=n)o.splice(1,0,a);return o}}finderPenaltyCountPatterns(t){let n=t[1],o=n>0&&t[2]===n&&t[3]===n*3&&t[4]===n&&t[5]===n;return(o&&t[0]>=n*4&&t[6]>=n?1:0)+(o&&t[6]>=n*4&&t[0]>=n?1:0)}finderPenaltyTerminateAndCount(t,n,o){return t&&(this.finderPenaltyAddHistory(n,o),n=0),n+=this.size,this.finderPenaltyAddHistory(n,o),this.finderPenaltyCountPatterns(o)}finderPenaltyAddHistory(t,n){n[0]===0&&(t+=this.size),n.pop(),n.unshift(t)}};function nn(e,t,n){if(t<0||t>31||e>>>t)throw new RangeError("Value out of range");for(let o=t-1;o>=0;o--)n.push(e>>>o&1)}function tn(e,t){return(e>>>t&1)!==0}var Ir=class{constructor(t,n,o){if(this.mode=t,this.numChars=n,this.bitData=o,n<0)throw new RangeError("Invalid argument");this.bitData=o.slice()}getData(){return this.bitData.slice()}},Nf=[1,10,12,14],Of=[2,9,11,13],Ff=[4,8,16,16];function vl(e,t){return e[Math.floor((t+7)/17)+1]}function yl(e){let t=[];for(let n of e)nn(n,8,t);return new Ir(Ff,e.length,t)}function $f(e){if(!xl(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){let o=Math.min(e.length-n,3);nn(Number.parseInt(e.substring(n,n+o),10),o*3+1,t),n+=o}return new Ir(Nf,e.length,t)}function Bf(e){if(!kl(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t=[],n;for(n=0;n+2<=e.length;n+=2){let o=Ma.indexOf(e.charAt(n))*45;o+=Ma.indexOf(e.charAt(n+1)),nn(o,11,t)}return n<e.length&&nn(Ma.indexOf(e.charAt(n)),6,t),new Ir(Of,e.length,t)}function Uf(e){return e===""?[]:xl(e)?[$f(e)]:kl(e)?[Bf(e)]:[yl(Hf(e))]}function xl(e){return If.test(e)}function kl(e){return Rf.test(e)}function qf(e,t){let n=0;for(let o of e){let a=vl(o.mode,t);if(o.numChars>=1<<a)return Number.POSITIVE_INFINITY;n+=4+a+o.bitData.length}return n}function Hf(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)!=="%"?t.push(e.charCodeAt(n)):(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2);return t}function Ra(e){if(e<Da||e>Na)throw new RangeError("Version number out of range");let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function zo(e,t){return Math.floor(Ra(e)/8)-hl[t[0]][e]*bl[t[0]][e]}function Vf(e){if(e<1||e>255)throw new RangeError("Degree out of range");let t=[];for(let o=0;o<e-1;o++)t.push(0);t.push(1);let n=1;for(let o=0;o<e;o++){for(let a=0;a<t.length;a++)t[a]=La(t[a],n),a+1<t.length&&(t[a]^=t[a+1]);n=La(n,2)}return t}function jf(e,t){let n=t.map(o=>0);for(let o of e){let a=o^n.shift();n.push(0),t.forEach((i,s)=>n[s]^=La(i,a))}return n}function La(e,t){if(e>>>8||t>>>8)throw new RangeError("Byte out of range");let n=0;for(let o=7;o>=0;o--)n=n<<1^(n>>>7)*285,n^=(t>>>o&1)*e;return n}function Wf(e,t,n=1,o=40,a=-1,i=!0){if(!(Da<=n&&n<=o&&o<=Na)||a<-1||a>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let u=zo(s,t)*8,p=qf(e,s);if(p<=u){l=p;break}if(s>=o)throw new RangeError("Data too long")}for(let u of[fl,ml,gl])i&&l<=zo(s,u)*8&&(t=u);let c=[];for(let u of e){nn(u.mode[0],4,c),nn(u.numChars,vl(u.mode,s),c);for(let p of u.getData())c.push(p)}let d=zo(s,t)*8;nn(0,Math.min(4,d-c.length),c),nn(0,(8-c.length%8)%8,c);for(let u=236;c.length<d;u^=253)nn(u,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((u,p)=>f[p>>>3]|=u<<7-(p&7)),new Ia(s,t,f,a)}function wl(e,t){let{ecc:n="L",boostEcc:o=!1,minVersion:a=1,maxVersion:i=40,maskPattern:s=-1,border:l=1}=t||{},c=typeof e=="string"?Uf(e):Array.isArray(e)?[yl(e)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let d=Wf(c,Mf[n],a,i,s,o),f=Gf({version:d.version,maskPattern:d.mask,size:d.size,data:d.modules,types:d.types},l);return t?.invert&&(f.data=f.data.map(u=>u.map(p=>!p))),t?.onEncoded?.(f),f}function Gf(e,t=1){if(!t)return e;let{size:n}=e,o=n+t*2;e.size=o,e.data.forEach(i=>{for(let s=0;s<t;s++)i.unshift(!1),i.push(!1)});for(let i=0;i<t;i++)e.data.unshift(Array.from({length:o},s=>!1)),e.data.push(Array.from({length:o},s=>!1));let a=Fn.Border;e.types.forEach(i=>{for(let s=0;s<t;s++)i.unshift(a),i.push(a)});for(let i=0;i<t;i++)e.types.unshift(Array.from({length:o},s=>a)),e.types.push(Array.from({length:o},s=>a));return e}function me(e){return r("section",{class:`settings-panel fx-panel${e.danger?" fx-panel--danger":""}`,"aria-label":e.label,children:[r("div",{class:`settings-panel-head${e.actions?" settings-panel-head--actions":""}`,children:[e.icon&&r("span",{class:"settings-panel-icon",children:r(Y,{name:e.icon,size:16})}),r("div",{children:[r("strong",{children:e.title}),e.desc&&r("p",{children:e.desc})]}),e.actions&&r("div",{class:"settings-panel-actions settings-panel-actions--wide",children:e.actions})]}),e.children]})}function Le(e){return r("div",{class:`settings-control-row settings-setting-row fx-row fx-block${e.class?` ${e.class}`:""}`,children:[r("div",{class:"settings-control-copy",children:r("span",{children:[r("strong",{children:e.label}),e.desc&&r("small",{children:e.desc})]})}),e.children!==void 0&&e.children!==null&&r("div",{class:"settings-row-control fx-row-control",children:e.children})]})}function _e(e){return r("div",{class:`fx-sub${e.class?` ${e.class}`:""}`,children:e.children})}function Mt(e){return r("button",{type:"button",role:"switch","aria-checked":e.checked,"aria-label":e.label,class:`settings-switch${e.checked?" active":""}`,disabled:e.disabled,onClick:()=>e.onChange(!e.checked),children:r("span",{})})}function G(e){let t=e.variant??"ghost",n=t==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${t}`;return r("button",{type:e.submit?"submit":"button",class:n,disabled:e.disabled||e.pending,"aria-busy":e.pending||void 0,"aria-label":e.label,title:e.title,"data-armed":e.armed?"true":void 0,onClick:e.onClick,children:[e.pending&&r(tr,{}),e.children]})}var Xf=5e3;function rn(e){let[t,n]=M(!1),o=te(null),a=()=>{o.current&&clearTimeout(o.current),o.current=null,n(!1)};Q(()=>()=>{o.current&&clearTimeout(o.current)},[]),Q(()=>{(e.pending||e.disabled)&&a()},[e.pending,e.disabled]);let i=()=>{if(!t){n(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{o.current=null,n(!1)},Xf);return}a(),e.onConfirm()},s=e.variant??"ghost";return r(G,{variant:t?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:t,pending:e.pending,disabled:e.disabled,onClick:i,children:t?e.confirmLabel:e.label})}function ce(e){let t=Pt(),{a:n}=e;return n.error?r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:bt(n.error,t)}),n.captcha&&r("button",{type:"button",class:"fx-link",onClick:()=>void Nn(e.captchaSection??"security"),children:[t("common.openInBrowser")," ",r(Y,{name:"external",size:12})]})]}):n.success?r("div",{class:"fx-msg is-ok",role:"status",children:bt(n.success,t)}):null}function de(e){return r("p",{class:`fx-note${e.tone?` is-${e.tone}`:""}`,children:e.children})}function ot(e){return r("div",{class:"settings-empty-row fx-block",children:e.children})}function Rr(e){let t=Pt(),n=e.display;return r("div",{class:`fx-quota${n.low?" is-low":""}`,children:[r("div",{class:"fx-quota-top",children:[r("span",{class:"fx-quota-label",children:e.label}),r("span",{class:"fx-quota-value",children:n.unlimited?t("common.unlimited"):n.text})]}),r("div",{class:"fx-bar",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?t("common.unlimited"):n.text,children:r("span",{style:{width:`${n.pct}%`}})}),e.note&&r("div",{class:"fx-quota-note",children:e.note})]})}function It(e){return r("div",{class:"seg fx-seg",role:"radiogroup","aria-label":e.label,children:e.options.map(t=>r("button",{type:"button",role:"radio","aria-checked":t.value===e.value,class:t.value===e.value?"active":"",onClick:()=>{t.value!==e.value&&e.onChange(t.value)},children:t.label}))})}async function Kf(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let n=document.execCommand("copy");return t.remove(),n}catch{return!1}}}function qt(e){let t=Pt(),[n,o]=M("idle"),a=te(null);Q(()=>()=>{a.current&&clearTimeout(a.current)},[]);let i=async()=>{let s=await Kf(e.text);o(s?"copied":"failed"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>o("idle"),1800)};return r(G,{disabled:e.disabled||!e.text,onClick:()=>void i(),children:[r(Y,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?t("common.copied"):n==="failed"?t("common.copyFailed"):e.label]})}function Jf(e){let t=At(()=>{try{return wl(e.value,{ecc:"M",border:2})}catch{return null}},[e.value]);if(!t)return null;let n="";t.data.forEach((a,i)=>a.forEach((s,l)=>{s&&(n+=`M${l} ${i}h1v1h-1z`)}));let o=e.size??148;return r("svg",{class:"fx-qr",width:o,height:o,viewBox:`0 0 ${t.size} ${t.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":e.label,children:[r("rect",{width:t.size,height:t.size,fill:"#fff"}),r("path",{d:n,fill:"#000"})]})}function Oa(e){let t=Pt(),{device:n}=e;return r("div",{class:"fx-device",children:[r(Jf,{value:n.url,label:t("signin.qrLabel")}),r("div",{class:"fx-device-copy",children:[r("p",{children:t("signin.deviceHint")}),n.userCode&&r("div",{class:"fx-device-code",children:[r("span",{children:t("signin.code")}),r("code",{children:n.userCode})]}),r("div",{class:"fx-inline",children:[r("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[t("signin.openLink")," ",r(Y,{name:"external",size:12})]}),r(qt,{text:n.url,label:t("signin.copyLink")})]})]})]})}function De(){let e=Pt(),t=le(),[n,o]=M(null);Q(()=>re().onAuthDevice?.(i=>o(i)),[]);let a=()=>void t.run(async()=>{let i=re().forsionLogin;if(!i)return{error:{key:"err.unavailable"}};try{await i()}catch(s){o(null);let l=Pr(Et(s));return l?{error:l}:void 0}});return r("section",{class:"settings-panel fx-panel fx-signin","aria-label":e("signin.button"),children:r("div",{class:"settings-state fx-signin-body",children:[r("span",{class:"settings-state-icon",children:r(Y,{name:"user",size:18})}),r("p",{class:"fx-signin-lead",children:e("signin.desc")}),r("div",{class:"settings-state-actions",children:r(G,{variant:"primary",pending:t.pending,onClick:a,children:t.pending?e("signin.pending"):e("signin.button")})}),n&&r(Oa,{device:n}),r(ce,{a:t})]})})}function Ae(e){let t=Pt(),n=e.panels??2,o=e.rows??2;return r("div",{class:"fx-skeleton","aria-busy":"true","aria-label":t("common.loading"),children:Array.from({length:n},(a,i)=>r("section",{class:"settings-panel fx-panel",children:[r("div",{class:"settings-panel-head",children:[r("span",{class:"fx-skel fx-skel--icon"}),r("div",{children:[r("span",{class:"fx-skel fx-skel--title"}),r("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:o},(s,l)=>r("div",{class:"settings-control-row",children:r("span",{class:"fx-skel fx-skel--row"})},l))]},i))})}function Oe(e){let t=Pt();return r("section",{class:"settings-panel fx-panel",children:r("div",{class:"settings-state fx-error-state",role:"alert",children:[r("span",{class:"settings-state-icon",children:r(Y,{name:"alert",size:18})}),r("strong",{children:t("common.loadFailed")}),r("p",{children:bt(e.error,t)}),r("div",{class:"settings-state-actions",children:r(G,{variant:"primary",onClick:e.onRetry,children:[r(Y,{name:"refresh",size:12})," ",t("common.retry")]})})]})})}function _l(){let{t:e}=ee(),t=Re(()=>J("/auth/me"));if(t.state==="loading")return r(Ae,{panels:2});if(t.state==="signedOut")return r(De,{});if(t.state==="error")return r(Oe,{error:t.error,onRetry:t.retry});let n=t.data;return r(F,{children:[r(me,{icon:"user",title:e("account.details.title"),desc:e("account.details.desc"),children:[r(Le,{label:e("account.details.username"),children:[r("span",{class:"fx-value",children:n.username}),n.role==="ADMIN"&&r("span",{class:"fx-tag",children:e("account.role.admin")})]}),r(zl,{kind:"phone",value:n.phone}),r(zl,{kind:"email",value:n.email})]}),r(Yf,{}),r(Qf,{})]})}function zl(e){let{t,goTo:n}=ee(),o=!!e.value,a=o?e.kind==="phone"?yo(e.value):xo(e.value):t("account.contact.unbound"),i=e.kind==="phone"?t("account.contact.phone"):t("account.contact.email");return r(Le,{label:i,children:n?r("button",{type:"button",class:`fx-link-row${o?"":" is-empty"}`,onClick:()=>n("security"),title:t("account.contact.manage"),children:[r("span",{children:a}),r(Y,{name:"chevron",size:12})]}):r("span",{class:`fx-value${o?"":" is-empty"}`,children:a})})}function Yf(){let{t:e}=ee(),t=Ue(),[n,o]=M(null),[a,i]=M(!1),[s,l]=M(null),[c,d]=M(null),f=le(),u=le(),p=le(),g=!!re().authAccounts;Q(()=>{let x=0,k=()=>{let j=re().authAccounts;if(!j)return;let w=++x;i(!1),j().then(A=>{w===x&&o(Array.isArray(A)?A:[])}).catch(()=>{w===x&&i(!0)})};k();let R=re().onAuthChanged?.(k),B=re().onAuthDevice?.(j=>d(j));return()=>{x++,R?.(),B?.()}},[]);let m=x=>{l(x),f.run(async()=>{let k=re().forsionSwitchAccount;if(!k)return{error:{key:"err.unavailable"}};try{await k(x)}catch(R){let B=Pr(Et(R));return B?{error:B}:void 0}finally{t.current&&l(null)}})},y=()=>void u.run(async()=>{let x=re().forsionLogin;if(!x)return{error:{key:"err.unavailable"}};d(null);try{await x()}catch(k){t.current&&d(null);let R=Pr(Et(k));return R?{error:R}:void 0}}),_=()=>void p.run(async()=>{let x=re().forsionLogout;if(!x)return{error:{key:"err.unavailable"}};try{await x()}catch(k){return{error:{raw:Et(k)||e("err.generic")}}}}),E=f.pending||u.pending||p.pending;return r(me,{icon:"laptop",title:e("local.title"),desc:e("local.desc"),children:[g&&n===null&&!a&&r(ot,{children:[r(tr,{})," ",e("common.loading")]}),a&&r("div",{class:"fx-sub",children:r(de,{tone:"warn",children:e("local.loadFailed")})}),n&&n.length===0&&r(ot,{children:e("local.empty")}),n&&n.length>0&&r("div",{class:"fx-list fx-block",role:"list",children:n.map(x=>r("div",{class:"fx-list-row",role:"listitem",children:[r("span",{class:"fx-list-icon",children:r(Y,{name:"user",size:14})}),r("span",{class:"fx-list-main",children:[r("strong",{children:x.nickname||x.username||"Forsion"}),r("small",{children:[x.username&&x.nickname?x.username:null,Zf(x.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),x.active?r("span",{class:"fx-tag fx-tag--accent",children:[r(Y,{name:"check",size:11})," ",e("local.current")]}):r(G,{pending:s===x.id,disabled:E&&s!==x.id,onClick:()=>m(x.id),children:e("local.switch")})]},x.id))}),u.pending&&c&&r("div",{class:"fx-sub",children:r(Oa,{device:c})}),r("div",{class:"settings-panel-footer fx-footer",children:[r(G,{pending:u.pending,disabled:E&&!u.pending,onClick:y,children:[r(Y,{name:"plus",size:12})," ",u.pending?e("signin.pending"):e("local.add")]}),r(G,{pending:p.pending,disabled:E&&!p.pending,onClick:_,children:[r(Y,{name:"logout",size:12})," ",e("local.signOut")]})]}),(f.error||u.error||p.error)&&r("div",{class:"fx-sub fx-sub--tight",children:[r(ce,{a:f}),r(ce,{a:u}),r(ce,{a:p})]})]})}function Zf(e){try{return new URL(e).host}catch{return e}}function Qf(){let{t:e}=ee(),t=le();return r("div",{class:"fx-page-foot",children:[r("button",{type:"button",class:"fx-link",disabled:t.pending,onClick:()=>void t.run(async()=>await Nn()?void 0:{error:{key:"err.openFailed"}}),children:[e("account.web.open")," ",r(Y,{name:"external",size:12})]}),r("span",{class:"fx-muted",children:e("account.web.desc")}),r(ce,{a:t})]})}var $n=class extends Error{};async function Sl(e,t=256){if(e.size>20971520)throw new $n;let n=URL.createObjectURL(e);try{let o=new Image;await new Promise((f,u)=>{o.onload=()=>f(),o.onerror=()=>u(new Error("image decode failed")),o.src=n});let a=o.naturalWidth,i=o.naturalHeight;if(!a||!i)throw new Error("empty image");if(a*i>5e7)throw new $n;let s=Math.min(1,t/Math.max(a,i)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(a*s)),l.height=Math.max(1,Math.round(i*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(o,0,0,l.width,l.height);let d=l.toDataURL("image/jpeg",.85);if(d.length>262144)throw new $n;return d}finally{URL.revokeObjectURL(n)}}function Cl(e){let t=String(e||"").trim();if(!t)return"?";let n=Array.from(t)[0];return/[㐀-鿿]/.test(n)?n:Array.from(t).slice(0,2).join("").toUpperCase()}var Tl=["cream","coral","teal","lavender"],Al=["auto","light","dark"],El=["none","mist","contour","dots"],Pl=["none","ring","pro"],Ml=["early","streak","author","inviter","event"];var Il=e=>`/u/${encodeURIComponent(e)}`,Fa=e=>!!e&&e.toLowerCase()!=="free";function $a(e,t){let n={...e.settings,...t};return{...e,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!Fa(e.tier)?"none":n.frame,modules:n.modules.filter(o=>o.show).map(o=>({id:o.id}))}}function Ba(e,t,n){let o=e.findIndex(s=>s.id===t),a=o+n;if(o<0||a<0||a>=e.length)return e;let i=e.slice();return[i[o],i[a]]=[i[a],i[o]],i}function Rl(e){let t=e.trim();if(!t)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`,o;try{o=new URL(n)}catch{return null}if(o.protocol!=="http:"&&o.protocol!=="https:"||!o.hostname.includes("."))return null;let a=o.toString();return a.length<=200?a:null}function Ua(e){return e.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function Ll(e,t){let n=t==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[o,a]of n)if(e>=o){let i=e/o;return{value:i>=100?String(Math.round(i)):String(Math.round(i*10)/10),unit:a}}return{value:Math.round(e).toLocaleString("en-US"),unit:""}}var Dl=e=>e==="zh"?"zh-CN":"en-US";function Nl(e,t){let[n,o]=e.split("-").map(Number);if(!n||!o)return[];let a=new Intl.DateTimeFormat(Dl(t),{month:"short",timeZone:"UTC"});return Array.from({length:12},(i,s)=>a.format(new Date(Date.UTC(n,o-12+s,1))))}function Ol(e,t){let[n,o]=e.split("-").map(Number);return!n||!o?"":new Intl.DateTimeFormat(Dl(t),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,o-1,1)))}function Fl([e,t]){let n=o=>`${String((o%24+24)%24).padStart(2,"0")}:00`;return`${n(e)} \u2013 ${n(t)}`}function $l(e){let t=0,n=Promise.resolve(),o=()=>{let a=t;return e.read().then(i=>{a===t&&e.apply(i)})};return{read:o,write(a){let i=++t,s=n.then(a).then(l=>{i===t&&e.apply(l)});return n=s.catch(()=>i===t?o().catch(()=>{}):void 0),s}}}var Hl={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},Ul={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},ql={plus:"Plus",pro:"Pro"},Ha=e=>!!e&&/^https?:\/\//i.test(e);function Va(e){if(!Ha(e))return;let t=re().openExternal;t?t(e).catch(()=>{}):window.open(e,"_blank","noopener")}async function nm(){let e=re().cloudInvoke;if(!e)return null;try{let t=await e("profile:publicOrigin");return t?.ok&&typeof t.origin=="string"&&/^https?:\/\/[^/]+$/i.test(t.origin)?t.origin:null}catch{return null}}async function rm(e,t,n){let o=await J(e,{method:t,body:n});if(!o.ok)throw o;if(!o.data?.profile)throw{ok:!1,status:o.status,code:null,detail:null,transport:"bad_response"};return o.data.profile}var Vl=e=>e&&typeof e=="object"&&e.ok===!1?dt(e):{raw:String(e?.message||e)};function jl(){let{t:e}=ee(),t=Re(async()=>{let[o,a,i]=await Promise.all([J("/profile/me"),J("/auth/me"),nm()]);return a.ok?o.ok?o.data?.profile?{ok:!0,status:o.status,data:{profile:o.data.profile,me:a.data,origin:i}}:{ok:!0,status:404,data:null}:o.status===404?{ok:!0,status:404,data:null}:o:a});if(t.state==="loading")return r(Ae,{panels:2,rows:3});if(t.state==="signedOut")return r(De,{});if(t.state==="error")return r(Oe,{error:t.error,onRetry:t.retry});if(!t.data)return r(me,{icon:"user",title:e("page.profile"),children:r(ot,{children:e("profile.unsupported")})});let{update:n}=t;return r(om,{data:t.data,update:o=>n(a=>a&&o(a))})}function om(e){let{t}=ee(),n=Ue(),{profile:o,me:a,origin:i}=e.data,[s,l]=M(null),[c,d]=M(null),[f,u]=M(!1),p=te(e.update);p.current=e.update;let g=(N,V,X)=>n.current?rm(N,V,X):Promise.reject(new Error("unmounted")),m=At(()=>$l({apply:N=>p.current(V=>({...V,profile:N})),read:()=>g("/profile/me")}),[]),y=a.username||o.username,_={...o,username:y,nickname:a.nickname||null},E=o.settings.isPublic,x=i?`${i}${Il(y)}`:null,k=N=>{n.current&&d({tone:"error",m:Vl(N)})},R=N=>{d(null),e.update(V=>({...V,profile:$a(V.profile,N)})),m.write(()=>g("/profile/me","PUT",N)).catch(k)},B=async N=>{e.update(V=>({...V,profile:$a(V.profile,{modules:V.profile.settings.modules.map(X=>({...X,public:N.find(oe=>oe.id===X.id)?.public??X.public}))})})),await m.write(()=>g("/profile/me/visibility","POST",{public:!0,modules:N})),n.current&&(l(null),d({tone:"ok",m:{key:"profile.nowPublic"}}))},j=async()=>{u(!0),d(null);try{await m.write(()=>g("/profile/me/visibility","POST",{public:!1})),n.current&&d({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(N){k(N)}finally{n.current&&u(!1)}},w=te(Promise.resolve()),A=(N,V)=>{let X=w.current.then(async()=>{if(!n.current)return;let oe=await J("/settings",{method:"PUT",body:N});if(n.current){if(!oe.ok)return d({tone:"error",m:dt(oe)});p.current(b=>({...b,me:{...b.me,...N}})),d({tone:"ok",m:{key:V}})}});return w.current=X,X},P=async N=>{d(null);let V;try{V=await Sl(N)}catch(X){return d({tone:"error",m:{key:X instanceof $n?"err.avatarTooLarge":"err.avatarInvalid"}})}await A({avatar:V},"account.avatar.saved")},I=N=>{d(null),l(V=>V===N?null:N)};return r("div",{class:"fx-pf-page",children:[r(me,{icon:E?"globe":"lock",title:t(E?"profile.state.public":"profile.state.private"),desc:t(E?"profile.state.publicDesc":"profile.state.privateDesc"),actions:r(F,{children:[r(G,{onClick:()=>I("deco"),children:[r(Y,{name:"palette",size:12})," ",t("profile.decorate")]}),E?r(G,{pending:f,onClick:()=>void j(),children:[r(Y,{name:"lock",size:12})," ",t("profile.makePrivate")]}):r(G,{variant:"primary",onClick:()=>I("publish"),children:[r(Y,{name:"globe",size:12})," ",t("profile.publish")]})]}),children:[E&&x&&r(Le,{label:t("profile.address"),desc:x.replace(/^https?:\/\//i,""),children:[r(qt,{text:x,label:t("profile.copyLink")}),r(G,{onClick:()=>Va(x),children:[r(Y,{name:"external",size:12})," ",t("profile.openPublic")]})]}),s==="publish"&&!E&&r(am,{profile:o,url:x,submit:B,onClose:()=>l(null)}),c&&r(_e,{class:"fx-sub--tight",children:r("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:bt(c.m,t)})})]}),r("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[r("div",{class:"fx-pf-root",children:r(cm,{view:_,avatar:a.avatar||null,pinned:o.settings.pinned,owner:{onAvatar:N=>void P(N),onNickname:N=>{d(null),A({nickname:N},"account.nickname.saved")},onBio:N=>R({bio:N}),onLinks:N=>R({links:N}),onPinned:N=>R({pinned:N}),onInvalidLink:()=>d({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&r(im,{profile:o,onChange:R,onClose:()=>l(null)})]})]})}function am(e){let{t}=ee(),n=Ue(),{profile:o}=e,[a,i]=M({}),s=o.settings.modules.filter(g=>g.show).map(g=>({...g,public:a[g.id]??g.public})),[l,c]=M(!1),[d,f]=M(null),u=o.canPublish?null:o.publishBlockedReason||"publish_blocked";if(u)return r(_e,{children:[r(de,{children:t(u==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),r("div",{class:"fx-inline fx-pf-foot",children:[u==="machine_username"&&r(G,{variant:"primary",onClick:()=>void Nn("profile"),children:[t("profile.goRename")," ",r(Y,{name:"external",size:12})]}),r(G,{onClick:e.onClose,children:t("common.cancel")})]})]});let p=async()=>{c(!0),f(null);try{await e.submit(s.map(({id:g,public:m})=>({id:g,public:m})))}catch(g){if(!n.current)return;f(Vl(g)),c(!1)}};return r(_e,{children:[e.url&&r("div",{class:"fx-pf-url",children:[r(Y,{name:"globe",size:14}),r("span",{children:e.url.replace(/^https?:\/\//i,"")})]}),r(de,{children:t("profile.publishDesc")}),r("div",{class:"fx-pf-checks",children:s.map(g=>r("div",{class:"fx-pf-check",children:[r("div",{children:[t(`profile.mod.${g.id}`),r("small",{children:t(`profile.modDesc.${g.id}`)})]}),r(Mt,{checked:g.public,disabled:l,label:`${t(`profile.mod.${g.id}`)} \xB7 ${t("profile.col.public")}`,onChange:m=>i(y=>({...y,[g.id]:m}))})]},g.id))}),r(de,{children:t("profile.publishNever")}),d&&r("div",{class:"fx-msg is-error",role:"alert",children:bt(d,t)}),r("div",{class:"fx-inline fx-pf-foot",children:[r(G,{variant:"primary",pending:l,onClick:()=>void p(),children:t("profile.publishConfirm")}),r(G,{disabled:l,onClick:e.onClose,children:t("common.cancel")})]})]})}function im(e){let{t}=ee(),n=e.profile.settings,o=Fa(e.profile.tier),a=(s,l)=>e.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),i=s=>r("span",{class:"fx-pf-thumb",children:s});return r("aside",{class:"fx-pf-deco","aria-label":t("profile.decorate"),children:r(me,{icon:"palette",title:t("profile.decorate"),actions:r(G,{onClick:e.onClose,children:t("common.done")}),children:r("div",{class:"fx-pf-deco-body",children:[r("h4",{children:t("profile.deco.cover")}),r("div",{class:"fx-pf-opts",children:El.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>e.onChange({cover:s}),children:[i(r("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),t(`profile.cover.${s}`)]},s))}),r("h4",{children:t("profile.deco.frame")}),r("div",{class:"fx-pf-opts",children:Pl.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!o,title:s==="pro"&&!o?t("profile.frameProHint"):void 0,onClick:()=>e.onChange({frame:s}),children:[i(r("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:r("span",{class:"fx-pf-av"})})),t(`profile.frame.${s}`)]},s))}),!o&&r(de,{children:t("profile.frameProHint")}),r("h4",{children:t("profile.deco.modules")}),r("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[r("span",{children:t("profile.col.show")}),r("span",{children:t("profile.col.public")})]}),n.modules.map((s,l)=>r("div",{class:"fx-pf-mod",children:[r("span",{children:t(`profile.mod.${s.id}`)}),r("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:t("profile.moveUp"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveUp")}`,onClick:()=>e.onChange({modules:Ba(n.modules,s.id,-1)}),children:r(Y,{name:"up",size:13})}),r("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:t("profile.moveDown"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveDown")}`,onClick:()=>e.onChange({modules:Ba(n.modules,s.id,1)}),children:r(Y,{name:"down",size:13})}),r(Mt,{checked:s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.show")}`,onChange:c=>a(s.id,{show:c})}),r(Mt,{checked:s.show&&s.public,disabled:!s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.public")}`,onChange:c=>a(s.id,{public:c})})]},s.id)),r(de,{children:t("profile.modulesHint")}),r("h4",{children:t("profile.deco.skin")}),r("div",{class:"fx-pf-opts",children:Tl.map(s=>r("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>e.onChange({skin:s}),children:[i(r("span",{class:"fx-pf-swatch","data-skin":s})),t(`profile.skin.${s}`)]},s))}),r("h4",{children:t("profile.deco.mode")}),r(It,{value:n.mode,label:t("profile.deco.mode"),onChange:s=>e.onChange({mode:s}),options:Al.map(s=>({value:s,label:t(`profile.mode.${s}`)}))}),r(de,{children:t("profile.deco.publicHint")})]})})})}function qa(e){let[t,n]=M(null),o=te(!1),a=te(null),i=t!==null;Er(()=>{i&&a.current?.focus()},[i]);let s=e.class?` ${e.class}`:"";if(t===null)return r("button",{type:"button",class:`fx-pf-ed${s}${e.value?"":" is-empty"}`,title:e.label,"aria-label":e.label,onClick:()=>{o.current=!1,n(e.value)},children:[r("span",{children:e.value||e.placeholder}),r(Y,{name:e.value?"pencil":"plus",size:12})]});let l=()=>{let c=t.trim();n(null),!o.current&&c!==e.value&&e.onSave(c)};return r("span",{class:`fx-pf-ed-on${s}`,children:[r("input",{ref:a,class:"fx-input",type:"text",value:t,maxLength:e.maxLength,placeholder:e.placeholder,"aria-label":e.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),o.current=!0,c.currentTarget.blur()))}}),e.counter&&r("small",{children:[Array.from(t).length,"/",e.maxLength]})]})}function _o(e){return r("section",{class:"fx-pf-sec",style:{order:e.order},children:[r("div",{class:"fx-pf-sec-h",children:[r("h3",{children:e.title}),e.action]}),e.children]})}function sm(e){let{t}=ee(),{work:n}=e,o=Hl[n.type],a=r(F,{children:[r("div",{class:"fx-pf-work-top",children:[r("span",{class:"fx-pf-work-ico",children:r(Y,{name:o?.icon??"box",size:17})}),r("div",{children:[r("div",{class:"fx-pf-work-name",children:n.name}),r("div",{class:"fx-pf-work-type",children:o?t(o.key):n.type})]})]}),r("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&r("div",{class:"fx-pf-work-foot",children:[r(Y,{name:n.countKind==="visits"?"eye":"download",size:12}),t(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),i=n.url;return Ha(i)?r("a",{class:"fx-pf-work",href:i,onClick:s=>{s.preventDefault(),Va(i)},children:a}):r("article",{class:"fx-pf-work",children:a})}function lm(e){let{t}=ee(),n=Ue(),[o,a]=M(null),[i,s]=M(()=>e.pinned.map(f=>`${f.kind}:${f.id}`));Q(()=>{J("/profile/me/works").then(f=>{n.current&&a(f.ok?f.data?.works??[]:"failed")})},[]);let l=f=>`${f.kind}:${f.id}`,c=f=>s(u=>u.includes(f)?u.filter(p=>p!==f):[...u,f]);if(o===null)return r("div",{class:"fx-pf-card fx-pf-empty",children:[r(tr,{})," ",t("common.loading")]});if(o==="failed"||o.length===0)return r("div",{class:"fx-pf-card fx-pf-empty",children:[r("p",{children:t(o==="failed"?"common.loadFailed":"profile.worksNone")}),r("div",{class:"fx-inline fx-pf-foot",children:[o!=="failed"&&r(G,{variant:"primary",onClick:()=>void Nn("submission"),children:[t("profile.goSubmit")," ",r(Y,{name:"external",size:12})]}),r(G,{onClick:e.onClose,children:t("common.cancel")})]})]});let d=()=>{let f=new Map(o.map(u=>[l(u),u]));e.onSave(i.flatMap(u=>{let p=f.get(u);return p?[{kind:p.kind,id:p.id}]:[]})),e.onClose()};return r("div",{class:"fx-pf-card fx-pf-picker",children:[o.map(f=>{let u=l(f),p=i.includes(u),g=Hl[f.type];return r("button",{type:"button",class:"fx-pf-pick","aria-pressed":p,disabled:!p&&i.length>=6,onClick:()=>c(u),children:[r("div",{children:[f.name,r("small",{children:[g?t(g.key):f.type," \xB7 ",f.summary]})]}),p&&r(Y,{name:"check",size:15})]},u)}),r("div",{class:"fx-inline fx-pf-foot",children:[r("span",{class:"fx-grow",children:i.length?t("profile.worksPicked",{n:i.length,max:6}):t("profile.worksAuto")}),r(G,{variant:"primary",onClick:d,children:t("common.done")}),r(G,{onClick:e.onClose,children:t("common.cancel")})]})]})}function cm(e){let{t,locale:n}=ee(),{view:o,owner:a}=e,i=te(null),[s,l]=M(!1),c=o.nickname||o.username,d=(o.tier||"free").toLowerCase(),f=o.modules.map(b=>b.id),u=b=>f.indexOf(b),p=b=>u(b)>=0,g=o.stats,m=g?Ll(g.totalTokens,n):null,y=t("profile.unit.days"),_=g&&m?[[m.value,m.unit,t("profile.stat.tokens")],[String(g.activeDays),y,t("profile.stat.activeDays")],[String(g.longestStreak),y,t("profile.stat.longest")],[String(g.currentStreak),y,t("profile.stat.current")],[g.installs.toLocaleString("en-US"),"",t("profile.stat.installs")]]:[],E=g&&p("stats")&&r("div",{class:"fx-pf-stats",style:{order:u("stats")},children:_.map(([b,C,L])=>r("div",{class:"fx-pf-stat",children:[r("b",{children:[b,C&&r("small",{children:C})]}),r("span",{children:L})]},L))},"stats"),x=f[0]==="stats",k=o.works||[],R=p("works")&&r(_o,{order:u("works"),title:t("profile.works"),action:!s&&r("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:t("profile.worksPick")}),children:s?r(lm,{pinned:e.pinned,onSave:a.onPinned,onClose:()=>l(!1)}):k.length?r("div",{class:"fx-pf-works",children:k.map(b=>r(sm,{work:b},`${b.kind}:${b.id}`))}):r("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.worksEmpty")})},"works"),B=o.activity,j=p("activity")&&B&&r(_o,{order:u("activity"),title:t("profile.activity"),children:r("div",{class:"fx-pf-card",children:[r("div",{class:"fx-pf-hm",role:"img","aria-label":t("profile.activityDays",{n:B.activeDays}),children:B.levels.map((b,C)=>r("i",{class:b?`l${b}`:void 0},C))}),r("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:Nl(B.end,n).map((b,C)=>r("span",{children:b},C))}),r("div",{class:"fx-pf-hm-foot",children:[r("span",{children:t("profile.activityDays",{n:B.activeDays})}),r("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[t("profile.less"),r("i",{}),r("i",{class:"l1"}),r("i",{class:"l2"}),r("i",{class:"l3"}),r("i",{class:"l4"}),t("profile.more")]})]})]})},"activity"),w=(o.badges||[]).filter(b=>Ml.includes(b.id)),A=p("badges")&&r(_o,{order:u("badges"),title:t("profile.badges"),children:w.length?r("div",{class:"fx-pf-card fx-pf-rows",children:w.map(b=>r("div",{class:"fx-pf-brow",children:[r("span",{class:"fx-pf-badge",children:r(Y,{name:Ul[b.id],size:14})}),r("div",{children:[r("b",{children:t(`profile.badge.${b.id}`)}),r("span",{children:t(`profile.badgeSub.${b.id}`,{value:b.value??""})})]})]},b.id))}):r("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.badgesEmpty")})},"badges"),P=o.insights,I=[];P?.topModel&&I.push([t("profile.insightModel"),P.topModel]),P?.activeHours&&I.push([t("profile.insightHours"),Fl(P.activeHours)]);let N=p("insights")&&r(_o,{order:u("insights"),title:t("profile.insights"),children:I.length?r("div",{class:"fx-pf-card fx-pf-rows",children:I.map(([b,C])=>r("div",{class:"fx-pf-row",children:[r("span",{children:b}),r("b",{children:C})]},b))}):r("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.insightsEmpty")})},"insights"),V=[!x&&E,R,j].filter(Boolean),X=[A,N].filter(Boolean),oe=b=>{if(!b)return;let C=Rl(b);if(!C)return a.onInvalidLink();o.links.includes(C)||a.onLinks([...o.links,C])};return r("div",{class:"fx-pf","data-cover":o.cover,"data-frame":o.frame,children:[r("div",{class:"fx-pf-cover"}),r("div",{class:"fx-pf-id",children:[r("button",{type:"button",class:"fx-pf-avatar",title:t("account.avatar.change"),"aria-label":t("account.avatar.change"),onClick:()=>i.current?.click(),children:[r("span",{class:"fx-pf-av",children:e.avatar?r("img",{src:e.avatar,alt:""}):r("span",{class:"fx-pf-av-fallback",children:Cl(c)})}),r("span",{class:"fx-pf-av-mask",children:r(Y,{name:"pencil",size:18})})]}),r("input",{ref:i,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:b=>{let C=b.currentTarget,L=C.files?.[0];C.value="",L&&a.onAvatar(L)}}),r("div",{class:"fx-pf-id-text",children:[r("div",{class:"fx-pf-name",children:[r(qa,{value:c,placeholder:o.username,maxLength:40,label:t("account.nickname.edit"),onSave:b=>{b&&a.onNickname(b)}}),ql[d]&&r("span",{class:`fx-tag${d==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:ql[d]})]}),r("div",{class:"fx-pf-handle",children:["@",o.username]})]}),w.length>0&&p("badges")&&r("div",{class:"fx-pf-badges",children:w.map(b=>r("span",{class:"fx-pf-badge",title:t(`profile.badge.${b.id}`),children:r(Y,{name:Ul[b.id],size:14})},b.id))})]}),r("div",{class:"fx-pf-sub",children:[r(qa,{class:"fx-pf-bio",value:o.bio,placeholder:t("profile.bioPlaceholder"),maxLength:80,label:t("profile.bio"),counter:!0,onSave:a.onBio}),r("div",{class:"fx-pf-meta",children:[o.joinedMonth&&r("span",{children:[r(Y,{name:"calendar",size:13}),t("profile.joined",{date:Ol(o.joinedMonth,n)})]}),o.links.map(b=>r("span",{children:[r(Y,{name:"link",size:13}),Ha(b)?r("a",{href:b,onClick:C=>{C.preventDefault(),Va(b)},children:Ua(b)}):r("span",{children:Ua(b)}),r("button",{type:"button",class:"fx-pf-x",title:t("profile.linkRemove"),"aria-label":t("profile.linkRemove"),onClick:()=>a.onLinks(o.links.filter(C=>C!==b)),children:r(Y,{name:"x",size:11})})]},b)),o.links.length<2&&r(qa,{value:"",placeholder:t("profile.linkAdd"),maxLength:200,label:t("profile.linkAdd"),onSave:oe},o.links.length)]})]}),x&&E,r("div",{class:"fx-pf-body","data-cols":V.length&&X.length?2:1,children:[r("div",{class:"fx-pf-main",children:V}),X.length>0&&r("div",{class:"fx-pf-side",children:X})]})]})}function Wl(){let e=Re(async()=>{let[t,n]=await Promise.all([J("/membership/my"),J("/features")]);return t.ok?{ok:!0,status:t.status,data:{membership:t.data?.membership??null,payment:!n.ok||n.data?.payment!==!1}}:t});return e.state==="loading"?r(Ae,{panels:1}):e.state==="signedOut"?null:r(dm,{membership:e.state==="ready"?e.data.membership:null,failed:e.state==="error",payment:e.state==="ready"&&e.data.payment,onRetry:e.state==="ready"?e.reload:e.retry})}function dm(e){let{t,locale:n}=ee(),o=le(),a=e.membership&&(e.membership.status===void 0||e.membership.status==="active")?e.membership:null,i=Mr(a?.tier),s=i==="Free",l=s?"free":i.toLowerCase()==="pro"?"pro":"paid",c=()=>void o.run(async()=>await bn("membership")?void 0:{error:{key:"err.openFailed"}});return r(me,{icon:"card",title:t("member.title"),desc:t("member.desc"),actions:e.payment&&!e.failed?r(G,{variant:"primary",pending:o.pending,onClick:c,children:t(s?"member.upgrade":"member.renew")}):void 0,children:[!e.failed&&r("div",{class:"fx-member fx-block",children:[r("span",{class:`fx-tier fx-tier--${l}`,children:i}),r("div",{class:"fx-member-copy",children:[r("strong",{children:s?t("member.freeName"):a?.plan?.name||i}),r("span",{class:"fx-muted",children:s?t("member.freeHint"):a?.expiresAt?t("member.expires",{date:ko(a.expiresAt,n)}):t("member.noExpiry")})]})]}),e.failed&&r("div",{class:"fx-sub",children:r(de,{tone:"warn",children:[t("member.loadFailed")," ",r("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),o.error&&r("div",{class:"fx-sub fx-sub--tight",children:r(ce,{a:o})})]})}function be(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isFinite(t)?t:null}return null}function um(e,t){let n=be(t);if(n===null||n<0)return null;if(n===0)return 0;let o=Math.max(0,be(e)??0);return Math.min(100,Math.max(0,Math.floor(o/n*100)))}var pm=15;function Bn(e,t){let n=um(e,t);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let o=Math.max(0,be(e)??0),a=n===0&&o>0&&(be(t)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:a,low:n<=pm}}function So(e,t){let n=be(t);if(n===null||n<=0)return null;let o=be(e);if(o===null)return null;let a=Math.max(0,o);if(a===0)return"0%";let i=a/n*100;if(i<.1)return"<0.1%";let s=Math.round(i*10)/10;return s<10?`${s}%`:`${Math.round(i).toLocaleString("en-US")}%`}var fm=e=>e.ok?"ok":e.status===404?"hidden":"failed";function Xl(){return r(Jl,{section:"points"})}function Kl(){return r(F,{children:[r(Wl,{}),r(Jl,{section:"quota"})]})}function Jl({section:e}){let t=Re(async()=>{let[l,c,d,f]=await Promise.all([J("/token-quota/my"),J("/credits/balance"),J("/features"),J("/invite/my-code")]);return l.ok?{ok:!0,status:l.status,data:{quota:l.data??{},balance:c.ok?be(c.data?.balance):null,balanceFailed:!c.ok,features:d.ok&&d.data&&typeof d.data=="object"?d.data:{},invite:f.ok?f.data:null,inviteState:fm(f)}}:l});if(t.state==="loading")return r(Ae,{panels:3,rows:2});if(t.state==="signedOut")return r(De,{});if(t.state==="error")return r(Oe,{error:t.error,onRetry:t.retry});let{data:n,update:o}=t,a=n.quota.background,i=n.features.redemption_codes!==!1,s=n.features.payment!==!1;return r(F,{children:[e==="quota"&&r(F,{children:[r(gm,{data:n,update:o,onFailed:t.reload}),a?.modelId?r(ym,{bg:a,update:o}):null]}),e==="points"&&r(bm,{data:n,payment:s,onRetry:t.reload}),e==="points"&&(n.inviteState!=="hidden"||i)&&r(xm,{data:n,update:o,redeemEnabled:i,onRedeemed:t.reload})]})}var Gl=e=>({dailyLimit:e.dailyLimit,dailyRemaining:e.dailyRemaining,weeklyLimit:e.weeklyLimit,weeklyRemaining:e.weeklyRemaining});function mm(e,t){if(typeof e?.showResetCardCeremony!="function")return!1;try{return e.showResetCardCeremony(t),!0}catch{return!1}}function gm(e){let{t,locale:n,ctx:o}=ee(),a=e.data.quota,i=Bn(a.dailyRemaining,a.dailyLimit),s=Bn(a.weeklyRemaining,a.weeklyLimit),l=dl(a.weeklyResetAt,n),c=Math.max(0,be(a.resetCards)??0),d=be(a.resetCardPricePoints)??100,f=le(),u=le(),[p,g]=M(null),[m,y]=M("1"),_=/^\d+$/.test(m.trim())?Number(m.trim()):NaN,E=Number.isInteger(_)&&_>=1&&_<=50,x=E?_*d:null,k=e.data.balance,R=x!==null&&k!==null&&k<x,B=()=>void f.run(async()=>{let A={daily:i,weekly:s},P=Gl(a);g(null);let I=re(),N=await go(I.accountUseResetCard?()=>I.accountUseResetCard("both"):null,()=>J("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!N.ok)return e.onFailed(),Ee(N);let V=N.data?.quota,X=be(N.data?.resetCards);return e.update(oe=>({...oe,quota:{...oe.quota,...V??{},resetCards:X??oe.quota.resetCards}})),V&&!mm(o.app,{before:P,after:Gl(V),remainingCards:X??void 0})&&g({before:A,after:{daily:Bn(V.dailyRemaining,V.dailyLimit),weekly:Bn(V.weeklyRemaining,V.weeklyLimit)},cards:X}),{success:{key:"card.used"}}}),j=()=>void u.run(async()=>{if(!E)return{error:{key:"err.invalidCount"}};let A=await J("/points/exchange-reset-cards",{method:"POST",body:{count:_,expectedPricePerCard:d}});return A.ok?(e.update(P=>({...P,quota:{...P.quota,resetCards:be(A.data?.resetCards)??P.quota.resetCards},balance:be(A.data?.newPointsBalance)??P.balance})),y("1"),{success:{key:"card.exchanged",vars:{n:be(A.data?.cardsGranted)??_}}}):(e.onFailed(),Ee(A))}),w=A=>A.unlimited?t("common.unlimited"):A.text;return r(me,{icon:"gauge",title:t("quota.ai.title"),desc:t("quota.ai.desc"),children:[r("div",{class:"fx-quota-list fx-block",children:[r(Rr,{label:t("common.today"),display:i,note:i.unlimited?null:t("quota.resetDaily")}),r(Rr,{label:t("common.thisWeek"),display:s,note:s.unlimited||!l?null:t("quota.resetWeekly",{date:l})})]}),r(Le,{label:t("card.title"),desc:t("card.desc"),children:[r("span",{class:"fx-value","data-testid":"reset-card-count",children:t("card.owned",{n:c})}),r(rn,{label:t("card.use"),confirmLabel:t("card.useConfirm"),pending:f.pending,disabled:c<=0,onConfirm:B})]}),c<=0&&!f.success&&r(_e,{children:r(de,{children:t("card.noneHint")})}),(f.error||f.success)&&r(_e,{children:[r(ce,{a:f}),f.success&&p&&r("div",{class:"fx-ceremony",role:"status",children:[r("span",{children:[t("common.today")," ",r("b",{children:w(p.before.daily)})," \u2192 ",r("b",{children:w(p.after.daily)})]}),r("span",{children:[t("common.thisWeek")," ",r("b",{children:w(p.before.weekly)})," \u2192 ",r("b",{children:w(p.after.weekly)})]}),p.cards!==null&&r("span",{class:"fx-muted",children:t("card.left",{n:p.cards})})]})]}),r(Le,{label:t("card.exchange"),desc:t("card.price",{price:ze(d,n)}),class:"fx-row--wide",children:[r("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:m,"aria-label":t("card.count"),onInput:A=>{y(A.currentTarget.value),u.clear()}}),r("span",{class:"fx-muted fx-cost",children:x!==null?t("card.cost",{cost:ze(x,n)}):t("card.countHint")}),r(rn,{label:t("card.exchangeButton"),confirmLabel:t("card.exchangeConfirm",{cost:x!==null?ze(x,n):"\u2014"}),pending:u.pending,disabled:!E||R,onConfirm:j})]}),(R||u.error||u.success)&&r(_e,{children:[R&&!u.error&&r(de,{tone:"warn",children:t("err.insufficientPoints")}),r(ce,{a:u})]})]})}function hm(e,t,n){let o=le(),[a,i]=M(null);return{checked:a??e,toggle:l=>{i(l),o.run(async()=>{let c=await t(l);if(i(null),!c.ok)return Ee(c);n(l)})},action:o}}function bm(e){let{t,locale:n}=ee(),o=le(),a=()=>void o.run(async()=>await bn("credits")?void 0:{error:{key:"err.openFailed"}});return r(me,{icon:"coins",title:t("points.title"),desc:t("points.desc"),actions:e.payment?r(G,{variant:"primary",pending:o.pending,onClick:a,children:t("points.recharge")}):void 0,children:[r(Le,{label:t("points.balance"),children:e.data.balance!==null?r("span",{class:"fx-big","data-testid":"points-balance",children:ze(e.data.balance,n)}):r("span",{class:"fx-value is-empty",children:[t("points.balanceFailed")," ",r("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),o.error&&r(_e,{children:r(ce,{a:o})})]})}var vm=[5,10,20];function ym(e){let{t}=ee(),{bg:n}=e,o=Bn(n.dailyRemaining,n.dailyLimit),a=Bn(n.weeklyRemaining,n.weeklyLimit),i=le(),[s,l]=M(null),c=hm(!!n.autoMain,f=>{let u=re();return go(u.accountBgAutoMain?()=>u.accountBgAutoMain(f):null,()=>J("/token-quota/background/auto-main",{method:"POST",body:{enabled:f}}))},f=>e.update(u=>({...u,quota:{...u.quota,background:{...u.quota.background??{},autoMain:f}}}))),d=f=>{l(f),i.run(async()=>{let u=re(),p=await go(u.accountBgConvert?()=>u.accountBgConvert(f):null,()=>J("/token-quota/background/convert",{method:"POST",body:{percent:f}}));if(l(null),!p.ok)return Ee(p);let g=p.data?.quota;return g&&e.update(y=>({...y,quota:{...y.quota,...g,resetCards:y.quota.resetCards,resetCardPricePoints:y.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:f}}}})};return r(me,{icon:"clock",title:t("bg.title"),desc:t("bg.desc"),children:[r("div",{class:"fx-quota-list fx-block",children:[r(Rr,{label:t("common.today"),display:o}),r(Rr,{label:t("common.thisWeek"),display:a})]}),r(Le,{label:t("bg.autoMain"),desc:t("bg.autoMainDesc"),children:r(Mt,{checked:c.checked,disabled:c.action.pending,label:t("bg.autoMain"),onChange:c.toggle})}),r(Le,{label:t("bg.convert"),desc:t("bg.convertDesc"),class:"fx-row--wide",children:vm.map(f=>r(rn,{label:`${f}%`,confirmLabel:t("bg.convertConfirm",{pct:f}),pending:i.pending&&s===f,disabled:i.pending&&s!==f,onConfirm:()=>d(f)},f))}),(i.error||i.success||c.action.error)&&r(_e,{children:[r(ce,{a:c.action}),r(ce,{a:i})]})]})}function xm(e){let{t,locale:n}=ee(),{invite:o,inviteState:a}=e.data,[i,s]=M(null),[l,c]=M(""),[d,f]=M(""),u=le(),p=le(),g=le();Q(()=>{let x=!0;return re().authStatus?.().then(k=>{x&&s(k?.cloudUrl?k.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{x=!1}},[]);let m=async()=>{let x=await J("/invite/my-code");return e.update(k=>({...k,invite:x.ok?x.data:k.invite,inviteState:x.ok?"ok":x.status===404?"hidden":k.inviteState})),x},y=()=>void u.run(async()=>{let x=l.trim();if(!x)return{error:{key:"err.inviteEmpty"}};let k=await J("/invite/claim",{method:"POST",body:{code:x}});return k.ok?(c(""),m(),{success:{key:"invite.claimed"}}):Ee(k)}),_=()=>void p.run(async()=>{let x=d.trim();if(!x)return{error:{key:"err.redeemEmpty"}};let k=await J("/redemption/redeem",{method:"POST",body:{code:x}});if(!k.ok)return Ee(k);f(""),e.onRedeemed();let R=[],B=be(k.data?.creditsAmount);B&&R.push(t("redeem.gotPoints",{n:ze(B,n)})),k.data?.membershipPlanId&&R.push(t("redeem.gotMembership"));for(let j of Array.isArray(k.data?.items)?k.data.items:[]){let w=(n==="zh"?j?.label?.zh:j?.label?.en)||j?.label?.zh||j?.label?.en||j?.kind;w&&R.push(w)}return{success:R.length?{key:"redeem.successWith",vars:{what:R.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),E=o?.code&&i?`${i}/auth?invite=${encodeURIComponent(o.code)}`:"";return r(me,{icon:"gift",title:t("invite.title"),desc:t("invite.desc"),children:[a==="ok"&&o?.code&&r(Le,{label:t("invite.myCode"),desc:t("invite.count",{n:ze(be(o.invitedCount)??0,n)}),class:"fx-row--wide",children:[r("code",{class:"fx-code","data-testid":"invite-code",children:o.code}),r(qt,{text:o.code,label:t("invite.copyCode")}),r(qt,{text:E,label:t("invite.copyLink"),disabled:!E})]}),a==="failed"&&r(_e,{children:r(de,{tone:"warn",children:[t("invite.loadFailed")," ",r("button",{type:"button",class:"fx-link",disabled:g.pending,onClick:()=>void g.run(async()=>{await m()}),children:t("common.retry")})]})}),a==="ok"&&o?.claim?.eligible&&r(Le,{label:t("invite.claim"),desc:t("invite.claimDesc"),class:"fx-row--wide",children:r("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),y()},children:[r("input",{class:"fx-input",value:l,placeholder:t("invite.claimPlaceholder"),"aria-label":t("invite.claim"),onInput:x=>c(x.currentTarget.value)}),r(G,{submit:!0,pending:u.pending,children:t("invite.claimSubmit")})]})}),(u.error||u.success)&&r(_e,{children:r(ce,{a:u})}),e.redeemEnabled&&r(Le,{label:t("redeem.title"),desc:t("redeem.desc"),class:"fx-row--wide",children:r("form",{class:"fx-inline",onSubmit:x=>{x.preventDefault(),_()},children:[r("input",{class:"fx-input",value:d,placeholder:t("redeem.placeholder"),"aria-label":t("redeem.title"),onInput:x=>f(x.currentTarget.value)}),r(G,{submit:!0,pending:p.pending,children:t("redeem.submit")})]})}),(p.error||p.success)&&r(_e,{children:r(ce,{a:p})})]})}function km(e){let t=[],n,o=new Map;for(let a of e)if(a.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},t.push(n)),n.items.push(a);else if(a.itemType==="custom_item"&&a.itemDefinition?.stackable){let i=`${a.productId||a.id}:${JSON.stringify(a.itemDefinition)}`,s=o.get(i);s||(s={id:`custom:${i}`,items:[],resetCard:!1},o.set(i,s),t.push(s)),s.items.push(a)}else t.push({id:a.id,items:[a],resetCard:!1});return t}function Yl(){let e=Re(()=>J("/shop/inventory"));return e.state==="loading"?r(Ae,{panels:1,rows:4}):e.state==="signedOut"?r(De,{}):e.state==="error"?r(Oe,{error:e.error,onRetry:e.retry}):r(wm,{items:e.data??[],onRefresh:e.reload,onUsed:t=>{e.update(n=>n.filter(o=>o.id!==t.itemId)),e.reload()}})}function wm(e){let{t,locale:n,goTo:o}=ee(),[a,i]=M(null),[s,l]=M(null),c=Ue(),d=km(e.items),f=d.find(m=>m.id===a),u=Math.max(24,Math.ceil(d.length/6)*6)-d.length,p=m=>m.resetCard?t("card.title"):m.items[0].itemDefinition?.name[n]||m.items[0].displayName||t("backpack.item"),g=m=>{c.current&&(l(m),e.onUsed(m))};return r(me,{icon:"backpack",title:t("page.backpack"),desc:t("backpack.desc"),actions:r(G,{onClick:e.onRefresh,children:[r(Y,{name:"refresh",size:13}),t("backpack.refresh")]}),children:r("div",{class:"fx-backpack fx-block",children:[r("div",{class:"fx-backpack-summary",children:[r("span",{children:t("backpack.total",{n:ze(e.items.length,n)})}),o&&r("button",{class:"fx-link",type:"button",onClick:()=>o("quota"),children:t("backpack.getCards")})]}),s&&r("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[r(Y,{name:"gift",size:20}),r("div",{children:[r("strong",{children:s.message[n]}),r("div",{children:s.effects.map(m=>Zl(m,t,n)).join(" \xB7 ")})]})]},s.itemId),r("div",{class:"fx-backpack-layout",children:[r("div",{children:[r("div",{class:"fx-backpack-grid",role:"group","aria-label":t("backpack.grid"),children:[d.map(m=>{let y=p(m);return r("button",{type:"button",class:`fx-backpack-slot${m.resetCard?" is-card":""}`,"data-rarity":m.items[0].itemDefinition?.rarity,"aria-pressed":f?.id===m.id,"aria-label":t("backpack.slot",{name:y,n:m.items.length}),title:y,onClick:()=>i(m.id),children:[r("span",{class:"fx-backpack-icon",children:m.items[0].itemDefinition?.icon?r("span",{class:"fx-backpack-emoji",children:m.items[0].itemDefinition.icon}):r(Y,{name:m.resetCard?"card":"gift",size:30})}),r("span",{class:"fx-backpack-name",children:y}),(m.resetCard||m.items[0].itemDefinition?.stackable)&&r("span",{class:"fx-backpack-count",children:["\xD7",ze(m.items.length,n)]})]},m.id)}),Array.from({length:u},(m,y)=>r("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${y}`))]}),!d.length&&r("p",{class:"fx-backpack-empty",children:t("backpack.empty")})]}),f?r(zm,{slot:f,name:p(f),onUsed:g},`${f.id}:${f.items[0].id}`):r("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[r(Y,{name:"backpack",size:30}),r(de,{children:t(d.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function Zl(e,t,n){return e.type==="points"?t("backpack.effect.points",{n:ze(e.amount,n)}):e.type==="reset_card"?t("backpack.effect.cards",{n:ze(e.count,n)}):t("backpack.effect.quota")}function zm(e){let{t,locale:n,goTo:o}=ee(),a=e.slot.items[0],[i,s]=M(null),l=le(),c=le(),[d,f]=M(!1),u=a.itemDefinition,p=Ue(),g=a.source==="points"?t("backpack.source.points"):a.source==="admin"?t("backpack.source.admin"):a.source==="reward"?t("backpack.source.reward"):t("backpack.source.other"),m=()=>void l.run(async()=>{let _=await J(`/shop/inventory/${encodeURIComponent(a.id)}`);if(p.current){if(!_.ok)return Ee(_);s(_.data)}}),y=()=>void c.run(async()=>{let _=await J(`/shop/inventory/${encodeURIComponent(a.id)}/use`,{method:"POST"});if(!_.ok)return Ee(_);e.onUsed(_.data)});return r("section",{class:"fx-backpack-detail","aria-label":t("backpack.details"),children:[r("span",{class:`fx-backpack-detail-icon${e.slot.resetCard?" is-card":""}`,children:u?.icon?r("span",{class:"fx-backpack-emoji",children:u.icon}):r(Y,{name:e.slot.resetCard?"card":"gift",size:32})}),r("h3",{children:e.name}),r("span",{class:"fx-tag",children:[t(e.slot.resetCard||u?.use?"backpack.consumable":u?"backpack.collectible":"backpack.voucher"),u&&` \xB7 ${t(`backpack.rarity.${u.rarity}`)}`]}),r("dl",{class:"fx-backpack-facts",children:[r("div",{children:[r("dt",{children:t("backpack.quantity")}),r("dd",{children:ze(e.slot.items.length,n)})]}),r("div",{children:[r("dt",{children:t("backpack.acquired")}),r("dd",{children:Ut(a.acquiredAt,n)})]}),!e.slot.resetCard&&r("div",{children:[r("dt",{children:t("backpack.source")}),r("dd",{children:g})]})]}),u?r(F,{children:[u.description&&r(de,{children:u.description[n]}),u.use&&r(F,{children:[r("div",{class:"fx-backpack-effects",children:u.use.effects.map((_,E)=>r("div",{children:Zl(_,t,n)},E))}),d?r(F,{children:[r(de,{children:t("backpack.consumeConfirm")}),r("div",{class:"fx-backpack-use-actions",children:[r(G,{variant:"primary",pending:c.pending,onClick:y,children:t("backpack.confirmUse")}),r(G,{disabled:c.pending,onClick:()=>f(!1),children:t("common.cancel")})]})]}):r(G,{variant:"primary",onClick:()=>f(!0),children:u.use.label?.[n]||t("backpack.use")}),r(ce,{a:c,captchaSection:"backpack"})]})]}):e.slot.resetCard?r(F,{children:[r(de,{children:t("card.desc")}),o&&r(G,{variant:"primary",onClick:()=>o("quota"),children:t("backpack.manageCards")})]}):i?r("div",{class:"fx-backpack-reveal",children:[i.codeName&&r("div",{class:"fx-muted",children:i.codeName}),i.key?r(F,{children:[r("code",{children:i.key}),r(qt,{text:i.key,label:t("backpack.copyKey")})]}):r(de,{children:t("backpack.noKey")})]}):r(G,{pending:l.pending,onClick:m,children:[r(Y,{name:"key",size:14}),t("backpack.reveal")]}),r(ce,{a:l,captchaSection:"backpack"})]})}var _m=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,Sm=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Ql=(e,t)=>e==="phone"?_m.test(t):Sm.test(t),Lr=(e,t)=>e==="phone"?yo(t):xo(t);function tc(){let e=Re(()=>J("/auth/me"));if(e.state==="loading")return r(Ae,{panels:3,rows:2});if(e.state==="signedOut")return r(De,{});if(e.state==="error")return r(Oe,{error:e.error,onRetry:e.retry});let t=e.data;return r(F,{children:[r(Cm,{me:t,onBound:(n,o)=>e.update(a=>({...a,[n]:o}))}),r(Em,{me:t}),r(Im,{}),r(Rm,{me:t})]})}function Wa(){let e=cl(),t=le();return{cd:e,a:t,send:(a,i,s)=>t.run(async()=>{let l=await J("/auth/send-code",{method:"POST",body:{target:a,type:i,purpose:s}});return l.ok?(e.start(60),{success:{key:"sec.codeSent"}}):Ee(l)}),reset:()=>{e.stop(),t.clear()}}}function Cm(e){let{t}=ee(),[n,o]=M(null),[a,i]=M(null);return r(me,{icon:"key",title:t("sec.methods.title"),desc:t("sec.methods.desc"),children:["phone","email"].map(s=>{let l=e.me[s];return r(F,{children:[r(Le,{label:t(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?Lr(s,l):t("account.contact.unbound"),children:r(G,{onClick:()=>{i(null),o(n===s?null:s)},children:t(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&r(Tm,{kind:s,current:l??null,onDone:c=>{e.onBound(s,c),o(null),i(s)}}),a===s&&n!==s&&r(_e,{children:r("div",{class:"fx-msg is-ok",role:"status",children:t(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function Tm(e){let{t}=ee(),{kind:n}=e,[o,a]=M(""),[i,s]=M(""),l=Wa(),c=le(),d=o.trim(),f=n==="phone"?"err.phoneInvalid":"err.emailInvalid",u=()=>{if(!Ql(n,d)){l.a.run(async()=>({error:{key:f}}));return}l.send(d,n,"bind")},p=()=>void c.run(async()=>{if(!Ql(n,d))return{error:{key:f}};if(!i.trim())return{error:{key:"err.codeRequired"}};let g=n==="phone"?{phone:d,verification_code:i.trim()}:{email:d,verification_code:i.trim()},m=await J(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:g});if(!m.ok)return Ee(m);e.onDone(d)});return r(_e,{class:"fx-form",children:[r("label",{class:"fx-field",children:[r("span",{children:e.current?t(n==="phone"?"sec.newPhone":"sec.newEmail"):t(n==="phone"?"sec.phone":"sec.email")}),r("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:o,autoComplete:"off",placeholder:t(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:g=>a(g.currentTarget.value)})]}),r(Ga,{code:i,setCode:s,sender:l,onSend:u}),r("div",{class:"fx-inline",children:r(G,{variant:"primary",pending:c.pending,onClick:p,children:t("sec.bindSubmit")})}),r(ce,{a:c})]})}function Ga(e){let{t}=ee(),{cd:n,a:o}=e.sender;return r("div",{class:"fx-field",children:[r("span",{children:e.label??t("sec.code")}),r("div",{class:"fx-inline",children:[r("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:e.code,placeholder:t("sec.codePlaceholder"),"aria-label":e.label??t("sec.code"),onInput:a=>e.setCode(a.currentTarget.value)}),r(G,{pending:o.pending,disabled:n.left>0||e.disabled,onClick:e.onSend,children:n.left>0?t("sec.resendIn",{s:n.left}):t("sec.sendCode")})]}),r(ce,{a:o})]})}function Am(e){let{t}=ee(),n=ol(e.value),o=e.value.length>0,a=[[n.length,t("pw.req.length",{min:8,max:64})],[n.lower,t("pw.req.lower")],[n.upper,t("pw.req.upper")],[n.special,t("pw.req.special")],[n.space,t("pw.req.space")]];return r("ul",{class:"fx-rules","aria-label":t("pw.rulesLabel"),children:a.map(([i,s])=>r("li",{class:i?"is-ok":o?"is-bad":"",children:[i?r(Y,{name:"check",size:11}):o?r(Y,{name:"x",size:11}):r("span",{class:"fx-rule-dot","aria-hidden":"true"}),r("span",{children:s})]},s))})}function nc(e,t){let n=rl(e);return n.ok?e!==t?{error:{key:"pw.mismatch"}}:null:{error:{key:Aa[n.rule]}}}function Em(e){let{t}=ee(),n=["phone","email"].filter(l=>!!e.me[l]),[o,a]=M("current"),[i,s]=M(!1);return r(me,{icon:"shield",title:t("pw.title"),desc:t("pw.desc",{min:8,max:64}),actions:r(G,{onClick:()=>s(!i),children:t(i?"common.cancel":"pw.change")}),children:i&&r(_e,{class:"fx-form",children:[r(It,{label:t("pw.modeLabel"),value:o,onChange:a,options:[{value:"current",label:t("pw.mode.current")},{value:"code",label:t("pw.mode.code")}]}),o==="current"?r(Pm,{onDone:()=>s(!1)}):n.length?r(Mm,{me:e.me,targets:n,onDone:()=>s(!1)}):r(de,{children:t("pw.codeNeedsContact")})]})})}function rc(e){let{t}=ee();return r(F,{children:[r("label",{class:"fx-field",children:[r("span",{children:t("pw.new")}),r("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.pw,maxLength:72,onInput:n=>e.setPw(n.currentTarget.value)})]}),r(Am,{value:e.pw}),r("label",{class:"fx-field",children:[r("span",{children:t("pw.confirm")}),r("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.confirm,onInput:n=>e.setConfirm(n.currentTarget.value)})]})]})}function Pm(e){let{t}=ee(),[n,o]=M(""),[a,i]=M(""),[s,l]=M(""),c=le(),[d,f]=M(!1),u=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let p=nc(a,s);if(p)return p;let g=await J("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:a}});return g.ok?(o(""),i(""),l(""),f(!0),{success:{key:"pw.changed"}}):g.status===404?{error:{key:"pw.noPasswordYet"}}:Ee(g)});return r(F,{children:[r("label",{class:"fx-field",children:[r("span",{children:t("pw.current")}),r("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:p=>o(p.currentTarget.value)})]}),r(rc,{pw:a,setPw:i,confirm:s,setConfirm:l}),r("div",{class:"fx-inline",children:[r(G,{variant:"primary",pending:c.pending,onClick:u,children:t("pw.submit")}),d&&r(G,{onClick:e.onDone,children:t("common.done")})]}),r(ce,{a:c})]})}function Mm(e){let{t}=ee(),[n,o]=M(e.targets[0]),[a,i]=M(""),[s,l]=M(""),[c,d]=M(""),f=Wa(),u=le(),[p,g]=M(!1),m=e.me[n]||"",y=()=>void u.run(async()=>{if(!a.trim())return{error:{key:"err.codeRequired"}};let _=nc(s,c);if(_)return _;let E=n==="phone"?{phone:m,code:a.trim(),newPassword:s}:{email:m,code:a.trim(),newPassword:s},x=await J("/auth/reset-password",{method:"POST",body:E});return x.ok?(i(""),l(""),d(""),g(!0),{success:{key:"pw.changed"}}):Ee(x)});return r(F,{children:[e.targets.length>1?r(It,{label:t("pw.via"),value:n,onChange:_=>{o(_),i(""),f.reset()},options:e.targets.map(_=>({value:_,label:Lr(_,e.me[_])}))}):r(de,{children:t("pw.codeTo",{target:Lr(n,m)})}),r(Ga,{code:a,setCode:i,sender:f,onSend:()=>void f.send(m,n,"reset_password")}),r(rc,{pw:s,setPw:l,confirm:c,setConfirm:d}),r("div",{class:"fx-inline",children:[r(G,{variant:"primary",pending:u.pending,onClick:y,children:t("pw.submitReset")}),p&&r(G,{onClick:e.onDone,children:t("common.done")})]}),r(ce,{a:u})]})}function Im(){let{t:e}=ee(),t=le(),n=()=>void t.run(async()=>{let o=await J("/auth/logout-all",{method:"POST"});if(!o.ok)return Ee(o);try{await re().forsionLogout?.()}catch(a){return{error:{raw:Et(a)}}}return{success:{key:"sec.logoutAllDone"}}});return r(me,{icon:"laptop",title:e("sec.devices.title"),desc:e("sec.devices.desc"),children:[r(Le,{label:e("sec.logoutAll"),desc:e("sec.logoutAllDesc"),children:r(rn,{label:e("sec.logoutAll"),confirmLabel:e("sec.logoutAllConfirm"),pending:t.pending,onConfirm:n})}),(t.error||t.success)&&r(_e,{children:r(ce,{a:t})})]})}function Rm(e){let{t}=ee(),n=["phone","email"].filter(E=>!!e.me[E]),[o,a]=M(!1),[i,s]=M(n.length?"code":"password"),[l,c]=M(n[0]??null),[d,f]=M(""),[u,p]=M(""),g=Wa(),m=le(),y=l&&e.me[l]||"",_=()=>void m.run(async()=>{if(i==="code"&&!d.trim())return{error:{key:"err.codeRequired"}};if(i==="password"&&!u)return{error:{key:"pw.currentRequired"}};let E=await J("/auth/delete-account",{method:"POST",body:i==="code"?{verification_code:d.trim()}:{password:u}});if(!E.ok)return Ee(E);try{await re().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return r(me,{icon:"alert",danger:!0,title:t("del.title"),desc:t("del.desc"),actions:r(G,{variant:"danger",onClick:()=>{a(!o),m.clear()},children:t(o?"common.cancel":"del.start")}),children:o&&r(_e,{class:"fx-form",children:[r(de,{tone:"error",children:t("del.warn")}),n.length>0&&r(It,{label:t("del.methodLabel"),value:i,onChange:s,options:[{value:"code",label:t("del.byCode")},{value:"password",label:t("del.byPassword")}]}),i==="code"&&l?r(F,{children:[n.length>1&&r(It,{label:t("pw.via"),value:l,onChange:E=>{c(E),f(""),g.reset()},options:n.map(E=>({value:E,label:Lr(E,e.me[E])}))}),r(Ga,{code:d,setCode:f,sender:g,label:t("del.codeLabel",{target:Lr(l,y)}),onSend:()=>void g.send(y,l,"delete_account")})]}):r("label",{class:"fx-field",children:[r("span",{children:t("del.passwordLabel")}),r("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:u,onInput:E=>p(E.currentTarget.value)})]}),r("div",{class:"fx-inline",children:r(rn,{variant:"danger",label:t("del.submit"),confirmLabel:t("del.confirm"),pending:m.pending,onConfirm:_})}),r(ce,{a:m})]})})}var ac=20;function ic(){let e=Re(async()=>{let[t,n]=await Promise.all([J("/token-quota/my"),J(`/token-quota/my/logs?limit=${ac}&offset=0`)]);if(!t.ok)return t;let o=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:t.status,data:{dailyLimit:be(t.data?.dailyLimit),logs:o,total:n.ok?be(n.data?.total)??o?.length??0:0,logsFail:n.ok?null:n}}});return e.state==="loading"?r(Ae,{panels:3,rows:2}):e.state==="signedOut"?r(De,{}):e.state==="error"?r(Oe,{error:e.error,onRetry:e.retry}):r(F,{children:[r(Lm,{dailyLimit:e.data.dailyLimit}),r(Nm,{base:e.data,onRetry:e.reload})]})}function Lm(e){let{t,locale:n}=ee(),[o,a]=M(30),[i,s]=M({state:"loading"}),[l,c]=M(!1),[d,f]=M(0),u=te(0);Q(()=>{let k=++u.current;return c(!0),J(`/usage/stats?days=${o}`).then(R=>{k===u.current&&(c(!1),s(R.ok?{state:"ready",data:R.data??{}}:{state:"error",fail:R}))}),()=>{u.current++}},[o,d]);let p=e.dailyLimit!==null&&e.dailyLimit<0?"usage.unlimitedNote":So(1,e.dailyLimit)===null?"usage.noLimitNote":null,g=k=>So(k,e.dailyLimit)??"\u2014",m=r(It,{label:t("usage.range"),value:o,onChange:a,options:[{value:7,label:t("usage.days",{n:7})},{value:30,label:t("usage.days",{n:30})},{value:90,label:t("usage.days",{n:90})}]}),y=i.state==="ready"?i.data:null,_=(y?.byModel??[]).filter(Boolean),E=(y?.byProject??[]).filter(Boolean),x=be(y?.successRate);return r(F,{children:[r(me,{icon:"chart",title:t("usage.overview.title"),desc:t("usage.overview.desc"),actions:m,children:[i.state==="error"?r("div",{class:"fx-sub",children:r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:bt(dt(i.fail),t)}),r("button",{type:"button",class:"fx-link",onClick:()=>f(k=>k+1),children:t("common.retry")})]})}):r("div",{class:`fx-stats fx-block${l&&y?" is-refreshing":""}`,"aria-busy":l||void 0,children:[r(Xa,{label:t("usage.requests"),value:y?ze(be(y.totalRequests)??0,n):null,testId:"usage-requests"}),r(Xa,{label:t("usage.successRate"),value:y?x===null?"\u2014":`${x.toFixed(1)}%`:null}),r(Xa,{label:t("usage.consumption"),value:y?g(y.totalPointsCost):null,sub:t("usage.ofToday"),testId:"usage-consumption"})]}),p&&r("div",{class:"fx-sub fx-sub--tight",children:r(de,{children:t(p)})})]}),i.state!=="error"&&r(F,{children:[r(me,{icon:"gauge",title:t("usage.byModel.title"),desc:t("usage.byModel.desc"),children:r(oc,{loading:!y,empty:t("usage.empty"),head:[t("usage.col.model"),t("usage.col.requests"),t("usage.col.consumption")],rows:_.map(k=>[k.modelName||k.modelId||"\u2014",ze(be(k.count)??0,n),g(k.pointsCost)])})}),r(me,{icon:"laptop",title:t("usage.byApp.title"),desc:t("usage.byApp.desc"),children:r(oc,{loading:!y,empty:t("usage.empty"),head:[t("usage.col.app"),t("usage.col.requests"),t("usage.col.consumption")],rows:E.map(k=>[sc(k.projectSource,t("usage.appUnknown")),ze(be(k.count)??0,n),g(k.pointsCost)])})})]})]})}var Dm={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},sc=(e,t)=>!e||e==="unknown"?t:Dm[e]??e;function Xa(e){return r("div",{class:"fx-stat",children:[r("span",{class:"fx-stat-label",children:e.label}),e.value===null?r("span",{class:"fx-skel fx-skel--stat"}):r("strong",{class:"fx-stat-value","data-testid":e.testId,children:e.value}),e.sub&&r("span",{class:"fx-stat-sub",children:e.sub})]})}function oc(e){return e.loading?r("div",{class:"fx-sub",children:[r("span",{class:"fx-skel fx-skel--row"}),r("span",{class:"fx-skel fx-skel--row"})]}):e.rows.length?r("div",{class:"fx-table-wrap fx-block",children:r("table",{class:"fx-table",children:[r("thead",{children:r("tr",{children:e.head.map((t,n)=>r("th",{class:n?"is-num":"",children:t},n))})}),r("tbody",{children:e.rows.map((t,n)=>r("tr",{children:t.map((o,a)=>r("td",{class:a?"is-num":"",children:o},a))},n))})]})}):r(ot,{children:e.empty})}function Nm(e){let{t,locale:n}=ee(),o=Ue(),[a,i]=M(e.base.logs??[]),[s,l]=M(e.base.total),c=le();Q(()=>{i(e.base.logs??[]),l(e.base.total)},[e.base]);let d=()=>void c.run(async()=>{let u=await J(`/token-quota/my/logs?limit=${ac}&offset=${a.length}`);if(!u.ok)return{error:dt(u)};let p=Array.isArray(u.data?.logs)?u.data.logs:[];o.current&&(i(g=>[...g,...p]),l(g=>p.length?be(u.data?.total)??g:a.length))}),f=e.base.dailyLimit;return r(me,{icon:"clock",title:t("usage.recent.title"),desc:t("usage.recent.desc"),children:[e.base.logsFail?r("div",{class:"fx-sub",children:r("div",{class:"fx-msg is-error",role:"alert",children:[r("span",{children:bt(dt(e.base.logsFail),t)}),r("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}):a.length===0?r(ot,{children:t("usage.recentEmpty")}):r("div",{class:"fx-list fx-block",role:"list",children:a.map((u,p)=>r("div",{class:"fx-list-row",role:"listitem",children:[r("span",{class:"fx-list-main",children:[r("strong",{children:[u.modelName||u.modelId||"\u2014",u.success===!1&&r("span",{class:"fx-tag fx-tag--danger",children:t("usage.failed")})]}),r("small",{children:[Ut(u.createdAt,n),sc(u.projectSource,t("usage.appUnknown"))].join(" \xB7 ")})]}),r("span",{class:"fx-value",children:So(u.pointsCost,f)??"\u2014"})]},u.id??p))}),a.length>0&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:t("usage.shown",{shown:ze(a.length,n),total:ze(Math.max(s,a.length),n)})}),a.length<s&&r(G,{pending:c.pending,onClick:d,children:t("common.loadMore")})]}),c.error&&r("div",{class:"fx-sub fx-sub--tight",children:r(ce,{a:c})})]})}var Om=["plugin","amadeus-plugin","skill","agent","space","theme"],Fm=["github","npm","zip"],$m=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale","market_requirements_invalid","market_requirements_mismatch"]),cc=e=>`sub.type.${e.replace("-","_")}`,lc=e=>e==="approved"?"sub.approved":e==="rejected"?"sub.rejected":"sub.pending";function Bm({target:e,onDone:t,onCancel:n}){let o=Pt(),a=fo(),i=Ue(),s=le(),[l,c]=M("github"),[d,f]=M({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",version:"",readme:"",description:e?.description||"",tags:(e?.tags||[]).join(", "),minAppVersion:e?.minAppVersion||"",maxAppVersion:e?.maxAppVersion||"",platforms:(e?.platforms||[]).join(", ")}),[u,p]=M(new Set),g=te(null),m=te(null);Q(()=>{m.current?.scrollIntoView({block:"start"}),m.current?.querySelector("input")?.focus({preventScroll:!0})},[]);let y=!!e||l==="zip",_=(k,R)=>{f(B=>({...B,[k]:R})),p(B=>new Set([...B,k])),s.clear()},E=()=>void s.run(async()=>{if(!e&&!d.name.trim())return{error:{key:"sub.errName"}};if(!y&&!(l==="github"?d.githubRepoUrl:d.npmPackage).trim())return{error:{key:"sub.errSource"}};let k=g.current?.files?.[0];if(y&&!k)return{error:{key:"sub.errZip"}};if(k&&k.size>50*1024*1024)return{error:{key:"sub.errLarge"}};if(y&&!d.version.trim())return{error:{key:"sub.errVersion"}};let R=re().cloudInvoke;if(!R)return{error:{key:"err.unavailable"}};let B=e?{summary:d.summary.trim(),version:d.version.trim(),readme:d.readme}:{type:d.type,source:l,name:d.name.trim(),summary:d.summary.trim(),...l==="github"?{githubRepoUrl:d.githubRepoUrl.trim()}:l==="npm"?{npmPackage:d.npmPackage.trim()}:{version:d.version.trim(),readme:d.readme}},j=Object.fromEntries(["description","tags","minAppVersion","maxAppVersion","platforms"].filter(P=>!e||u.has(P)).map(P=>[P,d[P].trim()])),w=y&&k?new Uint8Array(await k.arrayBuffer()):null;if(!i.current)return;let A=mo(await R("cloud:marketSubmit",{...e?{id:e.id}:{},fields:{...B,...j},...w&&k?{zip:{name:k.name,data:w}}:{}}));if(i.current){if(!A.ok)return A.status===401&&re().authStatus?.().catch(()=>{}),$m.has(A.code||"")?{error:{key:`sub.err.${A.code}`}}:Ee(A);t()}}),x=(k,R,B="")=>r("label",{class:"fx-sub-field",for:`${a}-${k}`,children:[r("span",{children:R}),r("input",{id:`${a}-${k}`,value:d[k],placeholder:B,maxLength:k==="summary"?2e3:500,onInput:j=>_(k,j.currentTarget.value)})]});return r(me,{title:e?o("sub.updateTitle",{name:e.name}):o("sub.new"),children:r("form",{ref:m,class:"fx-sub-form",onSubmit:k=>{k.preventDefault(),E()},children:[r("fieldset",{disabled:s.pending,children:[!e&&r(F,{children:[r("div",{class:"fx-sub-columns",children:[r("label",{class:"fx-sub-field",for:`${a}-type`,children:[r("span",{id:`${a}-type-label`,children:o("sub.type")}),r("select",{"aria-labelledby":`${a}-type-label`,id:`${a}-type`,value:d.type,onChange:k=>_("type",k.currentTarget.value),children:Om.map(k=>r("option",{value:k,children:o(cc(k))},k))})]}),r("label",{class:"fx-sub-field",for:`${a}-source`,children:[r("span",{id:`${a}-source-label`,children:o("sub.source")}),r("select",{"aria-labelledby":`${a}-source-label`,id:`${a}-source`,value:l,onChange:k=>{c(k.currentTarget.value),s.clear()},children:Fm.map(k=>r("option",{value:k,children:k==="github"?"GitHub":k==="npm"?"npm":"ZIP"},k))})]})]}),x("name",o("sub.name"))]}),r(de,{children:e?`${o("sub.identity")}: ${e.id}`:o("sub.identityHint")}),x("summary",o("sub.summary"),e?o("sub.keep"):""),r("label",{class:"fx-sub-field",for:`${a}-description`,children:[r("span",{children:o("sub.description")}),r("textarea",{id:`${a}-description`,value:d.description,rows:3,maxLength:2e5,onInput:k=>_("description",k.currentTarget.value)})]}),x("tags",o("sub.tags"),o("sub.tagsHint")),r("div",{class:"fx-sub-columns",children:[x("minAppVersion",o("sub.minAppVersion"),"2.13.0"),x("maxAppVersion",o("sub.maxAppVersion"),o("sub.optional"))]}),x("platforms",o("sub.platforms"),"desktop, android, ios, web"),r(de,{children:o("sub.requirementsHint")}),y?r(F,{children:[r("label",{class:"fx-sub-field",for:`${a}-zip`,children:[r("span",{id:`${a}-zip-label`,children:o("sub.zip")}),r("input",{"aria-labelledby":`${a}-zip-label`,id:`${a}-zip`,type:"file",accept:".zip,application/zip",ref:g}),r("small",{children:o("sub.zipHint")})]}),x("version",o("sub.version"),e?.version?`> ${e.version}`:"1.0.0"),e&&r(de,{children:o("sub.versionHint")}),r("label",{class:"fx-sub-field",for:`${a}-readme`,children:[r("span",{children:o("sub.readme")}),r("textarea",{id:`${a}-readme`,value:d.readme,rows:5,maxLength:2e5,placeholder:e?o("sub.keep"):"",onInput:k=>_("readme",k.currentTarget.value)})]})]}):r(F,{children:[l==="github"?x("githubRepoUrl",o("sub.repo"),"https://github.com/owner/repo"):x("npmPackage",o("sub.npm"),"@scope/plugin-name"),r(de,{children:o(l==="github"?"sub.repoHint":"sub.npmHint")})]}),r(de,{children:o("sub.reviewHint")})]}),r("div",{class:"fx-sub-actions",children:[r(G,{variant:"primary",pending:s.pending,submit:!0,children:o("sub.submit")}),r(G,{disabled:s.pending,onClick:n,children:o("common.cancel")})]}),r(ce,{a:s,captchaSection:"submission"})]})})}function Um({items:e,reload:t}){let n=Pt(),o=fo(),[a,i]=M("all"),[s,l]=M(null),[c,d]=M(null),f=p=>{d(null),l(p)},u=e.filter(p=>a==="all"||(a==="pending"?p.status==="pending"||!!p.pendingUpdate:p.status===a));return r(F,{children:[s&&r(Bm,{target:s==="new"?null:s,onCancel:()=>l(null),onDone:()=>{d(s==="new"?"sub.submitted":"sub.updated"),l(null),t()}},s==="new"?"new":s.id),r(me,{title:n("sub.mine"),desc:n("sub.desc"),actions:r(F,{children:[r(G,{variant:"primary",disabled:!!s,onClick:()=>f("new"),children:n("sub.new")}),r(G,{disabled:!!s,onClick:t,children:n("sub.refresh")})]}),children:[c&&r("p",{class:"fx-msg is-ok fx-sub-result",role:"status",children:n(c)}),!!e.length&&r("div",{class:"fx-sub-filter",children:[r("label",{for:o,children:n("sub.filter")}),r("select",{id:o,value:a,onChange:p=>i(p.currentTarget.value),children:[r("option",{value:"all",children:n("sub.all")}),["pending","approved","rejected"].map(p=>r("option",{value:p,children:n(lc(p))},p))]})]}),u.length?u.map(p=>r("article",{class:"fx-sub-item","data-submission-id":p.id,children:[r("div",{class:"fx-sub-item-head",children:[r("strong",{children:p.name}),r("span",{class:`fx-tag ${p.status==="approved"?"fx-status--resolved":p.status==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:n(lc(p.status))})]}),r("div",{class:"fx-sub-meta",children:[r("span",{children:p.id}),r("span",{children:n(cc(p.type))}),r("span",{children:p.source==="github"?"GitHub":p.source==="npm"?"npm":"ZIP"}),p.version&&r("span",{children:["v",p.version]}),r("span",{children:n("sub.downloads",{n:p.downloads||0})})]}),p.summary&&r("p",{class:"fx-sub-summary",children:p.summary}),p.status==="rejected"&&p.reviewNote&&r(de,{tone:"error",children:p.reviewNote}),p.rejectedUpdate&&r(de,{tone:"error",children:[n("sub.rejectedVersion",{version:p.rejectedUpdate.version}),p.rejectedUpdate.note?`: ${p.rejectedUpdate.note}`:""]}),p.pendingUpdate?r(de,{children:n("sub.pendingVersion",{version:p.pendingUpdate.version})}):p.source==="zip"?r(G,{disabled:!!s,onClick:()=>f(p),children:n("sub.update")}):r(de,{children:n("sub.remoteUpdate")})]},p.id)):r(ot,{children:e.length?n("sub.noResults"):r(F,{children:[r("strong",{children:n("sub.empty")}),r("p",{children:n("sub.emptyHint")})]})})]})]})}function dc(){let e=Re(()=>J("/market/mine"));switch(e.state){case"loading":return r(Ae,{});case"signedOut":return r(De,{});case"error":return r(Oe,{error:e.error,onRetry:e.retry});case"ready":return r(Um,{items:e.data?.items||[],reload:e.reload})}}var qm=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function Ka(e,t){let n=re().cloudInvoke;if(!n)throw new Error("no_bridge");let o=await n(e,t);if(!qm(o))throw new Error(String(o?.error??"unavailable"));return o}var Hm=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function uc(){let[e,t]=M(0);return Q(()=>re().onAuthChanged?.(()=>t(n=>n+1)),[]),r(Vm,{standalone:!0},e)}function Vm({standalone:e=!1}={}){let{t,locale:n}=ee(),o=Ue(),[a,i]=M(null),[s,l]=M(!1),c=le(),d=le();if(Q(()=>{let y=!1,_=0,E=()=>{let k=++_;Ka("diagnostics:get").then(R=>{!y&&k===_&&(i(R),l(!0))},()=>{!y&&k===_&&(i(null),l(!0))})};E();let x=re().onAuthChanged?.(E);return()=>{y=!0,x?.()}},[]),!a?.signedIn)return e?s?a?r(De,{}):r(ot,{children:t("diag.unavailable")}):r(Ae,{panels:1}):null;let f=()=>void d.run(async()=>{try{let y=await Ka("diagnostics:uploadNow");return o.current&&i(y),y.lastError?{error:{key:"diag.failed",vars:{reason:y.lastError}}}:y.enabled&&y.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(y){return{error:{raw:Et(y)||t("err.generic")}}}}),u=async y=>{let _=!1;await c.run(async()=>{d.clear();try{let E=await Ka("diagnostics:set",y);o.current&&i(E),_=!0}catch(E){return{error:{raw:Et(E)||t("err.generic")}}}}),_&&y.enabled&&o.current&&f()},p=a.intervalHours??24,g=a.mode==="manual"?t("diag.freq.manual"):p===1?t("diag.freq.hour"):p%24===0?p===24?t("diag.freq.day"):t("diag.freq.days",{n:p/24}):t("diag.freq.hours",{n:p}),m=`${a.lastUploadAt?t("diag.last",{time:Ut(a.lastUploadAt,n)}):t("diag.noUpload")} \xB7 ${g}`;return r(me,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[r(Le,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:r(Mt,{checked:a.enabled,disabled:c.pending,label:t("diag.enable"),onChange:y=>void u({enabled:y})})}),r(_e,{class:"fx-diag",children:[r("strong",{children:t("diag.collected")}),r("ul",{children:Hm.map(y=>r("li",{children:t(y)},y))}),r(de,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&r(Le,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:r(Mt,{checked:a.sessions,disabled:c.pending,label:t("diag.sessions"),onChange:y=>void u({sessions:y})})}),a.memory!==void 0&&r(Le,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:r(Mt,{checked:a.memory,disabled:c.pending,label:t("diag.memory"),onChange:y=>void u({memory:y})})}),r(Le,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:r(Mt,{checked:a.activity,disabled:c.pending,label:t("diag.activity"),onChange:y=>void u({activity:y})})}),a.enabled&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:m}),r(G,{pending:d.pending,disabled:c.pending,onClick:f,children:t("diag.uploadNow")})]}),r(_e,{class:"fx-sub--tight",children:[r(de,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!d.error&&!d.success&&r("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),r(ce,{a:c}),r(ce,{a:d})]})]})}var Dr=20,Co=5,jm=5*1024*1024,To=1e4,Wm={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function fc(e){let{t}=ee(),n=e.status||"open",o=Wm[n];return r("span",{class:`fx-tag fx-status fx-status--${n}`,children:o?t(o):n})}function mc(){let[e,t]=M(null),n=Re(async()=>{let o=await J(`/feedback?limit=${Dr}&offset=0`);return o.ok?{ok:!0,status:o.status,data:Array.isArray(o.data?.tickets)?o.data.tickets:[]}:o});return n.state==="loading"?r(Ae,{panels:1,rows:3}):n.state==="signedOut"?r(De,{}):n.state==="error"?r(Oe,{error:n.error,onRetry:n.retry}):e?r(Ym,{id:e,onBack:()=>{t(null),n.reload()}}):r(Gm,{first:n.data,onOpen:t,onChanged:n.reload})}function Gm(e){let{t,locale:n}=ee(),o=Ue(),[a,i]=M(e.first),[s,l]=M(e.first.length===Dr),[c,d]=M(!1),[f,u]=M(!1),p=le();Q(()=>{i(e.first),l(e.first.length===Dr)},[e.first]);let g=()=>void p.run(async()=>{let m=await J(`/feedback?limit=${Dr}&offset=${a.length}`);if(!m.ok)return{error:dt(m)};let y=Array.isArray(m.data?.tickets)?m.data.tickets:[];o.current&&(i(_=>{let E=new Set(_.map(x=>x.id));return[..._,...y.filter(x=>!E.has(x.id))]}),l(y.length===Dr))});return r(me,{icon:"message",title:t("fb.list.title"),desc:t("fb.list.desc"),actions:c?void 0:r(G,{variant:"primary",onClick:()=>{u(!1),d(!0)},children:[r(Y,{name:"plus",size:12})," ",t("fb.new")]}),children:[c&&r(Jm,{onCancel:()=>d(!1),onSubmitted:()=>{d(!1),u(!0),e.onChanged()}}),f&&!c&&r(_e,{children:r("div",{class:"fx-msg is-ok",role:"status",children:t("fb.submitted")})}),a.length===0?r(ot,{children:t("fb.empty")}):r("div",{class:"fx-list fx-block",role:"list",children:a.map(m=>r("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>e.onOpen(m.id),children:[r("span",{class:`fx-dot${m.user_unread?" is-on":""}`,"aria-label":m.user_unread?t("fb.unread"):void 0}),r("span",{class:"fx-list-main",children:[r("strong",{children:m.title||(m.description||"").slice(0,60)||t("fb.untitled")}),r("small",{children:Ut(m.updated_at||m.created_at,n)})]}),r(fc,{status:m.status}),r(Y,{name:"chevron",size:12})]},m.id))}),a.length>0&&(s||p.error)&&r("div",{class:"settings-panel-footer fx-footer",children:[r("span",{class:"fx-muted",children:t("fb.shown",{n:ze(a.length,n)})}),s&&r(G,{pending:p.pending,onClick:g,children:t("common.loadMore")})]}),p.error&&r(_e,{children:r(ce,{a:p})})]})}function Xm(e){return new Promise((t,n)=>{let o=new FileReader;o.onload=()=>t(String(o.result||"")),o.onerror=()=>n(o.error||new Error("read failed")),o.readAsDataURL(e)})}var Km=0;function Jm(e){let{t}=ee(),n=Ue(),[o,a]=M(""),[i,s]=M([]),[l,c]=M(null),[d,f]=M(!1),u=te(null),p=le(),[g,m]=M(0),y=te(0);y.current=i.length;let _=async x=>{c(null);for(let k of Array.from(x||[])){if(!k.type||!k.type.startsWith("image/")){c({key:"err.imageType"});continue}if(k.size>jm){c({key:"err.imageTooLarge"});continue}if(y.current>=Co){c({key:"err.tooManyImages"});break}y.current++,m(R=>R+1);try{let R=await Xm(k);if(!n.current)return;let B={id:`img-${++Km}`,filename:k.name||"image",mime_type:k.type,size:k.size,data_base64:R.replace(/^data:[^;]+;base64,/,""),url:R};s(j=>j.length>=Co?j:[...j,B])}catch{y.current--,c({key:"err.imageRead"})}finally{n.current&&m(R=>R-1)}}},E=()=>void p.run(async()=>{let x=o.trim();if(!x)return{error:{key:"err.feedbackEmpty"}};if(x.length>To)return{error:{key:"err.feedbackTooLong"}};let k=i.map(({filename:B,mime_type:j,size:w,data_base64:A})=>({filename:B,mime_type:j,size:w,data_base64:A})),R=await J("/feedback",{method:"POST",body:{description:x,attachments:k},timeoutMs:12e4});if(!R.ok)return Ee(R);e.onSubmitted()});return r("div",{class:`fx-sub fx-form fx-composer${d?" is-drag":""}`,onPaste:x=>{let k=Array.from(x.clipboardData?.items||[]).filter(R=>R.kind==="file").map(R=>R.getAsFile()).filter(Boolean);k.length&&(x.preventDefault(),_(k))},onDragOver:x=>{x.preventDefault(),f(!0)},onDragLeave:()=>f(!1),onDrop:x=>{x.preventDefault(),f(!1),_(x.dataTransfer?.files)},children:[r("label",{class:"fx-field",children:[r("span",{children:t("fb.descLabel")}),r("textarea",{class:"fx-input fx-textarea",rows:5,value:o,maxLength:To,autoFocus:!0,placeholder:t("fb.descPlaceholder"),onInput:x=>a(x.currentTarget.value)})]}),r("p",{class:"fx-note",children:t("fb.imagesHint",{n:Co})}),i.length>0&&r("div",{class:"fx-thumbs",children:i.map(x=>r("span",{class:"fx-thumb",children:[r("img",{src:x.url,alt:x.filename}),r("button",{type:"button","aria-label":t("fb.removeImage"),title:t("fb.removeImage"),onClick:()=>{s(k=>k.filter(R=>R.id!==x.id)),c(null)},children:r(Y,{name:"x",size:11})})]},x.id))}),l&&r("div",{class:"fx-msg is-error",role:"alert",children:bt(l,t)}),r("input",{ref:u,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:x=>{let k=x.currentTarget;_(k.files),k.value=""}}),r("div",{class:"fx-inline",children:[r(G,{disabled:i.length>=Co||p.pending,onClick:()=>u.current?.click(),children:[r(Y,{name:"image",size:12})," ",t("fb.addImages")]}),r("span",{class:"fx-grow"}),r(G,{disabled:p.pending,onClick:e.onCancel,children:t("common.cancel")}),r(G,{variant:"primary",pending:p.pending,disabled:g>0,onClick:E,children:t("fb.submit")})]}),r(ce,{a:p})]})}function Ym(e){let{t,locale:n}=ee(),[o,a]=M({state:"loading"}),[i,s]=M(0),[l,c]=M(""),[d,f]=M(null),u=le(),p=te(0);Q(()=>{let R=++p.current;return J(`/feedback/${encodeURIComponent(e.id)}`).then(B=>{if(R===p.current){if(!B.ok){a({state:"error",fail:B});return}a({state:"ready",data:{ticket:B.data.ticket,replies:B.data.replies??[],attachments:B.data.attachments??[]}}),J(`/feedback/${encodeURIComponent(e.id)}/read`,{method:"POST"})}}),()=>{p.current++}},[e.id,i]),Q(()=>{if(!d)return;let R=B=>{B.key==="Escape"&&f(null)};return window.addEventListener("keydown",R),()=>window.removeEventListener("keydown",R)},[d]);let g=r("div",{class:"fx-back",children:r(G,{onClick:e.onBack,children:[r(Y,{name:"back",size:12})," ",t("fb.back")]})});if(o.state==="loading")return r(F,{children:[g,r(Ae,{panels:1,rows:3})]});if(o.state==="error")return r(F,{children:[g,r(Oe,{error:dt(o.fail),onRetry:()=>{a({state:"loading"}),s(R=>R+1)}})]});let{ticket:m,replies:y,attachments:_}=o.data,E=m.status==="closed",x=R=>_.filter(B=>(B.reply_id??null)===R),k=()=>void u.run(async()=>{let R=l.trim();if(!R)return{error:{key:"err.replyEmpty"}};if(R.length>To)return{error:{key:"err.replyTooLong"}};let B=await J(`/feedback/${encodeURIComponent(m.id)}/replies`,{method:"POST",body:{content:R},timeoutMs:6e4});return B.ok?(c(""),s(j=>j+1),{success:{key:"fb.replySent"}}):Ee(B)});return r(F,{children:[g,r(me,{icon:"message",title:m.title||t("fb.untitled"),actions:r(fc,{status:m.status}),desc:`#${String(m.id).slice(0,8)} \xB7 ${Ut(m.created_at,n)}`,children:[r("div",{class:"fx-thread fx-block",children:[r(pc,{who:"user",when:m.created_at,text:m.description||"",files:x(null),onZoom:f}),y.map((R,B)=>r(pc,{who:R.author_role==="user"?"user":"admin",when:R.created_at,text:R.content||"",files:R.id?x(R.id):[],onZoom:f},R.id??B))]}),E?r(_e,{children:r(de,{children:t("fb.closedNote")})}):r(_e,{class:"fx-form",children:[r("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:To,placeholder:t("fb.replyPlaceholder"),"aria-label":t("fb.replyPlaceholder"),onInput:R=>{c(R.currentTarget.value),u.success&&u.clear()}}),r("div",{class:"fx-inline",children:[r("span",{class:"fx-grow"}),r(G,{variant:"primary",pending:u.pending,onClick:k,children:t("fb.replySend")})]}),r(ce,{a:u})]})]}),d&&r("div",{class:"fx-lightbox",role:"dialog","aria-label":t("fb.imagePreview"),onClick:()=>f(null),children:r("img",{src:d,alt:""})})]})}function pc(e){let{t,locale:n}=ee();return r("div",{class:`fx-bubble fx-bubble--${e.who}`,children:[r("div",{class:"fx-bubble-meta",children:[e.who==="user"?t("fb.you"):t("fb.support")," \xB7 ",Ut(e.when,n)]}),r("div",{class:"fx-bubble-text",children:e.text}),e.files.length>0&&r("div",{class:"fx-thumbs",children:e.files.map((o,a)=>{let i=o.mime_type||"";if(i.startsWith("image/")&&o.data_base64){let s=`data:${i};base64,${o.data_base64}`;return r("button",{type:"button",class:"fx-thumb",onClick:()=>e.onZoom(s),"aria-label":t("fb.imagePreview"),children:r("img",{src:s,alt:o.filename||""})},o.id??a)}return r("span",{class:"fx-tag",children:[r(Y,{name:"card",size:11})," ",o.filename||t("fb.attachment")]},o.id??a)})})]})}var hc=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function gc(e,t){let n=hc.find(s=>s.id===t),o=be(e.priceMonthly)??0,a=(be(e[n.field])??0)||(t==="quarterly"?Math.round(o*300)/100:0),i=be(e[n.discount])??0;return i>0&&i<a?i:a}function Ja(e,t,n){let o=ze(e,n),a=String(t||"CNY").toUpperCase();return a==="CNY"?`\xA5${o}`:a==="USD"?`$${o}`:`${o} ${a}`}async function Zm(){let[e,t,n]=await Promise.all([J("/membership/my"),J("/credits/balance"),J("/features")]);return!e.ok&&Dn(e)?e:!t.ok&&Dn(t)?t:{ok:!0,status:200,data:{membership:e.ok?e.data?.membership??null:null,membershipFailed:!e.ok,balance:t.ok?be(t.data?.balance):null,balanceFailed:!t.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function Ya(e,t){let[n,o]=await Promise.all([Zm(),J(e)]);return n.ok?o.ok?{ok:!0,status:o.status,data:{status:n.data,list:t(o.data)}}:o:n}var Za=e=>(Array.isArray(e)?e:[]).filter(t=>!!t&&typeof t=="object"&&t.isActive!==!1),Qm=15*6e4;function Qa(e){let t=te(0),n=te(0),o=te(e);return o.current=e,Q(()=>{let a=()=>{let i=Date.now();i>t.current||document.visibilityState==="hidden"||i-n.current<2e3||(n.current=i,o.current?.())};return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[]),()=>{t.current=Date.now()+Qm}}function bc(e){let t=e.membership;return t&&(t.status===void 0||t.status==="active")?t:null}function ei(e){let{t,locale:n}=ee(),o=e.status,a=bc(o),i=Mr(a?.tier),s=i==="Free";return r("section",{class:"fx-shop-strip","aria-label":t("store.status"),children:[r("div",{class:"fx-shop-stat",children:[r("small",{children:t("store.tier")}),o.membershipFailed?r("b",{class:"is-empty",children:"\u2014"}):r("b",{"data-testid":"shop-tier",children:[s?t("member.freeName"):a?.plan?.name||i,!s&&r("i",{children:a?.expiresAt?t("member.expires",{date:ko(a.expiresAt,n)}):t("member.noExpiry")})]})]}),r("div",{class:"fx-shop-stat",children:[r("small",{children:t("store.balance")}),r("b",{class:o.balance===null?"is-empty":"","data-testid":"shop-balance",children:o.balance===null?"\u2014":ze(o.balance,n)})]}),(o.membershipFailed||o.balanceFailed)&&r("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")}),r("span",{class:"fx-grow"}),e.children]})}function ti(e){return r("section",{class:"fx-shop-section",children:[r("div",{class:"fx-shop-head",children:[r("div",{children:[r("h2",{children:e.title}),e.desc&&r("p",{children:e.desc})]}),e.right]}),e.children]})}function ni(e){let t=le(),[n,o]=M(null),a=(i,s,l,c)=>{o(i),t.run(async()=>{if(!await bn(s,l,c))return{error:{key:"err.openFailed"}};e()})};return{a:t,payingId:t.pending?n:null,open:a}}function ri(e){return r(G,{variant:"ghost",pending:e.pending,disabled:e.disabled,onClick:e.onClick,children:[e.label,r(Y,{name:"external",size:12})]})}function oi(e){return r("div",{class:"fx-shop-empty",children:e.children})}function vc(){let{t:e,locale:t}=ee(),n=Re(()=>Ya("/payment/offerings",g=>Za(g?.membershipPlans))),o=Qa(n.state==="ready"?n.reload:null),a=ni(o),[i,s]=M("monthly");if(n.state==="loading")return r(Ae,{panels:2,rows:2});if(n.state==="signedOut")return r(De,{});if(n.state==="error")return r(Oe,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,d=l.features.payment!==!1,f=hc.filter(g=>c.some(m=>gc(m,g.id)>0)),u=f.some(g=>g.id===i)?i:f[0]?.id??"monthly",p=bc(l)?.tier?.toLowerCase()??null;return r(F,{children:[r(ei,{status:l,onRetry:n.reload}),r(ti,{title:e("store.choosePlan"),desc:e(d?"store.payHint":"store.payOff"),right:f.length>1?r(It,{value:u,label:e("store.period"),onChange:s,options:f.map(g=>({value:g.id,label:e(`store.period.${g.id}`)}))}):void 0,children:[c.length===0?r(oi,{children:e("store.noPlans")}):r("div",{class:"fx-shop-tiers",children:c.map(g=>{let m=gc(g,u),y=!!p&&!l.membershipFailed&&g.tier?.toLowerCase()===p;return r("article",{class:"fx-shop-tier","data-tier":g.tier,children:[r("h3",{children:[g.name||Mr(g.tier),y&&r("span",{class:"fx-shop-current",children:[r(Y,{name:"check",size:12}),e("store.currentTier")]})]}),r("div",{class:"fx-shop-price",children:m>0?r(F,{children:[Ja(m,g.currency,t),r("small",{children:e(`store.per.${u}`)})]}):"\u2014"}),r("p",{children:g.description}),d&&m>0&&r(ri,{label:e(y?"member.renew":"store.pay"),pending:a.payingId===g.id,disabled:a.a.pending,onClick:()=>a.open(g.id,"membership",g.id,u)})]},g.id)})}),r(ce,{a:a.a})]})]})}function yc(){let{t:e,locale:t}=ee(),n=Re(()=>Ya("/payment/offerings",c=>Za(c?.packages))),o=Qa(n.state==="ready"?n.reload:null),a=ni(o);if(n.state==="loading")return r(Ae,{panels:2,rows:2});if(n.state==="signedOut")return r(De,{});if(n.state==="error")return r(Oe,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1;return r(F,{children:[r(ei,{status:i,onRetry:n.reload}),r(ti,{title:e("store.packs"),desc:e(l?"store.packsHint":"store.payOff"),children:[s.length===0?r(oi,{children:e("store.noPacks")}):r("div",{class:"fx-shop-grid",children:s.map(c=>{let d=be(c.price)??0;return r(xc,{icon:"coins",kind:e("store.kind.pack"),name:`${c.name||""} \xB7 ${e("store.nPoints",{n:ze(c.credits,t)})}`,desc:c.description,meta:e("store.instant"),children:l&&d>0&&r(ri,{label:e("store.payPrice",{price:Ja(d,c.currency,t)}),pending:a.payingId===c.id,disabled:a.a.pending,onClick:()=>a.open(c.id,"credits")})},c.id)})}),r(ce,{a:a.a})]})]})}function xc(e){return r("article",{class:"fx-shop-card",children:[r("div",{class:"fx-shop-visual","aria-hidden":"true",children:e.emoji?r("span",{class:"fx-shop-emoji",children:e.emoji}):r(Y,{name:e.icon,size:18})}),r("div",{class:"fx-shop-body",children:[r("span",{class:"fx-shop-kind",children:e.kind}),r("strong",{children:e.name}),e.desc&&r("p",{children:e.desc}),r("div",{class:"fx-shop-foot",children:[r("span",{class:"fx-shop-meta",children:e.meta}),r("span",{class:"fx-shop-acts",children:e.children})]}),e.below]})]})}var eg={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function tg(e){let{t,locale:n}=ee(),{p:o}=e,a=le(),[i,s]=M(null),[l,c]=M(!1),d=be(o.pricePoints)??0,f=be(o.priceRmb)??0,u=typeof o.availableKeys=="number"&&o.availableKeys<=0,p=d>0&&e.balance!==null&&e.balance<d,g=()=>void a.run(async()=>{let y=await J("/shop/purchase",{method:"POST",body:{productId:o.id,payMethod:"points"},timeoutMs:3e4});return y.ok?(s(typeof y.data?.key=="string"&&y.data.key?y.data.key:null),e.onRedeemed(),{success:{key:"store.redeemed"}}):y.status===0?(c(!0),{error:{key:"store.uncertain"}}):Ee(y)}),m=u?t("store.soldOut"):p?t("err.insufficientPoints"):typeof o.availableKeys=="number"?t("store.left",{n:o.availableKeys}):t("store.toBackpack");return r(xc,{icon:o.type==="api_quota_key"?"key":"gift",emoji:o.icon,kind:t(eg[o.type||""]??"store.kind.item"),name:o.name||"",desc:o.description,meta:m,below:r(F,{children:[r(ce,{a}),i&&r("div",{class:"fx-shop-key",children:[r("code",{children:i}),r(qt,{text:i,label:t("backpack.copyKey")})]})]}),children:[d>0&&r(rn,{variant:"primary",pending:a.pending,disabled:u||p||l,label:t("store.redeem",{n:ze(d,n)}),confirmLabel:t("store.redeemConfirm",{n:ze(d,n)}),onConfirm:g}),e.payment&&f>0&&r(ri,{label:Ja(f,o.currency,n),pending:e.paying,disabled:e.payBusy||u,onClick:e.onPay})]})}function kc(){let{t:e,goTo:t}=ee(),n=Re(()=>Ya("/shop/products",d=>Za(d))),o=Qa(n.state==="ready"?n.reload:null),a=ni(o);if(n.state==="loading")return r(Ae,{panels:2,rows:2});if(n.state==="signedOut")return r(De,{});if(n.state==="error")return r(Oe,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1,c=i.features.shop!==!1;return r(F,{children:[r(ei,{status:i,onRetry:n.reload,children:t&&r(G,{onClick:()=>t("backpack"),children:e("store.openBackpack")})}),r(ti,{title:e("store.redeemTitle"),desc:e("store.redeemHint"),children:[!c||s.length===0?r(oi,{children:e(c?"store.noItems":"store.itemsOff")}):r("div",{class:"fx-shop-grid",children:s.map(d=>r(tg,{p:d,balance:i.balance,payment:l,paying:a.payingId===d.id,payBusy:a.a.pending,onPay:()=>a.open(d.id,"storefront"),onRedeemed:n.reload},d.id))}),r(ce,{a:a.a})]})]})}var ng="forsion-extend",wc=[{id:"account",titleKey:"page.account",tabTitleKey:"page.profile",aliases:["profile"],keywords:"\u4E2A\u4EBA\u4E3B\u9875 profile avatar nickname \u5934\u50CF \u6635\u79F0",Component:jl},{id:"account-details",parent:"account",titleKey:"account.details.title",keywords:"\u767B\u5F55 \u8D44\u6599 \u624B\u673A \u90AE\u7BB1 \u5207\u6362 \u9000\u51FA login sign-in email phone account switch logout",Component:_l},{id:"security",parent:"account",titleKey:"page.security",keywords:"\u5B89\u5168 \u5BC6\u7801 \u8BBE\u5907 \u7ED1\u5B9A security password devices",Component:tc},{id:"quota",titleKey:"page.membershipUsage",tabTitleKey:"page.membershipQuota",aliases:["membership"],keywords:"\u4F1A\u5458 \u989D\u5EA6 \u540E\u53F0 quota membership background",Component:Kl},{id:"points",parent:"quota",titleKey:"page.pointsInvite",keywords:"\u79EF\u5206 \u9080\u8BF7 \u5151\u6362 \u5145\u503C points invite redeem credits",Component:Xl},{id:"usage",parent:"quota",titleKey:"page.usage",keywords:"\u7528\u91CF \u8BB0\u5F55 \u6D88\u8017 usage history tokens",Component:ic},{id:"backpack",titleKey:"page.backpack",keywords:"\u80CC\u5305 \u5361\u5238 backpack inventory",Component:Yl},{id:"submission",titleKey:"page.submission",Component:dc},{id:"feedback",titleKey:"page.helpDiagnostics",tabTitleKey:"page.feedback",webTitleKey:"page.feedback",keywords:"\u5E2E\u52A9 \u53CD\u9988 help feedback",Component:mc},{id:"diagnostics",parent:"feedback",titleKey:"diag.title",keywords:"\u8BCA\u65AD \u4E0A\u4F20 \u65E5\u5FD7 diagnostic upload logs",Component:uc,desktopOnly:!0}],zc=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:vc},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:yc},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:kc}],rg=e=>`forsion/fx:${ng}:${e}`;function _c(e){let{ctx:t,page:n}=e,[o,a]=M(()=>Qe(t.getLocale?.()));Q(()=>{a(Qe(t.getLocale?.()));let l=t.subscribeLocale?.(c=>a(Qe(c)));return()=>{typeof l=="function"&&l()}},[t]);let i=At(()=>{let l=t.app?.openSettings;return{ctx:t,locale:o,t:ho(o),goTo:typeof l=="function"?c=>l.call(t.app,rg(c)):null}},[t,o]),s=n.Component;return r(Ea.Provider,{value:i,children:r("div",{class:"fx-acct","data-fx-page":n.id,lang:o==="zh"?"zh-CN":"en",children:[r("style",{children:Ys}),r(s,{})]})})}function Sc(e,t=window){let n=en(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!Ln(n)||typeof e.registerStoreView!="function")return 0;let o=a=>()=>Te(Qe(e.getLocale?.()),a);for(let a of zc)e.registerStoreView({id:a.id,title:o(a.titleKey),description:o(a.descKey),group:o("store.group"),icon:a.icon,mount(i){return Be(r(_c,{ctx:e,page:a}),i),()=>{Be(null,i)}}});return zc.length}function Cc(e,t=window){let n=en(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!Ln(n)||typeof e.registerSettingsView!="function")return 0;let o=n.unitPublicEntry?wc.filter(a=>!a.desktopOnly):wc;for(let a of o)e.registerSettingsView({id:a.id,category:"forsion",parent:a.parent,tabTitle:a.tabTitleKey?()=>Te(Qe(e.getLocale?.()),a.tabTitleKey):void 0,aliases:a.aliases,keywords:a.keywords,title:()=>Te(Qe(e.getLocale?.()),n.unitPublicEntry&&a.webTitleKey||a.titleKey),mount(i){return Be(r(_c,{ctx:e,page:a}),i),()=>{Be(null,i)}}});return o.length}var nr=[{id:"lv1"},{id:"lv2"},{id:"lv3"},{id:"lv4"},{id:"new",version:"2.14"}],q=(e,t)=>({zh:e,en:t}),vn=[{id:"welcome",level:"lv1",icon:"compass",title:q("\u8BA4\u8BC6 Forsion","Meet Forsion"),tasks:[{id:"guide-open",event:"own:guide.open",goal:1,title:q("\u6253\u5F00\u4F7F\u7528\u6307\u5357","Open the guide")},{id:"space-switch",event:"space.switch",goal:1,title:q("\u5728 Ribbon \u4E0A\u6362\u4E00\u4E2A Space","Switch to another Space from the ribbon"),go:{space:"amadeus"},spot:{anchor:"ribbon-spaces",here:!0,title:q("\u70B9 Ribbon \u4E0A\u4EFB\u610F\u4E00\u4E2A\u56FE\u6807","Click any icon on the ribbon"),body:q("\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\u3002","Each icon is a Space. One click switches to it.")}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon",label:q("Ribbon\uFF1A\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space","Ribbon: each icon is a Space")},{slot:"main-tabs",label:q("\u4E3B\u533A\u7684\u6807\u7B7E\u9875","Tabs in the main area"),text:q("\u6807\u7B7E\u9875","Tab")},{slot:["left-list","right"],label:q("\u5DE6\u53F3\u4FA7\u680F","Left and right sidebars")}]}},{id:"chat",level:"lv1",icon:"message-circle",title:q("\u548C Tangu \u8BF4\u7B2C\u4E00\u53E5\u8BDD","Say hello to Tangu"),tasks:[{id:"chat-first",event:"chat.send",goal:1,title:q("\u53D1\u51FA\u7B2C\u4E00\u6761\u6D88\u606F","Send your first message"),go:{space:"tangu",command:"new-chat"},spot:{anchor:"chat-composer",title:q("\u5728\u8FD9\u91CC\u6253\u4E2A\u62DB\u547C","Say hello here"),body:q("\u6253\u5B57\uFF0C\u6309 Enter \u53D1\u9001\uFF1BShift+Enter \u6362\u884C\u3002","Type, then press Enter to send. Shift+Enter starts a new line.")}},{id:"chat-five",event:"chat.send",goal:5,title:q("\u518D\u804A\u51E0\u53E5\uFF08\u7D2F\u8BA1 5 \u6761\uFF09","Keep talking (5 messages in all)"),go:{space:"tangu"},spot:{anchor:"chat-composer",title:q("\u63A5\u7740\u804A\u51E0\u53E5","Keep the conversation going"),body:q("\u7D2F\u8BA1\u53D1\u51FA 5 \u6761\u5C31\u7B97\u5B8C\u6210\u3002","Five messages in all and this one is done.")}}],figure:{layout:"space",main:"chat",marks:[{slot:"left-top",label:q("\u5DE6\u680F\u9876\u90E8\u300C\u65B0\u4F1A\u8BDD\u300D",'"New chat" at the top of the left sidebar'),text:q("\u65B0\u4F1A\u8BDD","New chat")},{slot:"main-bottom",label:q("\u8F93\u5165\u6846","Message box")}]}},{id:"note",level:"lv1",icon:"file-text",title:q("\u5199\u4E0B\u7B2C\u4E00\u7BC7\u7B14\u8BB0","Write your first note"),tasks:[{id:"note-create",event:"note.create",goal:1,title:q("\u65B0\u5EFA\u4E00\u7BC7\u7B14\u8BB0","Create a note"),go:{space:"amadeus",command:"amadeus-new-note"},spot:{anchor:"note-new",title:q("\u70B9\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'Click "New note"'),body:q("\u4E5F\u53EF\u4EE5\u6309 \u2318/Ctrl+N\u3002\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u667A\u5E93\u91CC\u7684\u4E00\u4E2A .md \u6587\u4EF6\u3002","Or press \u2318/Ctrl+N. Every note is a .md file in your vault.")}},{id:"note-link",event:"note.wikilink",goal:1,title:q("\u7528 [[ \u94FE\u63A5\u53E6\u4E00\u7BC7\u7B14\u8BB0","Link another note with [["),go:{space:"amadeus"},spot:{anchor:"note-body",title:q("\u5728\u6B63\u6587\u91CC\u8F93\u5165 [[","Type [[ in the note"),body:q("\u4ECE\u5F39\u51FA\u7684\u5019\u9009\u91CC\u9009\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u6309 Enter\uFF0C\u4E24\u7BC7\u5C31\u8FDE\u4E0A\u4E86\u3002","Pick a note from the suggestions and press Enter to link the two.")}},{id:"note-canvas",event:"note.canvas",goal:1,title:q("\u628A\u7B14\u8BB0\u5207\u5230\u753B\u5E03","Switch a note to the canvas"),go:{space:"amadeus",command:"amadeus-toggle-canvas"},spot:{anchor:"note-canvas",title:q("\u70B9\u300C\u753B\u5E03\u300D",'Click "Canvas"'),body:q("\u540C\u4E00\u7BC7\u7B14\u8BB0\u644A\u6210\u767D\u677F\uFF0C\u968F\u624B\u6446\uFF1B\u70B9\u300C\u6587\u6863\u300D\u5207\u56DE\u6765\uFF0C\u4E00\u4E2A\u5B57\u90FD\u4E0D\u53D8\u3002",'The same note opens as a whiteboard. Click "Document" to switch back; nothing changes.')}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-top",label:q("\u5DE6\u680F\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'"New note" in the left sidebar'),text:q("\u65B0\u5EFA\u7B14\u8BB0","New note")},{slot:"main-top",label:q("\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA","The Document / Canvas switch")},{slot:"right",label:q("\u53F3\u680F\u91CC\u7684\u300C\u53CD\u94FE\u300D","Backlinks in the right sidebar"),text:q("\u53CD\u94FE","Backlinks")}]}},{id:"theme",level:"lv1",icon:"sparkles",title:q("\u6362\u4E00\u8EAB\u4E3B\u9898","Make it look like yours"),tasks:[{id:"theme-change",event:"theme.change",goal:1,title:q("\u6362\u4E00\u4E2A\u4E3B\u9898","Pick another theme"),go:{settings:"theme"}}],figure:{layout:"settings",marks:[{slot:"nav",label:q("\u8BBE\u7F6E\u91CC\u7684\u300C\u5916\u89C2\u300D",'"Appearance" in Settings'),text:q("\u5916\u89C2","Appearance")},{slot:"section-1",label:q("\u8BBE\u8BA1\u8BED\u8A00","Design language"),text:q("\u8BBE\u8BA1\u8BED\u8A00","Design language")},{slot:"section-2",label:q("\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272","Theme and background colors"),text:q("\u914D\u8272","Colors")}]}},{id:"database",level:"lv2",icon:"database",title:q("\u6570\u636E\u5E93\uFF1A\u628A\u7B14\u8BB0\u53D8\u6210\u8868","Databases: turn notes into a table"),tasks:[{id:"base-create",event:"base.create",goal:1,title:q("\u65B0\u5EFA\u4E00\u4E2A\u6570\u636E\u5E93","Create a database"),go:{space:"amadeus"}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-list",label:q("\u7B14\u8BB0\u6811\uFF1A\u53F3\u952E \u2192\u300C\u65B0\u5EFA Base\u300D",'Note tree: right-click \u2192 "New Base"')},{slot:"main-body",label:q("\u6B63\u6587\u91CC\u8F93\u5165 /\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D",'Type / in a note and pick "Database"')}]}},{id:"market",level:"lv2",icon:"store",title:q("\u4ECE\u5546\u5E97\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin from the store"),tasks:[{id:"market-install",event:"market.install",goal:1,title:q("\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin"),go:{command:"open-market"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-bottom",label:q("Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D",'"Store" at the bottom of the ribbon')}]}},{id:"space",level:"lv2",icon:"layout-grid",title:q("\u5B58\u4E0B\u81EA\u5DF1\u7684 Space","Save a Space of your own"),tasks:[{id:"space-save",event:"space.save",goal:1,title:q("\u628A\u5F53\u524D\u5E03\u5C40\u5B58\u6210 Space","Save the current layout as a Space"),go:{command:"save-as-space"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-plus",label:q("Space \u533A\u7684 \uFF0B","The + under the Spaces")},{slot:"main-top-right",label:q("\u53F3\u4E0A\u89D2\u7684\u6D6E\u52A8\u6309\u94AE","Floating buttons at the top right")}]}},{id:"calendar",level:"lv2",icon:"calendar-days",title:q("\u65E5\u5386\u548C\u5F85\u529E","Calendar and to-dos"),tasks:[{id:"calendar-event",event:"calendar.event",goal:1,title:q("\u5728\u65E5\u5386\u4E0A\u5EFA\u4E00\u4E2A\u65E5\u7A0B","Add an event to the calendar"),go:{space:"calendar"}},{id:"todo-done",event:"todo.done",goal:1,title:q("\u52FE\u6389\u4E00\u6761\u5F85\u529E","Tick off a to-do"),go:{space:"calendar"}}],figure:{layout:"space",main:"grid",marks:[{slot:"left-plus",label:q("\u5DE6\u680F\u300C\u65E5\u5386\u300D\u65C1\u7684 +",'The + next to "Calendars" in the left sidebar')},{slot:"main-body",label:q("\u65F6\u95F4\u683C\uFF1A\u5355\u51FB\u5EFA\u65E5\u7A0B","Time grid: click to add an event")},{slot:"right",label:q("\u53F3\u680F\u7684\u5F85\u529E","To-dos in the right sidebar"),text:q("\u5F85\u529E","To-dos")}]}},{id:"agent",level:"lv3",icon:"bot",title:q("\u521B\u5EFA\u4F60\u7684 Agent","Create your own agent"),tasks:[{id:"agent-create",event:"agent.create",goal:1,title:q("\u65B0\u5EFA\u4E00\u4E2A Agent","Create an agent"),go:{space:"agents"},spot:{anchor:"agent-new",title:q("\u70B9\u300C\u521B\u5EFA Agent\u300D",'Click "Create agent"'),body:q("\u8D77\u4E2A\u540D\u5B57\uFF0C\u5199\u51E0\u53E5\u5B83\u8BE5\u600E\u4E48\u505A\u4E8B\u3002","Give it a name and a few lines on how it should work.")}}]},{id:"muse",level:"lv3",icon:"sparkles",title:q("Muse\uFF1A\u8BA9\u7075\u611F\u81EA\u5DF1\u957F","Muse: ideas that grow on their own"),tasks:[{id:"muse-open",event:"muse.open",goal:1,title:q("\u53BB Muse \u770B\u4E00\u773C","Take a look at Muse"),go:{space:"muse"}}]},{id:"automation",level:"lv3",icon:"zap",title:q("\u81EA\u52A8\u5316\uFF1A\u5230\u70B9\u5C31\u505A","Automations: done on schedule"),tasks:[{id:"automation-create",event:"automation.create",goal:1,title:q("\u5EFA\u4E00\u6761\u81EA\u52A8\u5316","Create an automation"),go:{space:"automation"}}]},{id:"computer",level:"lv4",icon:"terminal",title:q("\u8BA9 Tangu \u64CD\u4F5C\u7535\u8111","Let Tangu use your computer"),tasks:[{id:"cu-use",event:"computer.use",goal:1,title:q("\u8BA9 Tangu \u7528\u4E00\u6B21\u7535\u8111","Have Tangu use your computer once"),go:{settings:"computer-use"},desktopOnly:!0}]},{id:"plugin",level:"lv4",icon:"code",title:q("\u5199\u4E00\u4E2A\u81EA\u5DF1\u7684\u63D2\u4EF6","Write a plugin of your own"),tasks:[{id:"plugin-dev",event:"plugin.local",goal:1,title:q("\u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165\u4E00\u4E2A\u63D2\u4EF6","Load a plugin from a local folder"),go:{settings:"amadeus-plugins"},desktopOnly:!0}]},{id:"mini-capsules",level:"new",icon:"layout-grid",title:q("Mini \u9876\u680F\u4E24\u9897\u80F6\u56CA","Two capsules on the Mini bar"),tasks:[{id:"mini-open",event:"mini.open",goal:1,title:q("\u6253\u5F00\u4E00\u6B21 Mini \u7A97\u53E3","Open the Mini window"),go:{command:"open-mini"},desktopOnly:!0}]},{id:"todo-standalone",level:"new",icon:"list-tree",title:q("\u5F85\u529E\u89C6\u56FE\u5355\u72EC\u6253\u5F00","Open the to-do view on its own"),tasks:[{id:"todo-open",event:"todo.open",goal:1,title:q("\u5355\u72EC\u6253\u5F00\u4E00\u6B21\u5F85\u529E\u89C6\u56FE","Open the to-do view by itself"),go:{space:"calendar"}}]}],Rt=e=>vn.filter(t=>t.level===e),yn=e=>vn.find(t=>t.id===e);var ut=nr.filter(e=>!e.version);function Ht(e,t){let n=e.event.startsWith("own:");return t.count(n?e.event.slice(4):e.event,n)>=e.goal}var Nr=(e,t)=>e.filter(n=>t.desktop||!n.desktopOnly);function Tc(e,t){return Rt(e).every(n=>Nr(n.tasks,t).every(o=>Ht(o,t)))}function Ao(e,t){let n=ut.findIndex(o=>o.id===e);return n<=0||t.unlockAll?!0:ut.slice(0,n).every(o=>Tc(o.id,t))}function rr(e,t){return Ao(e.level,t)?Nr(e.tasks,t).every(n=>Ht(n,t))?"done":"active":"locked"}function ai(e){return ut.find(t=>!Tc(t.id,e))?.id??null}function Ac(e){let t={...e,unlockAll:!1},n=ut[0].id;for(let o of ut)Ao(o.id,t)&&(n=o.id);return n}function og(e,t){let n=e.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0),o=t.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0);for(let a=0;a<Math.max(n.length,o.length);a++){let i=(n[a]??0)-(o[a]??0);if(i)return i<0?-1:1}return 0}function ii(e){let t=nr.find(n=>n.version);return t?.version&&e.appVersion&&og(e.appVersion,t.version)>=0?t.version:null}var Ec=e=>vn.filter(t=>t.level!=="new"||!!ii(e));function Pc(e,t){let n=Nr(Rt(e).flatMap(o=>o.tasks),t);return{done:n.filter(o=>Ht(o,t)).length,total:n.length}}var si={zh:{agent:`\u9664\u4E86\u9ED8\u8BA4\u7684 Tangu\uFF0C\u4F60\u53EF\u4EE5\u6309\u7528\u9014\u5EFA\u81EA\u5DF1\u7684 Agent\uFF1A\u7ED9\u5B83\u540D\u5B57\u3001\u5DE5\u4F5C\u6307\u4EE4\u548C\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF0C\u8BA9\u5B83\u4E13\u95E8\u505A\u4E00\u7C7B\u4E8B\u3002
|
|
619
|
+
|
|
620
|
+
## \u521B\u5EFA
|
|
621
|
+
|
|
622
|
+
- \u70B9 Ribbon \u4E0A\u7684 Agents\uFF0C\u6216\u5728\u300C\u8BBE\u7F6E \u2192 Agent\u300D\u91CC\u70B9\u300C\u6253\u5F00 Agents\u300D\u3002
|
|
623
|
+
- \u5728\u5DE6\u680F\u540D\u518C\u91CC\u70B9\u300C\u521B\u5EFA Agent\u300D\uFF0C\u586B\u300C\u540D\u79F0\u300D\u300C\u7B80\u4ECB\u300D\u548C\u300C\u5DE5\u4F5C\u6307\u4EE4\u300D\uFF0C\u5199\u6E05\u5B83\u600E\u4E48\u5E2E\u4F60\u3001\u505A\u4E8B\u5B88\u4EC0\u4E48\u539F\u5219\uFF0C\u518D\u70B9\u300C\u521B\u5EFA Agent\u300D\u3002
|
|
624
|
+
|
|
625
|
+
## \u521B\u5EFA\u4E4B\u540E
|
|
626
|
+
|
|
627
|
+
- \u5B83\u7684\u6863\u6848\u9875\u91CC\u53EF\u4EE5\u63A5\u7740\u8C03\uFF1A\u6A21\u578B\u3001\u601D\u8003\u6863\u4F4D\u3001\u5BA1\u6279\u6A21\u5F0F\u3001\u4EBA\u683C\u3001\u6280\u80FD\u548C MCP\uFF0C\u6539\u5B8C\u70B9\u300C\u4FDD\u5B58\u914D\u7F6E\u300D\uFF0C\u4E0B\u4E00\u6B21\u8FD0\u884C\u751F\u6548\uFF1B\u4E5F\u80FD\u7FFB\u770B\u5B83\u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u548C\u8FDB\u5316\u3002
|
|
628
|
+
- \u8BB0\u5FC6\u53EF\u4EE5\u72EC\u7ACB\uFF0C\u4E5F\u53EF\u4EE5\u5171\u7528\u9ED8\u8BA4 Agent \u7684\u8BB0\u5FC6\u3002
|
|
629
|
+
- \u60F3\u548C\u5B83\u804A\uFF0C\u5728\u5BF9\u8BDD\u8F93\u5165\u6846\u7684\u6A21\u5F0F\u83DC\u5355\u91CC\uFF0C\u4ECE\u300C\u666E\u901A\u6A21\u5F0F\u300D\u4E0B\u5207\u6362\u5230\u8FD9\u4E2A Agent\u3002
|
|
630
|
+
|
|
631
|
+
> [!tip]
|
|
632
|
+
> \u540D\u518C\u91CC\u6BCF\u4E2A Agent \u7684\u64CD\u4F5C\u83DC\u5355\u6709\u300C\u8BBE\u4E3A\u9ED8\u8BA4\u300D\u548C\u300C\u8C03\u6574\u987A\u5E8F\u300D\u3002`,automation:`\u81EA\u52A8\u5316\u628A\u91CD\u590D\u7684\u4E8B\u5199\u6210\u4E00\u6761\u89C4\u5219\uFF1A\u4EC0\u4E48\u65F6\u5019\u89E6\u53D1\uFF0C\u4F9D\u6B21\u505A\u4EC0\u4E48\u3002\u4E4B\u540E\u5B83\u81EA\u5DF1\u8DD1\uFF0C\u7ED3\u679C\u9001\u8FDB\u6536\u4EF6\u7BB1\u3002
|
|
633
|
+
|
|
634
|
+
## \u5EFA\u7B2C\u4E00\u6761
|
|
635
|
+
|
|
636
|
+
- \u70B9 Ribbon \u4E0A\u7684\u300C\u81EA\u52A8\u5316\u300D\u3002\u70B9\u5DE6\u680F\u7684\u300C\u65B0\u5EFA\u81EA\u52A8\u5316\u300D\uFF0C\u6216\u4ECE\u300C\u5165\u95E8\u4E0E\u6A21\u677F\u300D\u6311\u4E00\u4E2A\uFF1A\u6BCF\u65E5\u63D0\u9192\u3001Agent \u6BCF\u65E5\u7B80\u62A5\u3001\u65B0\u589E\u8BB0\u5F55\u63D0\u9192\u3001\u4E00\u952E\u4EA4\u7ED9 Agent\uFF1B\u300C\u81EA\u5B9A\u4E49\u6D41\u7A0B\u300D\u4ECE\u5934\u642D\u3002
|
|
637
|
+
- \u753B\u5E03\u4E0A\u4F9D\u6B21\u662F \u89E6\u53D1 \u2192 \u52A8\u4F5C\u6B65\u9AA4 \u2192 \u4FDD\u5B58\u4E0E\u542F\u7528\u3002\u70B9\u8282\u70B9\uFF0C\u5728\u65C1\u8FB9\u7684\u9762\u677F\u91CC\u586B\u914D\u7F6E\uFF1B\u8FD8\u6CA1\u586B\u5B8C\u7684\u9879\u4F1A\u5217\u5728\u5E95\u90E8\u3002
|
|
638
|
+
- \u65B0\u6D41\u7A0B\u9ED8\u8BA4\u300C\u4FDD\u5B58\u4E3A\u6682\u505C\u300D\u3002\u70B9\u300C\u8BD5\u8DD1\u300D\u4F1A\u771F\u5B9E\u6267\u884C\u4E00\u6B21\uFF0C\u770B\u8FC7\u6BCF\u4E00\u6B65\u7684\u7ED3\u679C\u518D\u542F\u7528\u3002
|
|
639
|
+
|
|
640
|
+
## \u80FD\u7528\u4EC0\u4E48
|
|
641
|
+
|
|
642
|
+
- \u89E6\u53D1\uFF1A\u5B9A\u65F6\uFF08\u6BCF\u5929\u3001\u4E00\u6B21\u3001\u95F4\u9694\uFF09\u3001\u4E8B\u4EF6\u3001\u6587\u4EF6\u8FBE\u6807\u3001\u624B\u52A8\uFF08\u6309\u94AE\uFF09\u3001\u591A\u7EF4\u8868\u53D8\u5316\u3002
|
|
643
|
+
- \u52A8\u4F5C\uFF1A\u53D1\u901A\u77E5\u3001\u8DD1 Agent\u3001\u8C03\u5DE5\u5177\u3001\u5199\u591A\u7EF4\u8868\uFF0C\u6309\u8FDE\u7EBF\u7684\u987A\u5E8F\u6267\u884C\u3002
|
|
644
|
+
|
|
645
|
+
> [!tip]
|
|
646
|
+
> \u300C\u624B\u52A8\uFF08\u6309\u94AE\uFF09\u300D\u89C4\u5219\u53EF\u4EE5\u7ED1\u5230\u7B14\u8BB0\u91CC\u7684\u6309\u94AE\u5757\u4E0A\uFF0C\u70B9\u4E00\u4E0B\u5C31\u8DD1\u3002`,calendar:"\u65E5\u5386 Space \u628A\u591A\u7EF4\u8868\u91CC\u7684\u65E5\u671F\u3001\u7B14\u8BB0\u91CC\u5199\u4E0B\u7684\u65F6\u95F4\u6807\u8BB0\u548C\u8BA2\u9605\u7684\u5916\u90E8\u65E5\u5386\u53E0\u5728\u4E00\u8D77\u770B\uFF0C\u5F85\u529E\u4E5F\u6536\u5728\u8FD9\u91CC\u3002\n\n## \u5148\u6709\u4E00\u4E2A\u65E5\u5386\n\n\u65E5\u5386\u7684\u6570\u636E\u6765\u81EA\u542B\u300C\u65E5\u671F\u300D\u5C5E\u6027\u7684\u591A\u7EF4\u8868\uFF0C\u6240\u4EE5\u7B2C\u4E00\u6B21\u8FDB\u6765\u662F\u7A7A\u7684\u3002\u5728\u5DE6\u680F\u300C\u65E5\u5386\u300D\u53F3\u8FB9\u70B9 \u2460 +\uFF0C\u9009\u300C\u6DFB\u52A0\u591A\u7EF4\u8868\u300D\uFF0C\u6311\u4E00\u5F20\u5E26\u65E5\u671F\u5217\u7684\u8868\uFF1B\u8FD8\u6CA1\u6709\u7684\u8BDD\u5148\u56DE\u7B14\u8BB0 Space \u5EFA\u4E00\u5F20\u3002\u540C\u4E00\u4E2A\u83DC\u5355\u91CC\u8FD8\u80FD\u8BA2\u9605\u5916\u90E8\u65E5\u5386\u3001\u5BFC\u5165 `.ics` \u6587\u4EF6\uFF0C\u8FD9\u4E24\u79CD\u662F\u53EA\u8BFB\u7684\u3002\n\n## \u5EFA\u4E00\u4E2A\u65E5\u7A0B\n\n- \u2461 \u5355\u51FB\u65F6\u95F4\u683C\uFF08\u6216\u6309 `C`\uFF09\uFF0C\u5728\u683C\u5B50\u91CC\u76F4\u63A5\u6253\u6807\u9898\uFF0C`Enter` \u4FDD\u5B58\uFF0C`Esc` \u53D6\u6D88\u3002\n- \u62D6\u52A8\u4E8B\u4EF6\u6539\u65F6\u95F4\uFF0C\u62D6\u5B83\u7684\u4E0A\u4E0B\u8FB9\u6539\u65F6\u957F\uFF1B\u70B9\u4E00\u4E0B\u4E8B\u4EF6\uFF0C\u65C1\u8FB9\u4F1A\u5F39\u51FA\u8BE6\u60C5\u5361\u3002\n- `D` / `W` / `3` / `M` \u5207\u5230\u65E5\u3001\u5468\u30013 \u65E5\u3001\u6708\u89C6\u56FE\uFF0C`T` \u56DE\u5230\u4ECA\u5929\u3002\n\n## \u52FE\u6389\u5F85\u529E\n\n\u2462 \u53F3\u680F\u662F\u5F85\u529E\u6E05\u5355\u3002\u5728\u7B14\u8BB0\u91CC\u5199\u4E00\u884C\u590D\u9009\u6846\u5F85\u529E\uFF0C\u540E\u9762\u6253 `@\u660E\u5929`\uFF0C\u4ECE\u5019\u9009\u91CC\u9009\u300C\u65E5\u7A0B\u300D\uFF0C\u5B83\u5C31\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002\u70B9\u52FE\u9009\u6846\u5C31\u7B97\u5B8C\u6210\uFF0C\u7B14\u8BB0\u91CC\u90A3\u4E00\u884C\u4E5F\u4F1A\u8DDF\u7740\u6539\u6210\u5DF2\u5B8C\u6210\u3002",chat:`Tangu \u662F Forsion \u91CC\u7684 AI Agent\uFF1A\u4F60\u8BF4\u4E00\u53E5\uFF0C\u5B83\u4F1A\u56DE\u7B54\uFF0C\u4E5F\u80FD\u52A8\u624B\u67E5\u8D44\u6599\u3001\u6539\u6587\u4EF6\u3001\u8DD1\u547D\u4EE4\u3002\u5148\u4ECE\u6253\u4E2A\u62DB\u547C\u5F00\u59CB\u3002
|
|
647
|
+
|
|
648
|
+
## \u5F00\u4E00\u4E2A\u65B0\u4F1A\u8BDD
|
|
649
|
+
|
|
650
|
+
- \u70B9 Ribbon \u4E0A\u7684 Tangu\uFF1A\u5DE6\u680F\u662F\u4F1A\u8BDD\u5217\u8868\uFF0C\u4E2D\u95F4\u662F\u5BF9\u8BDD\u3002
|
|
651
|
+
- \u2460 \u70B9\u5DE6\u680F\u9876\u90E8\u7684\u300C\u65B0\u4F1A\u8BDD\u300D\uFF0C\u6216\u5728 Tangu \u91CC\u6309 \`\u2318/Ctrl+N\`\uFF08\u5728\u7B14\u8BB0 Space \u91CC\u8FD9\u4E2A\u952E\u662F\u65B0\u5EFA\u7B14\u8BB0\uFF09\u3002
|
|
652
|
+
- \u2461 \u5728\u8F93\u5165\u6846\u91CC\u6253\u5B57\uFF0C\`Enter\` \u53D1\u9001\uFF0C\`Shift+Enter\` \u6362\u884C\u3002
|
|
653
|
+
|
|
654
|
+
## \u8BA9\u5B83\u77E5\u9053\u4F60\u5728\u8BF4\u4EC0\u4E48
|
|
655
|
+
|
|
656
|
+
- \u628A\u6587\u4EF6\u3001\u7B14\u8BB0\u6216\u5DE6\u680F\u91CC\u7684\u4F1A\u8BDD\u62D6\u8FDB\u5BF9\u8BDD\u533A\uFF0C\u5C31\u6210\u4E86\u4E00\u6761\u5F15\u7528\uFF0CTangu \u8BFB\u5F97\u5230\u5185\u5BB9\uFF1B\u622A\u56FE\u53EF\u4EE5\u76F4\u63A5\u7C98\u8D34\u8FDB\u8F93\u5165\u6846\u3002
|
|
657
|
+
- \u8F93\u5165 \`[[\` \u5F15\u7528\u4EE5\u524D\u7684\u4F1A\u8BDD\uFF0C\u8F93\u5165 \`/\` \u5524\u8D77\u6280\u80FD\u548C\u547D\u4EE4\u3002
|
|
658
|
+
- \u5B83\u5E72\u6D3B\u7684\u65F6\u5019\u4F60\u53EF\u4EE5\u63A5\u7740\u53D1\u6D88\u606F\uFF0C\u4F1A\u5728\u4E0B\u4E00\u6B65\u4EA4\u7ED9\u5B83\u3002
|
|
659
|
+
- \u5212\u9009\u56DE\u590D\u91CC\u7684\u6587\u5B57\uFF0C\u70B9\u300C\u5F15\u7528\u300D\uFF0C\u5C31\u80FD\u5E26\u8FDB\u4E0B\u4E00\u6761\u6D88\u606F\u3002
|
|
660
|
+
|
|
661
|
+
> [!tip]
|
|
662
|
+
> \u300C\u65B0\u4F1A\u8BDD\u300D\u65C1\u8FB9\u7684 Chat / Work \u80F6\u56CA\u51B3\u5B9A\u6A21\u5F0F\uFF1AChat \u662F\u8F7B\u804A\u5929\uFF0CWork \u5E26\u5B8C\u6574\u7684\u5DE5\u5177\u3002\u6A21\u5F0F\u5728\u5EFA\u4F1A\u8BDD\u65F6\u5B9A\u4E0B\uFF0C\u60F3\u6362\u5C31\u65B0\u5F00\u4E00\u4E2A\u3002`,computer:`\u8BA9 Tangu \u770B\u7740\u5C4F\u5E55\u66FF\u4F60\u64CD\u4F5C\u522B\u7684\u5E94\u7528\uFF1A\u5B83\u5148\u622A\u56FE\u770B\u6E05\u754C\u9762\uFF0C\u518D\u70B9\u6309\u3001\u8F93\u5165\uFF0C\u4E00\u6B65\u6B65\u628A\u4E8B\u60C5\u505A\u5B8C\u3002
|
|
663
|
+
|
|
664
|
+
## \u51C6\u5907
|
|
665
|
+
|
|
666
|
+
- \u8FD9\u662F\u7535\u8111\u4E0A\u7684\u529F\u80FD\uFF0C\u9760 Computer Use \u63D2\u4EF6\u5B8C\u6210\uFF1B\u7B2C\u4E00\u6B21\u8BBE\u7F6E\u6743\u9650\u65F6\u4F1A\u81EA\u52A8\u88C5\u597D\u3002
|
|
667
|
+
- macOS \u4E0A\u8981\u5728\u7CFB\u7EDF\u8BBE\u7F6E\u7684\u300C\u9690\u79C1\u4E0E\u5B89\u5168\u6027\u300D\u91CC\u7ED9 tangu-computer-use \u6388\u6743\uFF08\u8F85\u52A9\u529F\u80FD\u548C\u5C4F\u5E55\u5F55\u5236\uFF09\u3002\u5230\u300C\u8BBE\u7F6E \u2192 \u7CFB\u7EDF \u2192 \u8BBE\u5907\u6743\u9650\u300D\u70B9\u300C\u8BBE\u7F6E\u6743\u9650\u300D\uFF0C\u6309\u5F15\u5BFC\u505A\u5B8C\uFF0C\u518D\u70B9\u300C\u9A8C\u8BC1 Computer Use \u6743\u9650\u300D\u3002Windows \u4E0D\u9700\u8981\u8FD9\u4E00\u6B65\u3002
|
|
668
|
+
- \u300C\u8BBE\u7F6E \u2192 \u7535\u8111\u64CD\u4F5C\u300D\u91CC\u53EF\u4EE5\u51B3\u5B9A\u5B83\u80FD\u4E0D\u80FD\u62A2\u524D\u53F0\uFF0C\u4EE5\u53CA\u662F\u5426\u6253\u5F00 Jev \u52A0\u901F\u548C\u6D4F\u89C8\u5668\u5DE5\u5177\u3002
|
|
669
|
+
|
|
670
|
+
## \u7528\u8D77\u6765
|
|
671
|
+
|
|
672
|
+
\u76F4\u63A5\u5728\u5BF9\u8BDD\u91CC\u8BF4\u8981\u505A\u4EC0\u4E48\uFF0C\u6BD4\u5982\u300C\u6253\u5F00\u5907\u5FD8\u5F55\uFF0C\u65B0\u5EFA\u4E00\u6761\u8D2D\u7269\u6E05\u5355\u300D\u3002Tangu \u4F1A\u8FB9\u622A\u56FE\u8FB9\u64CD\u4F5C\uFF0C\u6BCF\u4E00\u6B65\u90FD\u663E\u793A\u5728\u5BF9\u8BDD\u91CC\uFF1B\u52A8\u624B\u524D\u8981\u4E0D\u8981\u5148\u95EE\u4F60\uFF0C\u8DDF\u7740\u8FD9\u6761\u4F1A\u8BDD\u7684\u5BA1\u6279\u6A21\u5F0F\u8D70\u3002
|
|
673
|
+
|
|
674
|
+
> [!tip]
|
|
675
|
+
> \u60F3\u4E2D\u9014\u53EB\u505C\uFF0C\u70B9\u5BF9\u8BDD\u91CC\u7684\u505C\u6B62\u6309\u94AE\u3002`,database:`\u6570\u636E\u5E93\uFF08\u754C\u9762\u4E0A\u53EB\u591A\u7EF4\u8868\uFF0C\u6587\u4EF6\u662F \`.db\`\uFF09\u628A\u4E00\u884C\u884C\u8BB0\u5F55\u88C5\u8FDB\u4E00\u5F20\u6709\u5217\u7C7B\u578B\u7684\u8868\uFF0C\u540C\u4E00\u6279\u6570\u636E\u8FD8\u80FD\u6362\u6210\u770B\u677F\u3001\u65E5\u5386\u3001\u753B\u5ECA\u6765\u770B\u3002
|
|
676
|
+
|
|
677
|
+
## \u65B0\u5EFA\u4E00\u5F20
|
|
678
|
+
|
|
679
|
+
\u2460 \u5728\u7B14\u8BB0 Space \u5DE6\u680F\u7684\u7B14\u8BB0\u6811\u91CC\uFF0C\u53F3\u952E\u7A7A\u767D\u5904\u6216\u67D0\u4E2A\u6587\u4EF6\u5939\uFF0C\u9009\u300C\u65B0\u5EFA Base\u300D\uFF0C\u8D77\u4E2A\u540D\u5B57\u3002\u667A\u5E93\u91CC\u4F1A\u591A\u51FA\u4E00\u4E2A \`.db\` \u6587\u4EF6\uFF0C\u5E76\u76F4\u63A5\u6253\u5F00\u6210\u6807\u7B7E\u9875\u3002
|
|
680
|
+
|
|
681
|
+
\u2461 \u60F3\u628A\u8868\u653E\u8FDB\u67D0\u7BC7\u7B14\u8BB0\uFF0C\u5C31\u5728\u6B63\u6587\u91CC\u8F93\u5165 \`/\`\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D\uFF1B\u9009\u300C\u94FE\u63A5\u591A\u7EF4\u8868\u300D\u53EF\u4EE5\u628A\u5DF2\u6709\u7684\u8868\u5D4C\u8FDB\u6765\u3002
|
|
682
|
+
|
|
683
|
+
## \u5217\u4E0E\u89C6\u56FE
|
|
684
|
+
|
|
685
|
+
- \u8868\u5934\u6700\u53F3\u8FB9\u7684 \uFF0B \u52A0\u5217\u3002\u5217\u6709\u7C7B\u578B\uFF1A\u6587\u672C\u3001\u6570\u5B57\u3001\u52FE\u9009\u3001\u65E5\u671F\u3001\u9644\u4EF6\u3001\u5173\u8054\u7B49\u3002
|
|
686
|
+
- \u89C6\u56FE\u6807\u7B7E\u65C1\u7684 \uFF0B \u52A0\u89C6\u56FE\uFF1A\u8868\u683C\u3001\u770B\u677F\u3001\u65E5\u5386\u3001\u753B\u5ECA\u3001\u56FE\u8868\u3001\u8868\u5355\u3001\u7518\u7279\uFF0C\u6BCF\u4E2A\u89C6\u56FE\u5404\u5B58\u81EA\u5DF1\u7684\u7B5B\u9009\u548C\u6392\u5E8F\u3002
|
|
687
|
+
- \u5DE5\u5177\u680F\u7684\u300C\u65B0\u5EFA\u300D\u52A0\u4E00\u884C\uFF0C\u70B9\u683C\u5B50\u5C31\u80FD\u76F4\u63A5\u6539\u3002
|
|
688
|
+
|
|
689
|
+
> [!tip]
|
|
690
|
+
> \u987A\u624B\u7ED9\u8868\u52A0\u4E00\u5217\u300C\u65E5\u671F\u300D\u5C5E\u6027\uFF0C\u5230\u300C\u65E5\u5386\u548C\u5F85\u529E\u300D\u90A3\u4E00\u7AE0\u5C31\u80FD\u628A\u5B83\u63A5\u8FDB\u65E5\u5386 Space\u3002`,market:`\u5546\u5E97\u91CC\u6709\u522B\u4EBA\u505A\u597D\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent\u3001\u4E3B\u9898\u548C Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u88C5\u597D\uFF0C\u7528\u4E0D\u4E0A\u4E86\u4E5F\u80FD\u968F\u65F6\u5378\u8F7D\u3002
|
|
691
|
+
|
|
692
|
+
## \u6253\u5F00\u5546\u5E97
|
|
693
|
+
|
|
694
|
+
\u2460 \u70B9 Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D\u56FE\u6807\uFF0C\u6216\u5728\u547D\u4EE4\u9762\u677F\uFF08\`\u2318/Ctrl+K\`\uFF09\u91CC\u641C\u300C\u5546\u5E97\u300D\u3002\u5DE6\u8FB9\u6309\u5206\u7C7B\u6D4F\u89C8\uFF1A\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent\u3001Space\u3001\u4E3B\u9898\u3001\u7F51\u7AD9\u5E94\u7528\uFF1B\u9876\u4E0A\u53EF\u4EE5\u6309\u540D\u79F0\u3001\u4F5C\u8005\u6216\u6807\u7B7E\u641C\u7D22\u3002
|
|
695
|
+
|
|
696
|
+
## \u5B89\u88C5\u4E0E\u7BA1\u7406
|
|
697
|
+
|
|
698
|
+
- \u70B9\u5F00\u4E00\u4E2A\u6761\u76EE\u770B\u8BE6\u60C5\uFF0C\u518D\u70B9\u300C\u5B89\u88C5\u300D\u3002\u591A\u6570\u63D2\u4EF6\u88C5\u597D\u5C31\u80FD\u7528\uFF0C\u6709\u8BBE\u7F6E\u9879\u7684\u70B9\u300C\u6253\u5F00\u8BBE\u7F6E\u300D\u53BB\u8C03\u3002
|
|
699
|
+
- \u300C\u5DF2\u5B89\u88C5\u300D\u91CC\u662F\u4F60\u88C5\u8FC7\u7684\u5168\u90E8\u5185\u5BB9\uFF0C\u5728\u8FD9\u91CC\u300C\u5378\u8F7D\u300D\uFF1B\u300C\u53EF\u66F4\u65B0\u300D\u5217\u51FA\u6709\u65B0\u7248\u672C\u7684\u3002
|
|
700
|
+
- \u6807\u7740\u300C\u4EC5\u684C\u9762\u300D\u7684\u63D2\u4EF6\u8981\u7528\u5230\u7535\u8111\u4E0A\u624D\u6709\u7684\u529F\u80FD\uFF0C\u624B\u673A\u4E0A\u88C5\u4E0D\u4E86\u3002
|
|
701
|
+
|
|
702
|
+
> [!tip]
|
|
703
|
+
> \u63D2\u4EF6\u4E5F\u53EF\u4EE5\u5728\u300C\u8BBE\u7F6E \u2192 \u63D2\u4EF6\u300D\u91CC\u968F\u65F6\u505C\u7528\uFF0C\u4E0D\u5FC5\u5378\u8F7D\u3002`,"mini-capsules":`2.14 \u8D77\uFF0CMini \u7A97\u53E3\u7684\u9876\u680F\u4E0D\u518D\u5360\u4E24\u6761\u6A2A\u680F\uFF0C\u6539\u6210\u6D6E\u5728\u5185\u5BB9\u4E0A\u7684\u4E24\u9897\u80F6\u56CA\uFF0C\u6B63\u6587\u80FD\u591A\u9732\u51FA\u4E00\u622A\u3002
|
|
704
|
+
|
|
705
|
+
## \u6253\u5F00 Mini \u7A97\u53E3
|
|
706
|
+
|
|
707
|
+
\u6309 \`\u2318/Ctrl+Shift+M\`\uFF08\u5168\u5C40\u5FEB\u6377\u952E\uFF0C\u522B\u7684\u5E94\u7528\u5728\u524D\u53F0\u65F6\u4E5F\u80FD\u7528\uFF09\uFF0C\u6216\u5728\u547D\u4EE4\u9762\u677F\u91CC\u8FD0\u884C\u300C\u6253\u5F00 Mini \u5361\u7247\u300D\u3002\u5B83\u662F\u4E00\u5F20\u7F6E\u9876\u7684\u5C0F\u5361\u7247\uFF0C\u9002\u5408\u4E00\u8FB9\u505A\u522B\u7684\u4E8B\uFF0C\u4E00\u8FB9\u804A\u4E24\u53E5\u3001\u8BB0\u4E00\u7B14\u3001\u52FE\u4E2A\u5F85\u529E\u3002
|
|
708
|
+
|
|
709
|
+
## \u4E24\u9897\u80F6\u56CA
|
|
710
|
+
|
|
711
|
+
- \u5DE6\u8FB9\uFF1A\u5207\u6362 Space \u7684\u6309\u94AE\uFF0C\u65C1\u8FB9\u662F\u6807\u9898\u4E0B\u62C9\uFF0C\u7528\u6765\u6362\u4F1A\u8BDD\u6216\u6362\u7B14\u8BB0\u3002
|
|
712
|
+
- \u53F3\u8FB9\uFF1A\u65B0\u5EFA\u3001\u300C\u5728\u4E3B\u9762\u677F\u663E\u793A\u300D\u548C\u5173\u95ED\u3002
|
|
713
|
+
- \u80F6\u56CA\u4E4B\u5916\u7684\u9876\u680F\u662F\u900F\u660E\u7684\uFF0C\u6309\u4F4F\u7A7A\u767D\u5904\u5C31\u80FD\u62D6\u52A8\u7A97\u53E3\uFF1B\u5BF9\u8BDD\u4F1A\u4ECE\u80F6\u56CA\u5E95\u4E0B\u6EDA\u8FC7\u53BB\u3002
|
|
714
|
+
|
|
715
|
+
## \u80FD\u653E\u4EC0\u4E48
|
|
716
|
+
|
|
717
|
+
Tangu\uFF08\u5207\u6362\u4F1A\u8BDD\u3001\u53D1\u6D88\u606F\uFF09\u3001\u7B14\u8BB0\uFF08\u9009\u4E00\u7BC7\u6216\u65B0\u5EFA\uFF0C\u5C31\u5730\u7F16\u8F91\uFF09\u548C\u5F85\u529E\u6E05\u5355\u3002\u62D6\u5361\u7247\u7684\u8FB9\u6216\u89D2\u53EF\u4EE5\u6539\u5927\u5C0F\uFF0C\u5173\u6389\u518D\u5F00\u4F1A\u6CBF\u7528\u4E0A\u6B21\u7684\u5927\u5C0F\u3002`,muse:`Muse \u662F\u5728\u540E\u53F0\u4E3B\u52A8\u5E72\u6D3B\u7684 Agent\uFF1A\u6309\u8282\u594F\u9192\u6765\uFF0C\u770B\u770B\u4F60\u6700\u8FD1\u5728\u505A\u4EC0\u4E48\uFF0C\u63D0\u51FA\u503C\u5F97\u505A\u7684\u5F85\u529E\uFF0C\u66FF\u4F60\u76EF\u7740\u4EA4\u4EE3\u8FC7\u7684\u4E8B\u3002
|
|
718
|
+
|
|
719
|
+
## Muse \u4E0E Historian
|
|
720
|
+
|
|
721
|
+
\u300C\u8BBE\u7F6E \u2192 Agent \u2192 \u540E\u53F0 Agent\u300D\u91CC\u6709\u4E24\u4F4D\uFF1A
|
|
722
|
+
|
|
723
|
+
- Historian\uFF1A\u6574\u7406\u4F1A\u8BDD\u4E0E\u8BB0\u5FC6\uFF0C\u8D1F\u8D23\u603B\u7ED3\u4F1A\u8BDD\u3001\u7EF4\u62A4\u65E5\u5FD7\u548C\u8BB0\u5FC6\u3002
|
|
724
|
+
- Muse\uFF1A\u6309\u8282\u594F\u4E3B\u52A8\u5DE5\u4F5C\uFF0C\u6709\u81EA\u5DF1\u7684 Library \u548C Space\uFF08Ribbon \u4E0A\u7684 Muse\uFF09\u3002
|
|
725
|
+
|
|
726
|
+
\u4E24\u4F4D\u9ED8\u8BA4\u90FD\u5F00\u7740\u3002\u4F60\u5173\u6389\u8FC7\u7684\u8BDD\uFF0C\u5728\u8FD9\u91CC\u91CD\u65B0\u6253\u5F00\uFF0C\u518D\u70B9\u300C\u4FDD\u5B58\u66F4\u6539\u300D\u3002
|
|
727
|
+
|
|
728
|
+
## \u8C03\u5B83\u7684\u5DE5\u4F5C\u65B9\u5F0F
|
|
729
|
+
|
|
730
|
+
- \u300C\u6743\u9650\u6863\u300D\uFF1A\u5BA1\u6279\uFF08\u8D8A\u754C\u64CD\u4F5C\u6392\u961F\u7B49\u4F60\u6279\u51C6\uFF09\u3001\u4EE3\u6279\uFF08\u9ED8\u8BA4 Agent \u66FF\u4F60\u88C1\u51B3\u4E00\u6B21\uFF09\u3001\u5168\u5F00\u3002
|
|
731
|
+
- \u5FC3\u8DF3\u95F4\u9694\u3001\u8FD0\u884C\u65F6\u6BB5\uFF0C\u4EE5\u53CA\u901A\u77E5\u662F\u5373\u65F6\u53D1\u8FD8\u662F\u6512\u6210\u65E5\u62A5\u3002
|
|
732
|
+
- \u5728\u4EFB\u610F\u804A\u5929\u91CC\u8BF4\u300C\u5E2E\u6211\u76EF\u7740\u67D0\u4EF6\u4E8B\u300D\uFF0C\u5C31\u6210\u4E86\u4E00\u6761\u76EF\u4EFB\u52A1\u89C4\u5219\uFF1B\u804A\u5929\u91CC\u7684\u4EFB\u52A1\u5361\u8FD8\u80FD\u300C\u4EA4\u7ED9 Muse \u8FFD\u8E2A\u300D\u3002
|
|
733
|
+
|
|
734
|
+
> [!tip]
|
|
735
|
+
> Muse \u63D0\u7684\u5F85\u529E\u548C\u7B49\u4F60\u6279\u51C6\u7684\u64CD\u4F5C\u4F1A\u8FDB\u6536\u4EF6\u7BB1\uFF0C\u4E5F\u5217\u5728 Muse Space \u7684\u53F3\u680F\u91CC\u3002`,note:`\u7B14\u8BB0 Space\uFF08Amadeus\uFF09\u662F\u4F60\u7684\u7B14\u8BB0\u5E93\uFF1A\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u786C\u76D8\u4E0A\u7684\u4E00\u4E2A Markdown \u6587\u4EF6\uFF0C\u53EF\u4EE5\u5199\u3001\u53EF\u4EE5\u4E92\u76F8\u94FE\u63A5\uFF0C\u8FD8\u80FD\u644A\u5F00\u6210\u4E00\u5F20\u753B\u5E03\u3002
|
|
736
|
+
|
|
737
|
+
## \u65B0\u5EFA\u4E0E\u4E66\u5199
|
|
738
|
+
|
|
739
|
+
- \u5148\u6253\u5F00\u4E00\u4E2A\u667A\u5E93\uFF0C\u5B83\u5C31\u662F\u7535\u8111\u4E0A\u7684\u4E00\u4E2A\u666E\u901A\u6587\u4EF6\u5939\uFF0C\u5DE6\u680F\u7684\u7B14\u8BB0\u6811\u663E\u793A\u91CC\u9762\u7684\u5185\u5BB9\u3002
|
|
740
|
+
- \u2460 \u5728\u7B14\u8BB0 Space \u91CC\u6309 \`\u2318/Ctrl+N\`\uFF0C\u6216\u70B9\u5DE6\u680F\u7684\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D\u3002
|
|
741
|
+
- \u5728\u7A7A\u884C\u8F93\u5165 \`/\` \u5524\u51FA\u5757\u83DC\u5355\uFF1A\u6807\u9898\u3001\u5F85\u529E\u3001\u8868\u683C\u3001\u4EE3\u7801\u3001\u591A\u7EF4\u8868\u2026\u2026\`# \` \u8FD9\u7C7B Markdown \u524D\u7F00\u4E5F\u76F4\u63A5\u751F\u6548\u3002
|
|
742
|
+
|
|
743
|
+
## \u7528\u53CC\u94FE\u8FDE\u8D77\u6765
|
|
744
|
+
|
|
745
|
+
\u8F93\u5165 \`[[\`\uFF0C\u4ECE\u5019\u9009\u91CC\u9009\u4E00\u7BC7\uFF0C\u6309 \`Enter\`\uFF0C\u5C31\u751F\u6210\u4E00\u6761\u53CC\u94FE\u3002\u88AB\u94FE\u63A5\u7684\u90A3\u7BC7\u4F1A\u591A\u51FA\u4E00\u6761\u53CD\u5411\u94FE\u63A5\uFF0C\u5C55\u5F00\u53F3\u680F\uFF0C\u5728 \u2462\u300C\u53CD\u94FE\u300D\u91CC\u770B\u5F97\u5230\u3002
|
|
746
|
+
|
|
747
|
+
## \u6587\u6863\u4E0E\u753B\u5E03
|
|
748
|
+
|
|
749
|
+
\u6253\u5F00\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u7B14\u8BB0\u9876\u4E0A\u9760\u5DE6\u6709 \u2461\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA\u3002\u540C\u4E00\u4EFD\u5185\u5BB9\u4E24\u79CD\u770B\u6CD5\uFF1A\u6587\u6863\u4ECE\u4E0A\u5F80\u4E0B\u8BFB\uFF0C\u753B\u5E03\u50CF\u767D\u677F\u4E00\u6837\u968F\u624B\u6446\uFF0C\u5207\u8FC7\u53BB\u4E00\u4E2A\u5B57\u90FD\u4E0D\u4F1A\u53D8\u3002\u547D\u4EE4\u9762\u677F\u91CC\u7684\u300C\u5207\u6362\u6587\u6863 / \u753B\u5E03\u300D\u505A\u7684\u662F\u540C\u4E00\u4EF6\u4E8B\uFF0C\u8BB0\u5F97\u5148\u6253\u5F00\u4E00\u7BC7\u7B14\u8BB0\u3002`,plugin:`Forsion \u7684\u89C6\u56FE\u3001\u547D\u4EE4\u548C Space \u90FD\u80FD\u7528\u63D2\u4EF6\u6269\u5C55\u3002\u4E00\u4E2A\u684C\u9762\u63D2\u4EF6\u5C31\u662F\u4E00\u4E2A\u6587\u4EF6\u5939\uFF0C\u653E\u8FDB\u63D2\u4EF6\u76EE\u5F55\u3001\u91CD\u65B0\u52A0\u8F7D\u5C31\u80FD\u8DD1\u3002
|
|
750
|
+
|
|
751
|
+
## \u63D2\u4EF6\u957F\u4EC0\u4E48\u6837
|
|
752
|
+
|
|
753
|
+
- \u6BCF\u4E2A\u63D2\u4EF6\u662F \`~/.forsion/plugins/\` \u4E0B\u7684\u4E00\u4E2A\u6587\u4EF6\u5939\uFF0C\u91CC\u9762\u81F3\u5C11\u6709 \`manifest.json\`\uFF08id\u3001\u540D\u79F0\u3001\u7248\u672C\u7B49\uFF09\u548C \`main.js\`\u3002
|
|
754
|
+
- \`main.js\` \u672C\u8EAB\u5C31\u662F \`setup(ctx)\` \u7684\u51FD\u6570\u4F53\uFF1A\u5728\u9876\u5C42\u76F4\u63A5\u8C03\u7528 \`ctx.registerView(\u2026)\` \u8FD9\u7C7B\u63A5\u53E3\uFF0C\u6CE8\u518C\u89C6\u56FE\u3001\u547D\u4EE4\u3001\u659C\u6760\u83DC\u5355\u9879\u6216\u6587\u4EF6\u7C7B\u578B\u3002\u522B\u518D\u628A\u5B83\u5305\u8FDB\u4E00\u4E2A\u51FD\u6570\u91CC\uFF0C\u5426\u5219\u4EC0\u4E48\u90FD\u4E0D\u4F1A\u6CE8\u518C\uFF0C\u4E5F\u4E0D\u62A5\u9519\u3002
|
|
755
|
+
- \u7ED9 AI \u52A0\u5DE5\u5177\u7684\u662F\u53E6\u4E00\u7C7B\u300CTangu \u5F15\u64CE\u63D2\u4EF6\u300D\uFF0C\u683C\u5F0F\u4E0D\u4E00\u6837\u3002
|
|
756
|
+
|
|
757
|
+
## \u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165
|
|
758
|
+
|
|
759
|
+
- \u6253\u5F00\u300C\u8BBE\u7F6E \u2192 \u63D2\u4EF6\u300D\uFF0C\u8FDB\u300C\u5DF2\u5B89\u88C5\u63D2\u4EF6\u300D\uFF0C\u5C55\u5F00\u300C\u5F00\u53D1\u5DE5\u5177\u300D\u3002
|
|
760
|
+
- \u300C\u521B\u5EFA\u793A\u4F8B\u63D2\u4EF6\u300D\u4E00\u952E\u751F\u6210\u4E00\u4E2A\u80FD\u8DD1\u7684\u6837\u4F8B\uFF1B\u300C\u6253\u5F00\u63D2\u4EF6\u6587\u4EF6\u5939\u300D\u7528\u6765\u653E\u4F60\u81EA\u5DF1\u7684\u63D2\u4EF6\u3002
|
|
761
|
+
- \u6539\u5B8C\u4EE3\u7801\u70B9\u300C\u91CD\u65B0\u52A0\u8F7D\u300D\uFF0C\u4E0D\u7528\u91CD\u542F\u5E94\u7528\u3002
|
|
762
|
+
|
|
763
|
+
> [!tip]
|
|
764
|
+
> \u63D2\u4EF6\u4F5C\u8005\u624B\u518C\u968F\u5E94\u7528\u9644\u5E26\uFF0C\u5C31\u5728\u5185\u7F6E\u6280\u80FD\u300CForsion \u6269\u5C55\u5F00\u53D1\u300D\u91CC\u3002\u8DDF Tangu \u8BF4\u300C\u5E2E\u6211\u5199\u4E00\u4E2A Forsion \u63D2\u4EF6\u300D\uFF0C\u5B83\u4F1A\u7167\u5B98\u65B9\u6A21\u677F\u8D77\u597D\u9AA8\u67B6\uFF1B\u88C5\u597D\u7684\u63D2\u4EF6\u51FA\u4E86\u95EE\u9898\uFF0C\u4E5F\u53EF\u4EE5\u8BA9\u5B83\u8DD1\u4E00\u904D\u63D2\u4EF6\u4F53\u68C0\u3002`,space:`\u628A\u89C6\u56FE\u6446\u6210\u987A\u624B\u7684\u6837\u5B50\u4E4B\u540E\uFF0C\u53EF\u4EE5\u628A\u8FD9\u5957\u5E03\u5C40\u5B58\u6210\u4E00\u4E2A\u65B0\u7684 Space\uFF0C\u4EE5\u540E\u5728 Ribbon \u4E0A\u70B9\u4E00\u4E0B\u5C31\u56DE\u6765\u3002
|
|
765
|
+
|
|
766
|
+
## \u5B58\u4E0B\u5F53\u524D\u5E03\u5C40
|
|
767
|
+
|
|
768
|
+
- \u5728\u4EFB\u610F Space \u91CC\u628A\u6807\u7B7E\u9875\u548C\u4FA7\u680F\u6446\u597D\u3002
|
|
769
|
+
- \u6253\u5F00\u547D\u4EE4\u9762\u677F\uFF08\`\u2318/Ctrl+K\`\uFF09\uFF0C\u8FD0\u884C\u300C\u5C06\u5F53\u524D\u5E03\u5C40\u53E6\u5B58\u4E3A Space\u300D\u3002
|
|
770
|
+
- \u6309\u63D0\u793A\u586B\u4E0A\u300C\u65B0 Space \u540D\u79F0\u300D\uFF0CRibbon \u9876\u90E8\u5C31\u591A\u4E86\u4E00\u4E2A\u56FE\u6807\u3002
|
|
771
|
+
|
|
772
|
+
\u4E5F\u53EF\u4EE5\u70B9 Ribbon \u4E0A Space \u533A\u7684 \u2460 \uFF0B\uFF08\u300C\u65B0\u5EFA Space \u6216\u6536\u7EB3\u5939\u300D\uFF09\uFF0C\u9009\u300C\u65B0\u5EFA Space\u300D\uFF0C\u4ECE\u4E00\u4E2A\u7A7A\u767D Space \u5F00\u59CB\u6446\u3002\u5B58 Space \u8981\u5728\u7535\u8111\u4E0A\u7684 Forsion \u91CC\u505A\u3002
|
|
773
|
+
|
|
774
|
+
## \u4E4B\u540E
|
|
775
|
+
|
|
776
|
+
- \u5728\u81EA\u5DF1\u7684 Space \u91CC\u7EE7\u7EED\u8C03\u5E03\u5C40\uFF0C\u4F1A\u81EA\u52A8\u8BB0\u4F4F\uFF1B\u6446\u4E71\u4E86\uFF0C\u70B9 \u2461 \u53F3\u4E0A\u89D2\u90A3\u6392\u6D6E\u52A8\u6309\u94AE\u91CC\u7684\u300C\u6062\u590D\u672C Space \u9ED8\u8BA4\u5E03\u5C40\u300D\u3002
|
|
777
|
+
- \u62D6\u52A8\u56FE\u6807\u53EF\u4EE5\u6392\u5E8F\uFF1B\u53F3\u952E\u81EA\u5DF1\u7684 Space \u56FE\u6807\uFF0C\u53EF\u4EE5\u300C\u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00\u300D\u6216\u300C\u5220\u9664 Space\u2026\u300D\u3002
|
|
778
|
+
- \u300C\u8BBE\u7F6E \u2192 Space\u300D\u91CC\u5217\u7740\u5168\u90E8 Space\uFF0C\u81EA\u5EFA\u7684\u53EF\u4EE5\u5728\u8FD9\u91CC\u5378\u8F7D\u3002`,theme:`Forsion \u7684\u6837\u5B50\u7531\u4F60\u5B9A\uFF1A\u6362\u4E00\u79CD\u8BBE\u8BA1\u8BED\u8A00\uFF0C\u518D\u6311\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272\uFF0C\u6574\u4E2A\u5E94\u7528\u90FD\u4F1A\u8DDF\u7740\u53D8\u3002
|
|
779
|
+
|
|
780
|
+
## \u5728\u54EA\u91CC\u6362
|
|
781
|
+
|
|
782
|
+
\u6309 \`\u2318/Ctrl+,\` \u6253\u5F00\u8BBE\u7F6E\uFF0C\u8FDB\u5165 \u2460\u300C\u5916\u89C2\u300D\u3002\u8FD9\u4E00\u9875\u4ECE\u4E0A\u5F80\u4E0B\u662F\uFF1A
|
|
783
|
+
|
|
784
|
+
- \u2461\u300C\u8BBE\u8BA1\u8BED\u8A00\u300D\uFF1A\u51B3\u5B9A\u5706\u89D2\u3001\u5B57\u4F53\u3001\u9634\u5F71\u8FD9\u4E9B\u7ED3\u6784\uFF0C\u6BD4\u5982 Genesis\u3001Genesis Glass \xB7 \u7409\u7483\u3002
|
|
785
|
+
- \u2462\u300C\u914D\u8272\u300D\uFF1A\u300C\u4E3B\u9898\u8272\u300D\u548C\u300C\u80CC\u666F\u8272\u300D\u662F\u4E24\u6761\u72EC\u7ACB\u7684\u8F74\uFF0C\u5404\u6709\u7ECF\u5178\u3001\u73CA\u745A\u3001\u67D4\u9752\u3001\u85B0\u8863\u8349\u3001\u6674\u84DD\u3001\u58A8\u8272\u548C\u81EA\u5B9A\u4E49\u3002
|
|
786
|
+
- \u300C\u663E\u793A\u4E0E\u52A8\u6548\u300D\uFF1A\u660E\u6697\u3001\u754C\u9762\u5927\u5C0F\u3001\u9634\u5F71\u7B49\u3002
|
|
787
|
+
|
|
788
|
+
## \u51E0\u70B9\u8BF4\u660E
|
|
789
|
+
|
|
790
|
+
- \u672C\u7AE0\u7684\u4EFB\u52A1\u8BA4\u7684\u662F\u8BBE\u8BA1\u8BED\u8A00\u3001\u4E3B\u9898\u8272\u6216\u80CC\u666F\u8272\u7684\u53D8\u5316\uFF0C\u53EA\u5207\u660E\u6697\u4E0D\u7B97\u3002
|
|
791
|
+
- \u660E\u6697\u53EF\u4EE5\u7528 Ribbon \u5E95\u90E8\u7684\u660E\u6697\u6309\u94AE\uFF0C\u6216\u547D\u4EE4\u9762\u677F\u91CC\u7684\u300C\u5207\u6362\u660E\u6697\u6A21\u5F0F\u300D\u4E00\u952E\u5207\u3002\u6709\u7684\u8BBE\u8BA1\u8BED\u8A00\u56FA\u5B9A\u8DDF\u968F\u7CFB\u7EDF\u660E\u6697\uFF0C\u8FD9\u65F6\u5207\u4E0D\u52A8\u662F\u6B63\u5E38\u7684\u3002
|
|
792
|
+
- \u5546\u5E97\u7684\u300C\u4E3B\u9898\u300D\u5206\u7C7B\u91CC\u8FD8\u80FD\u88C5\u522B\u4EBA\u505A\u7684\u4E3B\u9898\u3002`,"todo-standalone":`2.14 \u8D77\uFF0C\u5F85\u529E\u6E05\u5355\u5355\u72EC\u5F00\u6210\u4E00\u4E2A\u6807\u7B7E\u9875\u4E5F\u662F\u5B8C\u6574\u7684\uFF1A\u80FD\u7B5B\u9009\u3001\u80FD\u65B0\u5EFA\u3001\u80FD\u62D6\u7740\u6539\u65E5\u671F\uFF0C\u5BBD\u7A84\u90FD\u6392\u5F97\u597D\u3002
|
|
793
|
+
|
|
794
|
+
## \u5355\u72EC\u6253\u5F00
|
|
795
|
+
|
|
796
|
+
\u5728\u65E5\u5386 Space \u7684\u6807\u7B7E\u680F\u70B9 +\uFF08\u300C\u65B0\u5EFA\u6807\u7B7E\u9875\u300D\uFF09\uFF0C\u9009\u300C\u5F85\u529E\u6E05\u5355\u300D\u5361\u7247\uFF0C\u5B83\u5C31\u5F00\u6210\u4E3B\u533A\u7684\u4E00\u4E2A\u6807\u7B7E\u3002\u5361\u7247\u4E5F\u53EF\u4EE5\u62D6\u5230\u522B\u7684\u5206\u680F\u6216\u4FA7\u680F\u91CC\u6253\u5F00\u3002
|
|
797
|
+
|
|
798
|
+
## \u5BBD\u7684\u65F6\u5019
|
|
799
|
+
|
|
800
|
+
- \u9876\u90E8\u300C\u4ECA\u5929 / \u8BA1\u5212 / \u5168\u90E8\u300D\u5207\u6362\u8303\u56F4\uFF0C\u65C1\u8FB9\u7684\u6E05\u5355\u83DC\u5355\u9009\u300C\u6240\u6709\u6E05\u5355\u300D\u3001\u67D0\u4E00\u5F20\u8868\uFF0C\u6216\u300C\u7B14\u8BB0\u91CC\u7684\u4EFB\u52A1\u300D\u3002\u6BCF\u4E2A\u6807\u7B7E\u9875\u5404\u8BB0\u5404\u7684\u7B5B\u9009\u3002
|
|
801
|
+
- \u6700\u4E0A\u9762\u7684\u65B0\u5EFA\u6846\u8BA4\u5F97\u300C\u660E\u5929\u4E0B\u53483\u70B9\u300D\u8FD9\u6837\u7684\u8BF4\u6CD5\uFF1B\u53EF\u5199\u7684\u8868\u4E0D\u6B62\u4E00\u5F20\u65F6\uFF0C\u53EF\u4EE5\u9009\u52A0\u5230\u54EA\u5F20\u3002
|
|
802
|
+
- \u628A\u4E00\u884C\u62D6\u5230\u300C\u4ECA\u5929\u300D\u300C\u660E\u5929\u300D\u6216\u300C\u672A\u6392\u671F\u300D\u7EC4\u5934\u4E0A\u5C31\u6539\u4E86\u65E5\u671F\uFF0C\u6539\u9519\u4E86\u80FD\u64A4\u9500\u3002
|
|
803
|
+
- \u952E\u76D8\uFF1A\`N\` \u805A\u7126\u65B0\u5EFA\u6846\uFF0C\`\u2191\` \`\u2193\` \u6362\u884C\uFF0C\u7A7A\u683C\u52FE\u9009\uFF0C\`Enter\` \u6253\u5F00\u3002
|
|
804
|
+
|
|
805
|
+
## \u7A84\u7684\u65F6\u5019
|
|
806
|
+
|
|
807
|
+
\u653E\u5728\u65E5\u5386\u53F3\u680F\u6216 Mini \u7A97\u53E3\u91CC\uFF0C\u7B5B\u9009\u548C\u6E05\u5355\u5408\u6210\u6807\u9898\u65C1\u7684\u4E00\u4E2A\u83DC\u5355\uFF0C\u6765\u6E90\u7F29\u6210\u65E5\u671F\u524D\u7684\u8272\u70B9\u3002\u5BBD\u7A84\u6309\u5B83\u81EA\u5DF1\u7684\u5BBD\u5EA6\u5207\u6362\uFF0C\u4E0D\u770B\u5B83\u653E\u5728\u54EA\u91CC\u3002`,welcome:`Forsion \u662F\u4E00\u5F20\u53EF\u4EE5\u81EA\u5DF1\u642D\u7684\u5DE5\u4F5C\u53F0\uFF1A\u548C Tangu \u5BF9\u8BDD\uFF0C\u5728\u7B14\u8BB0\u91CC\u5199\u4E1C\u897F\uFF0C\u518D\u628A\u5B83\u4EEC\u6446\u6210\u987A\u624B\u7684\u6837\u5B50\u3002\u8FD9\u4EFD\u6307\u5357\u966A\u4F60\u4E00\u7EA7\u4E00\u7EA7\u4E0A\u624B\u3002
|
|
808
|
+
|
|
809
|
+
## Space \u4E0E View
|
|
810
|
+
|
|
811
|
+
- \u2460 \u7A97\u53E3\u6700\u5DE6\u8FB9\u7684\u7AD6\u680F\u53EB Ribbon\uFF0C\u4E0A\u9762\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF1ATangu\u3001\u7B14\u8BB0\u3001\u65E5\u5386\u3001\u6536\u4EF6\u7BB1\u3001\u81EA\u52A8\u5316\u2026\u2026\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\uFF0C\u4E5F\u53EF\u4EE5\u6309 \`\u2318/Ctrl+1\` \u5230 \`9\` \u6309\u4F4D\u7F6E\u5207\u3002
|
|
812
|
+
- \u4E00\u4E2A Space \u662F\u4E3A\u4E00\u7C7B\u4E8B\u6446\u597D\u7684\u4E00\u7EC4 View\uFF1A\u2461 \u4E3B\u533A\u7684\u6807\u7B7E\u9875\uFF0C\u52A0\u4E0A \u2462 \u5DE6\u53F3\u4FA7\u680F\u548C\u5E95\u90E8\u9762\u677F\u3002
|
|
813
|
+
- Tangu \u662F Forsion \u91CC\u7684 AI Agent\uFF0C\u80FD\u804A\u5929\uFF0C\u4E5F\u80FD\u66FF\u4F60\u8BFB\u5199\u6587\u4EF6\u3001\u8DD1\u547D\u4EE4\u3002\u7B14\u8BB0 Space\uFF08Amadeus\uFF09\u662F\u4F60\u7684\u7B14\u8BB0\u5E93\uFF0C\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u786C\u76D8\u4E0A\u7684\u4E00\u4E2A \`.md\` \u6587\u4EF6\u3002
|
|
814
|
+
|
|
815
|
+
## \u8FD9\u4EFD\u6307\u5357\u600E\u4E48\u7528
|
|
816
|
+
|
|
817
|
+
- \u7AE0\u8282\u6309\u7B49\u7EA7\u5206\u7EC4\uFF0C\u505A\u5B8C\u672C\u7EA7\u7684\u4EFB\u52A1\uFF0C\u4E0B\u4E00\u7EA7\u5C31\u89E3\u9501\uFF1B\u300C\u65B0\u7248\u672C\u300D\u90A3\u7EC4\u4E0D\u4E0A\u9501\u3002
|
|
818
|
+
- \u4EFB\u52A1\u65C1\u7684\u300C\u5E26\u6211\u53BB\u300D\u4F1A\u5207\u5230\u5BF9\u5E94\u7684 Space\u3001\u6253\u5F00\u8981\u7528\u7684\u5730\u65B9\uFF0C\u8FD9\u4E00\u7AE0\u4E5F\u8DDF\u8FC7\u53BB\u6302\u5728\u90A3\u8FB9\u7684\u53F3\u680F\uFF0C\u8FB9\u770B\u8FB9\u505A\u3002
|
|
819
|
+
- \u5361\u4F4F\u4E86\u5C31\u70B9\u300C\u95EE Tangu\u300D\uFF0C\u5B83\u4F1A\u5E26\u7740\u672C\u7AE0\u5185\u5BB9\u5F00\u4E00\u4E2A\u65B0\u5BF9\u8BDD\u3002
|
|
820
|
+
- \u4EE5\u524D\u505A\u8FC7\u7684\u4E8B\u76F4\u63A5\u7B97\u6570\uFF0C\u8FDB\u5EA6\u5B58\u5728\u8FD9\u53F0\u8BBE\u5907\u4E0A\u3002\u7528\u8FC7\u4E00\u9635\u7684\u8BDD\uFF0C\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002
|
|
821
|
+
|
|
822
|
+
> [!tip]
|
|
823
|
+
> \u627E\u4E0D\u5230\u67D0\u4E2A\u529F\u80FD\u65F6\uFF0C\u6309 \`\u2318/Ctrl+K\` \u6253\u5F00\u547D\u4EE4\u9762\u677F\uFF0C\u8F93\u5165\u540D\u5B57\u641C\u4E00\u4E0B\u3002`},en:{agent:`Besides the default Tangu, you can create agents for specific jobs. Give each one a name, instructions and a memory of its own, and let it focus on one kind of work.
|
|
824
|
+
|
|
825
|
+
## Create one
|
|
826
|
+
|
|
827
|
+
- Click Agents on the ribbon, or open Settings \u2192 Agents and click Open Agents.
|
|
828
|
+
- In the roster on the left, click Create agent. Fill in Name, Description and Instructions, saying how it should help and which principles it should follow, then click Create agent.
|
|
829
|
+
|
|
830
|
+
## After that
|
|
831
|
+
|
|
832
|
+
- Its profile lets you keep tuning it: model, thinking effort, approval mode, persona, skills and MCP. Click Save configuration when you are done; changes apply from its next run. You can also read its memory, log and evolution.
|
|
833
|
+
- Its memory can be private, or shared with the default agent.
|
|
834
|
+
- To talk to it, open the mode menu in the chat box and switch to it under Normal mode.
|
|
835
|
+
|
|
836
|
+
> [!tip]
|
|
837
|
+
> Each agent's actions menu in the roster has Set as default and Reorder.`,automation:`Automations turn repeat work into a rule: when it triggers and what happens next. After that it runs by itself and sends the results to your Inbox.
|
|
838
|
+
|
|
839
|
+
## Build your first one
|
|
840
|
+
|
|
841
|
+
- Click Automation on the ribbon. Use New automation in the left panel, or open Guide and templates and pick Daily reminder, Daily agent briefing, New record notification or One click to an agent. Custom workflow starts from scratch.
|
|
842
|
+
- The canvas reads trigger \u2192 action steps \u2192 Save and enable. Click a node to fill in its settings in the panel beside it; anything still missing is listed at the bottom.
|
|
843
|
+
- New workflows are saved paused by default. Test run carries it out once for real, so check each step's result before you enable it.
|
|
844
|
+
|
|
845
|
+
## Building blocks
|
|
846
|
+
|
|
847
|
+
- Triggers: Timer (daily, once or at an interval), Event, File threshold, Manual (button) and Database changes.
|
|
848
|
+
- Actions: notify, run an agent, call a tool and write to a database, carried out in the order they are connected.
|
|
849
|
+
|
|
850
|
+
> [!tip]
|
|
851
|
+
> A Manual (button) rule can be attached to a button block in a note, so one click runs it.`,calendar:"The Calendar Space shows dates from your databases, time marks written in notes and subscribed calendars in one view. Your to-dos live here too.\n\n## Start with a calendar\n\nCalendar data comes from databases with a Date property, so the first visit is empty. In the left panel, click \u2460 + next to Calendars, choose Add database and pick a table with a date column. If you have none yet, create one in the Note Space first. The same menu can subscribe to an external calendar or import an `.ics` file; both stay read-only.\n\n## Add an event\n\n- \u2461 Click a time slot (or press `C`), type the title right in the grid, then press `Enter` to save or `Esc` to cancel.\n- Drag an event to move it, or drag its top or bottom edge to change its length. Click an event to open its detail card beside it.\n- `D`, `W`, `3` and `M` switch to day, week, 3-day and month; `T` jumps back to today.\n\n## Tick off a to-do\n\n\u2462 The right panel holds your to-do list. In a note, write a checkbox task, type `@tomorrow` after it and pick Schedule from the suggestions; the task then shows up here. Tick its box to finish it, and the line in the note is marked done as well.",chat:`Tangu is the AI agent in Forsion. Say something and it answers, and it can also look things up, edit files and run commands for you. Start with a hello.
|
|
852
|
+
|
|
853
|
+
## Start a new session
|
|
854
|
+
|
|
855
|
+
- Click Tangu on the ribbon. Your sessions are listed on the left and the conversation sits in the middle.
|
|
856
|
+
- \u2460 Click New session at the top of the left panel, or press \`\u2318/Ctrl+N\` in Tangu (in the Note Space the same key creates a note).
|
|
857
|
+
- \u2461 Type in the box, then press \`Enter\` to send or \`Shift+Enter\` for a new line.
|
|
858
|
+
|
|
859
|
+
## Give it context
|
|
860
|
+
|
|
861
|
+
- Drop files, notes or a session from the left panel into the chat to attach them as references Tangu can read. Screenshots can be pasted straight into the box.
|
|
862
|
+
- Type \`[[\` to reference a past chat, or \`/\` to call up skills and commands.
|
|
863
|
+
- You can keep sending messages while it works; it reads them at its next step.
|
|
864
|
+
- Select text in a reply and click Quote to bring it into your next message.
|
|
865
|
+
|
|
866
|
+
> [!tip]
|
|
867
|
+
> The Chat / Work capsule next to New session sets the mode: Chat for light conversation, Work for the full toolset. The mode is fixed when a session is created, so start a new one to change it.`,computer:`Let Tangu operate other apps by looking at your screen. It takes a screenshot to see what is there, then clicks and types, step by step, until the job is done.
|
|
868
|
+
|
|
869
|
+
## Before you start
|
|
870
|
+
|
|
871
|
+
- This works in the desktop app through the Computer Use plugin, which is installed the first time you set up its permissions.
|
|
872
|
+
- On macOS, tangu-computer-use needs access under Privacy & Security in System Settings (Accessibility and Screen Recording). Go to Settings \u2192 System \u2192 Device permissions, click Set up permission, follow the guide, then click Verify Computer Use permissions. Windows skips this step.
|
|
873
|
+
- Settings \u2192 Computer Use decides whether it may take the foreground, and turns Jev acceleration and the browser tools on or off.
|
|
874
|
+
|
|
875
|
+
## Put it to work
|
|
876
|
+
|
|
877
|
+
Just say what you want done in a chat, for example "open Notes and start a shopping list". Tangu works from screenshots, and each step shows up in the conversation. Whether it asks before acting follows the session's approval mode.
|
|
878
|
+
|
|
879
|
+
> [!tip]
|
|
880
|
+
> To stop it partway, click the stop button in the chat.`,database:`A database (a \`.db\` file, called a base in the notes tree) holds records in a table with typed columns. The same rows can also be viewed as a board, a calendar or a gallery.
|
|
881
|
+
|
|
882
|
+
## Create one
|
|
883
|
+
|
|
884
|
+
\u2460 In the Note Space, right-click empty space or a folder in the notes tree, choose New base and give it a name. A \`.db\` file appears in your vault and opens in a tab.
|
|
885
|
+
|
|
886
|
+
\u2461 To put a table inside a note, type \`/\` in the text and choose Database. Link database embeds a table you already have.
|
|
887
|
+
|
|
888
|
+
## Columns and views
|
|
889
|
+
|
|
890
|
+
- The \uFF0B at the right end of the header adds a column. Columns have types: text, number, checkbox, date, attachment, relation and more.
|
|
891
|
+
- The \uFF0B next to the view tabs adds a view: table, board, calendar, gallery, chart, form or gantt. Each view keeps its own filters and sorting.
|
|
892
|
+
- New in the toolbar adds a row, and you can click any cell to edit it.
|
|
893
|
+
|
|
894
|
+
> [!tip]
|
|
895
|
+
> Add a Date column while you are here, and in the "Calendar and to-dos" chapter you can plug this table into the Calendar Space.`,market:`The Store has plugins, skills, agents, themes and Spaces that other people have built. Install one with a click, and remove it whenever you like.
|
|
896
|
+
|
|
897
|
+
## Open the Store
|
|
898
|
+
|
|
899
|
+
\u2460 Click the Store icon at the bottom of the ribbon, or search for "Store" in the command palette (\`\u2318/Ctrl+K\`). Browse by category on the left: Plugins, Skills, Agents, Spaces, Themes and Web apps. The search box at the top finds names, authors and tags.
|
|
900
|
+
|
|
901
|
+
## Install and manage
|
|
902
|
+
|
|
903
|
+
- Open a listing to see its details, then click Install. Most plugins work right away; if one has settings, Open settings takes you to them.
|
|
904
|
+
- Installed lists everything you have added, and that is where you Uninstall. Updates shows what has a newer version.
|
|
905
|
+
- Plugins marked Desktop only need features that exist only on a computer, so they cannot be installed on a phone.
|
|
906
|
+
|
|
907
|
+
> [!tip]
|
|
908
|
+
> You can also turn a plugin off in Settings \u2192 Plugins without uninstalling it.`,"mini-capsules":`From 2.14, the Mini window's top bar no longer takes up two strips. It is now two capsules floating over the content, so more of the content shows.
|
|
909
|
+
|
|
910
|
+
## Open the Mini window
|
|
911
|
+
|
|
912
|
+
Press \`\u2318/Ctrl+Shift+M\` (a global shortcut that works even while another app is in front), or run "Open mini card" from the command palette. It is a small card that stays on top, handy for a quick chat, a quick note or ticking off a to-do while you do something else.
|
|
913
|
+
|
|
914
|
+
## The two capsules
|
|
915
|
+
|
|
916
|
+
- Left: a button for switching Space, followed by a title menu for changing the session or note.
|
|
917
|
+
- Right: new, Show in main panel and close.
|
|
918
|
+
- The rest of the bar is transparent. Hold any empty spot to drag the window, and the conversation scrolls underneath the capsules.
|
|
919
|
+
|
|
920
|
+
## What it can hold
|
|
921
|
+
|
|
922
|
+
Tangu (switch sessions and send messages), Note (pick or create a note and edit it in place) and the to-do list. Drag an edge or corner of the card to resize it; it keeps that size the next time you open it.`,muse:`Muse is an agent that works on its own in the background. It wakes up on a rhythm, looks at what you have been doing, proposes to-dos worth doing and keeps an eye on whatever you asked it to watch.
|
|
923
|
+
|
|
924
|
+
## Muse and Historian
|
|
925
|
+
|
|
926
|
+
Settings \u2192 Agents \u2192 Background agents holds two of them:
|
|
927
|
+
|
|
928
|
+
- Historian organizes conversations and memory: it summarizes sessions and maintains logs and memories.
|
|
929
|
+
- Muse works proactively on a schedule, with its own Library and its own Space (Muse on the ribbon).
|
|
930
|
+
|
|
931
|
+
Both are on by default. If you turned one off, switch it back on here, then click Save changes.
|
|
932
|
+
|
|
933
|
+
## Shape how it works
|
|
934
|
+
|
|
935
|
+
- Permission tier: Ask (out-of-scope actions wait for your approval), Agent approves (your default agent decides once on your behalf) or Full auto.
|
|
936
|
+
- Heartbeat interval, active hours, and whether notifications arrive immediately or as a daily digest.
|
|
937
|
+
- Say "keep an eye on \u2026" in any chat to set a watch rule, and use Hand to Muse on a task card in chat to have it track a follow-up.
|
|
938
|
+
|
|
939
|
+
> [!tip]
|
|
940
|
+
> The to-dos Muse proposes and the actions waiting for your approval arrive in your Inbox, and are also listed in the right panel of the Muse Space.`,note:`The Note Space (Amadeus) is your notes library. Every note is a Markdown file on your disk that you can write in, link to other notes and spread out on a canvas.
|
|
941
|
+
|
|
942
|
+
## Create and write
|
|
943
|
+
|
|
944
|
+
- Open a vault first. It is just an ordinary folder on your computer, and the notes tree on the left shows what is inside.
|
|
945
|
+
- \u2460 In the Note Space, press \`\u2318/Ctrl+N\` or click New note in the left panel.
|
|
946
|
+
- Type \`/\` on an empty line for the block menu: heading, to-do, table, code, database and more. Markdown prefixes such as \`# \` work too.
|
|
947
|
+
|
|
948
|
+
## Link notes together
|
|
949
|
+
|
|
950
|
+
Type \`[[\`, pick a note from the suggestions and press \`Enter\` to create a wikilink. The note you linked to gains a backlink, which you can see under \u2462 Backlinks once you open the right panel.
|
|
951
|
+
|
|
952
|
+
## Document and canvas
|
|
953
|
+
|
|
954
|
+
With a note open, the \u2461 Document / Canvas switch sits at the top left of the note. It is the same content seen two ways: the document reads top to bottom, the canvas lets you arrange it like a whiteboard, and switching never changes a word. "Toggle document / canvas" in the command palette does the same thing, as long as a note is open.`,plugin:`Views, commands and Spaces in Forsion can all be extended with plugins. A desktop plugin is just a folder: put it in the plugins folder, reload, and it runs.
|
|
955
|
+
|
|
956
|
+
## What a plugin looks like
|
|
957
|
+
|
|
958
|
+
- Each plugin is one folder under \`~/.forsion/plugins/\`, holding at least \`manifest.json\` (id, name, version and so on) and \`main.js\`.
|
|
959
|
+
- \`main.js\` is itself the body of \`setup(ctx)\`. Call things like \`ctx.registerView(\u2026)\` at the top level to register views, commands, slash menu items or file types. Do not wrap it in another function, or nothing gets registered and no error appears.
|
|
960
|
+
- Tools for the AI come from a different kind of plugin, Tangu engine plugins, which use their own format.
|
|
961
|
+
|
|
962
|
+
## Load one from a local folder
|
|
963
|
+
|
|
964
|
+
- Open Settings \u2192 Plugins, go to Installed plugins and expand Developer tools.
|
|
965
|
+
- Create sample plugin sets up a working example in one click; Open plugins folder is where your own plugin goes.
|
|
966
|
+
- After editing the code, click Reload. There is no need to restart the app.
|
|
967
|
+
|
|
968
|
+
> [!tip]
|
|
969
|
+
> The plugin author handbook ships with the app as the built-in Forsion extension development skill. Ask Tangu to "write a Forsion plugin" and it starts from the official template. If an installed plugin misbehaves, it can also run the plugin checker for you.`,space:`Once your views are arranged just right, save the layout as a Space of its own. One click on the ribbon brings it back.
|
|
970
|
+
|
|
971
|
+
## Save the current layout
|
|
972
|
+
|
|
973
|
+
- Arrange the tabs and sidebars in any Space.
|
|
974
|
+
- Open the command palette (\`\u2318/Ctrl+K\`) and run "Save current layout as a Space".
|
|
975
|
+
- Enter a name when asked for the New Space name, and a new icon appears at the top of the ribbon.
|
|
976
|
+
|
|
977
|
+
You can also click \u2460 the \uFF0B in the Spaces area of the ribbon (New Space or folder) and choose New Space to start from an empty one. Saving Spaces works in the desktop app.
|
|
978
|
+
|
|
979
|
+
## Afterwards
|
|
980
|
+
|
|
981
|
+
- Keep adjusting the layout inside your Space; it is remembered automatically. If it gets messy, use "Restore default layout for this Space" in \u2461 the row of floating buttons at the top right.
|
|
982
|
+
- Drag icons to reorder them. Right-click your Space's icon to open it in a new window or delete it.
|
|
983
|
+
- Settings \u2192 Spaces lists every Space, and lets you uninstall the ones you created.`,theme:`Make Forsion look the way you like: pick a design language, then an accent and a background, and the whole app follows.
|
|
984
|
+
|
|
985
|
+
## Where to change it
|
|
986
|
+
|
|
987
|
+
Press \`\u2318/Ctrl+,\` to open Settings and go to \u2460 Appearance. From top to bottom you will find:
|
|
988
|
+
|
|
989
|
+
- \u2461 Design language, which sets the structure: corners, fonts and shadows. Genesis and Genesis Glass are two of them.
|
|
990
|
+
- \u2462 Color scheme, with two separate axes, Accent and Background. Each offers Classic, Coral, Teal, Lavender, Clear blue, Ink and Custom.
|
|
991
|
+
- Display and motion, covering light or dark, interface size, shadows and more.
|
|
992
|
+
|
|
993
|
+
## Good to know
|
|
994
|
+
|
|
995
|
+
- This chapter's task counts a change of design language, accent or background. Switching between light and dark alone does not count.
|
|
996
|
+
- The light/dark button at the bottom of the ribbon and "Toggle light/dark mode" in the command palette switch modes in one click. Some design languages always follow the system setting, so the switch has no effect there.
|
|
997
|
+
- The Store has a Themes category with more themes to install.`,"todo-standalone":`From 2.14, the to-do list is complete even in a tab of its own: filters, a quick-add box and drag-to-reschedule, laid out well at any width.
|
|
998
|
+
|
|
999
|
+
## Open it on its own
|
|
1000
|
+
|
|
1001
|
+
In the Calendar Space, click + on the tab bar (New tab) and choose the To-do list card. It opens as a tab in the main area. You can also drag the card into another pane or a sidebar.
|
|
1002
|
+
|
|
1003
|
+
## When it is wide
|
|
1004
|
+
|
|
1005
|
+
- Today / Scheduled / All at the top sets the range, and the list menu beside it picks All lists, a single table or Tasks in notes. Each tab remembers its own filters.
|
|
1006
|
+
- The quick-add box at the top understands phrases like "tomorrow 3pm". When more than one table can take new to-dos, you choose which one it adds to.
|
|
1007
|
+
- Drag a row onto the Today, Tomorrow or Unscheduled heading to change its date. You can undo it.
|
|
1008
|
+
- Keyboard: \`N\` focuses the quick-add box, \`\u2191\` \`\u2193\` move between rows, the space bar ticks a row off and \`Enter\` opens it.
|
|
1009
|
+
|
|
1010
|
+
## When it is narrow
|
|
1011
|
+
|
|
1012
|
+
In the Calendar's right panel or the Mini window, the filters and the list choice merge into one menu next to the title, and each source shrinks to a color dot before the date. It switches by its own width, not by where it sits.`,welcome:`Forsion is a workbench you shape yourself: talk with Tangu, write in your notes, and arrange it all the way you like. This guide takes you through it one level at a time.
|
|
1013
|
+
|
|
1014
|
+
## Spaces and Views
|
|
1015
|
+
|
|
1016
|
+
- \u2460 The strip on the far left is the ribbon. Each icon on it is a Space: Tangu, Note, Calendar, Inbox, Automation and more. Click one to switch to it, or press \`\u2318/Ctrl+1\` to \`9\` to switch by position.
|
|
1017
|
+
- A Space is a set of Views laid out for one kind of work: \u2461 tabs in the main area, plus \u2462 the left and right sidebars and the bottom panel.
|
|
1018
|
+
- Tangu is the AI agent in Forsion. It chats, and it can also read and write files and run commands for you. The Note Space (Amadeus) is your notes library, where every note is a plain \`.md\` file on your disk.
|
|
1019
|
+
|
|
1020
|
+
## How this guide works
|
|
1021
|
+
|
|
1022
|
+
- Chapters are grouped by level. Finish a level's tasks and the next level unlocks. The What's new group is never locked.
|
|
1023
|
+
- "Take me there" next to a task switches to the right Space and opens what you need. This chapter comes along in that Space's right panel, so you can read while you work.
|
|
1024
|
+
- Stuck? "Ask Tangu" starts a new chat that has this chapter attached.
|
|
1025
|
+
- Things you have already done count right away, and progress is kept on this device. Been around a while? Unlock everything from the \xB7\xB7\xB7 menu at the top right.
|
|
1026
|
+
|
|
1027
|
+
> [!tip]
|
|
1028
|
+
> Can't find something? Press \`\u2318/Ctrl+K\` to open the command palette and search for it by name.`}};var Mc="forsion-guide",Lt={reader:"guide",side:"guide-side",companion:"guide-companion"},li="guide-chapters",Ic=e=>`forsion-extend.guide.${e}`;function je(e,t){try{let n=localStorage.getItem(Ic(e));return n===null?t:JSON.parse(n)}catch{return t}}function Je(e,t){try{localStorage.setItem(Ic(e),JSON.stringify(t))}catch{}}function Rc(e,t){let n=new Set,o=je("unlockAll",!1),a=null,i=je("chapter","welcome"),s=je("companion","welcome"),l=null,c=null,d=!1,f,u=[],p=()=>Qe(e.getLocale?.()),g=(b,C)=>Te(p(),b,C),m=(b,C)=>e.achievements?.count?.(b,C?{own:!0}:void 0)??0,y=()=>({count:m,unlockAll:o,desktop:t.desktop,appVersion:a}),_=b=>b.title[p()]||b.title.zh,E=b=>b==="new"?g("guide.whatsNew",{version:nr.find(C=>C.version)?.version??""}):g(`guide.level.${b}`),x=()=>{for(let b of[...n])try{b()}catch(C){console.error("[guide] listener failed",C)}},k=()=>{let b=y(),C=new Set(vn.flatMap(ie=>ie.tasks.filter(pe=>Ht(pe,b)).map(pe=>pe.id)));if(l)for(let ie of vn)for(let pe of ie.tasks)C.has(pe.id)&&!l.has(pe.id)&&e.app?.notify?.(g("guide.toast.taskDone",{task:_(pe)}));l=C,j(b);let L=Ac(b),K=je("reached",null);K===null?Je("reached",L):ut.findIndex(ie=>ie.id===L)>ut.findIndex(ie=>ie.id===K)&&(Je("reached",L),Je("justUnlocked",L),A({kind:"level",level:L})),je("pendingLetter",null)&&P()},R=b=>!!b.spot&&!!e.app?.spotlight&&je("spotlight",!0)&&(t.desktop||!b.desktopOnly),B=(b,C,L)=>{let K=b.spot;c={chapter:C.id,task:b.id},x();let ie=C.tasks.length>1?g("guide.spotStep",{n:C.tasks.indexOf(b)+1,total:C.tasks.length}):void 0;e.app.spotlight({anchor:K.anchor,title:_(K),body:K.body[p()]||K.body.zh,step:ie}).then(async pe=>{d||(c?.task===b.id&&pe!=="replaced"&&(c=null,x()),pe==="mute"&&V.setSpotlight(!1),pe==="missing"&&L&&(K.here&&b.go?.space&&await e.app?.openSpace?.(b.go.space),b.go?.command&&e.app?.runCommand?.(b.go.command)))})},j=b=>{let C=c&&yn(c.chapter),L=C&&C.tasks.find(ie=>ie.id===c.task);if(!C||!L||!Ht(L,b))return;let K=C.tasks.find(ie=>!Ht(ie,b)&&R(ie)&&!ie.spot.here&&(ie.go?.space??"")===(L.go?.space??""));K?B(K,C,!1):(c=null,e.app?.spotlight?.(null))},w=Promise.resolve(),A=b=>{!e.inbox||!je("reminders",!0)||(Je("pendingLetter",b),P())},P=()=>{w=w.then(I,I)},I=async()=>{let b=je("pendingLetter",null);if(d||!b||!e.inbox)return;let C=b.kind==="level"?Rt(b.level):Rt("new"),L=C.map(He=>`- ${_(He)}`).join(`
|
|
1029
|
+
`),K=b.kind==="level"?{title:g("guide.letter.levelTitle",{level:E(b.level)}),body:`${g("guide.letter.levelBody")}
|
|
1030
|
+
|
|
1031
|
+
${L}`}:{title:g("guide.letter.versionTitle",{version:b.version,n:C.length}),body:`${g("guide.letter.versionBody")}
|
|
1032
|
+
|
|
1033
|
+
${L}`},ie=await e.inbox.post(K);if(!ie||d)return;let pe=je("lastLetter",null);Je("lastLetter",ie),Je("letters",{...je("letters",{}),[ie]:b}),JSON.stringify(je("pendingLetter",null))===JSON.stringify(b)&&Je("pendingLetter",null),pe&&pe!==ie&&await e.inbox.archive(pe)},N=()=>{let b=ii(y());if(!b||je("seenVersion",null)===b)return;if(!(je("seenVersion",null)!==null||m("chat.send",!1)+m("note.create",!1)>0)){Je("seenVersion",b);return}let L=Date.now(),K=()=>{if(!d){if(document.querySelector(".ob-rail")&&Date.now()-L<6e5){f=window.setTimeout(K,3e3);return}Je("seenVersion",b),A({kind:"version",version:b})}};f=window.setTimeout(K,3e3)},V={ctx:e,locale:p,t:g,env:y,title:_,levelName:E,subscribe(b){return n.add(b),()=>{n.delete(b)}},selected:()=>yn(i)??vn[0],select(b){!yn(b)||b===i||(i=b,Je("chapter",b),yn(b).level===je("justUnlocked",null)&&Je("justUnlocked",null),x())},companionChapter:()=>yn(s)??V.selected(),async go(b,C){let L=b.go;if(!L||b.desktopOnly&&!t.desktop)return;s=C.id,Je("companion",C.id);let K=R(b);c&&(c=null,K||e.app?.spotlight?.(null)),L.space&&!(K&&b.spot.here)&&await e.app?.openSpace?.(L.space)&&L.space!==Mc&&e.openView?.(Lt.companion,{location:"right"}),K?B(b,C,!0):L.command&&e.app?.runCommand?.(L.command),L.settings&&e.app?.openSettings?.(L.settings),x()},markdown(b){let C=si[p()]?.[b.id]||si.zh[b.id]||"",L=C.search(/\n\s*\n/);return L<0?{intro:C.trim(),body:""}:{intro:C.slice(0,L).trim(),body:C.slice(L).trim()}},justUnlocked:()=>je("justUnlocked",null),setUnlockAll(b){o=b,Je("unlockAll",b),x()},reminders:()=>je("reminders",!0),setReminders(b){Je("reminders",b),x()},spotlightOn:()=>!!e.app?.spotlight&&je("spotlight",!0),setSpotlight(b){Je("spotlight",b),!b&&c&&(c=null,e.app?.spotlight?.(null)),x()},spotTask:()=>c?.task??null,letter:b=>je("letters",{})[b]??null,async openGuide(b){b&&V.select(b),Je("justUnlocked",null),await e.app?.openSpace?.(Mc),x()},dispose(){c&&e.app?.spotlight?.(null),d=!0,window.clearTimeout(f);for(let b of u.splice(0))b();n.clear()}},X=e.achievements?.subscribe?.(()=>{k(),x()});X&&u.push(X);let oe=e.subscribeLocale?.(()=>x());return typeof oe=="function"&&u.push(oe),k(),t.appVersion.then(b=>{d||(a=b,N(),x())}),V}function Eo(e){let t=Ec(e.env());return nr.map(n=>({level:n.id,chapters:t.filter(o=>o.level===n.id)})).filter(n=>n.chapters.length)}function Lc(e,t){switch(e){case"ribbon":return{x:5,y:10,w:28,h:168};case"ribbon-plus":return{x:5,y:180,w:28,h:26};case"ribbon-bottom":return{x:5,y:208,w:28,h:26};case"left-top":return{x:48,y:14,w:128,h:28};case"left-plus":return{x:180,y:16,w:22,h:24};case"left-list":return{x:48,y:54,w:154,h:122};case"main-tabs":return{x:224,y:14,w:96,h:22};case"main-top":return{x:226,y:44,w:104,h:24};case"main-top-right":return{x:498,y:44,w:60,h:24};case"main-body":return t.main==="grid"?{x:232,y:78,w:328,h:170}:{x:244,y:80,w:304,h:112};case"main-bottom":return{x:236,y:208,w:312,h:42};case"right":return{x:588,y:16,w:116,h:76};case"nav":return{x:14,y:92,w:172,h:28};case"section-1":return{x:224,y:60,w:476,h:86};case"section-2":return{x:224,y:160,w:476,h:90}}}var Se=e=>({style:e}),qe=(e,t,n,o=7)=>r("rect",{x:e,y:t,width:n,height:o,rx:o/2,...Se("fill:var(--overlay-medium)")}),or=(e,t,n=12,o=!1)=>r("rect",{x:e,y:t,width:n,height:n,rx:3,...Se(o?"fill:var(--text-muted)":"fill:var(--overlay-strong)")}),ar=(e,t,n,o="")=>r("text",{x:e,y:t,...Se(`fill:var(--text);font:500 12px var(--font-ui);${o}`),children:n});function Dc({g:e,figure:t}){let n=e.locale(),o=new Map;for(let u of t.marks)if(u.text)for(let p of[].concat(u.slot))o.set(p,u.text[n]||u.text.zh);let a=new Set(t.marks.flatMap(u=>[].concat(u.slot))),i=t.marks.flatMap(u=>[].concat(u.slot).map(p=>Lc(p,t))),s=t.marks.map((u,p)=>{let g=Lc([].concat(u.slot)[0],t);return{n:p+1,x:Math.min(g.x+g.w+4,712),y:Math.max(g.y-4,12)}}),l=t.marks.map(u=>u.label[n]||u.label.zh),c=()=>r(F,{children:[[16,44,72,100,128,156].map((u,p)=>r("g",{children:or(11,u,16,p===2)},u)),r("path",{d:"M19 186v14M12 193h14",...Se("stroke:var(--text-faint);stroke-width:2;stroke-linecap:round")}),or(11,213,16,a.has("ribbon-bottom")),or(11,240,16),r("rect",{x:38,y:1,width:1,height:266,...Se("fill:var(--border)")}),or(56,22,12,a.has("left-top")),o.has("left-top")?ar(76,32,o.get("left-top")):qe(76,25,70),a.has("left-plus")&&r("path",{d:"M191 21v14M184 28h14",...Se("stroke:var(--text-muted);stroke-width:2;stroke-linecap:round")}),[62,86,110,134,158].map((u,p)=>r("g",{children:[or(58,u,10),qe(76,u+1.5,[74,56,88,48,66][p])]},u)),o.has("right")?ar(598,38,o.get("right")):qe(598,30,52),qe(598,52,84),qe(598,68,62),qe(598,116,92),qe(598,132,70)]}),d=()=>r(F,{children:[r("rect",{x:228,y:16,width:88,height:18,rx:6,...Se("fill:var(--bg-card)")}),o.has("main-tabs")?ar(240,29,o.get("main-tabs"),"font-size:11px"):qe(238,22,52,6),r("rect",{x:230,y:47,width:48,height:18,rx:9,...Se("fill:var(--bg-card)")}),qe(242,53,24,6),qe(290,53,26,6),[506,524,542].map(u=>r("rect",{x:u,y:50,width:12,height:12,rx:3,...Se("fill:var(--overlay-strong)")},u)),t.main==="grid"?r(F,{children:[[0,1,2,3,4,5,6].map(u=>r("g",{children:qe(244+u*46,86,22,6)},u)),[104,140,176,212].map(u=>r("rect",{x:238,y:u,width:316,height:1,...Se("fill:var(--border)")},u)),[1,2,3,4,5,6].map(u=>r("rect",{x:238+u*45,y:98,width:1,height:146,...Se("fill:var(--border)")},u)),r("rect",{x:286,y:146,width:40,height:24,rx:4,...Se("fill:var(--overlay-medium)")}),r("rect",{x:376,y:182,width:40,height:18,rx:4,...Se("fill:var(--overlay-medium)")})]}):t.main==="chat"?r(F,{children:[r("rect",{x:412,y:84,width:132,height:26,rx:10,...Se("fill:var(--overlay-light)")}),qe(252,128,260),qe(252,144,230),qe(252,160,150),r("rect",{x:240,y:212,width:304,height:34,rx:10,...Se("fill:var(--bg-card);stroke:var(--border)")}),qe(254,226,120),r("circle",{cx:528,cy:229,r:8,...Se("fill:var(--overlay-strong)")})]}):r(F,{children:[r("rect",{x:252,y:86,width:120,height:12,rx:4,...Se("fill:var(--overlay-strong)")}),[110,126,142,166,182,206,222].map((u,p)=>r("g",{children:qe(252,u,[292,270,200,286,240,280,150][p])},u))]})]}),f=()=>r(F,{children:[[36,64,92,120,148,176].map((u,p)=>r("g",{children:[or(24,u+8,12,p===2&&a.has("nav")),p===2&&o.has("nav")?ar(44,u+18,o.get("nav")):qe(44,u+11,[64,52,58,70,46,60][p])]},u)),r("rect",{x:232,y:28,width:110,height:12,rx:4,...Se("fill:var(--overlay-strong)")}),o.has("section-1")?ar(234,82,o.get("section-1")):qe(234,74,70),[0,1,2].map(u=>r("rect",{x:234+u*150,y:94,width:136,height:42,rx:8,...Se(u===0?"fill:var(--bg-card);stroke:var(--accent)":"fill:var(--bg-card);stroke:var(--border)")},u)),o.has("section-2")?ar(234,182,o.get("section-2")):qe(234,174,70),[0,1,2,3,4,5,6].map(u=>r("circle",{cx:246+u*30,cy:210,r:10,...Se(u===0?"fill:var(--accent)":"fill:var(--overlay-strong)")},u)),[0,1,2,3,4,5,6].map(u=>r("circle",{cx:246+u*30,cy:236,r:8,...Se("fill:var(--overlay-medium)")},`b${u}`))]});return r("figure",{class:"fxg-figure",children:[r("svg",{class:"fxg-figure-svg",viewBox:"0 0 724 268",role:"img","aria-label":`${e.t("guide.figure")}: ${l.map((u,p)=>`${p+1} ${u}`).join("; ")}`,children:[r("rect",{x:.5,y:.5,width:723,height:267,rx:10,...Se("fill:var(--sidebar-bg, var(--bg));stroke:var(--border)")}),t.layout==="settings"?r("rect",{x:200,y:1,width:523,height:266,...Se("fill:var(--bg)")}):r("rect",{x:216,y:8,width:352,height:252,rx:8,...Se("fill:var(--bg)")}),i.map((u,p)=>r("rect",{x:u.x-4,y:u.y-4,width:u.w+8,height:u.h+8,rx:7,...Se("fill:var(--accent-wash);stroke:var(--accent);stroke-width:2")},`r${p}`)),t.layout==="settings"?f():r(F,{children:[c(),d()]}),s.map(u=>r("g",{children:[r("circle",{cx:u.x,cy:u.y,r:10,...Se("fill:var(--accent)")}),r("text",{x:u.x,y:u.y+4,"text-anchor":"middle",...Se("fill:var(--on-accent);font:600 12px var(--font-ui)"),children:u.n})]},u.n))]}),r("figcaption",{class:"fxg-figure-cap",children:l.map((u,p)=>r("span",{children:[r("b",{children:p+1}),u]},p))})]})}var Nc=`
|
|
1034
|
+
.fxg { color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); height: 100%; min-height: 0; display: flex; flex-direction: column; }
|
|
1035
|
+
.fxg button { font: inherit; }
|
|
1036
|
+
.fxg .fx-link { display: inline-flex; align-items: center; gap: 4px; padding: 0; border: 0; background: transparent; color: var(--accent-ink); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
1037
|
+
.fxg .fx-tag { display: inline-flex; align-items: center; padding: 1px 7px; border: var(--border-width) solid var(--overlay-strong); border-radius: var(--radius-pill); color: var(--text-muted); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); font-weight: 500; white-space: nowrap; }
|
|
1038
|
+
.fxg .fxg-muted { color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); margin: 0; }
|
|
1039
|
+
.fxg .fxg-icon-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; padding: 0 6px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-muted); cursor: pointer; letter-spacing: 1px; }
|
|
1040
|
+
.fxg .fxg-icon-btn:hover { background: var(--overlay-light); color: var(--text); }
|
|
1041
|
+
|
|
1042
|
+
.fxg-reader .fxg-bar { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 8px 12px 0; }
|
|
1043
|
+
.fxg-reader .fxg-ro { color: var(--text-muted); }
|
|
1044
|
+
.fxg-reader .fxg-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; }
|
|
1045
|
+
.fxg-reader .fxg-doc { min-height: 0; }
|
|
1046
|
+
.fxg-reader .fxg-col { box-sizing: border-box; width: 100%; max-width: var(--amx-page-max, 920px); margin: 0 auto; padding: 0 48px 48px; } /* \u540C Amadeus \u7B14\u8BB0\u9875 .amx-doc */
|
|
1047
|
+
.fxg-reader .fxg-col > .fxg-section, .fxg-reader .fxg-col > .fxg-lock { margin-top: 24px; }
|
|
1048
|
+
.fxg-reader .fxg-section h2 { margin: 8px 0 10px; font-size: var(--ui-font-title); line-height: var(--ui-line-title); font-weight: 600; }
|
|
1049
|
+
|
|
1050
|
+
.fxg .fxg-tasks { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
|
|
1051
|
+
.fxg .fxg-task { display: flex; align-items: center; gap: 10px; min-height: 34px; padding: 2px 6px; border-radius: var(--radius-sm); }
|
|
1052
|
+
.fxg .fxg-task:hover { background: var(--overlay-subtle); }
|
|
1053
|
+
.fxg .fxg-task-title { flex: 1 1 auto; min-width: 0; }
|
|
1054
|
+
.fxg .fxg-task.is-done .fxg-task-title { color: var(--text-muted); text-decoration: line-through; text-decoration-color: var(--text-faint); }
|
|
1055
|
+
.fxg .fxg-task-state { flex: none; color: var(--text-faint); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1056
|
+
.fxg .fxg-go { flex: none; }
|
|
1057
|
+
.fxg .fxg-task.is-current { background: var(--accent-wash); } /* \u6B63\u5728\u73B0\u573A\u5708\u6CE8\u7684\u90A3\u4E00\u6761 */
|
|
1058
|
+
.fxg .fxg-check { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: var(--radius-pill); box-shadow: inset 0 0 0 1.5px var(--overlay-strong); color: var(--on-accent, #fff); }
|
|
1059
|
+
.fxg .fxg-check.is-on { background: var(--accent); box-shadow: none; }
|
|
1060
|
+
|
|
1061
|
+
.fxg-reader .fxg-figure { margin: 16px 0 20px; }
|
|
1062
|
+
.fxg-reader .fxg-figure-svg { display: block; width: 100%; height: auto; }
|
|
1063
|
+
.fxg-reader .fxg-figure-cap { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px 16px; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1064
|
+
.fxg-reader .fxg-figure-cap b { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; margin-right: 6px; border-radius: var(--radius-pill); background: var(--accent); color: var(--on-accent); font-size: var(--ui-font-caption); line-height: 1; vertical-align: 1px; }
|
|
1065
|
+
|
|
1066
|
+
.fxg-reader .fxg-lock { margin-top: 4px; padding: 16px 18px; border-radius: var(--radius-lg); background: var(--overlay-subtle); display: grid; gap: 8px; }
|
|
1067
|
+
.fxg-reader .fxg-lock p { margin: 0; }
|
|
1068
|
+
.fxg-reader .fxg-lock-title { font-weight: 600; }
|
|
1069
|
+
|
|
1070
|
+
.fxg .fxg-more { position: relative; }
|
|
1071
|
+
.fxg .fxg-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 20; min-width: 200px; padding: 4px; border-radius: var(--radius-md); background: var(--menu-bg, var(--panel-bg, var(--bg))); box-shadow: var(--shadow-menu, 0 8px 24px rgba(0, 0, 0, 0.16)); display: grid; }
|
|
1072
|
+
.fxg .fxg-menu-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 10px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text); text-align: left; cursor: pointer; }
|
|
1073
|
+
.fxg .fxg-menu-item:hover { background: var(--overlay-light); }
|
|
1074
|
+
|
|
1075
|
+
.fxg-side .fxg-tabs { flex: none; display: flex; gap: 4px; padding: 10px 12px 0; }
|
|
1076
|
+
.fxg-side .fxg-tabs button { padding: 4px 10px; border: 0; border-radius: var(--radius-pill); background: transparent; color: var(--text-muted); cursor: pointer; }
|
|
1077
|
+
.fxg-side .fxg-tabs button.is-on { background: var(--overlay-light); color: var(--text); }
|
|
1078
|
+
.fxg .fxg-pane { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 12px 14px 16px; display: flex; flex-direction: column; gap: 8px; }
|
|
1079
|
+
.fxg .fxg-h { font-size: var(--ui-font-title); line-height: var(--ui-line-title); font-weight: 600; }
|
|
1080
|
+
.fxg .fxg-sub { margin-top: 8px; color: var(--text-muted); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); font-weight: 600; }
|
|
1081
|
+
.fxg .fxg-bar-track { height: 6px; border-radius: var(--radius-pill); background: var(--overlay-light); overflow: hidden; }
|
|
1082
|
+
.fxg .fxg-bar-track > i { display: block; height: 100%; border-radius: inherit; background: var(--accent); }
|
|
1083
|
+
.fxg .fxg-lines { display: grid; gap: 2px; }
|
|
1084
|
+
.fxg .fxg-line { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 30px; padding: 2px 6px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text); text-align: left; cursor: pointer; }
|
|
1085
|
+
.fxg .fxg-line > span:nth-child(2) { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1086
|
+
.fxg .fxg-line:hover, .fxg .fxg-line.is-active { background: var(--overlay-subtle); }
|
|
1087
|
+
.fxg .fxg-line.is-locked { color: var(--text-muted); }
|
|
1088
|
+
.fxg .fxg-input { box-sizing: border-box; width: 100%; resize: vertical; min-height: 72px; padding: 8px 10px; border: var(--border-width) solid var(--border); border-radius: var(--radius-md); background: var(--input-bg, transparent); color: var(--text); font: inherit; }
|
|
1089
|
+
.fxg .fxg-pane > .btn { align-self: flex-start; }
|
|
1090
|
+
.fxg .fxg-chat { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
|
|
1091
|
+
|
|
1092
|
+
.fxg-companion .fxg-companion-head { display: flex; align-items: center; justify-content: space-between; }
|
|
1093
|
+
.fxg-companion .fxg-companion-head .fxg-sub { margin-top: 0; }
|
|
1094
|
+
.fxg-companion .fxg-back { align-self: flex-start; margin-top: 4px; }
|
|
1095
|
+
|
|
1096
|
+
.fxg-letter { height: auto; gap: 12px; }
|
|
1097
|
+
.fxg-letter .fxg-letter-chapter { display: grid; gap: 4px; }
|
|
1098
|
+
.fxg-letter .fxg-letter-title { padding: 0; border: 0; background: transparent; color: var(--text); font-weight: 600; text-align: left; cursor: pointer; }
|
|
1099
|
+
.fxg-letter > .btn { align-self: flex-start; }
|
|
1100
|
+
`;function Po(e){let[,t]=M(0);Q(()=>{let n=e.subscribe(()=>t(o=>o+1));return t(o=>o+1),n},[e])}function Mo(e){return r("div",{class:`fxg fxg-${e.kind}`,lang:e.g.locale()==="zh"?"zh-CN":"en",children:[r("style",{children:Nc}),e.children]})}var Io=({on:e})=>r("span",{class:`fxg-check${e?" is-on":""}`,"aria-hidden":"true",children:e&&r("svg",{viewBox:"0 0 16 16",width:"10",height:"10",children:r("path",{d:"M3.5 8.5l3 3 6-7",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})})});function $c({g:e,task:t,chapter:n}){let o=e.env(),a=Ht(t,o),i=!!t.desktopOnly&&!o.desktop;return r("li",{class:`fxg-task${a?" is-done":""}${!a&&e.spotTask()===t.id?" is-current":""}`,"data-task":t.id,children:[r(Io,{on:a}),r("span",{class:"fxg-task-title",children:e.title(t)}),a?r("span",{class:"fxg-task-state",children:e.t("guide.taskDone")}):i?r("span",{class:"fxg-task-state",children:e.t("guide.desktopOnly")}):t.go?r("button",{type:"button",class:"btn ghost sm fxg-go",onClick:()=>void e.go(t,n),children:e.t("guide.go")}):null]})}function ci({g:e,chapter:t}){return r("ul",{class:"fxg-tasks",children:t.tasks.map(n=>r($c,{g:e,task:n,chapter:t},n.id))})}function Oc({g:e,value:t,label:n}){let o=te(null),a=te(null);return Q(()=>{if(!(!o.current||!e.ctx.ui?.mountMarkdownEditor))return a.current=e.ctx.ui.mountMarkdownEditor(o.current,{value:t,label:n,readOnly:!0,modes:!1}),()=>{a.current?.dispose(),a.current=null}},[e]),Q(()=>{a.current?.update({value:t})},[t]),r("div",{class:"fxg-doc",ref:o})}function ig({g:e}){let[t,n]=M(!1),o=te(null);Q(()=>{if(!t)return;let s=c=>{o.current?.contains(c.target)||n(!1)},l=c=>{c.key==="Escape"&&n(!1)};return document.addEventListener("pointerdown",s,!0),document.addEventListener("keydown",l),()=>{document.removeEventListener("pointerdown",s,!0),document.removeEventListener("keydown",l)}},[t]);let a=e.env(),i=(s,l,c)=>r("button",{type:"button",role:c===void 0?"menuitem":"menuitemcheckbox","aria-checked":c,class:"fxg-menu-item",onClick:()=>{n(!1),l()},children:[r("span",{children:s}),c&&r(Io,{on:!0})]});return r("div",{class:"fxg-more",ref:o,children:[r("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.more"),"aria-haspopup":"menu","aria-expanded":t,onClick:()=>n(!t),children:"\xB7\xB7\xB7"}),t&&r("div",{class:"fxg-menu",role:"menu",children:[i(a.unlockAll?e.t("guide.relock"):e.t("guide.unlockAll"),()=>e.setUnlockAll(!a.unlockAll)),i(e.t("guide.reminders"),()=>e.setReminders(!e.reminders()),e.reminders()),e.ctx.app?.spotlight&&i(e.t("guide.spotlight"),()=>e.setSpotlight(!e.spotlightOn()),e.spotlightOn()),e.ctx.app?.runCommand&&i(e.t("guide.openAchievements"),()=>{e.ctx.app?.runCommand?.("open-achievements")})]})]})}function Bc({g:e}){Po(e),Q(()=>{e.ctx.achievements?.track("guide.open")},[e]);let t=e.selected(),n=e.env(),o=rr(t,n),{intro:a,body:i}=e.markdown(t),s=o!=="locked",l=ut[ut.findIndex(c=>c.id===t.level)-1];return r(Mo,{g:e,kind:"reader",children:[r("div",{class:"fxg-bar",children:[r("span",{class:"fx-tag fxg-ro",children:e.t("guide.readOnly")}),r(ig,{g:e})]}),r("div",{class:"fxg-scroll",children:r("div",{class:"fxg-col",children:[r(Oc,{g:e,value:`# ${e.title(t)}
|
|
1101
|
+
|
|
1102
|
+
${a}`,label:e.title(t)}),s&&t.figure&&r(Dc,{g:e,figure:t.figure}),s&&i&&r(Oc,{g:e,value:i,label:e.title(t)}),o==="locked"&&l?r("div",{class:"fxg-lock","data-locked":!0,children:[r("div",{class:"fxg-lock-title",children:e.t("guide.locked.title")}),r("p",{children:e.t("guide.locked.body",{level:e.levelName(l.id)})}),r("p",{class:"fxg-muted",children:e.t("guide.locked.left")}),r("ul",{class:"fxg-tasks",children:Rt(l.id).flatMap(c=>Nr(c.tasks,n).filter(d=>!Ht(d,n)).map(d=>r($c,{g:e,task:d,chapter:c},d.id)))}),r("p",{class:"fxg-muted",children:e.t("guide.locked.hint")})]}):r("section",{class:"fxg-section","data-guide-tasks":!0,children:[r("h2",{children:e.t("guide.tasks")}),r(ci,{g:e,chapter:t})]})]})})]})}function sg({done:e,total:t}){return r("div",{class:"fxg-bar-track",role:"progressbar","aria-valuemin":0,"aria-valuemax":t,"aria-valuenow":e,children:r("i",{style:{width:`${t?Math.round(e/t*100):0}%`}})})}function Fc({g:e,c:t}){let n=rr(t,e.env());return r("button",{type:"button",class:`fxg-line is-${n}${e.selected().id===t.id?" is-active":""}`,onClick:()=>{e.select(t.id),e.ctx.openView?.(Lt.reader)},children:[r(Io,{on:n==="done"}),r("span",{children:e.title(t)}),n==="locked"&&r("span",{class:"fxg-task-state",children:e.t("guide.lockedHint")})]})}function lg({g:e}){let t=e.env(),n=ai(t);if(!n)return r("div",{class:"fxg-pane",children:[r("div",{class:"fxg-h",children:e.t("guide.allDone")}),r("p",{class:"fxg-muted",children:e.t("guide.allDoneBody")}),r("div",{class:"fxg-sub",children:e.t("guide.review")}),Eo(e).map(({level:s,chapters:l})=>r("button",{type:"button",class:"fxg-line",onClick:()=>{e.select(l[0].id),e.ctx.openView?.(Lt.reader)},children:[r(Io,{on:!0}),r("span",{children:e.levelName(s)})]},s))]});let{done:o,total:a}=Pc(n,t),i=ut[ut.findIndex(s=>s.id===n)+1];return r("div",{class:"fxg-pane",children:[r("div",{class:"fxg-h",children:e.levelName(n)}),r("div",{class:"fxg-muted",children:e.t("guide.levelProgress",{done:o,total:a})}),r(sg,{done:o,total:a}),r("div",{class:"fxg-lines",children:Rt(n).map(s=>r(Fc,{g:e,c:s},s.id))}),i&&r(F,{children:[r("div",{class:"fxg-sub",children:e.t("guide.next")}),r("div",{class:"fxg-lines",children:Rt(i.id).map(s=>r(Fc,{g:e,c:s},s.id))})]})]})}function Uc(e,t){let{intro:n,body:o}=e.markdown(t);return`# ${e.title(t)}
|
|
1103
|
+
|
|
1104
|
+
${n}
|
|
1105
|
+
|
|
1106
|
+
${o}`.trim()}function cg({g:e}){let t=e.selected(),n=e.ctx.tangu?.mountChat;return n?r(dg,{g:e,c:t,mount:n},`${t.id}:${e.locale()}`):r(ug,{g:e,c:t})}function dg({g:e,c:t,mount:n}){let o=te(null);return Q(()=>{let a=n(o.current,{title:e.t("guide.ask.chatTitle")});return a.quote(Uc(e,t)),()=>a.dispose()},[]),r("div",{class:"fxg-chat",ref:o})}function ug({g:e,c:t}){let[n,o]=M(""),[a,i]=M(""),s=e.ctx.tangu?.startChat,l=async()=>{if(!s)return;let c=`${e.t("guide.ask.prompt",{chapter:e.title(t),question:n.trim()})}
|
|
1107
|
+
|
|
1108
|
+
---
|
|
1109
|
+
${Uc(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?o(""):i(d?.error||e.t("guide.ask.unavailable"))};return r("div",{class:"fxg-pane",children:[r("p",{class:"fxg-muted",children:e.t("guide.ask.hint",{chapter:e.title(t)})}),r("textarea",{class:"fxg-input",rows:4,value:n,placeholder:e.t("guide.ask.placeholder"),onInput:c=>o(c.target.value)}),r("button",{type:"button",class:"btn sm",disabled:!s,onClick:()=>void l(),children:e.t("guide.ask.send")}),(!s||a)&&r("p",{class:"fxg-muted",children:a||e.t("guide.ask.unavailable")})]})}function qc({g:e}){Po(e);let[t,n]=M("progress");return r(Mo,{g:e,kind:"side",children:[r("div",{class:"fxg-tabs",role:"tablist",children:["progress","ask"].map(o=>r("button",{type:"button",role:"tab","aria-selected":t===o,class:t===o?"is-on":"",onClick:()=>n(o),children:e.t(o==="progress"?"guide.progress":"guide.askTangu")},o))}),t==="progress"?r(lg,{g:e}):r(cg,{g:e})]})}function Hc({g:e}){Po(e);let t=e.companionChapter(),n=rr(t,e.env())==="done",o=te(n);return Q(()=>{if(n&&!o.current){let a=window.setTimeout(()=>e.ctx.closeView?.(Lt.companion),1500);return()=>window.clearTimeout(a)}o.current=n},[n]),r(Mo,{g:e,kind:"companion",children:r("div",{class:"fxg-pane",children:[r("div",{class:"fxg-companion-head",children:[r("span",{class:"fxg-sub",children:e.t("guide.title")}),e.ctx.closeView&&r("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.companion.close"),onClick:()=>e.ctx.closeView?.(Lt.companion),children:"\xD7"})]}),r("div",{class:"fxg-h",children:e.title(t)}),r("div",{class:"fxg-sub",children:e.t("guide.tasks")}),r(ci,{g:e,chapter:t}),r("button",{type:"button",class:"fx-link fxg-back",onClick:()=>void e.openGuide(t.id),children:e.t("guide.companion.back")})]})})}function Vc({g:e,letter:t}){Po(e);let n=t?t.kind==="level"?t.level:"new":null,o=n&&(n==="new"||Ao(n,e.env()))?Rt(n):[];return r(Mo,{g:e,kind:"letter",children:[o.map(a=>r("div",{class:"fxg-letter-chapter",children:[r("button",{type:"button",class:"fxg-letter-title",onClick:()=>void e.openGuide(a.id),children:e.title(a)}),r(ci,{g:e,chapter:a})]},a.id)),r("button",{type:"button",class:"btn sm",onClick:()=>void e.openGuide(o[0]?.id??yn("welcome")?.id),children:e.t("guide.letter.open")})]})}function pg(e){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.achievements?.count=="function"&&typeof e.achievements.subscribe=="function"&&typeof e.app?.openSpace=="function"&&typeof e.ui?.mountMarkdownEditor=="function"}function jc(e,t=window){if(!pg(e)||t.tangu?.unitPage)return null;let n=t.tangu,o=Rc(e,{desktop:typeof n?.appVersion=="function"&&!n.mobile,appVersion:typeof n?.appVersion=="function"?n.appVersion().catch(()=>null):Promise.resolve(null)}),a=i=>s=>(Be(r(i,{g:o}),s),()=>{Be(null,s)});return e.registerView({id:Lt.reader,title:o.t("guide.title"),icon:"page",workspaceSource:li,mount:a(Bc)}),e.registerView({id:Lt.side,title:o.t("guide.progress"),icon:"list-view",mount:a(qc)}),e.registerView({id:Lt.companion,title:o.t("guide.title"),icon:"todo",mount:a(Hc)}),e.registerListSource({id:li,title:o.t("guide.title"),search:!0,items:i=>{let s=o.env(),l=i?.query?.trim().toLowerCase()??"",c=o.justUnlocked();return Eo(o).flatMap(({level:d,chapters:f})=>f.map(u=>{let p=rr(u,s);return{key:u.id,title:o.title(u),group:o.levelName(d),icon:p==="done"?"circle-check":p==="locked"?"lock":"circle",hint:d===c&&p!=="locked"?o.t("guide.justUnlocked"):void 0}})).filter(d=>!l||d.title.toLowerCase().includes(l))},subscribe:i=>o.subscribe(i),activeKey:()=>o.selected().id,open:i=>{o.select(i.key),e.openView(Lt.reader)}}),e.registerCommand?.({id:"open-guide",title:()=>o.t("guide.cmd.open"),keywords:"guide manual help tutorial levels \u4F7F\u7528\u6307\u5357 \u8BF4\u660E\u4E66 \u6559\u7A0B \u5E2E\u52A9 \u7B49\u7EA7 \u4EFB\u52A1",run:()=>{o.openGuide()}}),e.inbox?.registerCard({sender:()=>o.t("guide.title"),mount(i,s){return Be(r(Vc,{g:o,letter:o.letter(s.id)}),i),()=>{Be(null,i)}}}),o}var Xe=e=>Number.isFinite(Number(e))?Number(e):0,vt="penzor",Ro=e=>e?.apps?.apps.find(t=>t.appId===vt)?.bytes??0,Xc=500;async function fg(e,t){let n=Math.min(20,Xe(t.totalPages));if(n<=1)return t.files;let o=await Promise.all(Array.from({length:n-1},(a,i)=>e(`/exports/list?pageSize=${Xc}&sortBy=date&sortOrder=desc&page=${i+2}`)));return[...t.files,...o.flatMap(a=>a.ok&&Array.isArray(a.data?.files)?a.data.files:[])]}async function Kc(e){let[t,n,o,a,i,s]=await Promise.all([e("/remotesync/vaults"),e("/amadeus/vaults"),e("/storage/quota"),e("/storage/files-by-app"),e(`/exports/list?pageSize=${Xc}&sortBy=date&sortOrder=desc`),e("/trash?all=1")]),c=[t,n,o,a,i,s].every(f=>!f.ok&&f.status===401);return{snap:{sync:t.ok&&Array.isArray(t.data?.vaults)?t.data:null,ama:n.ok&&Array.isArray(n.data?.vaults)?n.data.vaults.filter(f=>(f.role??"owner")==="owner").map(f=>({id:f.id,name:f.name,sizeBytes:Xe(f.sizeBytes)})):null,apps:o.ok&&a.ok&&Array.isArray(a.data?.apps)?{used:Xe(o.data?.used),quota:Xe(o.data?.quota),apps:a.data.apps,largest:a.data.largest??[]}:null,exports:i.ok&&Array.isArray(i.data?.files)?{files:await fg(e,i.data),total:Xe(i.data.total),totalBytes:Xe(i.data.totalBytes)}:null,trash:s.ok&&Array.isArray(s.data)?s.data:null,at:Date.now()},signedOut:c}}var Wc=(e,t)=>t>0?{used:e,max:t,pct:Math.min(100,e/t*100),warn:e/t>=.9}:null;function di(e){let t=e.sync?Xe(e.sync.usedBytes):0,n=e.ama?e.ama.reduce((d,f)=>d+f.sizeBytes,0):0,o=e.apps?Xe(e.apps.used):0,a=e.exports?Xe(e.exports.totalBytes):0,i=[["sync",t],["ama",n],["apps",o],["exports",a]].filter(([,d])=>d>0).map(([d,f])=>({ledger:d,bytes:f})),s=e.sync?.vaults.map(d=>d.updatedAt).filter(d=>!!d).sort().pop()??null,l=e.trash??[],c=!e.sync?.vaults.length&&!e.ama?.length&&!e.apps?.apps.length&&!e.exports?.files.length&&!l.length;return{total:t+n+o+a,segments:i,sync:e.sync?{bytes:t,vaults:e.sync.vaults.length,meter:Wc(t,Xe(e.sync.maxBytes)),updatedAt:s,maxFileBytes:Xe(e.sync.maxFileBytes)}:null,ama:e.ama?{bytes:n,vaults:e.ama.length}:null,apps:e.apps?{bytes:o,apps:e.apps.apps.filter(d=>d.files>0&&d.appId!==vt).map(d=>d.appId),meter:Wc(o,Xe(e.apps.quota)),trashCount:Do(l).length,trashBytes:l.reduce((d,f)=>d+Xe(f.fileSize),0)}:null,exports:e.exports?{bytes:a,count:e.exports.total,latest:e.exports.files[0]??null}:null,empty:c}}var mg={"ai-studio":"AI Studio","photo-studio":"Photo Studio",notebase:"Notebase",chat:"Forsion Chat",connect:"Forsion Connect","video-studio":"Video Studio",bluebird:"Bluebird",cnti:"CNTI"},ui=e=>e?mg[e]??e.split(/[-_]/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join(" "):"\u2014",ir=e=>e.kind==="sync"?`sync:${e.vault}`:e.kind==="ama"?`ama:${e.vaultId}`:e.kind==="app"?`app:${e.appId}`:e.kind==="overview"?"ov":e.kind,Un=e=>e.kind==="overview"||e.kind==="sync-home";function Jc(e){if(e==="ov")return{kind:"overview"};if(e==="sync-home"||e==="exports"||e==="trash")return{kind:e};let t=e.indexOf(":"),n=t<0?e:e.slice(0,t),o=t<0?"":e.slice(t+1);return o?n==="sync"?{kind:"sync",vault:o}:n==="ama"?{kind:"ama",vaultId:o}:n==="app"?{kind:"app",appId:o}:null:null}function Yc(e,t,n){let o=[{key:"ov",title:t.overview,icon:"layout"}];if(!e)return o;let a=i=>Or(i,n);if(e.apps&&o.push({key:`app:${vt}`,title:t.drive,icon:t.driveIcon,hint:a(Ro(e))}),e.sync){o.push({key:"sync",title:t.sync,kind:"folder",icon:"refresh",hint:a(Xe(e.sync.usedBytes))});for(let i of e.sync.vaults)o.push({key:`sync:${i.vault}`,parent:"sync",title:i.vault,icon:"database",hint:a(i.bytes)})}if(e.ama){o.push({key:"ama",title:t.ama,kind:"folder",icon:"cloud",hint:a(e.ama.reduce((i,s)=>i+s.sizeBytes,0))});for(let i of e.ama)o.push({key:`ama:${i.id}`,parent:"ama",title:i.name,icon:"page",hint:a(i.sizeBytes)})}if(e.apps){o.push({key:"apps",title:t.apps,kind:"folder",icon:"archive",hint:a(Math.max(0,Xe(e.apps.used)-Ro(e)))});for(let i of e.apps.apps.filter(s=>s.files>0&&s.appId!==vt))o.push({key:`app:${i.appId}`,parent:"apps",title:ui(i.appId),icon:"image",hint:a(i.bytes)})}return e.exports&&o.push({key:"exports",title:t.exports,icon:"attachment",hint:a(e.exports.totalBytes)}),e.trash&&o.push({key:"trash",title:t.trash,icon:"trash",hint:t.items(Do(e.trash).length)}),o}function Do(e){let t=new Map(e.map(a=>[a.id,a])),n=a=>{let i=a;for(let s=0;s<64&&i.parentId&&t.has(i.parentId);s++)i=t.get(i.parentId);return i},o=new Map;for(let a of e){let i=n(a),s=o.get(i.id)??{inner:0,innerBytes:0};i.id!==a.id&&s.inner++,s.innerBytes+=Xe(a.fileSize),o.set(i.id,s)}return e.filter(a=>!(a.parentId&&t.has(a.parentId))).map(a=>({...a,...o.get(a.id)}))}function Zc(e,t){let n=t?`${t}/`:"",o=new Map,a=[];for(let i of e){if(n&&!i.path.startsWith(n))continue;let s=i.path.slice(n.length),l=s.indexOf("/");if(l<0){a.push({key:i.path,name:s,dir:!1,size:i.size,mtime:i.mtime,col4:i.who??null,ref:i.ref});continue}let c=s.slice(0,l),d=n+c,f=o.get(d)??{key:d,name:c,dir:!0,size:0,mtime:null,count:0};f.size+=i.size,f.count=(f.count??0)+1,i.mtime!=null&&(f.mtime==null||i.mtime>f.mtime)&&(f.mtime=i.mtime),o.set(d,f)}return[...Lo([...o.values()]),...Lo(a)]}var Lo=e=>e.sort((t,n)=>(n.mtime??-1)-(t.mtime??-1)||t.name.localeCompare(n.name)),Qc=e=>[...Lo(e.filter(t=>t.dir)),...Lo(e.filter(t=>!t.dir))];function Or(e,t){let n=Math.max(0,Xe(e));if(n<1024)return`${n} B`;if(n<1024*1024)return`${Math.round(n/1024)} KB`;if(n<1024**3){let o=n/1048576;return`${o<100?Number(o.toFixed(1)):Math.round(o)} MB`}return`${Number((n/1024**3).toFixed(2))} GB`}function pi(e,t,n){let o=Or(e,n),a=Or(t,n),i=a.slice(a.indexOf(" "));return`${o.endsWith(i)?o.slice(0,-i.length):o} / ${a}`}var gg=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Gc=e=>String(e).padStart(2,"0");function Vt(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let o=new Date(e),a=new Date(n);a.setHours(0,0,0,0);let i=new Date(o);i.setHours(0,0,0,0);let s=Math.round((a.getTime()-i.getTime())/864e5),l=`${Gc(o.getHours())}:${Gc(o.getMinutes())}`;if(s===0)return t==="zh"?`\u4ECA\u5929 ${l}`:`Today ${l}`;if(s===1)return t==="zh"?`\u6628\u5929 ${l}`:`Yesterday ${l}`;let c=o.getFullYear()===a.getFullYear();return t==="zh"?`${c?"":`${o.getFullYear()} \u5E74 `}${o.getMonth()+1} \u6708 ${o.getDate()} \u65E5`:`${gg[o.getMonth()]} ${o.getDate()}${c?"":`, ${o.getFullYear()}`}`}function xn(e){if(e==null||e==="")return null;if(typeof e=="number")return e<1e12?e*1e3:e;let t=Number(e);if(Number.isFinite(t))return t<1e12?t*1e3:t;let n=Date.parse(String(e));return Number.isNaN(n)?null:n}var ed=e=>[e.notes.on&&!e.notes.pending,e.agents.on,e.plugins.on].filter(Boolean).length,td=e=>!e.decided||!!e.notes.pending||!e.notes.on&&!e.agents.on&&!e.plugins.on;function fi(e){let t=e.notes.last;return!!t&&t.ok===!1&&!(t.errors.length>0&&t.errors.every(n=>n.includes("already-running")))}var No=e=>!!e&&e.signedIn&&(!!e.notes.pending||e.notes.on&&fi(e)),hg=e=>/"code"\s*:\s*"QUOTA"/.test(e),nd=(e,t)=>e.notes.on&&!e.notes.pending&&e.notes.backend==="penzor"&&(t>0&&(e.notes.localBytes??0)>t||!!e.notes.last?.errors.some(hg));function Fr(e){if(!e?.notes.running)return null;let t=e.notes.progress;return t&&t.total>0?Math.min(1,Math.max(0,t.done/t.total)):0}function rd(e,t){if(!e||!e.signedIn)return;let n=Fr(e);if(n!=null)return n>0?Te(t,"penzor.sync.running",{pct:Math.round(n*100)}):Te(t,"penzor.sync.runningPlain");if(e.notes.pending)return Te(t,"penzor.sync.waiting");let o=ed(e);return o?Te(t,"penzor.sync.onN",{n:o}):Te(t,"penzor.sync.allOff")}function od(e,t){let n=ed(e);return e.notes.pending?Te(t,"penzor.sync.badgeWaiting",{n}):n?Te(t,"penzor.sync.onN",{n}):Te(t,"penzor.sync.allOff")}function mi(e,t){let n=Math.max(0,Math.round(e.intervalMin)),o=n?n%60===0?Te(t,"penzor.sync.everyHours",{n:n/60}):Te(t,"penzor.sync.every",{n}):Te(t,"penzor.sync.manual");return e.syncOnStart?`${o} \xB7 ${Te(t,"penzor.sync.onStart")}`:o}function gi(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let o=Math.max(0,n-e);return o<6e4?Te(t,"penzor.justNow"):o<36e5?Te(t,"penzor.sync.minAgo",{n:Math.floor(o/6e4)}):o<6*36e5?Te(t,"penzor.sync.hoursAgo",{n:Math.floor(o/36e5)}):Vt(e,t,n)}function $r(e,t=!1){return t?"folder":/\.(png|jpe?g|gif|webp|heic|dng|svg|bmp|tiff?)$/i.test(e)?"image":/\.(md|txt|pdf|docx?|rtf)$/i.test(e)?"page":/\.db$/i.test(e)?"database":"attachment"}var on="forsion-penzor",an={main:"penzor",info:"penzor-info"},bi="penzor-places",vi="forsion-extend.penzor.ready",ad="forsion-extend.penzor.focus",Oo=e=>e.state==="active"||e.state==="queued",Fo=e=>e.ok?"":e.detail||e.code||e.transport||(e.status?`HTTP ${e.status}`:"offline"),hi=e=>e.slice(e.lastIndexOf("/")+1);function id(e,t={}){let n=t.api??J,o=new Set,a=()=>{for(let v of[...o])try{v()}catch(S){console.error("[penzor] listener failed",S)}},i=()=>Qe(e.getLocale?.()),s=(v,S)=>Te(i(),v,S),l=v=>Or(v,i()),c=v=>e.app?.notify?.(v),d=v=>c(s("penzor.toast.failed",{reason:typeof v=="string"?v:Fo(v)})),f="unknown",u=!1,p=null,g=null,m={kind:"overview"},y="",_=[],E=null,x=null,k=null,R="mtime",B="",j=null,w={kind:"view"},A=!1,P=null,I=null,N=0,V=0,X=0,oe=t.device??null,b=[],C=new Map,L=new Set,K=null,ie=null,pe=[],He=[],Pe="hidden",yt=0,ve=!1,et=0,jt=!1,kn=null,wn=!1,zn=null,lr=new Map,Wt=null,Ye=typeof e.app?.sync?.get=="function"?e.app.sync:null,Gt=new Map,he=new Set,Xt=!1,ye=!1,Kt=!1,tt=!1,_n=1e4,Br=4e3,Dt=v=>{let S=R==="size"?(T,U)=>U.size-T.size:R==="name"?(T,U)=>T.name.localeCompare(U.name):null;return S?[...v.filter(T=>T.dir).sort(S),...v.filter(T=>!T.dir).sort(S)]:Qc([...v])};async function Ur(){let v=++N,S=m;if(x=null,S.kind==="overview"||S.kind==="sync-home"){E=null;return}if(S.kind==="exports"){E=(g?.exports?.files??[]).map(H=>({key:H.fileId,name:H.fileName,dir:!1,size:H.size,mtime:xn(H.createdAt),col4:at(H.appId),ref:H}));return}if(S.kind==="trash"){E=Do(g?.trash??[]).map(H=>({key:H.id,name:H.name,dir:H.fileType==="directory",size:H.fileType==="directory"?H.innerBytes:H.fileSize,mtime:xn(H.deletedAt),col4:H.parentName?`${at(H.appId)} / ${H.parentName}`:at(H.appId),count:H.fileType==="directory"?H.inner:void 0,ref:H}));return}if(E=null,a(),S.kind==="sync"||S.kind==="ama"){let H=ir(S),W=C.get(H);if(!W){if(S.kind==="sync"){let xe=await n(`/remotesync/vaults/${encodeURIComponent(S.vault)}/manifest`);if(v!==N)return;if(!xe.ok){x=Fo(xe),a();return}W=xe.data.files.map(ke=>({path:ke.path,size:ke.size,mtime:xn(ke.mtimeMs),who:ke.device??null,ref:ke}))}else{let xe=await n(`/amadeus/vaults/${encodeURIComponent(S.vaultId)}/tree`);if(v!==N)return;if(!xe.ok){x=Fo(xe),a();return}W=(xe.data.entries??[]).map(ke=>({path:ke.path,size:ke.size,mtime:xn(ke.updatedAt),ref:ke}))}C.set(H,W)}E=Zc(W,y);return}let T=_[_.length-1]?.id,U=await n(`/files${T?`?parentId=${encodeURIComponent(T)}`:""}`,{projectSource:S.appId});if(v===N){if(!U.ok){x=Fo(U),a();return}E=U.data.map(H=>({key:H.id,name:H.name,dir:H.fileType==="directory",size:Number(H.fileSize)||0,mtime:xn(H.updatedAt),ref:H}))}}let Nt=()=>{if(!E)return null;let v=B.trim().toLowerCase(),S=v?E.filter(T=>T.name.toLowerCase().includes(v)):E;return Dt(S)},qr=()=>{let v=Nt()??[],S=new Set(v.map(T=>T.key));if(L=new Set([...L].filter(T=>S.has(T))),k&&S.has(k)){L.add(k);return}k=(v.find(T=>!T.dir)??v[0])?.key??null,L=new Set(k?[k]:[]),K=k,wt()},xt=()=>{k=null,L=new Set,K=null,ie=null},at=v=>v===vt?s("penzor.drive"):ui(v),nt=()=>m.kind==="app"&&m.appId===vt,pt=()=>m.kind==="app"||m.kind==="sync"||m.kind==="ama",Ot=()=>m.kind==="app"?_[_.length-1]?.id??"ROOT":"ROOT",Hn=()=>(Nt()??[]).filter(v=>L.has(v.key)),kt=(v,S)=>{let T=re().cloudInvoke;return T?T(v,S).catch(U=>({ok:!1,error:String(U?.message||U)})):Promise.resolve({ok:!1,error:"no_bridge"})};function Jt(v=500){kn||wn||(kn=setTimeout(()=>{kn=null,ft()},v))}async function ft(){let v=await kt("penzor:transfers");if(wn)return;let S=new Map(pe.map(xe=>[xe.id,xe.state]));v?.ok&&Array.isArray(v.items)&&(pe=v.items);let T=Date.now(),U=pe.some(Oo);pe.some(xe=>xe.kind==="up"&&xe.state==="done"&&S.get(xe.id)&&S.get(xe.id)!=="done"&&nt()&&(xe.parentId===Ot()||xe.targetId===Ot()))&&(Wt&&clearTimeout(Wt),Wt=setTimeout(()=>{Wt=null,$t()},300)),U?(zn==null&&(zn=T),et=0,Pe==="hidden"&&(Pe="open",yt=T),Pe==="open"&&!ve&&T-yt>_n&&(Pe="pill")):zn!=null&&(Vn(zn),zn=null);let H=pe.some(xe=>xe.state==="failed")||He.length>0,W=pe.some(xe=>xe.state==="paused");!U&&!W&&pe.length&&!H&&Pe!=="hidden"&&(et?T-et>Br&&!ve&&(Pe="hidden",et=0,zt.txClear("finished")):(et=T,Pe==="pill"&&(Pe="open"))),!U&&H&&Pe==="pill"&&(Pe="open"),!pe.length&&!He.length&&(Pe="hidden"),Sn(),a(),(U||Pe!=="hidden"&&et)&&Jt()}function Vn(v){let S=pe.filter(W=>(W.finishedAt??0)>=v),T=S.filter(W=>W.kind==="up"&&W.state==="done"),U=S.filter(W=>W.kind==="down"&&W.state==="done"),H=S.filter(W=>W.state==="failed");T.length&&We(),!jt&&(H.length?c(s("penzor.toast.txFailed",{n:H.length})):T.length?c(T.length===1?s("penzor.toast.upDoneOne",{name:T[0].name}):s("penzor.toast.upDoneMany",{n:T.length})):U.length&&c(U.length===1?s("penzor.toast.downloaded",{name:U[0].name}):s("penzor.toast.downDoneMany",{n:U.length})))}function Sn(){let v=pe.filter(Oo),S=v.reduce((U,H)=>U+Math.max(H.size,H.done),0),T=v.length?S>0?Math.min(1,v.reduce((U,H)=>U+H.done,0)/S):0:null;e.app?.setSpaceProgress?.(on,T??Fr(Ye?.get()??null))}function cr(){if(!Ye)return;let v=No(Ye.get());v!==tt&&(tt=v,e.app?.setSpaceDot?.(on,v))}function dr(){if(!ye||!Ye)return;let v=Ye.get();if(!v)return;ye=!1;let S=td(v);m.kind==="overview"&&S?(m={kind:"sync-home"},Kt=!0,a()):m.kind==="sync-home"&&Kt&&!S&&(m={kind:"overview"},Kt=!1,a())}function jn(){Ye?.get()?.notes.pending||(Xt=!1),dr(),Sn(),cr(),a()}let ur=()=>{let v=Ye?.get()??null;if(!v||!Gt.size)return v;let S=(T,U)=>Gt.has(T)?{...U,on:Gt.get(T)}:U;return{...v,notes:S("notes",v.notes),agents:S("agents",v.agents),plugins:S("plugins",v.plugins)}},Wn=async v=>{try{return await v()??{ok:!1}}catch(S){return{ok:!1,error:String(S?.message||S)}}},Ft=()=>{Pe="open",yt=Date.now(),et=0};async function wt(){P=null;let v=pr();if(m.kind!=="app"||!v||v.dir){a();return}let S=v.key,T=await n(`/files/${encodeURIComponent(S)}/versions`);k===S&&(P=T.ok&&Array.isArray(T.data)?T.data.map(U=>({versionNumber:U.versionNumber,fileSize:Number(U.fileSize)||0,createdAt:xn(U.createdAt)})):[],a())}let pr=()=>k?(E??[]).find(v=>v.key===k)??null:null;async function $t(){await Ur(),qr(),a()}async function We(){let v=++X;u=!0,p=null,a();let S=await re().authStatus?.().catch(()=>null);if(v!==X)return;if(S&&!S.loggedIn){f="out",g=null,u=!1,a();return}let{snap:T,signedOut:U}=await Kc(n);if(v===X){if(u=!1,U){f="out",g=null,a();return}f="in",g=T,C.clear(),p=!T.sync&&!T.ama&&!T.apps&&!T.exports&&!T.trash?s("penzor.unreachable"):null,!Un(m)&&m.kind!=="exports"&&m.kind!=="trash"&&((m.kind==="sync"?T.sync?.vaults.some(W=>W.vault===m.vault):m.kind==="ama"?T.ama?.some(W=>W.id===m.vaultId):m.appId===vt?T.apps:T.apps?.apps.some(W=>W.appId===m.appId&&W.files>0))||(m={kind:"overview"},y="",_=[],xt())),await $t(),Hr(T)}}async function Hr(v){let S=[],T=(v.sync?.vaults??[]).slice(0,8),[U,H]=await Promise.all([Promise.all(T.map(W=>n(`/remotesync/vaults/${encodeURIComponent(W.vault)}/manifest`))),v.ama?n("/amadeus/attachments"):Promise.resolve(null)]);if(g===v){if(U.forEach((W,xe)=>{let ke=T[xe];if(!W.ok)return;let Uo=W.data.files.map(_t=>({path:_t.path,size:_t.size,mtime:xn(_t.mtimeMs),who:_t.device??null,ref:_t}));C.set(`sync:${ke.vault}`,Uo);for(let _t of[...W.data.files].sort((Me,dn)=>dn.size-Me.size).slice(0,6))S.push({key:`s:${ke.vault}:${_t.path}`,name:hi(_t.path),where:`${s("penzor.ledger.sync")} \xB7 ${ke.vault}`,size:_t.size,go:`sync:${ke.vault}`})}),H?.ok)for(let W of[...H.data.attachments??[]].sort((xe,ke)=>ke.size-xe.size).slice(0,6))S.push({key:`m:${W.vaultId}:${W.path}`,name:hi(W.path),where:`${s("penzor.ledger.ama")} \xB7 ${W.vaultName}`,size:W.size,go:`ama:${W.vaultId}`});b=S,a()}}async function fr(v,S={},T=m){let U=T.kind==="sync"?{path:`/remotesync/vaults/${encodeURIComponent(T.vault)}/file?path=${encodeURIComponent(v.key)}`,mode:"signed"}:T.kind==="ama"?v.ref.kind==="binary"?{path:`/amadeus/vaults/${encodeURIComponent(T.vaultId)}/asset?ref=${encodeURIComponent(v.key)}`,mode:"bytes"}:{path:`/amadeus/vaults/${encodeURIComponent(T.vaultId)}/file?path=${encodeURIComponent(v.key)}`,mode:"text"}:T.kind==="app"?{path:`/files/${encodeURIComponent(v.key)}/content`,mode:"bytes"}:T.kind==="exports"?{path:`/exports/${encodeURIComponent(v.key)}/url`,mode:"signed"}:null;if(!U)return;let H=await kt("penzor:download",{...U,name:hi(v.name),size:v.size,...S});if(!H?.ok){d(H?.error||"download");return}Ft(),Jt(0),a()}let Cn=()=>{Un(m)?e.closeView?.(an.info,{collapse:!0}):e.openView?.(an.info,{location:"right"})},zt={ctx:e,locale:i,t:s,b:l,subscribe(v){return o.add(v),()=>{o.delete(v)}},auth:()=>f,loading:()=>u,error:()=>p,snap:()=>g,loc:()=>m,path:()=>y,appStack:()=>_,rows:Nt,rowsError:()=>x,selected:pr,sort:()=>R,query:()=>B,menu:()=>j,side:()=>w,confirmEmpty:()=>A,versions:()=>P,moveFolders:()=>I,thisDevice:()=>oe,setDevice(v){oe=v,a()},largest:()=>b,appLabel:at,canWrite:nt,canMulti:pt,folderId:Ot,selection:Hn,isSelected:v=>L.has(v),selectAll(){if(!pt())return;let v=Nt()??[];L=new Set(v.map(S=>S.key)),!k&&v[0]&&(k=v[0].key),j=null,a()},newFolder:()=>ie,startNewFolder(){if(!nt())return;let v=s("penzor.newFolder.default"),S=new Set((E??[]).filter(U=>U.dir).map(U=>U.name)),T=v;for(let U=1;S.has(T)&&U<1e3;U++)T=`${v} (${U})`;ie=T,j=null,a()},cancelNewFolder(){ie!=null&&(ie=null,a())},async createFolder(v){let S=v.trim();if(ie=null,!S||!nt()){a();return}a();let T=await n("/files",{method:"POST",body:{type:"directory",parentId:Ot(),name:S},projectSource:vt});if(!T.ok){T.status===409?c(s("penzor.toast.folderExists",{name:S})):d(T);return}T.data?.id&&(k=T.data.id,L=new Set([T.data.id]),K=T.data.id),await $t()},transfers:()=>pe,notices:()=>He,txRows(){if(!nt())return[];let v=Ot();return pe.filter(S=>S.kind==="up"&&S.projectSource===vt&&S.parentId===v&&(Oo(S)||S.state==="paused")).map(S=>({key:`tx:${S.id}`,id:S.id,name:S.name,size:S.size,done:S.done,state:S.state}))},card:()=>Pe,setCard(v){Pe=v,yt=Date.now(),v!=="hidden"&&Jt(0),a()},holdCard(v){ve=v,yt=Date.now(),v||Jt()},async upload(v,S){if(!nt())return;let T=S?.id??Ot(),U=S?[..._,S]:[..._],H=await v;if(!H.length)return;lr.set(T,U);let W=await kt("penzor:upload",{...typeof H[0]=="string"?{paths:H}:{files:H},parentId:T,projectSource:vt});if(W?.ok){Ft(),Jt(0),a();return}if(W?.error==="quota"){He=[...He,{id:String(Date.now()),kind:"quota",short:Number(W.short)||0}],Ft(),a();return}if(W?.error==="too_many"){c(s("penzor.err.too_many",{n:Number(W.max)||2e3}));return}W?.error!=="no_files"&&d(W?.error==="account_changed"?s("penzor.err.account_changed"):W?.error==="not_signed_in"?s("penzor.err.not_signed_in"):W?.error||"upload")},async txOp(v,S){await kt("penzor:transfer",{id:v,op:S}),yt=Date.now(),await ft()},async txAll(v){let S=v==="pause"?T=>Oo(T):v==="resume"?T=>T.state==="paused":T=>T.state==="failed"||T.state==="canceled";for(let T of pe.filter(S))await kt("penzor:transfer",{id:T.id,op:v});v==="retry"&&(He=[]),yt=Date.now(),await ft()},async txClear(v){await kt("penzor:transfers:clear",{which:v}),v==="all"&&(He=[]),await ft()},dismissNotice(v){He=He.filter(S=>S.id!==v),!pe.length&&!He.length&&(Pe="hidden"),a()},locate(v){if(v.kind==="down"){v.localPath&&re().revealHostPath?.(v.localPath);return}let S=lr.get(v.targetId??"")??[];m={kind:"app",appId:vt},_=S,y="",B="",w={kind:"view"},j=null,xt(),v.fileId&&v.parentId===v.targetId&&(k=v.fileId,L=new Set([v.fileId])),a(),e.app?.openSpace?.(on).then(()=>{e.openView?.(an.main),Cn()}),$t()},async downloadMany(v){let S=v.filter(ke=>!ke.dir);if(S.length<=1){S[0]&&await zt.download(S[0]);return}let T=new Date,U=s("penzor.download.folder",{date:`${T.getFullYear()}-${String(T.getMonth()+1).padStart(2,"0")}-${String(T.getDate()).padStart(2,"0")}`}),H=`${Date.now()}`,W=m,xe=V;for(let ke of S){if(V!==xe)break;await fr(ke,{subdir:U,batch:H},W)}},async trashMany(v){if(m.kind!=="app"||!v.length)return;if(v.length===1){await zt.trash(v[0]);return}let S=await n("/files/batch/delete",{method:"POST",body:{ids:v.map(U=>U.key)},projectSource:m.appId});if(!S.ok){d(S);return}let T=(S.data?.results??[]).filter(U=>U.success===!1).length;c(T?s("penzor.toast.batchPartial",{n:T}):s("penzor.toast.trashedN",{n:v.length})),xt(),await We()},async moveMany(v,S){if(m.kind!=="app"||!v.length)return;w={kind:"view"};let T=v.map(W=>W.key).filter(W=>W!==S.id),U=await n("/files/batch/move",{method:"POST",body:{ids:T,parentId:S.id},projectSource:m.appId});if(!U.ok){d(U),a();return}let H=(U.data?.results??[]).filter(W=>W.success===!1).length;c(H?s("penzor.toast.batchPartial",{n:H}):s("penzor.toast.movedN",{n:T.length,name:S.name})),xt(),await We()},setVisible(v){jt=v},picker:{},refresh:We,go(v){let S=Jc(v);if(!S)return;let T=ir(S)===ir(m);m=S,ye=!1,Kt=!1,T||(y="",_=[],xt(),B="",w={kind:"view"},A=!1),j=null,a(),e.openView?.(an.main),Cn(),$t()},openDir(v){!v.dir||m.kind==="exports"||m.kind==="trash"||(m.kind==="app"?_=[..._,{id:v.key,name:v.name}]:y=v.key,xt(),B="",w={kind:"view"},$t())},up(v){if(m.kind==="app")_=_.slice(0,v??Math.max(0,_.length-1));else{let S=y?y.split("/"):[];y=S.slice(0,v??Math.max(0,S.length-1)).join("/")}xt(),w={kind:"view"},$t()},select(v,S){let T=Nt()??[];if(v&&S?.range&&pt()&&K&&T.some(U=>U.key===K)){let U=T.findIndex(W=>W.key===K),H=T.findIndex(W=>W.key===v.key);L=new Set(T.slice(Math.min(U,H),Math.max(U,H)+1).map(W=>W.key)),k=v.key}else v&&S?.toggle&&pt()?(L.has(v.key)&&L.size>1?(L.delete(v.key),k===v.key&&(k=[...L].pop()??null)):(L.add(v.key),k=v.key),K=v.key):(k=v?.key??null,L=new Set(k?[k]:[]),K=k);ie=null,w={kind:"view"},j=null,v&&!Un(m)&&e.openView?.(an.info,{location:"right"}),wt(),a()},setSort(v){R=v,a()},setQuery(v){B=v,a()},openMenu(v,S,T){T&&!L.has(T.key)&&(k=T.key,L=new Set([T.key]),K=T.key,wt()),j={x:v,y:S,row:T},w={kind:"view"},a()},closeMenu(){j&&(j=null,a())},setSide(v){w=v,j=null,v.kind==="move"&&(I=null,zt.moveBrowse(v.at)),e.openView?.(an.info,{location:"right"}),a()},setConfirmEmpty(v){A=v,a()},async download(v){v.dir||(j=null,await fr(v))},async trash(v){if(m.kind!=="app")return;let S=Nt()??[],T=S.findIndex(W=>W.key===v.key),U=await n(`/files/${encodeURIComponent(v.key)}`,{method:"DELETE",projectSource:m.appId});if(!U.ok){d(U);return}c(s("penzor.toast.trashed",{name:v.name}));let H=S[T+1]??S[T-1];k=H&&H.key!==v.key?H.key:null,j=null,await We()},async restore(v){if(!g)return;let S=await n(`/trash/${encodeURIComponent(v.key)}/restore`,{method:"POST",body:{}});if(!S.ok){d(S);return}c(s("penzor.toast.restored",{name:v.name})),k=null,await We()},async purge(v){if(!g)return;let S=await n(`/trash/${encodeURIComponent(v.key)}`,{method:"DELETE"});if(w={kind:"view"},!S.ok){d(S),a();return}c(s("penzor.toast.purged",{name:v.name})),k=null,await We()},async emptyTrash(){if(!g)return;let v=await n("/trash?all=1",{method:"DELETE"});if(A=!1,!v.ok){d(v),a();return}let S=(v.data?.results??[]).filter(T=>T.success===!1).length;c(S?s("penzor.toast.emptyPartial",{n:S}):s("penzor.toast.emptied")),k=null,await We()},async rename(v,S){let T=S.trim();if(w={kind:"view"},!T||T===v.name){a();return}let U=m.kind==="exports"?await n(`/exports/${encodeURIComponent(v.key)}/rename`,{method:"PUT",body:{newFileName:T}}):m.kind==="app"?await n(`/files/${encodeURIComponent(v.key)}/rename`,{method:"PATCH",body:{name:T},projectSource:m.appId}):null;if(U){if(!U.ok){d(U),a();return}c(s("penzor.toast.renamed",{name:T})),await We()}},moveBrowse(v){if(m.kind!=="app")return;w={kind:"move",at:v},I=null,a();let S=v[v.length-1]?.id,T=m.appId;n(`/files${S?`?parentId=${encodeURIComponent(S)}`:""}`,{projectSource:T}).then(U=>{w.kind!=="move"||w.at!==v||(I=U.ok?U.data.filter(H=>H.fileType==="directory").map(H=>({id:H.id,name:H.name})):[],a())})},async moveTo(v,S){if(m.kind!=="app")return;if(w={kind:"view"},S.id===v.key){a();return}let T=await n(`/files/${encodeURIComponent(v.key)}/move`,{method:"PATCH",body:{parentId:S.id},projectSource:m.appId});if(!T.ok){d(T),a();return}c(s("penzor.toast.moved",{name:S.name})),k=null,await We()},async restoreVersion(v,S){let T=await n(`/files/${encodeURIComponent(v.key)}/restore/${S.versionNumber}`,{method:"POST",body:{}});if(!T.ok){d(T);return}c(s("penzor.toast.versionRestored",{n:S.versionNumber})),await We(),wt()},async deleteExport(v){if(!g)return;let S=await n(`/exports/${encodeURIComponent(v.key)}`,{method:"DELETE"});if(w={kind:"view"},!S.ok){d(S),a();return}c(s("penzor.toast.purged",{name:v.name})),k=null,await We()},signIn(){re().forsionLogin?.()},openSync(){e.app?.openSettings?.("sync/s-remote")},async focusVault(v){await e.app?.openSpace?.(on),g||await We(),zt.go(`sync:${v}`)},hasSync:()=>!!Ye,syncState:ur,syncBusy:v=>he.has(v),async setSync(v,S){if(!Ye||he.has(v))return;he.add(v),Gt.set(v,S),a();let T=await Wn(()=>Ye.set(v,S));he.delete(v),Gt.delete(v),!wn&&(T.ok||d(T.error||"sync"),jn())},async resolveNotes(v){if(!Ye||he.has("resolve"))return;he.add("resolve"),a();let S=await Wn(()=>Ye.resolveNotes(v));he.delete("resolve"),Xt=!1,!wn&&(S.ok||d(S.error||"sync"),jn())},confirmCloud:()=>Xt,setConfirmCloud(v){Xt=v,a()},enter(){ye=!0,dr()},dispose(){wn=!0,kn&&clearTimeout(kn),Wt&&clearTimeout(Wt),e.app?.setSpaceProgress?.(on,null),tt&&e.app?.setSpaceDot?.(on,!1),o.clear(),mt?.(),mr?.(),cn?.()}},mt=e.subscribeLocale?.(()=>a()),cn=Ye?.subscribe(jn);cr(),ft();let mr=re().onAuthChanged?.(()=>{++N,++X,++V,g=null,E=null,x=null,b=[],C.clear(),xt(),j=null,w={kind:"view"},A=!1,P=null,I=null,m={kind:"overview"},y="",_=[],B="",lr.clear(),He=[],Xt=!1,Gt.clear(),Kt=!1,ye=!0,a(),We()});return zt}var sd=e=>e.kind==="sync"?"penzor.side.readonlySync":e.kind==="ama"?"penzor.side.readonlyAma":null;function vg(e,t){for(var n in t)e[n]=t[n];return e}function ld(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var o in t)if(o!=="__source"&&e[o]!==t[o])return!0;return!1}function cd(e,t){this.props=e,this.context=t}(cd.prototype=new Tt).isPureReactComponent=!0,cd.prototype.shouldComponentUpdate=function(e,t){return ld(this.props,e)||ld(this.state,t)};var dd=ae.__b;ae.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),dd&&dd(e)};var rx=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var yg=ae.__e;ae.__e=function(e,t,n,o){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k||[]),a.__c(e,t)}yg(e,t,n,o)};var ud=ae.unmount;function bd(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(o){typeof o.__c=="function"&&o.__c()}),e.__c.__H=null),(e=vg({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(o){return bd(o,t,n)})),e}function vd(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(o){return vd(o,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function yi(){this.__u=0,this.o=null,this.__b=null}function yd(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function $o(){this.i=null,this.l=null}ae.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),ud&&ud(e)},(yi.prototype=new Tt).__c=function(e,t){var n=t.__c,o=this;o.o==null&&(o.o=[]),o.o.push(n);var a=yd(o.__v),i=!1,s=function(){i||o.__z||(i=!0,n.__R=null,a?a(c):c())};n.__R=s;var l=n.__P;n.__P=null;var c=function(){if(!--o.__u){if(o.state.__a){var d=o.state.__a;o.__v.__k[0]=vd(d,d.__c.__P,d.__c.__O)}var f;for(o.setState({__a:o.__b=null});f=o.o.pop();)f.__P=l,f.forceUpdate()}};o.__u++||32&t.__u||o.setState({__a:o.__b=o.__v.__k[0]}),e.then(s,s)},yi.prototype.componentWillUnmount=function(){this.o=[]},yi.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=bd(this.__b,n,o.__O=o.__P)}this.__b=null}var a=t.__a&&Rn(F,null,e.fallback);return a&&(a.__u&=-33),[Rn(F,null,t.__a?null:e.children),a]};var pd=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function xg(e){return this.getChildContext=function(){return e.context},e.children}function kg(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){Be(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var o=t.__v;o!==null&&!o.__m&&o.__!==null;)o=o.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:o.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(a,i){this.childNodes.push(a),t.h.insertBefore(a,i)},removeChild:function(a){this.childNodes.splice(this.childNodes.indexOf(a)>>>1,1),t.h.removeChild(a)}}}Be(Rn(xg,{context:t.context},e.__v),t.v)}function xd(e,t){var n=Rn(kg,{__v:e,h:t});return n.containerInfo=t,n}($o.prototype=new Tt).__a=function(e){var t=this,n=yd(t.__v),o=t.l.get(e);return o[0]++,function(a){var i=function(){t.props.revealOrder?(o.push(a),pd(t,e,o)):a()};n?n(i):i()}},$o.prototype.render=function(e){this.i=null,this.l=new Map;var t=Tr(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},$o.prototype.componentDidUpdate=$o.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){pd(e,n,t)})};var wg=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,zg=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,_g=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Sg=/[A-Z0-9]/g,Cg=typeof document<"u",Tg=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};Tt.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Tt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var fd=ae.event;ae.event=function(e){return fd&&(e=fd(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var kd,Ag={configurable:!0,get:function(){return this.class}},md=ae.vnode;ae.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,o=t.type,a={},i=o.indexOf("-")==-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||Cg&&s==="children"&&o==="noscript"||s==="class"||s==="className")){var c=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?s="ondblclick":c!=="onchange"||o!=="input"&&o!=="textarea"||Tg(n.type)?c==="onfocus"?s="onfocusin":c==="onblur"?s="onfocusout":_g.test(s)&&(s=c):c=s="oninput":i&&zg.test(s)?s=s.replace(Sg,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&a[s=c]&&(s="oninputCapture"),a[s]=l}}o=="select"&&(a.multiple&&Array.isArray(a.value)&&(a.value=Tr(n.children).forEach(function(d){d.props.selected=a.value.indexOf(d.props.value)!=-1})),a.defaultValue!=null&&(a.value=Tr(n.children).forEach(function(d){d.props.selected=a.multiple?a.defaultValue.indexOf(d.props.value)!=-1:a.defaultValue==d.props.value}))),n.class&&!n.className?(a.class=n.class,Object.defineProperty(a,"className",Ag)):n.className&&(a.class=a.className=n.className),t.props=a})(e),e.$$typeof=wg,md&&md(e)};var gd=ae.__r;ae.__r=function(e){gd&&gd(e),kd=e.__c};var hd=ae.diffed;ae.diffed=function(e){hd&&hd(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value),kd=null};var wd=`
|
|
1110
|
+
.pz, .pz-side { color: var(--text); font-family: var(--font-ui); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1111
|
+
.pz { height: 100%; min-height: 0; display: flex; flex-direction: column; }
|
|
1112
|
+
.pz-side { height: 100%; min-height: 0; overflow: auto; box-sizing: border-box; padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
|
|
1113
|
+
.pz button, .pz-side button { font: inherit; color: inherit; background: none; border: var(--border-width) solid transparent; padding: 0; cursor: pointer; }
|
|
1114
|
+
.pz button:disabled, .pz-side button:disabled { opacity: .5; cursor: default; }
|
|
1115
|
+
.pz svg, .pz-side svg, .pz-menu svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
|
|
1116
|
+
.pz-top { height: 40px; flex: none; display: flex; align-items: center; gap: 4px; padding: 0 12px 0 20px; }
|
|
1117
|
+
.pz-crumb { display: flex; align-items: center; gap: 6px; font-size: var(--ui-font-meta); color: var(--text-muted); min-width: 0; white-space: nowrap; overflow: hidden; }
|
|
1118
|
+
.pz-crumb i { font-style: normal; color: var(--text-faint); }
|
|
1119
|
+
.pz-crumb b { font-weight: 500; color: var(--text); overflow: hidden; text-overflow: ellipsis; }
|
|
1120
|
+
.pz-crumb button:hover { color: var(--text); }
|
|
1121
|
+
.pz-sp { flex: 1; }
|
|
1122
|
+
.pz .pz-ibtn { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); color: var(--text-muted); }
|
|
1123
|
+
.pz .pz-ibtn:hover, .pz .pz-chip:hover { background: var(--overlay-light); color: var(--text); }
|
|
1124
|
+
.pz .pz-chip { height: 26px; padding: 0 10px; border-radius: var(--radius-pill); border-color: var(--border); display: inline-flex; align-items: center; gap: 5px; font-size: var(--ui-font-meta); color: var(--text-muted); }
|
|
1125
|
+
.pz-chip svg { width: 12px; height: 12px; }
|
|
1126
|
+
.pz-find { height: 26px; width: 200px; box-sizing: border-box; padding: 0 10px; border: var(--border-width) solid var(--border); border-radius: var(--radius-pill); background: transparent; color: var(--text); font: inherit; font-size: var(--ui-font-meta); outline: none; }
|
|
1127
|
+
.pz-find:focus { border-color: var(--accent-ink); }
|
|
1128
|
+
.pz-scroll { flex: 1; min-height: 0; overflow: auto; }
|
|
1129
|
+
.pz-col { width: min(820px, calc(100% - 72px)); margin: 0 auto; padding: 14px 0 80px; }
|
|
1130
|
+
.pz-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
|
|
1131
|
+
.pz-h1 { margin: 0; font-size: var(--ui-font-display); line-height: var(--ui-line-display); font-weight: 600; letter-spacing: -.005em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1132
|
+
.pz-badge { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 9px; border-radius: var(--radius-pill); background: var(--overlay-light); color: var(--text-muted); font-size: var(--ui-font-caption); white-space: nowrap; }
|
|
1133
|
+
.pz-badge svg { width: 12px; height: 12px; }
|
|
1134
|
+
.pz-meta { display: flex; flex-wrap: wrap; gap: 4px 18px; margin: 6px 0 0; color: var(--text-muted); font-size: var(--ui-font-meta); }
|
|
1135
|
+
.pz-meter { display: flex; align-items: center; gap: 10px; margin: 14px 0 4px; font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; }
|
|
1136
|
+
.pz-meter .pz-bar { flex: 0 0 180px; }
|
|
1137
|
+
.pz-bar { height: 6px; overflow: hidden; border-radius: var(--radius-pill); background: var(--overlay-medium); }
|
|
1138
|
+
.pz-bar > span { display: block; height: 100%; border-radius: inherit; background: var(--accent-ink); }
|
|
1139
|
+
.pz-bar.is-low > span { background: var(--warning); }
|
|
1140
|
+
.pz-confirm { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 14px 0 0; padding: 10px 12px; border-radius: var(--radius-md); background: var(--danger-light); color: var(--text); font-size: var(--ui-font-meta); }
|
|
1141
|
+
.pz-confirm span { flex: 1 1 200px; }
|
|
1142
|
+
.pz-table { width: 100%; border-collapse: collapse; margin-top: 16px; font-size: var(--db-text-size, var(--ui-font-body)); }
|
|
1143
|
+
.pz-table th { height: 32px; padding: 0 10px; text-align: left; font-weight: 400; font-size: var(--db-meta-size, var(--ui-font-meta)); color: var(--text-faint); border-bottom: var(--border-width) solid var(--border); white-space: nowrap; }
|
|
1144
|
+
.pz-table td { height: var(--db-cell-height, 34px); padding: 0 10px; border-bottom: var(--border-width) solid var(--border); white-space: nowrap; color: var(--text-muted); }
|
|
1145
|
+
.pz-table td.n { color: var(--text); width: 100%; max-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
1146
|
+
.pz-table td.n > span { display: inline-flex; align-items: center; gap: 9px; max-width: 100%; }
|
|
1147
|
+
.pz-table td.n > span > b { font-weight: inherit; overflow: hidden; text-overflow: ellipsis; }
|
|
1148
|
+
.pz-table td.n svg { color: var(--text-faint); }
|
|
1149
|
+
.pz-table .r { text-align: right; font-variant-numeric: tabular-nums; }
|
|
1150
|
+
.pz-table tbody tr { cursor: default; }
|
|
1151
|
+
.pz-table tbody tr:hover td { background: var(--overlay-light); }
|
|
1152
|
+
.pz-table tbody tr.sel td { background: var(--sel-fill); }
|
|
1153
|
+
.pz-table .dim { color: var(--text-faint); }
|
|
1154
|
+
.pz-table .cnt { color: var(--text-faint); margin-left: 6px; font-size: var(--db-meta-size, var(--ui-font-meta)); font-style: normal; }
|
|
1155
|
+
.pz-note { margin: 22px 0 0; color: var(--text-faint); font-size: var(--ui-font-meta); text-align: center; }
|
|
1156
|
+
.pz-ov-kick { margin-top: 30px; font-size: var(--ui-font-meta); color: var(--text-faint); }
|
|
1157
|
+
.pz-total { display: flex; align-items: baseline; gap: 12px; margin: 2px 0 14px; flex-wrap: wrap; }
|
|
1158
|
+
.pz-total b { font-size: calc(var(--ui-font-display) * 1.5); line-height: calc(var(--ui-line-display) * 1.36); font-weight: 600; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
|
|
1159
|
+
.pz-total span { color: var(--text-muted); font-size: var(--ui-font-meta); }
|
|
1160
|
+
.pz-seg { display: flex; gap: 2px; height: 8px; border-radius: var(--radius-pill); overflow: hidden; background: var(--overlay-medium); }
|
|
1161
|
+
.pz-seg i, .pz-legend i { background: var(--accent-ink); }
|
|
1162
|
+
.pz-legend { display: flex; flex-wrap: wrap; gap: 4px 20px; margin-top: 10px; font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; }
|
|
1163
|
+
.pz-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 7px; }
|
|
1164
|
+
.pz-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 22px; }
|
|
1165
|
+
@media (max-width: 720px) { .pz-cards { grid-template-columns: minmax(0, 1fr); } .pz-col { width: calc(100% - 32px); } }
|
|
1166
|
+
.pz-card { text-align: left; background: var(--bg-card); border: var(--border-width) solid transparent; border-radius: var(--radius-md); box-shadow: var(--card-shadow); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; min-height: 132px; }
|
|
1167
|
+
.pz button.pz-card { border: var(--border-width) solid transparent; }
|
|
1168
|
+
.pz button.pz-card:hover .go { color: var(--text); }
|
|
1169
|
+
.pz button.pz-card.warn { border-color: color-mix(in srgb, var(--warning) 50%, transparent); }
|
|
1170
|
+
.pz-card-h { display: flex; align-items: center; gap: 9px; font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; width: 100%; }
|
|
1171
|
+
.pz-tile { width: 26px; height: 26px; border-radius: var(--radius-sm); background: var(--overlay-light); display: inline-flex; align-items: center; justify-content: center; color: var(--text-muted); flex: none; }
|
|
1172
|
+
.pz-card-h .go { margin-left: auto; color: var(--text-faint); }
|
|
1173
|
+
.pz-big { font-size: calc(var(--ui-font-display) - 2px); line-height: calc(var(--ui-line-display) - 4px); font-weight: 600; font-variant-numeric: tabular-nums; }
|
|
1174
|
+
.pz-big small { font-weight: 400; font-size: var(--ui-font-meta); color: var(--text-faint); margin-left: 5px; }
|
|
1175
|
+
.pz-sub { color: var(--text-muted); font-size: var(--ui-font-meta); }
|
|
1176
|
+
.pz-foot { margin-top: auto; color: var(--text-faint); font-size: var(--ui-font-meta); }
|
|
1177
|
+
.pz-foot.warn { color: var(--warning); }
|
|
1178
|
+
.pz-h3 { margin: 30px 0 4px; font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; }
|
|
1179
|
+
.pz-rows .row { display: grid; grid-template-columns: 16px minmax(0, 1fr) 140px 70px; align-items: center; gap: 12px; height: 38px; border-bottom: var(--border-width) solid var(--border); width: 100%; text-align: left; }
|
|
1180
|
+
.pz-rows .row:hover { background: var(--overlay-subtle, var(--overlay-light)); }
|
|
1181
|
+
.pz-rows .row svg { color: var(--text-faint); }
|
|
1182
|
+
.pz-rows .row .t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1183
|
+
.pz-rows .row .t em { font-style: normal; color: var(--text-faint); font-size: var(--ui-font-meta); margin-left: 10px; }
|
|
1184
|
+
.pz-rows .row .s { text-align: right; color: var(--text-muted); font-variant-numeric: tabular-nums; }
|
|
1185
|
+
.pz-rows .pz-bar { height: 4px; }
|
|
1186
|
+
.pz-rows .pz-bar > span { background: var(--text-faint); }
|
|
1187
|
+
.pz-thumb { height: 150px; border-radius: var(--radius-md); background: var(--overlay-light); display: flex; align-items: center; justify-content: center; flex: none; color: var(--text-faint); }
|
|
1188
|
+
.pz-thumb svg { width: 40px; height: 40px; stroke-width: 1.2; }
|
|
1189
|
+
.pz-fname { font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; word-break: break-all; }
|
|
1190
|
+
.pz-fsub { color: var(--text-faint); font-size: var(--ui-font-meta); margin-top: -9px; }
|
|
1191
|
+
.pz-acts { display: flex; gap: 6px; flex-wrap: wrap; }
|
|
1192
|
+
.pz-side .pz-btn, .pz .pz-btn { height: var(--ui-control-height, 28px); padding: 0 11px; border-radius: var(--radius-sm); border-color: var(--border); display: inline-flex; align-items: center; gap: 6px; font-size: var(--ui-font-body); color: var(--text); white-space: nowrap; }
|
|
1193
|
+
.pz-side .pz-btn:hover, .pz .pz-btn:hover { background: var(--overlay-light); }
|
|
1194
|
+
.pz-side .pz-btn.pri, .pz .pz-btn.pri { background: var(--action-fill, var(--accent)); border-color: transparent; color: var(--on-accent); }
|
|
1195
|
+
.pz-side .pz-btn.danger, .pz .pz-btn.danger { color: var(--danger); }
|
|
1196
|
+
.pz-side .pz-btn.danger.solid, .pz .pz-btn.danger.solid { background: var(--danger); border-color: transparent; color: var(--on-accent, #fff); }
|
|
1197
|
+
.pz-dl { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 7px 10px; margin: 2px 0 0; font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1198
|
+
.pz-dl dt { color: var(--text-faint); } .pz-dl dd { margin: 0; color: var(--text-muted); overflow-wrap: anywhere; }
|
|
1199
|
+
.pz-tip { display: flex; gap: 8px; padding: 10px 12px; border-radius: var(--radius-md); background: var(--overlay-light); color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1200
|
+
.pz-tip svg { margin-top: 2px; color: var(--text-faint); }
|
|
1201
|
+
.pz-sh { font-size: var(--ui-font-meta); font-weight: 500; color: var(--text-muted); margin-top: 6px; }
|
|
1202
|
+
.pz-vers { display: flex; flex-direction: column; gap: 2px; }
|
|
1203
|
+
.pz-vers > div { display: flex; align-items: center; gap: 8px; min-height: 26px; font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; }
|
|
1204
|
+
.pz-vers > div > span { flex: 1; }
|
|
1205
|
+
.pz-side .pz-link { color: var(--accent-ink); font-size: var(--ui-font-meta); }
|
|
1206
|
+
.pz-side .pz-link:hover { text-decoration: underline; text-underline-offset: 2px; }
|
|
1207
|
+
.pz-input { width: 100%; box-sizing: border-box; height: var(--ui-control-height, 28px); padding: 0 8px; border: var(--border-width) solid var(--accent-ink); border-radius: var(--radius-sm); background: transparent; color: var(--text); font: inherit; outline: none; }
|
|
1208
|
+
.pz-pick { display: flex; flex-direction: column; gap: 2px; }
|
|
1209
|
+
.pz-pick button { display: flex; align-items: center; gap: 8px; height: 28px; padding: 0 8px; border-radius: var(--radius-sm); text-align: left; color: var(--text); }
|
|
1210
|
+
.pz-pick button:hover { background: var(--overlay-light); }
|
|
1211
|
+
.pz-empty { margin: 18vh auto 0; width: min(420px, calc(100% - 32px)); text-align: center; color: var(--text-muted); }
|
|
1212
|
+
.pz-empty .ic { width: 46px; height: 46px; border-radius: var(--radius-md); background: var(--overlay-light); display: inline-flex; align-items: center; justify-content: center; color: var(--text-muted); }
|
|
1213
|
+
.pz-empty .ic svg { width: 21px; height: 21px; }
|
|
1214
|
+
.pz-empty h2 { font-size: var(--ui-font-title); line-height: var(--ui-line-title); font-weight: 600; color: var(--text); margin: 14px 0 6px; }
|
|
1215
|
+
.pz-empty p { margin: 0 0 4px; }
|
|
1216
|
+
.pz-empty ul { text-align: left; margin: 14px auto 0; padding: 12px 16px 12px 30px; background: var(--overlay-light); border-radius: var(--radius-md); line-height: var(--ui-line-body); font-size: var(--ui-font-meta); }
|
|
1217
|
+
.pz-empty .pz-btn { margin-top: 18px; }
|
|
1218
|
+
.pz-side-none { margin: auto; color: var(--text-faint); font-size: var(--ui-font-meta); }
|
|
1219
|
+
/* \u2500\u2500 \u7F51\u76D8(0.10 \u65B9\u6848 D)\u2500\u2500 \u62D6\u5165\u63D0\u793A\u7167 DESIGN \xA76:\u6574\u5757\u6DE1\u67D3 + \u9876\u4E0A\u4E00\u6761\u63D0\u793A,\u4E0D\u753B\u865A\u7EBF\u6846;\u63A5\u4E0D\u4F4F\u7684\u5730\u65B9\u4E0D\u4EAE\u3002
|
|
1220
|
+
\u989C\u8272\u6309 DESIGN \xA71 \u7684\u89D2\u8272:\u6DE1\u67D3 = \u6C1B\u56F4 --accent-wash;\u843D\u70B9 / \u8F93\u5165\u6846 = \u6307\u793A --signal-line;\u8FDB\u5EA6\u3001\u52FE\u3001\u8FDB\u5EA6\u73AF = --signal-mark;\u60AC\u505C\u4E2D\u6027 */
|
|
1221
|
+
.pz { position: relative; }
|
|
1222
|
+
.pz.pz-drop { background: var(--accent-wash, color-mix(in srgb, var(--accent-ink) 5%, transparent)); }
|
|
1223
|
+
.pz-dropbar { position: absolute; top: 50px; left: 0; right: 0; z-index: 6; display: flex; justify-content: center; pointer-events: none; }
|
|
1224
|
+
.pz-dropbar span { display: inline-flex; align-items: center; gap: 7px; height: 28px; padding: 0 12px; border-radius: var(--radius-pill); background: var(--bg-card); border: var(--border-width) solid var(--signal-line, var(--border)); color: var(--text); font-size: var(--ui-font-meta); box-shadow: var(--card-shadow); }
|
|
1225
|
+
.pz-dropbar svg { color: var(--signal-mark, var(--accent-ink)); }
|
|
1226
|
+
.pz-table tbody tr.drop td { background: var(--accent-tint, var(--sel-fill)); box-shadow: inset 0 1px 0 var(--signal-line, var(--border)), inset 0 -1px 0 var(--signal-line, var(--border)); }
|
|
1227
|
+
.pz-scroll:focus { outline: none; }
|
|
1228
|
+
.pz-split { display: inline-flex; margin-right: 4px; }
|
|
1229
|
+
.pz .pz-split .pz-btn { height: 28px; }
|
|
1230
|
+
.pz .pz-split .pz-btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; }
|
|
1231
|
+
.pz .pz-split .pz-btn.more { padding: 0 6px; border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: 1px; }
|
|
1232
|
+
.pz .pz-split .pz-btn:hover { background: var(--action-fill-hover, var(--action-fill, var(--accent))); }
|
|
1233
|
+
.pz-selbar { font-size: var(--ui-font-meta); font-weight: 500; color: var(--text); margin-right: 8px; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
1234
|
+
.pz-top .pz-btn { height: 28px; }
|
|
1235
|
+
.pz-inl { display: inline-flex; align-items: center; gap: 8px; color: var(--text-faint); font-size: var(--db-meta-size, var(--ui-font-meta)); font-variant-numeric: tabular-nums; }
|
|
1236
|
+
.pz-inl .pz-bar { width: 72px; height: 4px; }
|
|
1237
|
+
.pz-inl .pz-bar > span, .pz-txall .pz-bar > span, .pz-txrow2 .pz-bar > span { background: var(--signal-mark, var(--accent-ink)); }
|
|
1238
|
+
.pz-table tr.pz-txrow td.n b { color: var(--text-muted); }
|
|
1239
|
+
.pz-table tr.pz-txrow.queued td.n b, .pz-table tr.pz-txrow.queued td.n svg, .pz-table tr.pz-txrow.paused td.n b { color: var(--text-faint); }
|
|
1240
|
+
.pz-newname { height: 26px; width: min(260px, 100%); box-sizing: border-box; padding: 0 8px; border-radius: var(--radius-sm); border: var(--border-width) solid var(--signal-line, var(--accent-ink)); background: var(--bg); color: var(--text); font: inherit; outline: none; }
|
|
1241
|
+
.pz .pz-ib, .pz-side .pz-ib { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-sm); color: var(--text-faint); flex: none; }
|
|
1242
|
+
.pz .pz-ib:hover { background: var(--overlay-light); color: var(--text); }
|
|
1243
|
+
.pz .pz-link { color: var(--accent-ink); font-size: var(--ui-font-meta); padding: 0 4px; white-space: nowrap; }
|
|
1244
|
+
.pz .pz-link:hover { text-decoration: underline; text-underline-offset: 2px; }
|
|
1245
|
+
/* \u6D6E\u52A8\u5361:\u5BBF\u4E3B .ui-popover \u7684\u5E95\u3001\u63CF\u8FB9\u3001\u9634\u5F71;\u9489\u5728\u4E3B\u533A\u53F3\u4E0B\u89D2(\u4E0D\u662F\u7A97\u53E3\u53F3\u4E0B\u89D2),\u4E0D\u6321\u5DE6\u680F\u548C\u53F3\u680F */
|
|
1246
|
+
.pz .pz-txcard { position: absolute; right: 18px; bottom: 18px; width: min(340px, calc(100% - 36px)); z-index: 5; display: flex; flex-direction: column; max-height: min(460px, calc(100% - 80px)); }
|
|
1247
|
+
.pz-txhead { display: flex; align-items: center; gap: 8px; padding: 10px 10px 6px 12px; min-width: 0; }
|
|
1248
|
+
.pz-txhead b { font-weight: 600; font-size: var(--ui-font-body); white-space: nowrap; }
|
|
1249
|
+
.pz-txhead span { color: var(--text-faint); font-size: var(--ui-font-meta); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
1250
|
+
.pz-txhead .sp { flex: 1; }
|
|
1251
|
+
.pz-txall { padding: 0 12px 6px; }
|
|
1252
|
+
.pz-txall .pz-bar, .pz-txrow2 .pz-bar { height: 4px; }
|
|
1253
|
+
.pz-txlist { overflow: auto; min-height: 0; padding: 0 4px; }
|
|
1254
|
+
.pz-txrow2 { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 4px 10px; align-items: center; padding: 8px; border-radius: var(--radius-sm); }
|
|
1255
|
+
.pz-txrow2:hover { background: var(--overlay-light); }
|
|
1256
|
+
.pz-txrow2 > svg { color: var(--text-faint); }
|
|
1257
|
+
.pz-txrow2.is-done > svg { color: var(--signal-mark, var(--accent-ink)); }
|
|
1258
|
+
.pz-txrow2.is-fail > svg { color: var(--danger); }
|
|
1259
|
+
.pz-txrow2 .nm { font-size: var(--ui-font-body); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1260
|
+
.pz-txrow2 .acts { display: flex; align-items: center; gap: 2px; }
|
|
1261
|
+
.pz-txrow2 .pz-bar { grid-column: 2 / 4; }
|
|
1262
|
+
.pz-txrow2 .sub { grid-column: 2 / 4; display: flex; flex-wrap: wrap; gap: 2px 10px; color: var(--text-faint); font-size: var(--ui-font-meta); font-variant-numeric: tabular-nums; }
|
|
1263
|
+
.pz-txrow2 .sub .err { color: var(--danger); }
|
|
1264
|
+
.pz-txfoot { display: flex; gap: 14px; padding: 8px 12px 10px; border-top: var(--border-width) solid var(--border); margin-top: 4px; }
|
|
1265
|
+
.pz .pz-txfoot button { color: var(--text-muted); font-size: var(--ui-font-meta); }
|
|
1266
|
+
.pz .pz-txfoot button:hover { color: var(--text); }
|
|
1267
|
+
.pz .pz-txpill { position: absolute; right: 18px; bottom: 18px; z-index: 5; display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px 0 10px; border-radius: var(--radius-pill); font-size: var(--ui-font-meta); color: var(--text-muted); font-variant-numeric: tabular-nums; border: var(--border-width) solid var(--border); }
|
|
1268
|
+
.pz .pz-txpill:hover { color: var(--text); }
|
|
1269
|
+
/* \u2500\u2500 \u540C\u6B65\u9875(2026-10-20 \u4E91\u540C\u6B65\u5F00\u542F\u65B9\u6848 A)\u2500\u2500 \u4E00\u5F20\u5361\u91CC\u4E09\u884C\u5F00\u5173;\u72B6\u6001\u5706\u70B9 = \u6307\u793A\u8272 --signal-mark(\u5F00\u5173\u3001\u8FDB\u5EA6\u540C\u4E00\u8272),
|
|
1270
|
+
\u8D85\u989D / \u5931\u8D25 = --warning;\u8981\u4F60\u51B3\u5B9A\u7684\u5361\u7528\u63CF\u8FB9\u63D0\u9192(\u540C\u6982\u89C8\u5FEB\u6EE1\u7684\u5361)\u3002\u5F00\u5173\u7528\u5BBF\u4E3B .settings-switch \u539F\u6837 */
|
|
1271
|
+
.pz-sync-head { margin-top: 2px; }
|
|
1272
|
+
.pz-sync-card { margin-top: 18px; overflow: hidden; background: var(--bg-card); border-radius: var(--radius-md); box-shadow: var(--card-shadow); }
|
|
1273
|
+
.pz-sync-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding-right: 16px; }
|
|
1274
|
+
.pz-sync-row + .pz-sync-row, .pz-sync-sub + .pz-sync-row { border-top: var(--border-width) solid var(--border); }
|
|
1275
|
+
.pz-sync-row.is-click:hover, .pz-sync-row.is-open { background: var(--overlay-subtle, var(--overlay-light)); }
|
|
1276
|
+
.pz .pz-sync-main { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 12px; width: 100%; min-width: 0; padding: 13px 0 13px 16px; text-align: left; }
|
|
1277
|
+
.pz-sync-txt { min-width: 0; }
|
|
1278
|
+
.pz-sync-txt b { display: block; font-weight: 600; font-size: var(--ui-font-body); line-height: var(--ui-line-body); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1279
|
+
.pz-sync-txt small { display: block; margin-top: 2px; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1280
|
+
.pz-sync-state { display: inline-flex; align-items: center; gap: 6px; color: var(--text-muted); font-size: var(--ui-font-meta); white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
1281
|
+
.pz-sync-state i { width: 6px; height: 6px; border-radius: 50%; background: var(--signal-mark, var(--accent-ink)); flex: none; }
|
|
1282
|
+
.pz-sync-state.is-warn { color: var(--warning); }
|
|
1283
|
+
.pz-sync-state.is-warn i { background: var(--warning); }
|
|
1284
|
+
.pz-sync-state.is-wait { color: var(--text); }
|
|
1285
|
+
/* .pz button \u628A\u6309\u94AE\u7684\u5E95\u548C\u63CF\u8FB9\u6E05\u6210\u900F\u660E:\u300C\u5173\u300D\u7684\u5F00\u5173\u4F1A\u53EA\u5269\u4E00\u4E2A\u65CB\u94AE,\u8FD9\u91CC\u8FD8\u7ED9\u5B83\u8F68\u9053(\u300C\u5F00\u300D\u7531\u5BBF\u4E3B .settings-switch.active \u7BA1) */
|
|
1286
|
+
.pz .settings-switch:not(.active) { background: var(--overlay-medium); border-color: var(--overlay-medium); }
|
|
1287
|
+
.pz-sync-sub { padding: 2px 16px 10px 54px; background: var(--overlay-subtle, var(--overlay-light)); }
|
|
1288
|
+
.pz-sync-sub .kv { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 32px; color: var(--text-muted); font-size: var(--ui-font-meta); }
|
|
1289
|
+
.pz-sync-sub .kv + .kv { border-top: var(--border-width) solid var(--border); }
|
|
1290
|
+
.pz-sync-sub .kv > span:nth-child(2) { color: var(--text); overflow-wrap: anywhere; }
|
|
1291
|
+
.pz-sync-ask { margin-top: 18px; padding: 16px 18px; border-radius: var(--radius-md); background: var(--bg-card); box-shadow: var(--card-shadow); border: var(--border-width) solid color-mix(in srgb, var(--signal-mark, var(--accent-ink)) 45%, transparent); }
|
|
1292
|
+
.pz-sync-ask.is-warn { border-color: color-mix(in srgb, var(--warning) 55%, transparent); }
|
|
1293
|
+
.pz-sync-ask h4 { margin: 0 0 4px; font-size: var(--ui-font-heading); line-height: var(--ui-line-heading); font-weight: 600; }
|
|
1294
|
+
.pz-sync-ask p { margin: 0; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1295
|
+
.pz-sync-ask .pz-acts, .pz-sync-ask .pz-confirm { margin-top: 12px; }
|
|
1296
|
+
.pz-sync-ask .pz-sync-explain { margin-top: 10px; }
|
|
1297
|
+
.pz-sync-dev .row { grid-template-columns: 16px minmax(0, 1fr) auto; }
|
|
1298
|
+
.pz-sync-dev .row:hover { background: none; }
|
|
1299
|
+
.pz-sync-none { margin: 8px 0 0; color: var(--text-faint); font-size: var(--ui-font-meta); }
|
|
1300
|
+
@media (max-width: 720px) { .pz-sync-sub { padding-left: 16px; } .pz .pz-sync-main { grid-template-columns: 26px minmax(0, 1fr); } .pz-sync-main .pz-sync-state { grid-column: 2; } }
|
|
1301
|
+
.pz-ring { width: 18px; height: 18px; flex: none; border-radius: 50%; background: conic-gradient(var(--signal-mark, var(--accent-ink)) calc(var(--p) * 1%), var(--overlay-medium) 0); -webkit-mask: radial-gradient(circle, transparent 5.5px, #000 6px); mask: radial-gradient(circle, transparent 5.5px, #000 6px); }
|
|
1302
|
+
`;function sn(e,t,n){return e.fetch?e.fetch(t,n):fetch(t,{...n,headers:{Authorization:`Bearer ${e.token}`,...n.headers}})}async function sr(e,t,n,o,a=6e4){let i=await(e.fetch??fetch)(e.base+n,{method:t,headers:{"Content-Type":"application/json","X-Project-Source":"connect",...e.token&&!e.fetch?{Authorization:`Bearer ${e.token}`}:{}},body:o===void 0?void 0:JSON.stringify(o),signal:AbortSignal.timeout(a)}),s=await i.json().catch(()=>({}));return{status:i.status,json:s}}function ln(e,t){if(typeof t!="string"||!t.startsWith("/"))return null;let n=String(e||"").replace(/\/+$/,"").replace(/\/api$/,"");if(!n)return null;let o,a;try{o=new URL(n),a=new URL(n+"/api"+t)}catch{return null}return o.protocol!=="http:"&&o.protocol!=="https:"||a.origin!==o.origin||!a.pathname.startsWith("/api/")?null:a.toString()}var zd=["bytes","signed","text"],_d=/^[A-Za-z0-9_-]{1,64}$/,Sd=/^[a-z0-9][a-z0-9-]{0,63}$/;function Cd(e){if(typeof e!="string")return null;let n=(e.split(/[\\/]/).pop()??"").replace(/[\u0000-\u001f<>:"|?*]/g,"").trim().slice(0,200);return n&&n!=="."&&n!==".."?n:null}var Eg={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".heic":"image/heic",".svg":"image/svg+xml",".pdf":"application/pdf",".txt":"text/plain",".md":"text/markdown",".json":"application/json",".csv":"text/csv",".mp4":"video/mp4",".mov":"video/quicktime",".mp3":"audio/mpeg",".zip":"application/zip",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};function xi(e){let t=e.lastIndexOf(".");return Eg[t>0?e.slice(t).toLowerCase():""]??"application/octet-stream"}function Td(e,t,n,o){let a=n.replace(/[^\x20-\x7e]/g,"_").replace(/["\\]/g,"_")||"file",i=encodeURIComponent(n).replace(/['()*]/g,l=>`%${l.charCodeAt(0).toString(16).toUpperCase()}`),s="";for(let[l,c]of Object.entries(t))s+=`--${e}\r
|
|
1303
|
+
Content-Disposition: form-data; name="${l}"\r
|
|
1304
|
+
\r
|
|
1305
|
+
${c}\r
|
|
1306
|
+
`;return s+=`--${e}\r
|
|
1307
|
+
Content-Disposition: form-data; name="file"; filename="${a}"; filename*=UTF-8''${i}\r
|
|
1308
|
+
Content-Type: ${o}\r
|
|
1309
|
+
\r
|
|
1310
|
+
`,{head:s,tail:`\r
|
|
1311
|
+
--${e}--\r
|
|
1312
|
+
`}}function Ad(e,t){let n=e.filter(([l])=>t-l<=3e3);if(n.length<2)return 0;let[o,a]=n[0],[i,s]=n[n.length-1];return i>o?Math.max(0,(s-a)/(i-o)*1e3):0}function Ed(e,t){let n=t??{};return e===401?"not_signed_in":n.code==="FILE_TOO_LARGE"||e===413?"too_large":typeof n.detail=="string"&&/quota exceeded/i.test(n.detail)?"quota":n.code==="STORAGE_NOT_CONFIGURED"?"storage_unavailable":`http_${e}`}var Pg=3,Mg=200,zi=32,Ig=e=>typeof e=="string"&&!!e&&e!=="."&&e!==".."&&!/[\\/]/.test(e);function Pd(e,t){return t?e.flatMap(n=>{let o=(n.webkitRelativePath||n.name).split("/");return o.slice(1).some(a=>a.startsWith("."))||o.length-1>zi?[]:[{file:n,relDir:o.slice(0,-1)}]}):e.map(n=>({file:n,relDir:[]}))}function Md(e){let t=Array.from(e.items??[]).filter(a=>a.kind==="file").map(a=>({entry:a.webkitGetAsEntry?.()??null,file:a.getAsFile()})),n=[],o=async(a,i)=>{if(i.length>zi)return!0;if(a.isFile){let c=await new Promise(d=>a.file(d,()=>d(null)));return c&&n.push({file:c,relDir:i}),n.length<=2e3}if(!a.isDirectory)return!0;let s=a.createReader(),l=[];for(;;){let c=await new Promise(d=>s.readEntries(d,()=>d([])));if(!c.length)break;l.push(...c)}l.sort((c,d)=>c.name<d.name?-1:c.name>d.name?1:0);for(let c of l)if(!c.name.startsWith(".")&&!await o(c,[...i,a.name]))return!1;return!0};return(async()=>{for(let a of t)if(a.entry){if(!await o(a.entry,[]))break}else a.file&&n.push({file:a.file,relDir:[]});return n})()}function Id(e,t=window){let n=[],o=new Map,a=!1,i=()=>Date.now(),s=()=>Array.from(t.crypto.getRandomValues(new Uint8Array(16)),w=>w.toString(16).padStart(2,"0")).join("");async function l(){let w=await e.getCloud();if(!w.token)throw new Error("not_signed_in");return w}async function c(w,A={}){let P=await l(),I=ln(P.base,w);if(!I)throw new Error("bad_path");let N=await sn(P,I,{method:A.method??"GET",headers:{...A.body!==void 0?{"Content-Type":"application/json"}:{},...A.projectSource?{"X-Project-Source":A.projectSource}:{}},body:A.body!==void 0?JSON.stringify(A.body):void 0,signal:AbortSignal.timeout(3e4)});return{status:N.status,json:await N.json().catch(()=>null)}}let d=w=>{let{attempt:A,relDir:P,abort:I,samples:N,file:V,dl:X,...oe}=w;return{...oe,speed:w.state==="active"?Ad(N,i()):0}},f=w=>w.state==="active"||w.state==="queued"||w.state==="paused",u=(w,A,P=null)=>{w.state=A,w.error=P,w.abort=null,w.finishedAt=i(),w.samples=[];let I=n.filter(N=>N.state==="done"||N.state==="canceled");for(let N of I.slice(0,Math.max(0,I.length-Mg)))n.splice(n.indexOf(N),1);g()},p=w=>{let A=String(w?.message||w);return["too_large","quota","not_signed_in","bad_response","popup_blocked"].includes(A)||A.startsWith("http_")?A:"network"};function g(){if(!a)for(let w of["up","down"]){let A=n.filter(P=>P.kind===w&&P.state==="active").length;for(let P of n){if(A>=Pg)break;if(P.kind!==w||P.state!=="queued")continue;A++,P.state="active",P.startedAt=i(),P.done=0,P.samples=[[i(),0]],P.abort=new AbortController;let I=P.abort.signal,N=++P.attempt,V=()=>P.attempt===N&&P.state==="active";(w==="up"?_(P,V,I):R(P,V,I)).catch(X=>{V()&&u(P,"failed",p(X))})}}}let m=(w,A)=>{w.done=A;let P=i(),I=w.samples[w.samples.length-1];for((!I||P-I[0]>=200)&&w.samples.push([P,A]);w.samples.length>2&&P-w.samples[0][0]>3500;)w.samples.shift()};function y(w){if(!w.relDir.length)return Promise.resolve(w.targetId);let A=o.get(w.batch);A||o.set(w.batch,A=new Map);let P=A,I=N=>{if(N===0)return Promise.resolve(w.targetId);let V=w.relDir.slice(0,N).join("/"),X=P.get(V);return X||(X=I(N-1).then(async oe=>{let b=w.relDir[N-1],C=await c("/files",{method:"POST",body:{type:"directory",parentId:oe,name:b},projectSource:w.projectSource});if(C.status===201&&typeof C.json?.id=="string")return C.json.id;if(C.status===409){let L=await c(`/files${oe==="ROOT"?"":`?parentId=${encodeURIComponent(oe)}`}`,{projectSource:w.projectSource}),K=Array.isArray(L.json)?L.json.find(ie=>ie?.fileType==="directory"&&ie?.name===b):null;if(K?.id)return String(K.id)}throw new Error(C.status===401?"not_signed_in":`http_${C.status}`)}),X.catch(()=>P.delete(V)),P.set(V,X)),X};return I(w.relDir.length)}async function _(w,A,P){let I=w.file;if(I.size>52428800)throw new Error("too_large");let N=await y(w);if(!A())return;w.parentId=N;let V=await l();if(!A())return;let X=ln(V.base,"/files/upload");if(!X)throw new Error("bad_path");let oe=`----penzor${s()}`,{head:b,tail:C}=Td(oe,{parentId:N,autoRename:"true"},w.name,I.type||xi(w.name)),L=await sn(V,X,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${oe}`,...w.projectSource?{"X-Project-Source":w.projectSource}:{}},body:new Blob([b,I,C]),signal:P}),K=await L.json().catch(()=>null);A()&&(L.status===201||L.status===200?(w.fileId=typeof K?.id=="string"?K.id:null,m(w,w.size),u(w,"done")):u(w,"failed",Ed(L.status,K)))}async function E(w,A,P){A.size=Number(w.headers.get("content-length"))||A.size;let I=w.headers.get("content-type")||"";if(!w.body)return w.blob();let N=w.body.getReader(),V=[],X=0;for(;;){let{done:oe,value:b}=await N.read();if(oe)break;if(!P())throw N.cancel().catch(()=>{}),new Error("aborted");V.push(b),X+=b.length,m(A,X)}return X>A.size&&(A.size=X),new Blob(V,{type:I})}let x=(w,A)=>{let P=URL.createObjectURL(w),I=t.document.createElement("a");I.href=P,I.download=A,t.document.body.appendChild(I),I.click(),I.remove(),setTimeout(()=>URL.revokeObjectURL(P),6e4)},k=w=>{let A=t.open("","_blank");return A?(A.opener=null,A.location.replace(w),!0):!1};async function R(w,A,P){let I=w.dl,N=await l();if(!A())return;let V=ln(N.base,I.path);if(!V)throw new Error("bad_path");let X=await sn(N,V,{signal:P});if(!X.ok)throw new Error(X.status===401?"not_signed_in":`http_${X.status}`);let oe;if(I.mode==="bytes")oe=await E(X,w,A);else{let b=await X.json().catch(()=>null);if(I.mode==="text"){if(typeof b?.content!="string")throw new Error("bad_response");oe=new Blob([b.content],{type:xi(I.name)}),w.size=oe.size,m(w,oe.size)}else{if(typeof b?.url!="string"||!/^https?:\/\//i.test(b.url))throw new Error("bad_response");let C=await fetch(b.url,{signal:P,credentials:"omit"}).catch(L=>{if(P.aborted)throw L;return null});if(!C){if(!A())return;if(!k(b.url))throw new Error("popup_blocked");u(w,"done");return}if(!C.ok)throw new Error(`http_${C.status}`);oe=await E(C,w,A)}}A()&&(x(oe,I.name),u(w,"done"))}let B=(w,A)=>{let P={projectSource:void 0,parentId:void 0,targetId:void 0,fileId:null,localPath:null,...w,id:s(),attempt:0,done:0,state:A?"failed":"queued",error:A??null,abort:null,samples:[],speed:0,startedAt:null,finishedAt:A?i():null};return n.push(P),P};e.handle("penzor:upload",async(w,A)=>{let P=A??{},I=(Array.isArray(P.files)?P.files:[]).filter(C=>!!C&&C.file instanceof Blob&&typeof C.file.name=="string"&&Array.isArray(C.relDir)&&C.relDir.length<=zi&&C.relDir.every(Ig)),N=typeof P.parentId=="string"&&_d.test(P.parentId)?P.parentId:null,V=typeof P.projectSource=="string"&&Sd.test(P.projectSource)?P.projectSource:null;if(!I.length)return{ok:!1,error:"no_files"};if(!N||!V)return{ok:!1,error:"bad_target"};if(I.length>2e3)return{ok:!1,error:"too_many",max:2e3};if(!(await e.getCloud()).token)return{ok:!1,error:"not_signed_in"};let X=I.filter(C=>C.file.size<=52428800).reduce((C,L)=>C+L.file.size,0);try{let C=await c("/storage/quota"),L=Number(C.json?.used),K=Number(C.json?.quota);if(C.status===200&&K>0&&L+X>K)return{ok:!1,error:"quota",short:L+X-K}}catch{}if(a)return{ok:!1,error:"disposed"};let oe=s(),b=I.map(C=>B({kind:"up",name:C.file.name,size:C.file.size,projectSource:V,parentId:C.relDir.length?null:N,targetId:N,batch:oe,relDir:C.relDir,file:C.file},C.file.size>52428800?"too_large":void 0).id);return g(),{ok:!0,ids:b,batch:oe}}),e.handle("penzor:download",async(w,A)=>{let P=A??{},I=zd.includes(P.mode)?P.mode:null,N=Cd(P.name);if(!I)return{ok:!1,error:"bad_mode"};if(!N)return{ok:!1,error:"bad_name"};let V=await e.getCloud();if(typeof P.path!="string"||!ln(V.base,P.path))return{ok:!1,error:"bad_path"};if(!V.token)return{ok:!1,error:"not_signed_in"};if(a)return{ok:!1,error:"disposed"};let X=B({kind:"down",name:N,size:Math.max(0,Number(P.size)||0),relDir:[],batch:typeof P.batch=="string"&&P.batch.length<=64?P.batch:s(),dl:{path:P.path,mode:I,name:N}});return g(),{ok:!0,id:X.id}}),e.handle("penzor:transfers",()=>({ok:!0,items:n.map(d)})),e.handle("penzor:transfer",(w,A)=>{let P=A??{},I=n.find(V=>V.id===P.id);if(!I)return{ok:!1,error:"not_found"};let N=()=>{I.abort?.abort(),I.abort=null,I.done=0,I.samples=[]};switch(P.op){case"pause":(I.state==="active"||I.state==="queued")&&(N(),I.state="paused",g());break;case"resume":I.state==="paused"&&(I.state="queued",g());break;case"cancel":f(I)&&(N(),u(I,"canceled"));break;case"retry":(I.state==="failed"||I.state==="canceled")&&(I.state="queued",I.error=null,I.finishedAt=null,I.done=0,g());break;case"dismiss":I.state!=="active"&&I.state!=="queued"&&n.splice(n.indexOf(I),1);break;default:return{ok:!1,error:"bad_op"}}return{ok:!0}}),e.handle("penzor:transfers:clear",(w,A)=>{let P=A?.which==="all";for(let I of[...n])(I.state==="done"||I.state==="canceled"||P&&I.state==="failed")&&n.splice(n.indexOf(I),1);return{ok:!0}});let j=w=>{n.some(f)&&(w.preventDefault(),w.returnValue="")};return t.addEventListener("beforeunload",j),{dispose(){a=!0,t.removeEventListener("beforeunload",j);for(let w of n)w.state="canceled",w.abort?.abort();n.length=0}}}var Rd={search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',down:'<path d="m6 9 6 6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',folder:'<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/>',attachment:'<path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',trash:'<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>',refresh:'<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>',cloud:'<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',archive:'<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',lock:'<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',undo:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/>',pen:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>',move:'<path d="M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1"/><path d="M2 13h10"/><path d="m9 16 3-3-3-3"/>',book:'<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>',login:'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" x2="3" y1="12" y2="12"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>',up:'<path d="m18 15-6-6-6 6"/>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/>',"folder-plus":'<path d="M12 10v6"/><path d="M9 13h6"/><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',"folder-open":'<path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>',play:'<polygon points="6 3 20 12 6 21 6 3"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',check:'<path d="M20 6 9 17l-5-5"/>',alert:'<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>',"tx-up":'<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>',"tx-down":'<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/>',files:'<path d="M20 7h-3a2 2 0 0 1-2-2V2"/><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"/><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"/>',notebook:'<path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"/><path d="M2 6h4"/><path d="M2 10h4"/><path d="M2 14h4"/><path d="M2 18h4"/><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/>',bot:'<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',puzzle:'<path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"/>',laptop:'<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',info:'<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>'},ne=({n:e})=>r("svg",{viewBox:"0 0 24 24","aria-hidden":"true",dangerouslySetInnerHTML:{__html:Rd[e]??Rd.attachment}});function Od(e){let[,t]=M(0);Q(()=>{let n=e.subscribe(()=>t(o=>o+1));return t(o=>o+1),n},[e])}function Bo(e){return r("div",{ref:e.rootRef,class:`${e.side?"pz-side":"pz"}${e.extra?` ${e.extra}`:""}`,lang:e.p.locale()==="zh"?"zh-CN":"en",...e.on,children:[r("style",{children:wd}),e.children]})}var qn=({pct:e,warn:t})=>r("div",{class:`pz-bar${t?" is-low":""}`,children:r("span",{style:{width:`${Math.max(0,Math.min(100,e)).toFixed(1)}%`}})}),Ld={sync:1,ama:.62,apps:.38,exports:.2},Dd={sync:"penzor.ledger.sync",ama:"penzor.ledger.ama",apps:"penzor.ledger.apps",exports:"penzor.ledger.exports"};function Fd({p:e}){Od(e);let t=te(null);Q(()=>{e.enter(),e.refresh(),Un(e.loc())&&e.ctx.closeView?.("penzor-info",{collapse:!0});let u=t.current;if(!u||typeof IntersectionObserver>"u")return;let p=!0;e.setVisible(!0);let g=new IntersectionObserver(m=>{let y=m.some(_=>_.isIntersecting);y&&!p&&(e.enter(),e.refresh()),p=y,e.setVisible(y)});return g.observe(u),()=>{g.disconnect(),e.setVisible(!1)}},[e]);let[n,o]=M(null),a=u=>Array.from(u.dataTransfer?.types??[]).includes("Files"),i=u=>{let p=u.target?.closest?.("tr[data-dir-id]");return p?{id:p.dataset.dirId,name:p.dataset.dirName??""}:null},s=()=>e.appStack()[e.appStack().length-1]?.name??e.t("penzor.drive"),l=e.canWrite()&&e.auth()==="in"?{onDragOver:u=>{if(!a(u))return;u.preventDefault(),u.stopPropagation(),u.dataTransfer&&(u.dataTransfer.dropEffect="copy");let p=i(u),g=p?.name||s();(n?.place!==g||n?.target?.id!==p?.id)&&o({place:g,target:p})},onDragLeave:u=>{t.current?.contains(u.relatedTarget)||o(null)},onDrop:u=>{if(!a(u))return;u.preventDefault(),u.stopPropagation();let p=i(u);o(null);let g=re().getPathForFile;if(!g){u.dataTransfer&&e.upload(Md(u.dataTransfer),p);return}let m=Array.from(u.dataTransfer?.files??[]).map(y=>{try{return g(y)}catch{return""}}).filter(Boolean);e.upload(m,p)}}:{};Q(()=>{e.canWrite()||o(null)},[e.canWrite()]);let c=e.t,d=e.auth(),f;return d==="out"?f=r($d,{p:e}):e.loc().kind==="sync-home"?f=r(Lg,{p:e}):e.snap()?e.error()?f=r("div",{class:"pz-scroll",children:r("p",{class:"pz-note",children:e.error()})}):e.loc().kind==="overview"?f=di(e.snap()).empty?r(Ng,{p:e}):r(Og,{p:e}):f=r($g,{p:e,dropDir:n?.target?.id??null}):f=r("div",{class:"pz-scroll",children:r("p",{class:"pz-note",children:e.error()??c("penzor.loading")})}),r(Bo,{p:e,rootRef:t,extra:n?"pz-drop":"",on:l,children:[f,n&&r("div",{class:"pz-dropbar",children:r("span",{children:[r(ne,{n:"upload"}),c("penzor.drop.to",{place:n.place})]})}),e.menu()&&r(qg,{p:e}),r(Xg,{p:e})]})}var Rg={dropbox:"Dropbox",s3:"S3",webdav:"WebDAV"};function _i({on:e,disabled:t,label:n,title:o,onToggle:a}){return r("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,title:o,disabled:t,onClick:i=>{i.stopPropagation(),a(!e)},children:r("span",{})})}var Si=({tone:e,text:t})=>r("span",{class:`pz-sync-state is-${e}`,children:[e!=="off"&&r("i",{}),t]});function Lg({p:e}){let t=e.t,n=e.syncState(),[o,a]=M(!1);if(!n)return r("div",{class:"pz-scroll",children:r("p",{class:"pz-note",children:t("penzor.loading")})});if(!n.signedIn)return r($d,{p:e});let i=e.snap(),s=n.notes,l=t("penzor.ledger.sync"),c=s.maxBytes??i?.sync?.maxBytes??0,d=i?.sync?.maxFileBytes||50*1024*1024,f=s.vault?i?.sync?.vaults.find(w=>w.vault===s.vault)??null:null,u=nd(n,c),p=s.on?s.last?.skippedLarge??0:0,g=s.rootName?t("penzor.sync.notesNamed",{name:s.rootName}):t("penzor.sync.notesPlain"),m=()=>e.openSync(),y=()=>{if(s.pending)return{tone:"wait",text:t("penzor.sync.waiting")};if(!s.on)return{tone:"off",text:t("penzor.sync.off")};let w=Fr(n);if(w!=null)return{tone:"ok",text:w>0?t("penzor.sync.running",{pct:Math.round(w*100)}):t("penzor.sync.runningPlain")};if(u)return{tone:"warn",text:t("penzor.sync.overQuota")};if(fi(n))return{tone:"warn",text:t("penzor.sync.failed")};if(s.backend==="folder")return{tone:"ok",text:t("penzor.sync.toFolder")};let A=Rg[s.backend];return A?{tone:"ok",text:t("penzor.sync.to",{name:A})}:s.last?{tone:"ok",text:s.localBytes!=null?t("penzor.sync.doneSize",{size:e.b(s.localBytes)}):t("penzor.sync.done")}:{tone:"ok",text:t("penzor.sync.firstPending")}},_=(w,A)=>w?{tone:"ok",text:A}:{tone:"off",text:t("penzor.sync.off")},E=w=>A=>{e.setSync(w,A)},x=s.available===!1&&!s.on&&(s.backend==="off"||s.backend==="penzor"),k=[e.thisDevice()?t("penzor.sync.metaDevice",{name:e.thisDevice()}):null,s.on?s.last?t("penzor.sync.metaLast",{time:gi(s.last.at,e.locale())}):t("penzor.sync.metaNever"):null,s.on&&s.backend!=="off"?mi(s,e.locale()):null].filter(w=>!!w),R=y(),B=f?[...new Set([...f.devices,...f.device?[f.device]:[]])]:[],j=i?.ama?i.ama.reduce((w,A)=>w+A.sizeBytes,0):null;return r("div",{class:"pz-scroll",children:r("div",{class:"pz-col",children:[r("div",{class:"pz-ov-kick",children:t("penzor.kicker")}),r("div",{class:"pz-title pz-sync-head",children:[r("h1",{class:"pz-h1",children:t("penzor.sync.title")}),r("span",{class:"pz-badge",children:[r(ne,{n:"check"}),od(n,e.locale())]})]}),k.length>0&&r("div",{class:"pz-meta",children:k.map(w=>r("span",{children:w},w))}),s.pending&&r(Dg,{p:e,s:n}),u&&r("div",{class:"pz-sync-ask is-warn",role:"region",children:[r("h4",{children:s.localBytes!=null&&c>0?t("penzor.sync.quotaTitle",{size:e.b(s.localBytes),ledger:l,max:e.b(c)}):t("penzor.sync.quotaTitlePlain",{ledger:l})}),r("p",{children:[t("penzor.sync.quotaBody"),p>0&&` ${t("penzor.sync.quotaLarge",{size:e.b(d),n:p})}`]}),r("div",{class:"pz-acts",children:[r("button",{class:"pz-btn pri",onClick:()=>void bn("membership").then(w=>{w||e.ctx.app?.notify?.(t("err.openFailed"))}),children:t("member.upgrade")}),f&&r("button",{class:"pz-btn",onClick:()=>e.go(`sync:${f.vault}`),children:t("penzor.sync.quotaSee")})]})]}),r("div",{class:"pz-sync-card",children:[r("div",{class:`pz-sync-row is-click${o?" is-open":""}`,children:[r("button",{type:"button",class:"pz-sync-main","aria-expanded":o,onClick:()=>a(!o),children:[r("span",{class:"pz-tile",children:r(ne,{n:"notebook"})}),r("span",{class:"pz-sync-txt",children:[r("b",{children:g}),r("small",{children:t("penzor.sync.notesDesc")})]}),r(Si,{...R})]}),r(_i,{on:s.on&&!s.pending,label:g,disabled:!!s.pending||x||e.syncBusy("notes"),title:s.pending?t("penzor.sync.decideAbove"):void 0,onToggle:E("notes")})]}),o&&r("div",{class:"pz-sync-sub",children:[r("div",{class:"kv",children:[r("span",{children:t("penzor.sync.kvSchedule")}),r("span",{children:mi(s,e.locale())}),r("button",{class:"pz-link",onClick:m,children:t("penzor.sync.change")})]}),r("div",{class:"kv",children:[r("span",{children:t("penzor.sync.kvDirection")}),r("span",{children:t(`penzor.sync.dir.${s.direction}`)}),r("button",{class:"pz-link",onClick:m,children:t("penzor.sync.change")})]}),p>0&&r("div",{class:"kv",children:[r("span",{children:t("penzor.sync.kvSkipped")}),r("span",{children:t("penzor.sync.skippedN",{n:p,size:e.b(d)})}),r("span",{})]}),s.backend==="penzor"&&s.vault&&r("div",{class:"kv",children:[r("span",{children:t("penzor.sync.kvWhere")}),r("span",{children:i?.sync&&c>0?t("penzor.sync.whereUsed",{ledger:l,vault:s.vault,used:e.b(i.sync.usedBytes),max:e.b(c)}):t("penzor.sync.where",{ledger:l,vault:s.vault})}),f?r("button",{class:"pz-link",onClick:()=>e.go(`sync:${f.vault}`),children:t("penzor.sync.open")}):r("span",{})]})]}),r("div",{class:"pz-sync-row",children:[r("div",{class:"pz-sync-main",children:[r("span",{class:"pz-tile",children:r(ne,{n:"bot"})}),r("span",{class:"pz-sync-txt",children:[r("b",{children:t("penzor.sync.agents")}),r("small",{children:t("penzor.sync.agentsDesc")})]}),r(Si,{..._(n.agents.on,t("penzor.sync.agentsN",{n:n.agents.count}))})]}),r(_i,{on:n.agents.on,label:t("penzor.sync.agents"),disabled:e.syncBusy("agents"),onToggle:E("agents")})]}),r("div",{class:"pz-sync-row",children:[r("div",{class:"pz-sync-main",children:[r("span",{class:"pz-tile",children:r(ne,{n:"puzzle"})}),r("span",{class:"pz-sync-txt",children:[r("b",{children:t("penzor.sync.plugins")}),r("small",{children:t("penzor.sync.pluginsDesc")})]}),r(Si,{..._(n.plugins.on,t("penzor.sync.pluginsN",{n:n.plugins.count}))})]}),r(_i,{on:n.plugins.on,label:t("penzor.sync.plugins"),disabled:e.syncBusy("plugins"),onToggle:E("plugins")})]})]}),r("div",{class:"pz-h3",children:t("penzor.sync.devicesTitle")}),i?B.length===0?r("p",{class:"pz-sync-none",children:t("penzor.sync.noDevices")}):r("div",{class:"pz-rows pz-sync-dev",children:B.map(w=>r("div",{class:"row",children:[r(ne,{n:"laptop"}),r("span",{class:"t",children:[w,w===e.thisDevice()&&r("em",{children:t("penzor.sync.thisOne")})]}),r("span",{class:"s",children:f?.device===w&&f.updatedAt?t("penzor.sync.lastWrite",{time:gi(Date.parse(f.updatedAt),e.locale())}):""})]},w))}):r("p",{class:"pz-sync-none",children:t("penzor.loading")}),r("div",{class:"pz-h3",children:t("penzor.sync.phoneTitle")}),r("div",{class:"pz-tip",children:[r(ne,{n:"info"}),r("span",{children:j!=null?t("penzor.sync.phoneTip",{size:e.b(j)}):t("penzor.sync.phoneTipPlain")})]}),r("p",{class:"pz-note",children:[t("penzor.sync.foot"),r("button",{class:"pz-link",onClick:m,children:t("penzor.sync.footLink")})]})]})})}function Dg({p:e,s:t}){let n=e.t,o=t.notes.pending,a=e.syncBusy("resolve"),i=new Date,s=n("penzor.sync.backupName",{name:t.notes.rootName??n("penzor.sync.notesPlain"),date:`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`}),l=o.cloudDevice?n("penzor.sync.askCloud",{device:o.cloudDevice,files:o.cloudFiles.toLocaleString(),size:e.b(o.cloudBytes)}):n("penzor.sync.askCloudNoDevice",{files:o.cloudFiles.toLocaleString(),size:e.b(o.cloudBytes)});return r("div",{class:"pz-sync-ask",role:"region","aria-label":n("penzor.sync.askTitle"),children:[r("h4",{children:n("penzor.sync.askTitle")}),r("p",{children:[l," ",n("penzor.sync.askLocal",{local:o.localOnly.toLocaleString(),conflicts:o.conflicts.toLocaleString()})]}),e.confirmCloud()?r("div",{class:"pz-confirm",children:[r("span",{children:n("penzor.sync.askConfirm",{backup:s})}),r("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("cloud"),children:n("penzor.sync.askConfirmGo")}),r("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!1),children:n("penzor.cancel")})]}):r("div",{class:"pz-acts",children:[r("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("merge"),children:n("penzor.sync.askMerge")}),r("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!0),children:n("penzor.sync.askCloudBtn")}),r("button",{class:"pz-btn",disabled:a,onClick:()=>void e.resolveNotes("skip"),children:n("penzor.sync.askSkip")})]}),r("p",{class:"pz-sync-explain",children:n("penzor.sync.askExplain",{backup:s})})]})}function $d({p:e}){let t=e.t;return r("div",{class:"pz-scroll",children:r("div",{class:"pz-empty",children:[r("span",{class:"ic",children:r(ne,{n:"cloud"})}),r("h2",{children:t("penzor.out.title")}),r("p",{children:t("penzor.out.lead")}),r("button",{class:"pz-btn pri",onClick:()=>e.signIn(),children:[r(ne,{n:"login"}),t("penzor.out.signIn")]})]})})}function Ng({p:e}){let t=e.t;return r("div",{class:"pz-scroll",children:r("div",{class:"pz-empty",children:[r("span",{class:"ic",children:r(ne,{n:"cloud"})}),r("h2",{children:t("penzor.empty.title")}),r("p",{children:t("penzor.empty.lead")}),r("ul",{children:[r("li",{children:t("penzor.empty.sync")}),r("li",{children:t("penzor.empty.ama")}),r("li",{children:t("penzor.empty.apps")})]}),r("button",{class:"pz-btn",onClick:()=>e.openSync(),children:[r(ne,{n:"gear"}),t("penzor.empty.openSync")]})]})})}function Og({p:e}){let t=e.t,n=e.snap(),o=di(n),a=d=>Vt(d,e.locale()),i=d=>d==="sync"?n.sync?.vaults[0]?`sync:${n.sync.vaults[0].vault}`:"ov":d==="ama"?n.ama?.[0]?`ama:${n.ama[0].id}`:"ov":d==="apps"?o.apps?.apps[0]?`app:${o.apps.apps[0]}`:"trash":"exports",s=(d,f,u,p,g,m,y)=>r("button",{class:`pz-card${y?.warn?" warn":""}`,onClick:()=>e.go(i(d)),children:[r("div",{class:"pz-card-h",children:[r("span",{class:"pz-tile",children:r(ne,{n:f})}),t(Dd[d]),r("span",{class:"go",children:r(ne,{n:"right"})})]}),r("div",{class:"pz-big",children:[u,r("small",{children:p})]}),y&&r(qn,{pct:y.pct,warn:y.warn}),r("div",{class:"pz-sub",children:g}),r("div",{class:`pz-foot${y?.warn?" warn":""}`,children:m})]}),l=Fg(e),c=Math.max(1,...l.map(d=>d.size));return r("div",{class:"pz-scroll",children:r("div",{class:"pz-col",children:[r("div",{class:"pz-ov-kick",children:t("penzor.kicker")}),r("div",{class:"pz-total",children:[r("b",{children:e.b(o.total)}),r("span",{children:t("penzor.total.sub",{time:t("penzor.justNow")})})]}),r("div",{class:"pz-seg",children:o.segments.map(d=>r("i",{style:{width:`${o.total?d.bytes/o.total*100:0}%`,opacity:Ld[d.ledger]}},d.ledger))}),r("div",{class:"pz-legend",children:o.segments.map(d=>r("span",{children:[r("i",{style:{opacity:Ld[d.ledger]}}),t(Dd[d.ledger])," ",e.b(d.bytes)]},d.ledger))}),r("div",{class:"pz-cards",children:[o.sync&&s("sync","refresh",e.b(o.sync.bytes),o.sync.meter?t("penzor.ofMax",{max:e.b(o.sync.meter.max)}):"",o.sync.updatedAt?t("penzor.card.syncSub",{n:o.sync.vaults,time:a(Date.parse(o.sync.updatedAt))}):t("penzor.card.syncSubNone",{n:o.sync.vaults}),o.sync.meter?.warn?t("penzor.card.syncWarn",{max:e.b(o.sync.meter.max)}):t("penzor.card.syncFoot",{size:e.b(o.sync.maxFileBytes)}),o.sync.meter),o.ama&&s("ama","cloud",e.b(o.ama.bytes),t("penzor.card.amaSmall"),t("penzor.card.amaSub",{n:o.ama.vaults}),t("penzor.card.amaFoot")),o.apps&&s("apps","archive",e.b(o.apps.bytes),o.apps.meter?t("penzor.ofMax",{max:e.b(o.apps.meter.max)}):"",[...Ro(n)>0?[t("penzor.drive")]:[],...o.apps.apps.map(d=>e.appLabel(d))].join(" \xB7 ")||t("penzor.card.none"),o.apps.meter?.warn?t("penzor.card.appsWarn",{max:e.b(o.apps.meter.max)}):t("penzor.card.appsFoot",{n:o.apps.trashCount,size:e.b(o.apps.trashBytes)}),o.apps.meter),o.exports&&s("exports","attachment",e.b(o.exports.bytes),t("penzor.card.expSmall",{n:o.exports.count}),o.exports.latest?t("penzor.card.expSub",{name:o.exports.latest.fileName,time:a(Date.parse(o.exports.latest.createdAt))}):t("penzor.card.none"),t("penzor.card.expFoot"))]}),l.length>0&&r(F,{children:[r("div",{class:"pz-h3",children:t("penzor.largest")}),r("div",{class:"pz-rows",children:l.map(d=>r("button",{class:"row",onClick:()=>e.go(d.go),children:[r(ne,{n:$r(d.name)}),r("span",{class:"t",children:[d.name,r("em",{children:d.where})]}),r(qn,{pct:d.size/c*100}),r("span",{class:"s",children:e.b(d.size)})]},d.key))})]})]})})}function Fg(e){let t=e.snap(),n=e.t,o=[...e.largest()];for(let a of t.apps?.largest??[])o.push({key:`a:${a.id}`,name:a.name,where:`${n("penzor.ledger.apps")} \xB7 ${e.appLabel(a.appId)}`,size:a.size,go:`app:${a.appId}`});for(let a of t.exports?.files??[])o.push({key:`e:${a.fileId}`,name:a.fileName,where:`${n("penzor.ledger.exports")} \xB7 ${e.appLabel(a.appId)}`,size:a.size,go:"exports"});return o.sort((a,i)=>i.size-a.size).slice(0,6)}function $g({p:e,dropDir:t}){let n=e.t,o=e.loc(),a=e.snap(),i=e.rows(),[s,l]=M(!1),[c,d]=M(null),f=te(null),u=te(null),p=te(null),g=e.canWrite(),m=e.selection();Q(()=>(e.picker.files=()=>f.current?.click(),e.picker.folder=()=>u.current?.click(),()=>{e.picker.files=void 0,e.picker.folder=void 0}),[e]);let y=(b,C)=>{let L=b.currentTarget,K=re().getPathForFile,ie=Array.from(L.files??[]);if(!K){L.value="",e.upload(Pd(ie,C));return}let pe=ie.map(Pe=>{try{return K(Pe)}catch{return""}}),He=pe.filter(Boolean);if(C){let Pe=new Set;ie.forEach((yt,ve)=>{let et=yt.webkitRelativePath??"",jt=pe[ve];!et||!jt||jt.length<et.length||Pe.add(jt.slice(0,jt.length-et.length)+et.split("/")[0])}),He=[...Pe]}L.value="",e.upload(He)},_=(b,C)=>{e.select(C,{toggle:b.metaKey||b.ctrlKey,range:b.shiftKey}),p.current?.focus({preventScroll:!0})},E=b=>{if(b.target?.tagName!=="INPUT"){if((b.metaKey||b.ctrlKey)&&b.key.toLowerCase()==="a"&&e.canMulti())b.preventDefault(),e.selectAll();else if(b.key==="Escape"&&m.length>1){b.preventDefault();let C=e.selected();e.select(C)}}},x=o.kind==="sync"?n("penzor.ledger.sync"):o.kind==="ama"?n("penzor.ledger.ama"):o.kind==="app"&&!e.canWrite()?n("penzor.ledger.apps"):null,k=o.kind==="sync"?o.vault:o.kind==="ama"?a.ama?.find(b=>b.id===o.vaultId)?.name??"":o.kind==="app"?e.appLabel(o.appId):o.kind==="exports"?n("penzor.ledger.exports"):n("penzor.trash"),R=o.kind==="app"?e.appStack().map(b=>b.name):e.path()?e.path().split("/"):[],B=[...x?[{label:x,depth:null}]:[],{label:k,depth:0},...R.map((b,C)=>({label:b,depth:C+1}))],j=["mtime","size","name"],w=()=>e.setSort(j[(j.indexOf(e.sort())+1)%j.length]),A=o.kind==="sync"?n("penzor.col.device"):o.kind==="trash"?n("penzor.col.origin"):o.kind==="exports"?n("penzor.col.app"):null,P=o.kind==="trash"?n("penzor.col.deleted"):n("penzor.col.mtime"),I=()=>{if(o.kind==="sync"){let C=a.sync?.vaults.find(ie=>ie.vault===o.vault);if(!C)return null;let L=!!e.thisDevice()&&C.devices.includes(e.thisDevice()),K=a.sync;return r(F,{children:[r("div",{class:"pz-title",children:[r("h1",{class:"pz-h1",children:C.vault}),L&&r("span",{class:"pz-badge",children:[r(ne,{n:"refresh"}),n("penzor.sync.thisDevice")]})]}),r("div",{class:"pz-meta",children:[r("span",{children:n("penzor.meta.files",{size:e.b(C.bytes),n:C.files.toLocaleString()})}),C.updatedAt&&r("span",{children:C.device?n("penzor.sync.last",{time:Vt(Date.parse(C.updatedAt),e.locale()),device:C.device}):n("penzor.sync.lastNoDevice",{time:Vt(Date.parse(C.updatedAt),e.locale())})}),C.devices.length>0&&r("span",{children:n("penzor.sync.devices",{n:C.devices.length})})]}),K.maxBytes>0&&r("div",{class:"pz-meter",children:[r(qn,{pct:K.usedBytes/K.maxBytes*100,warn:K.usedBytes/K.maxBytes>=.9}),r("span",{children:n("penzor.sync.meter",{max:e.b(K.maxBytes),used:e.b(K.usedBytes)})})]})]})}if(o.kind==="ama"){let C=a.ama?.find(L=>L.id===o.vaultId);return r(F,{children:[r("div",{class:"pz-title",children:[r("h1",{class:"pz-h1",children:C?.name}),r("span",{class:"pz-badge",children:[r(ne,{n:"cloud"}),"Amadeus Cloud"]})]}),r("div",{class:"pz-meta",children:[r("span",{children:e.b(C?.sizeBytes??0)}),r("span",{children:n("penzor.ama.notCounted")})]})]})}if(o.kind==="app"){let C=a.apps?.apps.find(K=>K.appId===o.appId),L=a.apps;return r(F,{children:[r("div",{class:"pz-title",children:r("h1",{class:"pz-h1",children:e.appLabel(o.appId)})}),r("div",{class:"pz-meta",children:[r("span",{children:n("penzor.meta.files",{size:e.b(C?.bytes??0),n:(C?.files??0).toLocaleString()})}),r("span",{children:e.canWrite()?n("penzor.drive.meta",{max:e.b(L.quota)}):n("penzor.apps.by",{app:e.appLabel(o.appId)})})]}),L.quota>0&&r("div",{class:"pz-meter",children:[r(qn,{pct:L.used/L.quota*100,warn:L.used/L.quota>=.9}),r("span",{children:n("penzor.apps.meter",{max:e.b(L.quota),used:e.b(L.used)})})]})]})}if(o.kind==="exports")return r(F,{children:[r("div",{class:"pz-title",children:r("h1",{class:"pz-h1",children:n("penzor.ledger.exports")})}),r("div",{class:"pz-meta",children:[r("span",{children:n("penzor.meta.files",{size:e.b(a.exports?.totalBytes??0),n:(a.exports?.total??0).toLocaleString()})}),r("span",{children:n("penzor.card.expFoot")})]})]});let b=i??[];return r(F,{children:[r("div",{class:"pz-title",children:r("h1",{class:"pz-h1",children:n("penzor.trash")})}),r("div",{class:"pz-meta",children:[r("span",{children:n("penzor.trash.meta",{n:b.length,size:e.b((a.trash??[]).reduce((C,L)=>C+(Number(L.fileSize)||0),0))})}),a.apps&&a.apps.quota>0&&r("span",{children:n("penzor.trash.note",{max:e.b(a.apps.quota)})})]}),e.confirmEmpty()&&r("div",{class:"pz-confirm",children:[r("span",{children:n("penzor.confirm.empty",{n:b.length})}),r("button",{class:"pz-btn danger solid",onClick:()=>void e.emptyTrash(),children:n("penzor.trash.emptyBtn")}),r("button",{class:"pz-btn",onClick:()=>e.setConfirmEmpty(!1),children:n("penzor.cancel")})]})]})},N=e.selected(),V=m.length>1,X=m.reduce((b,C)=>b+(C.dir?0:C.size),0),oe=e.txRows();return r(F,{children:[r("div",{class:"pz-top",children:[r("nav",{class:"pz-crumb",children:B.map((b,C)=>{let L=C===B.length-1,K=L?r("b",{children:b.label}):b.depth==null?r("span",{children:b.label}):r("button",{onClick:()=>e.up(b.depth),children:b.label});return r("span",{style:{display:"contents"},children:[K,!L&&r("i",{children:"\u203A"})]},C)})}),r("span",{class:"pz-sp"}),V?r(F,{children:[r("span",{class:"pz-selbar",children:n("penzor.sel.bar",{n:m.length,size:e.b(X)})}),m.some(b=>!b.dir)&&r("button",{class:"pz-btn",onClick:()=>void e.downloadMany(m),children:[r(ne,{n:"download"}),n("penzor.act.download")]}),o.kind==="app"&&r("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"move",at:[]}),children:[r(ne,{n:"move"}),n("penzor.act.move")]}),o.kind==="app"&&r("button",{class:"pz-btn danger",onClick:()=>void e.trashMany(m),children:[r(ne,{n:"trash"}),n("penzor.act.trash")]}),r("button",{class:"pz-ibtn",title:n("penzor.act.clearSel"),onClick:()=>e.select(N),children:r(ne,{n:"x"})})]}):r(F,{children:[R.length>0&&r("button",{class:"pz-ibtn",title:n("penzor.act.up"),onClick:()=>e.up(),children:r(ne,{n:"up"})}),o.kind==="ama"&&r("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.("amadeus"),children:[r(ne,{n:"book"}),n("penzor.ama.open")]}),o.kind==="trash"&&(i?.length??0)>0&&r("button",{class:"pz-btn danger",onClick:()=>e.setConfirmEmpty(!0),children:[r(ne,{n:"trash"}),n("penzor.trash.emptyBtn")]}),g&&r("span",{class:"pz-split",children:[r("button",{class:"pz-btn pri",onClick:()=>e.picker.files?.(),children:[r(ne,{n:"upload"}),n("penzor.act.upload")]}),r("button",{class:"pz-btn pri more",title:n("penzor.act.uploadMore"),"aria-label":n("penzor.act.uploadMore"),onClick:b=>{let C=b.currentTarget.getBoundingClientRect();d({x:C.right,y:C.bottom+4})},children:r(ne,{n:"down"})})]}),g&&r("button",{class:"pz-ibtn",title:n("penzor.act.newFolder"),onClick:()=>e.startNewFolder(),children:r(ne,{n:"folder-plus"})}),s||e.query()?r("input",{class:"pz-find",placeholder:n("penzor.search"),value:e.query(),autoFocus:!0,onInput:b=>e.setQuery(b.currentTarget.value),onKeyDown:b=>{b.key==="Escape"&&(e.setQuery(""),l(!1))},onBlur:()=>{e.query()||l(!1)}}):r("button",{class:"pz-ibtn",title:n("penzor.search"),onClick:()=>l(!0),children:r(ne,{n:"search"})}),r("button",{class:"pz-chip",onClick:w,children:[o.kind==="trash"&&e.sort()==="mtime"?n("penzor.sort.deleted"):n(`penzor.sort.${e.sort()}`),r(ne,{n:"down"})]})]})]}),g&&r(F,{children:[r("input",{ref:f,type:"file",multiple:!0,hidden:!0,onChange:b=>y(b,!1)}),r("input",{ref:u,type:"file",hidden:!0,webkitdirectory:!0,onChange:b=>y(b,!0)})]}),c&&r(qd,{x:c.x,y:c.y,alignRight:!0,onClose:()=>d(null),items:[{id:"files",label:n("penzor.act.uploadFiles"),icon:"upload",run:()=>e.picker.files?.()},{id:"folder",label:n("penzor.act.uploadFolder"),icon:"folder",run:()=>e.picker.folder?.()}]}),r("div",{class:"pz-scroll",ref:p,tabIndex:-1,onKeyDown:E,onContextMenu:b=>{!g||b.target.closest("tr")||(b.preventDefault(),e.openMenu(b.clientX,b.clientY,null))},children:r("div",{class:"pz-col",children:[I(),e.rowsError()?r("p",{class:"pz-note",children:n("penzor.err",{reason:e.rowsError()})}):i?i.length===0&&!oe.length&&e.newFolder()==null?r("p",{class:"pz-note",children:e.query()?n("penzor.noMatch",{q:e.query()}):g&&!R.length?n("penzor.drive.empty"):n("penzor.folderEmpty")}):r("table",{class:"pz-table",children:[r("thead",{children:r("tr",{children:[r("th",{children:n("penzor.col.name")}),r("th",{class:"r",children:n("penzor.col.size")}),r("th",{children:P}),A&&r("th",{children:A})]})}),r("tbody",{children:[e.newFolder()!=null&&r(Bg,{p:e,cols:A?4:3}),i.map((b,C)=>r(F,{children:[!b.dir&&(C===0||i[C-1].dir)&&oe.map(L=>r(Nd,{p:e,x:L},L.key)),r("tr",{class:`${e.isSelected(b.key)?"sel":""}${t&&t===b.key?" drop":""}`,"data-dir-id":g&&b.dir?b.key:void 0,"data-dir-name":g&&b.dir?b.name:void 0,onMouseDown:L=>{L.shiftKey&&L.preventDefault()},onClick:L=>_(L,b),onDblClick:()=>{b.dir?e.openDir(b):e.download(b)},onContextMenu:L=>{L.preventDefault(),e.openMenu(L.clientX,L.clientY,b)},children:[r("td",{class:"n",children:r("span",{children:[r(ne,{n:$r(b.name,b.dir)}),r("b",{children:b.name}),b.count!=null&&b.count>0&&r("em",{class:"cnt",children:b.count.toLocaleString()})]})}),r("td",{class:"r",children:b.dir&&o.kind==="app"?"\u2014":e.b(b.size)}),r("td",{children:Vt(b.mtime,e.locale())}),A&&r("td",{class:b.col4?"":"dim",children:b.col4?b.col4===e.thisDevice()?n("penzor.side.thisDevice",{name:b.col4}):b.col4:"\u2014"})]})]},b.key)),(i.length===0||i[i.length-1].dir)&&oe.map(b=>r(Nd,{p:e,x:b},b.key))]})]}):r("p",{class:"pz-note",children:n("penzor.loading")})]})})]})}function Bg({p:e,cols:t}){let[n,o]=M(e.newFolder()??""),a=te(null),i=te(!1);Er(()=>{a.current?.focus(),a.current?.select()},[]);let s=()=>{i.current||(i.current=!0,e.createFolder(n))};return r("tr",{class:"sel",children:[r("td",{class:"n",children:r("span",{children:[r(ne,{n:"folder-open"}),r("input",{ref:a,class:"pz-newname",value:n,onInput:l=>o(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.cancelNewFolder())},onBlur:s})]})}),r("td",{class:"r",children:"\u2014"}),r("td",{children:e.t("penzor.justNow")}),t>3&&r("td",{})]})}function Nd({p:e,x:t}){let n=t.size>0?Math.min(100,Math.round(t.done/t.size*100)):0;return r("tr",{class:`pz-txrow ${t.state}`,title:t.state==="paused"?e.t("penzor.tx.paused"):void 0,children:[r("td",{class:"n",children:r("span",{children:[r(ne,{n:$r(t.name)}),r("b",{children:t.name})]})}),r("td",{class:"r",children:t.state==="active"?pi(t.done,t.size,e.locale()):e.b(t.size)}),r("td",{children:t.state==="queued"?r("span",{class:"pz-inl",children:e.t("penzor.tx.queued")}):r("span",{class:"pz-inl",children:[r(qn,{pct:n}),t.state==="paused"?e.t("penzor.tx.pause"):`${n}%`]})})]})}function Bd(e,t){let n=e.t,o=e.loc().kind,a={id:"download",label:n("penzor.act.download"),icon:"download",run:()=>void e.download(t)};return o==="sync"||o==="ama"?t.dir?[]:[a]:o==="app"?[...t.dir?[]:[a],{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>{e.select(t),e.setSide({kind:"move",at:[]})}},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trash(t)}]:o==="exports"?[a,{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"delete",label:n("penzor.act.delete"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"deleteExport"})}}]:o==="trash"?[{id:"restore",label:n("penzor.act.restore"),icon:"undo",run:()=>void e.restore(t)},{id:"purge",label:n("penzor.act.purge"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"purge"})}}]:[]}function Ug(e,t){let n=e.t;if(!t)return e.canWrite()?[{id:"upload",label:n("penzor.act.uploadHere"),icon:"upload",run:()=>e.picker.files?.()},{id:"new-folder",label:n("penzor.act.newFolder"),icon:"folder-plus",run:()=>e.startNewFolder()}]:[];let o=e.selection();return o.length>1&&o.some(a=>a.key===t.key)?Ud(e,o):Bd(e,t)}function Ud(e,t){let n=e.t,o=e.loc().kind,a=t.filter(i=>!i.dir).length;return[...a?[{id:"download",label:n("penzor.sel.download",{n:a}),icon:"download",run:()=>void e.downloadMany(t)}]:[],...o==="app"?[{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>e.setSide({kind:"move",at:[]})},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trashMany(t)}]:[]]}function qd({x:e,y:t,items:n,onClose:o,alignRight:a}){let i=te(null),[s,l]=M({x:e,y:t});return Q(()=>{let c=i.current;if(c){let u=c.getBoundingClientRect(),p=a?e-u.width:e;l({x:Math.max(8,Math.min(p,window.innerWidth-u.width-8)),y:t+u.height>window.innerHeight-8?Math.max(8,t-u.height):t})}let d=u=>{u.target instanceof Node&&c?.contains(u.target)||o()},f=u=>{u.key==="Escape"&&o()};return window.addEventListener("pointerdown",d,!0),window.addEventListener("keydown",f,!0),window.addEventListener("blur",o),window.addEventListener("wheel",o,{passive:!0}),()=>{window.removeEventListener("pointerdown",d,!0),window.removeEventListener("keydown",f,!0),window.removeEventListener("blur",o),window.removeEventListener("wheel",o)}},[e,t]),n.length?xd(r("div",{ref:i,class:"ctx-menu pz-menu",role:"menu",style:{left:`${s.x}px`,top:`${s.y}px`},children:n.map((c,d)=>r(F,{children:[c.danger&&d>0&&r("div",{class:"ctx-separator"}),r("button",{role:"menuitem",class:c.danger?"danger":"",onClick:()=>{o(),c.run()},children:[r(ne,{n:c.icon}),c.label]})]},c.id))}),document.body):(queueMicrotask(o),null)}function qg({p:e}){let t=e.menu();return r(qd,{x:t.x,y:t.y,items:Ug(e,t.row),onClose:e.closeMenu})}function Hd({p:e}){Od(e);let t=e.t,n=e.loc(),o=e.selected();if(Un(n)||!o)return r(Bo,{p:e,side:!0,children:r("p",{class:"pz-side-none",children:t("penzor.side.none")})});let a=e.snap(),i=e.side(),s=e.selection();if(s.length>1)return r(Vg,{p:e,sel:s});let l=n.kind==="sync"?`${n.vault} / ${o.key}`:n.kind==="ama"?`${a?.ama?.find(m=>m.id===n.vaultId)?.name??""} / ${o.key}`:n.kind==="app"?[e.appLabel(n.appId),...e.appStack().map(m=>m.name),o.name].join(" / "):n.kind==="exports"?`${t("penzor.ledger.exports")} / ${o.name}`:o.col4??"",c=o.dir?"":(o.name.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??"").toUpperCase(),d=n.kind==="trash"?t("penzor.side.inTrash",{size:e.b(o.size)}):o.dir?o.count!=null?t("penzor.side.folder",{n:o.count.toLocaleString()}):t("penzor.side.folderPlain"):[c,e.b(o.size)].filter(Boolean).join(" \xB7 "),f=n.kind==="trash"?[[t("penzor.side.origin"),l],[t("penzor.side.deletedAt"),Vt(o.mtime,e.locale())]]:[[t("penzor.side.where"),l],[t("penzor.side.mtime"),Vt(o.mtime,e.locale())]];n.kind==="sync"&&!o.dir&&f.push([t("penzor.side.device"),o.col4?o.col4===e.thisDevice()?t("penzor.side.thisDevice",{name:o.col4}):o.col4:"\u2014"]),n.kind==="app"&&!o.dir&&!e.canWrite()&&f.push([t("penzor.side.from"),e.appLabel(n.appId)]),n.kind==="exports"&&f.push([t("penzor.side.from"),o.col4??"\u2014"]);let u=sd(n),p=Bd(e,o),g=e.versions();return r(Bo,{p:e,side:!0,children:[r("div",{class:"pz-thumb",children:r(ne,{n:$r(o.name,o.dir)})}),i.kind==="rename"?r(Hg,{p:e,row:o}):r("div",{class:"pz-fname",children:o.name}),r("div",{class:"pz-fsub",children:d}),i.kind==="confirm"?r("div",{class:"pz-confirm",style:{margin:0},children:[r("span",{children:t(i.what==="purge"?"penzor.confirm.purge":"penzor.confirm.deleteExport",{name:o.name})}),r("button",{class:"pz-btn danger solid",onClick:()=>void(i.what==="purge"?e.purge(o):e.deleteExport(o)),children:t(i.what==="purge"?"penzor.act.purge":"penzor.act.delete")}),r("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:t("penzor.cancel")})]}):p.length>0&&r("div",{class:"pz-acts",children:p.filter(m=>m.id!=="move").map(m=>r("button",{class:`pz-btn${m.danger?" danger":""}${m.id==="restore"?" pri":""}`,onClick:()=>m.run(),children:[r(ne,{n:m.icon}),m.id==="trash"?t("penzor.act.delete"):m.label]},m.id))}),i.kind==="move"&&r(Vd,{p:e,row:o,at:i.at}),r("dl",{class:"pz-dl",children:[f.map(([m,y])=>r(F,{children:[r("dt",{children:m}),r("dd",{children:y})]},m)),n.kind==="app"&&!o.dir&&r(F,{children:[r("dt",{children:t("penzor.side.versions")}),r("dd",{children:g==null?"\u2026":g.length?t("penzor.side.versionsN",{n:g.length}):t("penzor.side.versionsNone")})]})]}),n.kind==="app"&&!o.dir&&g&&g.length>0&&r("div",{class:"pz-vers",children:g.map(m=>r("div",{children:[r("span",{children:t("penzor.side.versionRow",{n:m.versionNumber,time:Vt(m.createdAt,e.locale()),size:e.b(m.fileSize)})}),r("button",{class:"pz-link",onClick:()=>void e.restoreVersion(o,m),children:t("penzor.side.restoreVersion")})]},m.versionNumber))}),n.kind==="trash"&&o.dir&&(o.count??0)>0&&r("div",{class:"pz-tip",children:[r(ne,{n:"undo"}),r("span",{children:t("penzor.side.inner",{n:o.count})})]}),n.kind==="exports"&&r("div",{class:"pz-tip",children:[r(ne,{n:"trash"}),r("span",{children:t("penzor.side.exportNote")})]}),u&&r("div",{class:"pz-tip",children:[r(ne,{n:"lock"}),r("span",{children:t(u,{vault:n.kind==="sync"?n.vault:""})})]})]})}function Hg({p:e,row:t}){let[n,o]=M(t.name),a=te(null),i=te(!1),s=()=>{i.current||(i.current=!0,e.rename(t,n))};return Q(()=>{let l=a.current;if(!l)return;l.focus();let c=t.dir?-1:t.name.lastIndexOf(".");l.setSelectionRange(0,c>0?c:t.name.length)},[t.key]),r("input",{ref:a,class:"pz-input",value:n,onInput:l=>o(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.setSide({kind:"view"}))},onBlur:s})}function Vd({p:e,row:t,at:n}){let o=e.t,a=e.loc(),i=a.kind==="app"?e.appLabel(a.appId):"",s=e.selection(),l=s.length>1,c=new Set(l?s.map(u=>u.key):[t.key]),d=(e.moveFolders()??[]).filter(u=>!c.has(u.id)),f=n[n.length-1]??{id:"ROOT",name:o("penzor.move.root",{app:i})};return r("div",{class:"pz-tip",style:{flexDirection:"column"},children:[r("div",{class:"pz-sh",style:{margin:0},children:o("penzor.move.title")}),r("div",{class:"pz-pick",children:[n.length>0&&r("button",{onClick:()=>e.moveBrowse(n.slice(0,-1)),children:[r(ne,{n:"up"}),n.length>1?n[n.length-2].name:o("penzor.move.root",{app:i})]}),e.moveFolders()==null?r("span",{children:"\u2026"}):d.length===0?r("span",{children:o("penzor.move.noFolders")}):d.map(u=>r("button",{onClick:()=>e.moveBrowse([...n,u]),children:[r(ne,{n:"folder"}),u.name]},u.id))]}),r("div",{class:"pz-acts",children:[r("button",{class:"pz-btn pri",onClick:()=>void(l?e.moveMany(s,f):e.moveTo(t,f)),children:o("penzor.move.here")}),r("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:o("penzor.cancel")})]})]})}function Vg({p:e,sel:t}){let n=e.t,o=e.loc(),a=t.filter(u=>!u.dir),i=t.length-a.length,s=a.reduce((u,p)=>u+p.size,0),l=new Date,c=n("penzor.download.folder",{date:`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`}),d=o.kind==="app"?[e.appLabel(o.appId),...e.appStack().map(u=>u.name)].join(" / "):o.kind==="sync"?[o.vault,...e.path()?e.path().split("/"):[]].join(" / "):o.kind==="ama"?[e.snap()?.ama?.find(u=>u.id===o.vaultId)?.name??"",...e.path()?e.path().split("/"):[]].join(" / "):"",f=e.side();return r(Bo,{p:e,side:!0,children:[r("div",{class:"pz-thumb",children:r(ne,{n:"files"})}),r("div",{class:"pz-fname",children:n("penzor.sel.title",{n:t.length})}),r("div",{class:"pz-fsub",children:i?n("penzor.sel.subDirs",{size:e.b(s),files:a.length,dirs:i}):n("penzor.sel.sub",{size:e.b(s),files:a.length})}),r("div",{class:"pz-acts",children:Ud(e,t).map(u=>r("button",{class:`pz-btn${u.danger?" danger":""}`,onClick:()=>u.run(),children:[r(ne,{n:u.icon}),u.id==="trash"?n("penzor.act.delete"):u.label]},u.id))}),f.kind==="move"&&r(Vd,{p:e,row:t[0],at:f.at}),r("dl",{class:"pz-dl",children:[r("dt",{children:n("penzor.side.where")}),r("dd",{children:d}),a.length>1&&r(F,{children:[r("dt",{children:n("penzor.sel.saveTo")}),r("dd",{children:n("penzor.sel.saveToValue",{folder:c})})]})]}),i>0&&a.length>0&&r("div",{class:"pz-tip",children:[r(ne,{n:"folder"}),r("span",{children:n("penzor.sel.noDirs")})]})]})}var jd=(e,t)=>t<60?e.t("penzor.tx.sec",{n:Math.max(1,Math.round(t))}):e.t("penzor.tx.min",{n:Math.ceil(t/60)}),jg=(e,t)=>t!=null&&Date.now()-t<6e4?e.t("penzor.justNow"):Vt(t,e.locale()),Wg=(e,t)=>{let n=t.error??"";return n==="too_large"?e.t("penzor.err.too_large",{size:e.b(t.size)}):n==="network"?e.t("penzor.err.network",{pct:t.size?Math.round(t.done/t.size*100):0}):n==="quota"||n==="account_changed"||n==="not_signed_in"||n==="gone"||n==="changed"||n==="storage_unavailable"||n==="popup_blocked"?e.t(`penzor.err.${n}`):e.t("penzor.err.other",{code:n||"?"})};function Gg(e){let t=e.filter(l=>l.state==="active"||l.state==="queued"||l.state==="paused"),n=t.filter(l=>l.state!=="paused"),o=n.reduce((l,c)=>l+Math.max(c.size,c.done),0),a=n.reduce((l,c)=>l+c.done,0),i=n.reduce((l,c)=>l+c.speed,0),s=i>0?(o-a)/i:null;return{live:t,failed:e.filter(l=>l.state==="failed"),done:e.filter(l=>l.state==="done"),up:t.filter(l=>l.kind==="up").length,down:t.filter(l=>l.kind==="down").length,pct:o>0?Math.min(100,Math.round(a/o*100)):0,eta:s!=null&&s>=5?s:null}}function Xg({p:e}){let t=e.t,n=e.card(),o=e.transfers(),a=e.notices();if(n==="hidden"||!o.length&&!a.length)return null;let i=Gg(o),s=i.failed.length+a.length,l=t("penzor.tx.counts",{up:i.up,down:i.down}),c=i.live.length?t("penzor.tx.busy",{n:i.live.length}):s?t("penzor.tx.failedN",{n:s}):t("penzor.tx.allDone"),d=i.live.length?[l,i.eta!=null?t("penzor.tx.eta",{eta:jd(e,i.eta)}):""].filter(Boolean).join(" \xB7 "):s?i.done.length?t("penzor.tx.restDone",{n:i.done.length}):"":t("penzor.tx.doneN",{n:i.done.length}),f={onMouseEnter:()=>e.holdCard(!0),onMouseLeave:()=>e.holdCard(!1)};if(n==="pill")return r("button",{class:"ui-popover pz-txpill",...f,onClick:()=>e.setCard("open"),title:t("penzor.tx.expand"),"aria-label":t("penzor.tx.expand"),children:[i.live.length?r("span",{class:"pz-ring",style:{"--p":i.pct}}):r(ne,{n:s?"alert":"check"}),r("span",{children:i.live.length?t("penzor.tx.pill",{counts:l,pct:i.pct}):c}),r(ne,{n:"up"})]});let u=m=>m.state==="failed"?0:m.state==="active"?1:m.state==="queued"||m.state==="paused"?2:3,p=[...o].filter(m=>m.state!=="canceled").sort((m,y)=>u(m)-u(y)||(u(m)===3?(y.finishedAt??0)-(m.finishedAt??0):0)),g=i.live.length>0&&i.live.every(m=>m.state==="paused");return r("div",{class:"ui-popover pz-txcard",role:"region","aria-label":c,...f,children:[r("div",{class:"pz-txhead",children:[r("b",{children:c}),r("span",{children:d}),r("i",{class:"sp"}),r("button",{class:"pz-ib",title:t("penzor.tx.collapse"),"aria-label":t("penzor.tx.collapse"),onClick:()=>e.setCard(i.live.length||s?"pill":"hidden"),children:r(ne,{n:"down"})})]}),i.live.length>0&&r("div",{class:"pz-txall",children:r(qn,{pct:i.pct})}),r("div",{class:"pz-txlist",children:[a.map(m=>r("div",{class:"pz-txrow2 is-fail",children:[r(ne,{n:"alert"}),r("span",{class:"nm",children:t("penzor.tx.quota",{size:e.b(m.short)})}),r("span",{class:"acts",children:r("button",{class:"pz-ib",title:t("penzor.tx.remove"),onClick:()=>e.dismissNotice(m.id),children:r(ne,{n:"x"})})}),r("span",{class:"sub",children:[r("span",{class:"err",children:t("penzor.tx.quotaSub")}),r("button",{class:"pz-link",onClick:()=>{e.dismissNotice(m.id),e.go("trash")},children:t("penzor.tx.freeSpace")})]})]},m.id)),p.map(m=>r(Kg,{p:e,x:m},m.id))]}),r("div",{class:"pz-txfoot",children:[i.live.length>0&&r("button",{onClick:()=>void e.txAll(g?"resume":"pause"),children:t(g?"penzor.tx.resumeAll":"penzor.tx.pauseAll")}),i.failed.length>0&&!i.live.length&&r("button",{onClick:()=>void e.txAll("retry"),children:t("penzor.tx.retryAll")}),i.done.length>0&&i.live.length>0&&r("button",{onClick:()=>void e.txClear("finished"),children:t("penzor.tx.clearDone")}),!i.live.length&&r("button",{onClick:()=>void e.txClear(s?"all":"finished"),children:t(s?"penzor.tx.clear":"penzor.tx.clearDone")})]})]})}function Kg({p:e,x:t}){let n=e.t,o=t.size>0?Math.min(100,t.done/t.size*100):0,a=t.state==="done"?"check":t.state==="failed"?"alert":t.kind==="up"?"tx-up":"tx-down",i=(l,c,d)=>r("button",{class:"pz-ib",title:c,"aria-label":c,onClick:d,children:r(ne,{n:l})}),s;if(t.state==="failed")s=r("span",{class:"err",children:Wg(e,t)});else if(t.state==="done")s=r(F,{children:[r("span",{children:e.b(t.size)}),r("span",{children:n(t.kind==="up"?"penzor.tx.uploaded":"penzor.tx.downloaded",{time:jg(e,t.finishedAt)})})]});else if(t.state==="queued")s=r(F,{children:[r("span",{children:e.b(t.size)}),r("span",{children:n("penzor.tx.queued")})]});else if(t.state==="paused")s=r(F,{children:[r("span",{children:e.b(t.size)}),r("span",{children:n("penzor.tx.paused")})]});else{let l=t.speed>0?(t.size-t.done)/t.speed:null;s=r(F,{children:[r("span",{children:pi(t.done,t.size,e.locale())}),t.speed>0&&r("span",{children:[e.b(t.speed),"/s"]}),l!=null&&l>=5&&r("span",{children:n("penzor.tx.left",{eta:jd(e,l)})})]})}return r("div",{class:`pz-txrow2${t.state==="done"?" is-done":t.state==="failed"?" is-fail":""}`,children:[r(ne,{n:a}),r("span",{class:"nm",title:t.name,children:t.name}),r("span",{class:"acts",children:[(t.state==="active"||t.state==="queued")&&i("pause",n("penzor.tx.pause"),()=>void e.txOp(t.id,"pause")),t.state==="paused"&&i("play",n("penzor.tx.resume"),()=>void e.txOp(t.id,"resume")),(t.state==="active"||t.state==="queued"||t.state==="paused")&&i("x",n("penzor.tx.cancel"),()=>void e.txOp(t.id,"cancel")),t.state==="failed"&&t.error!=="too_large"&&r("button",{class:"pz-link",onClick:()=>void e.txOp(t.id,"retry"),children:n("penzor.tx.retry")}),t.state==="failed"&&i("x",n("penzor.tx.remove"),()=>void e.txOp(t.id,"dismiss")),t.state==="done"&&(t.kind==="up"||t.localPath)&&r("button",{class:"pz-link",onClick:()=>e.locate(t),children:n(t.kind==="down"?"penzor.tx.reveal":"penzor.tx.locate")})]}),(t.state==="active"||t.state==="paused"||t.state==="queued")&&r(qn,{pct:o}),r("span",{class:"sub",children:s})]})}function Jg(e,t){let n=en(t.tangu);return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.app?.openSpace=="function"&&typeof n?.cloudInvoke=="function"&&!n.mobile&&Ln(n)}function Wd(e,t=window){if(!Jg(e,t))return null;let n=en(t.tangu),o=id(e);n.unitPublicEntry||n.cloudInvoke("penzor:device").then(p=>{let g=p?.name;typeof g=="string"&&g&&o.setDevice(g)}).catch(()=>{});let a=p=>g=>(Be(r(p,{p:o}),g),()=>{Be(null,g)});e.registerView({id:an.main,title:o.t("penzor.title"),icon:"cloud",workspaceSource:bi,mount:a(Fd)}),e.registerView({id:an.info,title:o.t("penzor.details"),icon:"page",mount:a(Hd)});let i=e.listCapabilities?.includes("tree")??!1,s=typeof e.app?.setSpaceProgress=="function"?"hard-drive":"archive",l=()=>({overview:o.t("penzor.overview"),drive:o.t("penzor.drive"),driveIcon:s,sync:o.t("penzor.ledger.sync"),ama:o.t("penzor.ledger.ama"),apps:o.t("penzor.ledger.apps"),exports:o.t("penzor.ledger.exports"),trash:o.t("penzor.trash"),items:p=>o.t("penzor.items",{n:p})}),c=()=>{if(!o.hasSync())return[];let p=o.syncState();return[{key:"sync-home",title:o.t("penzor.sync.title"),icon:"refresh",hint:rd(p,o.locale()),...No(p)?{unread:!0}:{}}]};e.registerListSource({id:bi,title:o.t("penzor.title"),search:!0,items:p=>{let g=[...c(),...Yc(o.snap(),l(),o.locale())],m=p?.query?.trim().toLowerCase()??"";if(m)return g.filter(_=>_.kind!=="folder"&&_.title.toLowerCase().includes(m)).map(({parent:_,...E})=>E);if(i)return g;let y=new Map(g.filter(_=>_.kind==="folder").map(_=>[_.key,_.title]));return g.filter(_=>_.kind!=="folder").map(({parent:_,...E})=>({...E,group:_?y.get(_):void 0}))},subscribe:p=>o.subscribe(p),activeKey:()=>ir(o.loc()),open:p=>o.go(p.key),actions:[{id:"refresh",label:o.t("penzor.act.refresh"),icon:"refresh",primary:!0,run:()=>{o.refresh(),e.app?.sync?.refresh?.().catch(()=>{})}}],itemMenu:p=>{if(p.key.startsWith("sync:")){let g=p.key.slice(5);return[{id:"open-sync",label:o.t("penzor.act.openSync"),icon:"gear",run:()=>o.openSync()},{id:"copy-name",label:o.t("penzor.act.copyName"),icon:"copy",run:()=>{navigator.clipboard?.writeText(g).then(()=>e.app?.notify?.(o.t("penzor.toast.copied")))}}]}return p.key==="trash"&&(o.snap()?.trash?.length??0)>0?[{id:"empty-trash",label:o.t("penzor.trash.emptyBtn"),icon:"trash",danger:!0,run:()=>{o.go("trash"),o.setConfirmEmpty(!0)}}]:[]}}),e.registerCommand?.({id:"open-penzor",title:()=>o.t("penzor.cmd.open"),keywords:"penzor cloud storage quota sync files trash drive upload \u84EC\u6D32\u4E91 \u4E91\u7A7A\u95F4 \u4E91\u76D8 \u7F51\u76D8 \u4E0A\u4F20 \u989D\u5EA6 \u540C\u6B65 \u56DE\u6536\u7AD9",run:()=>{e.app?.openSpace?.(on)}});let d=p=>{if(!(p.key!==ad||!p.newValue))try{let g=JSON.parse(p.newValue);g.page==="sync"&&o.hasSync()?e.app?.openSpace?.(on).then(()=>o.go("sync-home")):typeof g.vault=="string"&&g.vault&&o.focusVault(g.vault)}catch{}},f=(()=>{try{return!new URLSearchParams(t.location.search).get("window")}catch{return!1}})();if(f){t.addEventListener("storage",d);try{t.localStorage.setItem(vi,"1")}catch{}}let u=o.dispose;return o.dispose=()=>{if(f){t.removeEventListener("storage",d);try{t.localStorage.removeItem(vi)}catch{}}u()},o}var Yg=new TextEncoder,Ix=new TextDecoder("utf-8",{ignoreBOM:!0}),Gd=e=>Yg.encode(e);function Xd(e){let t="";for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}var Zg=50*1024*1024,Qg=new Set(["type","source","name","summary","githubRepoUrl","npmPackage","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"]);function eh(e){if(!e||typeof e!="object")return null;let t=e;if(t.id!==void 0&&(typeof t.id!="string"||!/^[a-zA-Z0-9_-]{1,128}$/.test(t.id))||!t.fields||typeof t.fields!="object"||Array.isArray(t.fields))return null;let n=new FormData,o=0;for(let[a,i]of Object.entries(t.fields)){if(!Qg.has(a)||typeof i!="string"||(o+=i.length,o>25e4)||t.id&&!["summary","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"].includes(a))return null;n.append(a,i)}if(t.zip!==void 0){if(!t.zip||typeof t.zip.name!="string"||!/\.zip$/i.test(t.zip.name)||!(t.zip.data instanceof Uint8Array)||!t.zip.data.byteLength||t.zip.data.byteLength>Zg)return null;n.append("zip",new Blob([new Uint8Array(t.zip.data)],{type:"application/zip"}),t.zip.name.replace(/[\\/]/g,"_").slice(-255))}return{path:t.id?`/market/mine/${t.id}/update`:"/market/submit",body:n}}function Kd(e){e.handle("cloud:marketSubmit",async(t,n)=>{if(!e.isTrustedSender(t))return{status:0,error:"untrusted"};let o=eh(n);if(!o)return{status:400,json:{error:"invalid_request"}};let a=await e.getCloud();if(!a.token)return{status:401,error:"not_signed_in"};let i=ln(a.base,o.path);if(!i)return{status:0,error:"no_cloud_url"};try{let s=await sn(a,i,{method:"POST",body:o.body,redirect:"error",signal:AbortSignal.timeout(12e4)});return{status:s.status,json:await s.json().catch(()=>null)}}catch(s){return{status:0,error:String(s?.message||s)}}})}async function Jd(e){if(!e.token)return"";try{let t=await sr(e,"POST","/api/auth/handoff",{},5e3);if(t.status===200&&typeof t.json?.code=="string"&&t.json.code)return`code=${encodeURIComponent(t.json.code)}`;if((t.status===404||t.status===405)&&!e.fetch)return`token=${encodeURIComponent(e.token)}`}catch{}return""}var th=["membership","credits","storefront"],nh=["monthly","quarterly","yearly"],rh=/^[A-Za-z0-9_-]{1,64}$/;function Yd(e){let t={status:0,error:"untrusted"},n={ok:!1,error:"untrusted"};e.handle("auth:openAccountCenter",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud(),l=s.base;if(!l)return{ok:!1};let c=i&&/^[a-z0-9-]+$/i.test(i)?`#${i}`:"",d=await Jd(s),f=`${l}/account${d?`?${d}`:""}${c}`;return await e.openExternal(f),{ok:!0}}),e.handle("auth:openPayCenter",async(a,i,s,l)=>{if(!e.isTrustedSender(a))return n;if(i!==void 0&&!th.includes(i))return{ok:!1,error:"invalid_tab"};if(s!==void 0&&(typeof s!="string"||!rh.test(s)))return{ok:!1,error:"invalid_plan"};if(l!==void 0&&!nh.includes(l))return{ok:!1,error:"invalid_period"};let c=(i??"membership")==="membership"&&s?`&plan=${encodeURIComponent(s)}${l?`&period=${l}`:""}`:"",d=await e.getCloud(),f=d.base;if(!f)return{ok:!1};let u=await Jd(d),p=`${f}/pay?tab=${i??"membership"}${c}${u?`&${u}`:""}&redirect=${encodeURIComponent(`${f}/account`)}`;return await e.openExternal(p),{ok:!0}}),e.handle("profile:publicOrigin",async a=>{if(!e.isTrustedSender(a))return n;let{base:i}=await e.getCloud();if(!i)return{ok:!1};try{let s=await fetch(`${i}/account`,{redirect:"manual",signal:AbortSignal.timeout(4e3)});s.body?.cancel().catch(()=>{});let l=s.status>=300&&s.status<400?s.headers.get("location"):null;return l&&/^https?:\/\//i.test(l)?{ok:!0,origin:new URL(l).origin}:{ok:!1}}catch{return{ok:!1}}});let o=()=>e.getCloud();e.handle("account:quota",async a=>{if(!e.isTrustedSender(a))return t;let i=await o();if(!i.token)return{status:401,json:null};try{return await sr(i,"GET","/api/token-quota/my",void 0,15e3)}catch(s){return{status:0,json:{detail:String(s?.message||s)}}}}),e.handle("account:useResetCard",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await o();if(!s.token)return{status:401,json:null};if(i!==void 0&&i!=="both")return{status:400,json:{error:"invalid_type",detail:`invalid reset card type: ${i}`}};let l=i??"both";try{return await sr(s,"POST","/api/token-quota/reset-card/use",{type:l},15e3)}catch(c){return{status:0,json:{detail:String(c?.message||c)}}}}),e.handle("account:bgConvert",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await o();if(!s.token)return{status:401,json:null};if(!Number.isInteger(i)||i<1||i>100)return{status:400,json:{error:"invalid_percent"}};try{return await sr(s,"POST","/api/token-quota/background/convert",{percent:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("account:bgAutoMain",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await o();if(!s.token)return{status:401,json:null};if(typeof i!="boolean")return{status:400,json:{error:"invalid_request"}};try{return await sr(s,"POST","/api/token-quota/background/auto-main",{enabled:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("feedback:submit",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud();if(!s.base||!s.token)return{ok:!1,error:"not-logged-in"};let l=(i?.description||"").trim();if(!l)return{ok:!1,error:"empty"};if(l.length>1e4)return{ok:!1,error:"description-too-long"};let c=[],d=!1;if(i?.sessionLogJson){let f=Gd(i.sessionLogJson);if(f.length>5*1024*1024)return{ok:!1,error:"attachment-too-large"};c.push({filename:i.sessionLogName||"tangu-session.json",mime_type:"application/json",size:f.length,data_base64:Xd(f)})}try{let f=await sn(s,`${s.base}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:l,attachments:c}),signal:AbortSignal.timeout(2e4)});if(!f.ok){let p=`HTTP ${f.status}`;try{p=(await f.json())?.detail||p}catch{}return{ok:!1,error:p}}return{ok:!0,id:(await f.json().catch(()=>({})))?.id??null,attachmentSkipped:d}}catch(f){return{ok:!1,error:f?.message||String(f)}}}),e.handle("cloud:fetch",async(a,i)=>{if(!e.isTrustedSender(a))return{status:0,error:"untrusted"};let s=i??{},l=typeof s.path=="string"?s.path:"",c=s.projectSource===void 0?null:s.projectSource;if(c!==null&&(typeof c!="string"||!/^[a-z0-9][a-z0-9-]{0,63}$/.test(c)))return{status:0,error:"bad_project_source"};let d=Math.min(12e4,Math.max(1e3,Number(s.timeoutMs)||15e3)),f=typeof s.method=="string"?s.method.toUpperCase():"GET";if(!/^(GET|POST|PUT|PATCH|DELETE)$/.test(f))return{status:0,error:"bad_method"};if(!l.startsWith("/"))return{status:0,error:"bad_path"};let u=await e.getCloud();if(!String(u.base||""))return{status:0,error:"no_cloud_url"};let p=ln(u.base,l);if(!p)return{status:0,error:"bad_path"};if(!u.token)return{status:401,error:"not_signed_in"};let g=s.body!==void 0&&f!=="GET"&&f!=="DELETE",m=new AbortController,y=setTimeout(()=>m.abort(),d);try{let _=await sn(u,p,{method:f,headers:{...g?{"Content-Type":"application/json"}:{},...c?{"X-Project-Source":c}:{}},body:g?JSON.stringify(s.body):void 0,signal:m.signal});return{status:_.status,json:await _.json().catch(()=>null)}}catch(_){return{status:0,error:String(_?.message||_)}}finally{clearTimeout(y)}}),Kd(e)}var Zd={sender:"web"},oh=new Set(["auth:openAccountCenter","auth:openPayCenter"]),Qd=(e,t)=>new URL(typeof e=="string"&&e?e:t.location.origin,t.location.href).origin;function ah(e,t=window){let n=new Map,o=[],a={async getCloud(){let c=await e.status().catch(()=>null);return{base:Qd(c?.cloudUrl,t),token:c?.loggedIn?"session":"",fetch:(d,f)=>e.request(d,f)}},handle:(c,d)=>{n.set(c,d)},async openExternal(c){let d=o.shift();d&&!d.closed?d.location.replace(c):t.open(c,"_blank","noopener,noreferrer")},isTrustedSender:()=>!0,log:c=>console.info("[forsion-extend]",c)};Yd(a);let i=Id(a,t),s=async(c,...d)=>{let f=n.get(c);if(!f)throw new Error(`No handler registered for '${c}'`);if(!oh.has(c))return f(Zd,...d);let u=t.open("","_blank");u&&(u.opener=null,o.push(u));try{return await f(Zd,...d)}finally{let p=u?o.indexOf(u):-1;p>=0&&(o.splice(p,1),u.close())}},l=t.tangu?.authStatus;return{...l?{authStatus:async()=>{let c=await l();return{...c,cloudUrl:c?.cloudUrl?Qd(c.cloudUrl,t):c?.cloudUrl}}}:{},cloudInvoke:s,cloudFetch:c=>s("cloud:fetch",c),openAccountCenter:c=>s("auth:openAccountCenter",c),openExternal:async c=>{/^https?:\/\//i.test(c)&&t.open(c,"_blank","noopener,noreferrer")},dispose:i.dispose}}function eu(e,t=window){let n=t.tangu;if(!n?.unitPage||!n.unitPublicEntry||typeof e?.account?.request!="function")return null;let{dispose:o,...a}=ah(e.account,t);return Ks(a),o}var tu;if(typeof ctx<"u"){let e=eu(ctx);Cc(ctx),Sc(ctx);let t=nl(ctx),n=jc(ctx),o=Wd(ctx);(t||n||o||e)&&(tu=()=>{t?.dispose(),n?.dispose(),o?.dispose(),e?.()})}return yu(ih);})();
|
|
619
1313
|
return __fxExtend.dispose;
|