diff --git a/src/ptf_tools/static/vuejs/special-issues/.gitignore b/src/ptf_tools/static/vuejs/special-issues/.gitignore
index 8ee54e8d343e466a213c8c30aa04be77126b170d..a52d4580802d6207fefa1c51fcd5e101e12ab7fd 100644
--- a/src/ptf_tools/static/vuejs/special-issues/.gitignore
+++ b/src/ptf_tools/static/vuejs/special-issues/.gitignore
@@ -9,7 +9,6 @@ lerna-debug.log*
 
 node_modules
 .DS_Store
-dist
 dist-ssr
 coverage
 *.local
diff --git a/src/ptf_tools/static/vuejs/special-issues/dist/index.css b/src/ptf_tools/static/vuejs/special-issues/dist/index.css
new file mode 100644
index 0000000000000000000000000000000000000000..ac35b629bdf1227f4e340d0c1f90d61eb462c193
--- /dev/null
+++ b/src/ptf_tools/static/vuejs/special-issues/dist/index.css
@@ -0,0 +1 @@
+:root{--default-padding: 4px;--default-margin: 5px;--body-bg: #f7f7f7;--blue-color: #4d75b0;--green-color: #1ba265;--label-text-color: #151234;--badge-background-color: #efefe7;--badge-text-color: #5550a3;--badge-font-size: 14px;--error-background-color: #f9fbc1;--error-text-color: #79082e;--border-radius: 3px}body{background:var(--body-bg)}textarea,input{width:500px;max-width:900px;border-radius:var(--border-radius)}input[type=file]{display:inline;width:130px;margin-top:var(--default-margin);margin-bottom:var(--default-margin);color:#0000}input[type=number]{max-width:100px;padding:3px 5px}label{display:inline-block;width:120px;color:var(--blue-color)}.column{float:left;margin-bottom:10px}.left{width:85%;min-width:800px}.right{margin-left:10px;margin-right:10px;width:10%}.form-row{min-width:180px;align-items:center;margin:var(--default-margin);margin-bottom:15px;padding:var(--default-padding);border-radius:5px}.form-box{box-shadow:#00000026 1px 1px 1px 1.8px}.textarea-label{display:inline}.textarea-label:after{content:""}.doi-label{width:50px;white-space:nowrap}.concluding-part{width:90%;margin-top:50px;margin-bottom:30px}.concluding-part button[aria-expanded=true] i.bi.bi-chevron-double-down:before{transition:transform .5s;transform:rotate(180deg)}.img-preview{margin-top:var(--default-margin);max-width:200px;max-height:200px;border-radius:4px}.canvas{border:1px solid;padding:10px;width:220px;height:240px;overflow:hidden;white-space:nowrap;font-size:11px}.btn-needs-save{background-color:var(--blue-color)}.btn-add-article{margin-top:20px;border-color:var(--green-color);color:var(--label-text-color);border-width:1px}.badge-pill{border-radius:var(--border-radius);margin-left:var(--default-margin);padding:8px;background-color:var(--badge-background-color);color:var(--badge-text-color);font-size:var(--badge-font-size);box-shadow:#00000026 1px 1px 1px 1.8px}.form-button{display:flex;justify-content:space-between}#id-save-text{background-color:var(--error-background-color);color:var(--error-text-color);font-size:16px}.cke_notifications_area{display:none}.headnote-form{margin:0 0 15px}
diff --git a/src/ptf_tools/static/vuejs/special-issues/dist/index.html b/src/ptf_tools/static/vuejs/special-issues/dist/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ac0fd27244e3772b9f368da53b6c2091fb19dd02
--- /dev/null
+++ b/src/ptf_tools/static/vuejs/special-issues/dist/index.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <link rel="icon" href="/favicon.ico">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Vite App</title>
+    <script type="module" crossorigin src="/index.js"></script>
+    <link rel="stylesheet" crossorigin href="/index.css">
+  </head>
+  <body>
+    <div id="app"></div>
+  </body>
+</html>
diff --git a/src/ptf_tools/static/vuejs/special-issues/dist/index.js b/src/ptf_tools/static/vuejs/special-issues/dist/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..731f14db6889fff7bbbd0613d292a6ae7c14dca1
--- /dev/null
+++ b/src/ptf_tools/static/vuejs/special-issues/dist/index.js
@@ -0,0 +1,27 @@
+(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();/**
+* @vue/shared v3.5.12
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function _s(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const K={},gt=[],Le=()=>{},xo=()=>!1,bn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ws=e=>e.startsWith("onUpdate:"),re=Object.assign,Ss=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Eo=Object.prototype.hasOwnProperty,k=(e,t)=>Eo.call(e,t),L=Array.isArray,bt=e=>yn(e)==="[object Map]",Vr=e=>yn(e)==="[object Set]",U=e=>typeof e=="function",Q=e=>typeof e=="string",Je=e=>typeof e=="symbol",X=e=>e!==null&&typeof e=="object",kr=e=>(X(e)||U(e))&&U(e.then)&&U(e.catch),qr=Object.prototype.toString,yn=e=>qr.call(e),vo=e=>yn(e).slice(8,-1),Kr=e=>yn(e)==="[object Object]",xs=e=>Q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Nt=_s(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_n=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},To=/-(\w)/g,Re=_n(e=>e.replace(To,(t,n)=>n?n.toUpperCase():"")),Ro=/\B([A-Z])/g,ze=_n(e=>e.replace(Ro,"-$1").toLowerCase()),wn=_n(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ln=_n(e=>e?`on${wn(e)}`:""),We=(e,t)=>!Object.is(e,t),nn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Wr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Zn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ys;const Sn=()=>Ys||(Ys=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Es(e){if(L(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=Q(s)?Po(s):Es(s);if(r)for(const i in r)t[i]=r[i]}return t}else if(Q(e)||X(e))return e}const Oo=/;(?![^(]*\))/g,Co=/:([^]+)/,Ao=/\/\*[^]*?\*\//g;function Po(e){const t={};return e.replace(Ao,"").split(Oo).forEach(n=>{if(n){const s=n.split(Co);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function vs(e){let t="";if(Q(e))t=e;else if(L(e))for(let n=0;n<e.length;n++){const s=vs(e[n]);s&&(t+=s+" ")}else if(X(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Io="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Fo=_s(Io);function Jr(e){return!!e||e===""}const zr=e=>!!(e&&e.__v_isRef===!0),Be=e=>Q(e)?e:e==null?"":L(e)||X(e)&&(e.toString===qr||!U(e.toString))?zr(e)?Be(e.value):JSON.stringify(e,Gr,2):String(e),Gr=(e,t)=>zr(t)?Gr(e,t.value):bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Bn(s,i)+" =>"]=r,n),{})}:Vr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Bn(n))}:Je(t)?Bn(t):X(t)&&!L(t)&&!Kr(t)?String(t):t,Bn=(e,t="")=>{var n;return Je(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
+* @vue/reactivity v3.5.12
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let Se;class Xr{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Se,!t&&Se&&(this.index=(Se.scopes||(Se.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Se;try{return Se=this,t()}finally{Se=n}}}on(){Se=this}off(){Se=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.scopes)for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0,this._active=!1}}}function No(e){return new Xr(e)}function Do(){return Se}let z;const Mn=new WeakSet;class Yr{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Se&&Se.active&&Se.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Mn.has(this)&&(Mn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Qr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Zs(this),ei(this);const t=z,n=Ce;z=this,Ce=!0;try{return this.fn()}finally{ti(this),z=t,Ce=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Os(t);this.deps=this.depsTail=void 0,Zs(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Mn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Qn(this)&&this.run()}get dirty(){return Qn(this)}}let Zr=0,Dt,Lt;function Qr(e,t=!1){if(e.flags|=8,t){e.next=Lt,Lt=e;return}e.next=Dt,Dt=e}function Ts(){Zr++}function Rs(){if(--Zr>0)return;if(Lt){let t=Lt;for(Lt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ei(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ti(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Os(s),Lo(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Qn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ni(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ni(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===jt))return;e.globalVersion=jt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Qn(e)){e.flags&=-3;return}const n=z,s=Ce;z=e,Ce=!0;try{ei(e);const r=e.fn(e._value);(t.version===0||We(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{z=n,Ce=s,ti(e),e.flags&=-3}}function Os(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Os(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Lo(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ce=!0;const si=[];function Ge(){si.push(Ce),Ce=!1}function Xe(){const e=si.pop();Ce=e===void 0?!0:e}function Zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=z;z=void 0;try{t()}finally{z=n}}}let jt=0;class Bo{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Cs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!z||!Ce||z===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==z)n=this.activeLink=new Bo(z,this),z.deps?(n.prevDep=z.depsTail,z.depsTail.nextDep=n,z.depsTail=n):z.deps=z.depsTail=n,ri(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=z.depsTail,n.nextDep=void 0,z.depsTail.nextDep=n,z.depsTail=n,z.deps===n&&(z.deps=s)}return n}trigger(t){this.version++,jt++,this.notify(t)}notify(t){Ts();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Rs()}}}function ri(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)ri(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const es=new WeakMap,ot=Symbol(""),ts=Symbol(""),Ht=Symbol("");function oe(e,t,n){if(Ce&&z){let s=es.get(e);s||es.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Cs),r.map=s,r.key=n),r.track()}}function He(e,t,n,s,r,i){const o=es.get(e);if(!o){jt++;return}const l=c=>{c&&c.trigger()};if(Ts(),t==="clear")o.forEach(l);else{const c=L(e),u=c&&xs(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,w)=>{(w==="length"||w===Ht||!Je(w)&&w>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),u&&l(o.get(Ht)),t){case"add":c?u&&l(o.get("length")):(l(o.get(ot)),bt(e)&&l(o.get(ts)));break;case"delete":c||(l(o.get(ot)),bt(e)&&l(o.get(ts)));break;case"set":bt(e)&&l(o.get(ot));break}}Rs()}function dt(e){const t=V(e);return t===e?t:(oe(t,"iterate",Ht),Te(e)?t:t.map(le))}function xn(e){return oe(e=V(e),"iterate",Ht),e}const Mo={__proto__:null,[Symbol.iterator](){return Un(this,Symbol.iterator,le)},concat(...e){return dt(this).concat(...e.map(t=>L(t)?dt(t):t))},entries(){return Un(this,"entries",e=>(e[1]=le(e[1]),e))},every(e,t){return Ue(this,"every",e,t,void 0,arguments)},filter(e,t){return Ue(this,"filter",e,t,n=>n.map(le),arguments)},find(e,t){return Ue(this,"find",e,t,le,arguments)},findIndex(e,t){return Ue(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ue(this,"findLast",e,t,le,arguments)},findLastIndex(e,t){return Ue(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ue(this,"forEach",e,t,void 0,arguments)},includes(...e){return jn(this,"includes",e)},indexOf(...e){return jn(this,"indexOf",e)},join(e){return dt(this).join(e)},lastIndexOf(...e){return jn(this,"lastIndexOf",e)},map(e,t){return Ue(this,"map",e,t,void 0,arguments)},pop(){return Ct(this,"pop")},push(...e){return Ct(this,"push",e)},reduce(e,...t){return Qs(this,"reduce",e,t)},reduceRight(e,...t){return Qs(this,"reduceRight",e,t)},shift(){return Ct(this,"shift")},some(e,t){return Ue(this,"some",e,t,void 0,arguments)},splice(...e){return Ct(this,"splice",e)},toReversed(){return dt(this).toReversed()},toSorted(e){return dt(this).toSorted(e)},toSpliced(...e){return dt(this).toSpliced(...e)},unshift(...e){return Ct(this,"unshift",e)},values(){return Un(this,"values",le)}};function Un(e,t,n){const s=xn(e),r=s[t]();return s!==e&&!Te(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const Uo=Array.prototype;function Ue(e,t,n,s,r,i){const o=xn(e),l=o!==e&&!Te(e),c=o[t];if(c!==Uo[t]){const h=c.apply(e,i);return l?le(h):h}let u=n;o!==e&&(l?u=function(h,w){return n.call(this,le(h),w,e)}:n.length>2&&(u=function(h,w){return n.call(this,h,w,e)}));const a=c.call(o,u,s);return l&&r?r(a):a}function Qs(e,t,n,s){const r=xn(e);let i=n;return r!==e&&(Te(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,le(l),c,e)}),r[t](i,...s)}function jn(e,t,n){const s=V(e);oe(s,"iterate",Ht);const r=s[t](...n);return(r===-1||r===!1)&&Fs(n[0])?(n[0]=V(n[0]),s[t](...n)):r}function Ct(e,t,n=[]){Ge(),Ts();const s=V(e)[t].apply(e,n);return Rs(),Xe(),s}const jo=_s("__proto__,__v_isRef,__isVue"),ii=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Je));function Ho(e){Je(e)||(e=String(e));const t=V(this);return oe(t,"has",e),t.hasOwnProperty(e)}class oi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Xo:ui:i?ai:ci).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=L(t);if(!r){let c;if(o&&(c=Mo[n]))return c;if(n==="hasOwnProperty")return Ho}const l=Reflect.get(t,n,ae(t)?t:s);return(Je(n)?ii.has(n):jo(n))||(r||oe(t,"get",n),i)?l:ae(l)?o&&xs(n)?l:l.value:X(l)?r?fi(l):Ps(l):l}}class li extends oi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=ct(i);if(!Te(s)&&!ct(s)&&(i=V(i),s=V(s)),!L(t)&&ae(i)&&!ae(s))return c?!1:(i.value=s,!0)}const o=L(t)&&xs(n)?Number(n)<t.length:k(t,n),l=Reflect.set(t,n,s,ae(t)?t:r);return t===V(r)&&(o?We(s,i)&&He(t,"set",n,s):He(t,"add",n,s)),l}deleteProperty(t,n){const s=k(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&He(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!Je(n)||!ii.has(n))&&oe(t,"has",n),s}ownKeys(t){return oe(t,"iterate",L(t)?"length":ot),Reflect.ownKeys(t)}}class $o extends oi{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Vo=new li,ko=new $o,qo=new li(!0);const ns=e=>e,Qt=e=>Reflect.getPrototypeOf(e);function Ko(e,t,n){return function(...s){const r=this.__v_raw,i=V(r),o=bt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),a=n?ns:t?ss:le;return!t&&oe(i,"iterate",c?ts:ot),{next(){const{value:h,done:w}=u.next();return w?{value:h,done:w}:{value:l?[a(h[0]),a(h[1])]:a(h),done:w}},[Symbol.iterator](){return this}}}}function en(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Wo(e,t){const n={get(r){const i=this.__v_raw,o=V(i),l=V(r);e||(We(r,l)&&oe(o,"get",r),oe(o,"get",l));const{has:c}=Qt(o),u=t?ns:e?ss:le;if(c.call(o,r))return u(i.get(r));if(c.call(o,l))return u(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&oe(V(r),"iterate",ot),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=V(i),l=V(r);return e||(We(r,l)&&oe(o,"has",r),oe(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=V(l),u=t?ns:e?ss:le;return!e&&oe(c,"iterate",ot),l.forEach((a,h)=>r.call(i,u(a),u(h),o))}};return re(n,e?{add:en("add"),set:en("set"),delete:en("delete"),clear:en("clear")}:{add(r){!t&&!Te(r)&&!ct(r)&&(r=V(r));const i=V(this);return Qt(i).has.call(i,r)||(i.add(r),He(i,"add",r,r)),this},set(r,i){!t&&!Te(i)&&!ct(i)&&(i=V(i));const o=V(this),{has:l,get:c}=Qt(o);let u=l.call(o,r);u||(r=V(r),u=l.call(o,r));const a=c.call(o,r);return o.set(r,i),u?We(i,a)&&He(o,"set",r,i):He(o,"add",r,i),this},delete(r){const i=V(this),{has:o,get:l}=Qt(i);let c=o.call(i,r);c||(r=V(r),c=o.call(i,r)),l&&l.call(i,r);const u=i.delete(r);return c&&He(i,"delete",r,void 0),u},clear(){const r=V(this),i=r.size!==0,o=r.clear();return i&&He(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Ko(r,e,t)}),n}function As(e,t){const n=Wo(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(k(n,r)&&r in s?n:s,r,i)}const Jo={get:As(!1,!1)},zo={get:As(!1,!0)},Go={get:As(!0,!1)};const ci=new WeakMap,ai=new WeakMap,ui=new WeakMap,Xo=new WeakMap;function Yo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Zo(e){return e.__v_skip||!Object.isExtensible(e)?0:Yo(vo(e))}function Ps(e){return ct(e)?e:Is(e,!1,Vo,Jo,ci)}function Qo(e){return Is(e,!1,qo,zo,ai)}function fi(e){return Is(e,!0,ko,Go,ui)}function Is(e,t,n,s,r){if(!X(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Zo(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function yt(e){return ct(e)?yt(e.__v_raw):!!(e&&e.__v_isReactive)}function ct(e){return!!(e&&e.__v_isReadonly)}function Te(e){return!!(e&&e.__v_isShallow)}function Fs(e){return e?!!e.__v_raw:!1}function V(e){const t=e&&e.__v_raw;return t?V(t):e}function di(e){return!k(e,"__v_skip")&&Object.isExtensible(e)&&Wr(e,"__v_skip",!0),e}const le=e=>X(e)?Ps(e):e,ss=e=>X(e)?fi(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function el(e){return tl(e,!1)}function tl(e,t){return ae(e)?e:new nl(e,t)}class nl{constructor(t,n){this.dep=new Cs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:V(t),this._value=n?t:le(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Te(t)||ct(t);t=s?t:V(t),We(t,n)&&(this._rawValue=t,this._value=s?t:le(t),this.dep.trigger())}}function sl(e){return ae(e)?e.value:e}const rl={get:(e,t,n)=>t==="__v_raw"?e:sl(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function hi(e){return yt(e)?e:new Proxy(e,rl)}class il{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Cs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=jt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&z!==this)return Qr(this,!0),!0}get value(){const t=this.dep.track();return ni(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ol(e,t,n=!1){let s,r;return U(e)?s=e:(s=e.get,r=e.set),new il(s,r,n)}const tn={},un=new WeakMap;let rt;function ll(e,t=!1,n=rt){if(n){let s=un.get(n);s||un.set(n,s=[]),s.push(e)}}function cl(e,t,n=K){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,u=A=>r?A:Te(A)||r===!1||r===0?$e(A,1):$e(A);let a,h,w,E,S=!1,T=!1;if(ae(e)?(h=()=>e.value,S=Te(e)):yt(e)?(h=()=>u(e),S=!0):L(e)?(T=!0,S=e.some(A=>yt(A)||Te(A)),h=()=>e.map(A=>{if(ae(A))return A.value;if(yt(A))return u(A);if(U(A))return c?c(A,2):A()})):U(e)?t?h=c?()=>c(e,2):e:h=()=>{if(w){Ge();try{w()}finally{Xe()}}const A=rt;rt=a;try{return c?c(e,3,[E]):e(E)}finally{rt=A}}:h=Le,t&&r){const A=h,H=r===!0?1/0:r;h=()=>$e(A(),H)}const O=Do(),I=()=>{a.stop(),O&&Ss(O.effects,a)};if(i&&t){const A=t;t=(...H)=>{A(...H),I()}}let B=T?new Array(e.length).fill(tn):tn;const j=A=>{if(!(!(a.flags&1)||!a.dirty&&!A))if(t){const H=a.run();if(r||S||(T?H.some((se,te)=>We(se,B[te])):We(H,B))){w&&w();const se=rt;rt=a;try{const te=[H,B===tn?void 0:T&&B[0]===tn?[]:B,E];c?c(t,3,te):t(...te),B=H}finally{rt=se}}}else a.run()};return l&&l(j),a=new Yr(h),a.scheduler=o?()=>o(j,!1):j,E=A=>ll(A,!1,a),w=a.onStop=()=>{const A=un.get(a);if(A){if(c)c(A,4);else for(const H of A)H();un.delete(a)}},t?s?j(!0):B=a.run():o?o(j.bind(null,!0),!0):a.run(),I.pause=a.pause.bind(a),I.resume=a.resume.bind(a),I.stop=I,I}function $e(e,t=1/0,n){if(t<=0||!X(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ae(e))$e(e.value,t,n);else if(L(e))for(let s=0;s<e.length;s++)$e(e[s],t,n);else if(Vr(e)||bt(e))e.forEach(s=>{$e(s,t,n)});else if(Kr(e)){for(const s in e)$e(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&$e(e[s],t,n)}return e}/**
+* @vue/runtime-core v3.5.12
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function Kt(e,t,n,s){try{return s?e(...s):e()}catch(r){En(r,t,n)}}function Me(e,t,n,s){if(U(e)){const r=Kt(e,t,n,s);return r&&kr(r)&&r.catch(i=>{En(i,t,n)}),r}if(L(e)){const r=[];for(let i=0;i<e.length;i++)r.push(Me(e[i],t,n,s));return r}}function En(e,t,n,s=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||K;if(t){let l=t.parent;const c=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const a=l.ec;if(a){for(let h=0;h<a.length;h++)if(a[h](e,c,u)===!1)return}l=l.parent}if(i){Ge(),Kt(i,null,10,[e,c,u]),Xe();return}}al(e,n,r,s,o)}function al(e,t,n,s=!0,r=!1){if(r)throw e;console.error(e)}const de=[];let Ne=-1;const _t=[];let qe=null,pt=0;const pi=Promise.resolve();let fn=null;function ul(e){const t=fn||pi;return e?t.then(this?e.bind(this):e):t}function fl(e){let t=Ne+1,n=de.length;for(;t<n;){const s=t+n>>>1,r=de[s],i=$t(r);i<e||i===e&&r.flags&2?t=s+1:n=s}return t}function Ns(e){if(!(e.flags&1)){const t=$t(e),n=de[de.length-1];!n||!(e.flags&2)&&t>=$t(n)?de.push(e):de.splice(fl(t),0,e),e.flags|=1,mi()}}function mi(){fn||(fn=pi.then(bi))}function dl(e){L(e)?_t.push(...e):qe&&e.id===-1?qe.splice(pt+1,0,e):e.flags&1||(_t.push(e),e.flags|=1),mi()}function er(e,t,n=Ne+1){for(;n<de.length;n++){const s=de[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;de.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function gi(e){if(_t.length){const t=[...new Set(_t)].sort((n,s)=>$t(n)-$t(s));if(_t.length=0,qe){qe.push(...t);return}for(qe=t,pt=0;pt<qe.length;pt++){const n=qe[pt];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}qe=null,pt=0}}const $t=e=>e.id==null?e.flags&2?-1:1/0:e.id;function bi(e){try{for(Ne=0;Ne<de.length;Ne++){const t=de[Ne];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Kt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ne<de.length;Ne++){const t=de[Ne];t&&(t.flags&=-2)}Ne=-1,de.length=0,gi(),fn=null,(de.length||_t.length)&&bi()}}let xe=null,yi=null;function dn(e){const t=xe;return xe=e,yi=e&&e.type.__scopeId||null,t}function hl(e,t=xe,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&ar(-1);const i=dn(t);let o;try{o=e(...r)}finally{dn(i),s._d&&ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function pl(e,t){if(xe===null)return e;const n=On(xe),s=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,o,l,c=K]=t[r];i&&(U(i)&&(i={mounted:i,updated:i}),i.deep&&$e(o),s.push({dir:i,instance:n,value:o,oldValue:void 0,arg:l,modifiers:c}))}return e}function nt(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let c=l.dir[s];c&&(Ge(),Me(c,n,8,[e.el,l,e,t]),Xe())}}const ml=Symbol("_vte"),gl=e=>e.__isTeleport;function Ds(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ds(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function _i(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function rs(e,t,n,s,r=!1){if(L(e)){e.forEach((S,T)=>rs(S,t&&(L(t)?t[T]:t),n,s,r));return}if(Bt(s)&&!r)return;const i=s.shapeFlag&4?On(s.component):s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,a=l.refs===K?l.refs={}:l.refs,h=l.setupState,w=V(h),E=h===K?()=>!1:S=>k(w,S);if(u!=null&&u!==c&&(Q(u)?(a[u]=null,E(u)&&(h[u]=null)):ae(u)&&(u.value=null)),U(c))Kt(c,l,12,[o,a]);else{const S=Q(c),T=ae(c);if(S||T){const O=()=>{if(e.f){const I=S?E(c)?h[c]:a[c]:c.value;r?L(I)&&Ss(I,i):L(I)?I.includes(i)||I.push(i):S?(a[c]=[i],E(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,E(c)&&(h[c]=o)):T&&(c.value=o,e.k&&(a[e.k]=o))};o?(O.id=-1,we(O,n)):O()}}}Sn().requestIdleCallback;Sn().cancelIdleCallback;const Bt=e=>!!e.type.__asyncLoader,wi=e=>e.type.__isKeepAlive;function bl(e,t){Si(e,"a",t)}function yl(e,t){Si(e,"da",t)}function Si(e,t,n=ce){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(vn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)wi(r.parent.vnode)&&_l(s,t,n,r),r=r.parent}}function _l(e,t,n,s){const r=vn(t,e,s,!0);xi(()=>{Ss(s[t],r)},n)}function vn(e,t,n=ce,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Ge();const l=Wt(n),c=Me(t,n,e,o);return l(),Xe(),c});return s?r.unshift(i):r.push(i),i}}const Ve=e=>(t,n=ce)=>{(!kt||e==="sp")&&vn(e,(...s)=>t(...s),n)},wl=Ve("bm"),Sl=Ve("m"),xl=Ve("bu"),El=Ve("u"),vl=Ve("bum"),xi=Ve("um"),Tl=Ve("sp"),Rl=Ve("rtg"),Ol=Ve("rtc");function Cl(e,t=ce){vn("ec",e,t)}const Al="components";function sn(e,t){return Il(Al,e,!0,t)||e}const Pl=Symbol.for("v-ndc");function Il(e,t,n=!0,s=!1){const r=xe||ce;if(r){const i=r.type;{const l=bc(i,!1);if(l&&(l===t||l===Re(t)||l===wn(Re(t))))return i}const o=tr(r[e]||i[e],t)||tr(r.appContext[e],t);return!o&&s?i:o}}function tr(e,t){return e&&(e[t]||e[Re(t)]||e[wn(Re(t))])}function is(e,t,n,s){let r;const i=n,o=L(e);if(o||Q(e)){const l=o&&yt(e);let c=!1;l&&(c=!Te(e),e=xn(e)),r=new Array(e.length);for(let u=0,a=e.length;u<a;u++)r[u]=t(c?le(e[u]):e[u],u,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,i)}else if(X(e))if(e[Symbol.iterator])r=Array.from(e,(l,c)=>t(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,u=l.length;c<u;c++){const a=l[c];r[c]=t(e[a],a,c,i)}}else r=[];return r}const os=e=>e?qi(e)?On(e):os(e.parent):null,Mt=re(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>os(e.parent),$root:e=>os(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ls(e),$forceUpdate:e=>e.f||(e.f=()=>{Ns(e.update)}),$nextTick:e=>e.n||(e.n=ul.bind(e.proxy)),$watch:e=>Ql.bind(e)}),Hn=(e,t)=>e!==K&&!e.__isScriptSetup&&k(e,t),Fl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const E=o[t];if(E!==void 0)switch(E){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Hn(s,t))return o[t]=1,s[t];if(r!==K&&k(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&k(u,t))return o[t]=3,i[t];if(n!==K&&k(n,t))return o[t]=4,n[t];ls&&(o[t]=0)}}const a=Mt[t];let h,w;if(a)return t==="$attrs"&&oe(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==K&&k(n,t))return o[t]=4,n[t];if(w=c.config.globalProperties,k(w,t))return w[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Hn(r,t)?(r[t]=n,!0):s!==K&&k(s,t)?(s[t]=n,!0):k(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==K&&k(e,o)||Hn(t,o)||(l=i[0])&&k(l,o)||k(s,o)||k(Mt,o)||k(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:k(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function nr(e){return L(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ls=!0;function Nl(e){const t=Ls(e),n=e.proxy,s=e.ctx;ls=!1,t.beforeCreate&&sr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:a,beforeMount:h,mounted:w,beforeUpdate:E,updated:S,activated:T,deactivated:O,beforeDestroy:I,beforeUnmount:B,destroyed:j,unmounted:A,render:H,renderTracked:se,renderTriggered:te,errorCaptured:ge,serverPrefetch:Ze,expose:Qe,inheritAttrs:vt,components:Gt,directives:Xt,filters:Nn}=t;if(u&&Dl(u,s,null),o)for(const G in o){const W=o[G];U(W)&&(s[G]=W.bind(n))}if(r){const G=r.call(n,n);X(G)&&(e.data=Ps(G))}if(ls=!0,i)for(const G in i){const W=i[G],et=U(W)?W.bind(n,n):U(W.get)?W.get.bind(n,n):Le,Yt=!U(W)&&U(W.set)?W.set.bind(n):Le,tt=_c({get:et,set:Yt});Object.defineProperty(s,G,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Pe=>tt.value=Pe})}if(l)for(const G in l)Ei(l[G],s,n,G);if(c){const G=U(c)?c.call(n):c;Reflect.ownKeys(G).forEach(W=>{Hl(W,G[W])})}a&&sr(a,e,"c");function ue(G,W){L(W)?W.forEach(et=>G(et.bind(n))):W&&G(W.bind(n))}if(ue(wl,h),ue(Sl,w),ue(xl,E),ue(El,S),ue(bl,T),ue(yl,O),ue(Cl,ge),ue(Ol,se),ue(Rl,te),ue(vl,B),ue(xi,A),ue(Tl,Ze),L(Qe))if(Qe.length){const G=e.exposed||(e.exposed={});Qe.forEach(W=>{Object.defineProperty(G,W,{get:()=>n[W],set:et=>n[W]=et})})}else e.exposed||(e.exposed={});H&&e.render===Le&&(e.render=H),vt!=null&&(e.inheritAttrs=vt),Gt&&(e.components=Gt),Xt&&(e.directives=Xt),Ze&&_i(e)}function Dl(e,t,n=Le){L(e)&&(e=cs(e));for(const s in e){const r=e[s];let i;X(r)?"default"in r?i=rn(r.from||s,r.default,!0):i=rn(r.from||s):i=rn(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function sr(e,t,n){Me(L(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ei(e,t,n,s){let r=s.includes(".")?Mi(n,s):()=>n[s];if(Q(e)){const i=t[e];U(i)&&Vn(r,i)}else if(U(e))Vn(r,e.bind(n));else if(X(e))if(L(e))e.forEach(i=>Ei(i,t,n,s));else{const i=U(e.handler)?e.handler.bind(n):t[e.handler];U(i)&&Vn(r,i,e)}}function Ls(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>hn(c,u,o,!0)),hn(c,t,o)),X(t)&&i.set(t,c),c}function hn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&hn(e,i,n,!0),r&&r.forEach(o=>hn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Ll[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ll={data:rr,props:ir,emits:ir,methods:It,computed:It,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:It,directives:It,watch:Ml,provide:rr,inject:Bl};function rr(e,t){return t?e?function(){return re(U(e)?e.call(this,this):e,U(t)?t.call(this,this):t)}:t:e}function Bl(e,t){return It(cs(e),cs(t))}function cs(e){if(L(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function fe(e,t){return e?[...new Set([].concat(e,t))]:t}function It(e,t){return e?re(Object.create(null),e,t):t}function ir(e,t){return e?L(e)&&L(t)?[...new Set([...e,...t])]:re(Object.create(null),nr(e),nr(t??{})):t}function Ml(e,t){if(!e)return t;if(!t)return e;const n=re(Object.create(null),e);for(const s in t)n[s]=fe(e[s],t[s]);return n}function vi(){return{app:null,config:{isNativeTag:xo,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ul=0;function jl(e,t){return function(s,r=null){U(s)||(s=re({},s)),r!=null&&!X(r)&&(r=null);const i=vi(),o=new WeakSet,l=[];let c=!1;const u=i.app={_uid:Ul++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:wc,get config(){return i.config},set config(a){},use(a,...h){return o.has(a)||(a&&U(a.install)?(o.add(a),a.install(u,...h)):U(a)&&(o.add(a),a(u,...h))),u},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),u},component(a,h){return h?(i.components[a]=h,u):i.components[a]},directive(a,h){return h?(i.directives[a]=h,u):i.directives[a]},mount(a,h,w){if(!c){const E=u._ceVNode||ne(s,r);return E.appContext=i,w===!0?w="svg":w===!1&&(w=void 0),h&&t?t(E,a):e(E,a,w),c=!0,u._container=a,a.__vue_app__=u,On(E.component)}},onUnmount(a){l.push(a)},unmount(){c&&(Me(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(a,h){return i.provides[a]=h,u},runWithContext(a){const h=wt;wt=u;try{return a()}finally{wt=h}}};return u}}let wt=null;function Hl(e,t){if(ce){let n=ce.provides;const s=ce.parent&&ce.parent.provides;s===n&&(n=ce.provides=Object.create(s)),n[e]=t}}function rn(e,t,n=!1){const s=ce||xe;if(s||wt){const r=wt?wt._context.provides:s?s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&U(t)?t.call(s&&s.proxy):t}}const Ti={},Ri=()=>Object.create(Ti),Oi=e=>Object.getPrototypeOf(e)===Ti;function $l(e,t,n,s=!1){const r={},i=Ri();e.propsDefaults=Object.create(null),Ci(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Qo(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Vl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=V(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h<a.length;h++){let w=a[h];if(Tn(e.emitsOptions,w))continue;const E=t[w];if(c)if(k(i,w))E!==i[w]&&(i[w]=E,u=!0);else{const S=Re(w);r[S]=as(c,l,S,E,e,!1)}else E!==i[w]&&(i[w]=E,u=!0)}}}else{Ci(e,t,r,i)&&(u=!0);let a;for(const h in l)(!t||!k(t,h)&&((a=ze(h))===h||!k(t,a)))&&(c?n&&(n[h]!==void 0||n[a]!==void 0)&&(r[h]=as(c,l,h,void 0,e,!0)):delete r[h]);if(i!==l)for(const h in i)(!t||!k(t,h))&&(delete i[h],u=!0)}u&&He(e.attrs,"set","")}function Ci(e,t,n,s){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let c in t){if(Nt(c))continue;const u=t[c];let a;r&&k(r,a=Re(c))?!i||!i.includes(a)?n[a]=u:(l||(l={}))[a]=u:Tn(e.emitsOptions,c)||(!(c in s)||u!==s[c])&&(s[c]=u,o=!0)}if(i){const c=V(n),u=l||K;for(let a=0;a<i.length;a++){const h=i[a];n[h]=as(r,c,h,u[h],e,!k(u,h))}}return o}function as(e,t,n,s,r,i){const o=e[n];if(o!=null){const l=k(o,"default");if(l&&s===void 0){const c=o.default;if(o.type!==Function&&!o.skipFactory&&U(c)){const{propsDefaults:u}=r;if(n in u)s=u[n];else{const a=Wt(r);s=u[n]=c.call(null,t),a()}}else s=c;r.ce&&r.ce._setProp(n,s)}o[0]&&(i&&!l?s=!1:o[1]&&(s===""||s===ze(n))&&(s=!0))}return s}const kl=new WeakMap;function Ai(e,t,n=!1){const s=n?kl:t.propsCache,r=s.get(e);if(r)return r;const i=e.props,o={},l=[];let c=!1;if(!U(e)){const a=h=>{c=!0;const[w,E]=Ai(h,t,!0);re(o,w),E&&l.push(...E)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return X(e)&&s.set(e,gt),gt;if(L(i))for(let a=0;a<i.length;a++){const h=Re(i[a]);or(h)&&(o[h]=K)}else if(i)for(const a in i){const h=Re(a);if(or(h)){const w=i[a],E=o[h]=L(w)||U(w)?{type:w}:re({},w),S=E.type;let T=!1,O=!0;if(L(S))for(let I=0;I<S.length;++I){const B=S[I],j=U(B)&&B.name;if(j==="Boolean"){T=!0;break}else j==="String"&&(O=!1)}else T=U(S)&&S.name==="Boolean";E[0]=T,E[1]=O,(T||k(E,"default"))&&l.push(h)}}const u=[o,l];return X(e)&&s.set(e,u),u}function or(e){return e[0]!=="$"&&!Nt(e)}const Pi=e=>e[0]==="_"||e==="$stable",Bs=e=>L(e)?e.map(De):[De(e)],ql=(e,t,n)=>{if(t._n)return t;const s=hl((...r)=>Bs(t(...r)),n);return s._c=!1,s},Ii=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Pi(r))continue;const i=e[r];if(U(i))t[r]=ql(r,i,s);else if(i!=null){const o=Bs(i);t[r]=()=>o}}},Fi=(e,t)=>{const n=Bs(t);e.slots.default=()=>n},Ni=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Kl=(e,t,n)=>{const s=e.slots=Ri();if(e.vnode.shapeFlag&32){const r=t._;r?(Ni(s,t,n),n&&Wr(s,"_",r,!0)):Ii(t,s)}else t&&Fi(e,t)},Wl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=K;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Ni(r,t,n):(i=!t.$stable,Ii(t,r)),o=t}else t&&(Fi(e,t),o={default:1});if(i)for(const l in r)!Pi(l)&&o[l]==null&&delete r[l]},we=oc;function Jl(e){return zl(e)}function zl(e,t){const n=Sn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:a,parentNode:h,nextSibling:w,setScopeId:E=Le,insertStaticContent:S}=e,T=(f,d,m,y=null,g=null,b=null,R=void 0,v=null,x=!!d.dynamicChildren)=>{if(f===d)return;f&&!At(f,d)&&(y=Zt(f),Pe(f,g,b,!0),f=null),d.patchFlag===-2&&(x=!1,d.dynamicChildren=null);const{type:_,ref:F,shapeFlag:C}=d;switch(_){case Rn:O(f,d,m,y);break;case at:I(f,d,m,y);break;case qn:f==null&&B(d,m,y,R);break;case he:Gt(f,d,m,y,g,b,R,v,x);break;default:C&1?H(f,d,m,y,g,b,R,v,x):C&6?Xt(f,d,m,y,g,b,R,v,x):(C&64||C&128)&&_.process(f,d,m,y,g,b,R,v,x,Rt)}F!=null&&g&&rs(F,f&&f.ref,b,d||f,!d)},O=(f,d,m,y)=>{if(f==null)s(d.el=l(d.children),m,y);else{const g=d.el=f.el;d.children!==f.children&&u(g,d.children)}},I=(f,d,m,y)=>{f==null?s(d.el=c(d.children||""),m,y):d.el=f.el},B=(f,d,m,y)=>{[f.el,f.anchor]=S(f.children,d,m,y,f.el,f.anchor)},j=({el:f,anchor:d},m,y)=>{let g;for(;f&&f!==d;)g=w(f),s(f,m,y),f=g;s(d,m,y)},A=({el:f,anchor:d})=>{let m;for(;f&&f!==d;)m=w(f),r(f),f=m;r(d)},H=(f,d,m,y,g,b,R,v,x)=>{d.type==="svg"?R="svg":d.type==="math"&&(R="mathml"),f==null?se(d,m,y,g,b,R,v,x):Ze(f,d,g,b,R,v,x)},se=(f,d,m,y,g,b,R,v)=>{let x,_;const{props:F,shapeFlag:C,transition:P,dirs:D}=f;if(x=f.el=o(f.type,b,F&&F.is,F),C&8?a(x,f.children):C&16&&ge(f.children,x,null,y,g,$n(f,b),R,v),D&&nt(f,null,y,"created"),te(x,f,f.scopeId,R,y),F){for(const J in F)J!=="value"&&!Nt(J)&&i(x,J,null,F[J],b,y);"value"in F&&i(x,"value",null,F.value,b),(_=F.onVnodeBeforeMount)&&Fe(_,y,f)}D&&nt(f,null,y,"beforeMount");const $=Gl(g,P);$&&P.beforeEnter(x),s(x,d,m),((_=F&&F.onVnodeMounted)||$||D)&&we(()=>{_&&Fe(_,y,f),$&&P.enter(x),D&&nt(f,null,y,"mounted")},g)},te=(f,d,m,y,g)=>{if(m&&E(f,m),y)for(let b=0;b<y.length;b++)E(f,y[b]);if(g){let b=g.subTree;if(d===b||ji(b.type)&&(b.ssContent===d||b.ssFallback===d)){const R=g.vnode;te(f,R,R.scopeId,R.slotScopeIds,g.parent)}}},ge=(f,d,m,y,g,b,R,v,x=0)=>{for(let _=x;_<f.length;_++){const F=f[_]=v?Ke(f[_]):De(f[_]);T(null,F,d,m,y,g,b,R,v)}},Ze=(f,d,m,y,g,b,R)=>{const v=d.el=f.el;let{patchFlag:x,dynamicChildren:_,dirs:F}=d;x|=f.patchFlag&16;const C=f.props||K,P=d.props||K;let D;if(m&&st(m,!1),(D=P.onVnodeBeforeUpdate)&&Fe(D,m,d,f),F&&nt(d,f,m,"beforeUpdate"),m&&st(m,!0),(C.innerHTML&&P.innerHTML==null||C.textContent&&P.textContent==null)&&a(v,""),_?Qe(f.dynamicChildren,_,v,m,y,$n(d,g),b):R||W(f,d,v,null,m,y,$n(d,g),b,!1),x>0){if(x&16)vt(v,C,P,m,g);else if(x&2&&C.class!==P.class&&i(v,"class",null,P.class,g),x&4&&i(v,"style",C.style,P.style,g),x&8){const $=d.dynamicProps;for(let J=0;J<$.length;J++){const q=$[J],be=C[q],ie=P[q];(ie!==be||q==="value")&&i(v,q,be,ie,g,m)}}x&1&&f.children!==d.children&&a(v,d.children)}else!R&&_==null&&vt(v,C,P,m,g);((D=P.onVnodeUpdated)||F)&&we(()=>{D&&Fe(D,m,d,f),F&&nt(d,f,m,"updated")},y)},Qe=(f,d,m,y,g,b,R)=>{for(let v=0;v<d.length;v++){const x=f[v],_=d[v],F=x.el&&(x.type===he||!At(x,_)||x.shapeFlag&70)?h(x.el):m;T(x,_,F,null,y,g,b,R,!0)}},vt=(f,d,m,y,g)=>{if(d!==m){if(d!==K)for(const b in d)!Nt(b)&&!(b in m)&&i(f,b,d[b],null,g,y);for(const b in m){if(Nt(b))continue;const R=m[b],v=d[b];R!==v&&b!=="value"&&i(f,b,v,R,g,y)}"value"in m&&i(f,"value",d.value,m.value,g)}},Gt=(f,d,m,y,g,b,R,v,x)=>{const _=d.el=f?f.el:l(""),F=d.anchor=f?f.anchor:l("");let{patchFlag:C,dynamicChildren:P,slotScopeIds:D}=d;D&&(v=v?v.concat(D):D),f==null?(s(_,m,y),s(F,m,y),ge(d.children||[],m,F,g,b,R,v,x)):C>0&&C&64&&P&&f.dynamicChildren?(Qe(f.dynamicChildren,P,m,g,b,R,v),(d.key!=null||g&&d===g.subTree)&&Di(f,d,!0)):W(f,d,m,F,g,b,R,v,x)},Xt=(f,d,m,y,g,b,R,v,x)=>{d.slotScopeIds=v,f==null?d.shapeFlag&512?g.ctx.activate(d,m,y,R,x):Nn(d,m,y,g,b,R,x):qs(f,d,x)},Nn=(f,d,m,y,g,b,R)=>{const v=f.component=dc(f,y,g);if(wi(f)&&(v.ctx.renderer=Rt),hc(v,!1,R),v.asyncDep){if(g&&g.registerDep(v,ue,R),!f.el){const x=v.subTree=ne(at);I(null,x,d,m)}}else ue(v,f,d,m,g,b,R)},qs=(f,d,m)=>{const y=d.component=f.component;if(rc(f,d,m))if(y.asyncDep&&!y.asyncResolved){G(y,d,m);return}else y.next=d,y.update();else d.el=f.el,y.vnode=d},ue=(f,d,m,y,g,b,R)=>{const v=()=>{if(f.isMounted){let{next:C,bu:P,u:D,parent:$,vnode:J}=f;{const ye=Li(f);if(ye){C&&(C.el=J.el,G(f,C,R)),ye.asyncDep.then(()=>{f.isUnmounted||v()});return}}let q=C,be;st(f,!1),C?(C.el=J.el,G(f,C,R)):C=J,P&&nn(P),(be=C.props&&C.props.onVnodeBeforeUpdate)&&Fe(be,$,C,J),st(f,!0);const ie=kn(f),Oe=f.subTree;f.subTree=ie,T(Oe,ie,h(Oe.el),Zt(Oe),f,g,b),C.el=ie.el,q===null&&ic(f,ie.el),D&&we(D,g),(be=C.props&&C.props.onVnodeUpdated)&&we(()=>Fe(be,$,C,J),g)}else{let C;const{el:P,props:D}=d,{bm:$,m:J,parent:q,root:be,type:ie}=f,Oe=Bt(d);if(st(f,!1),$&&nn($),!Oe&&(C=D&&D.onVnodeBeforeMount)&&Fe(C,q,d),st(f,!0),P&&zs){const ye=()=>{f.subTree=kn(f),zs(P,f.subTree,f,g,null)};Oe&&ie.__asyncHydrate?ie.__asyncHydrate(P,f,ye):ye()}else{be.ce&&be.ce._injectChildStyle(ie);const ye=f.subTree=kn(f);T(null,ye,m,y,f,g,b),d.el=ye.el}if(J&&we(J,g),!Oe&&(C=D&&D.onVnodeMounted)){const ye=d;we(()=>Fe(C,q,ye),g)}(d.shapeFlag&256||q&&Bt(q.vnode)&&q.vnode.shapeFlag&256)&&f.a&&we(f.a,g),f.isMounted=!0,d=m=y=null}};f.scope.on();const x=f.effect=new Yr(v);f.scope.off();const _=f.update=x.run.bind(x),F=f.job=x.runIfDirty.bind(x);F.i=f,F.id=f.uid,x.scheduler=()=>Ns(F),st(f,!0),_()},G=(f,d,m)=>{d.component=f;const y=f.vnode.props;f.vnode=d,f.next=null,Vl(f,d.props,y,m),Wl(f,d.children,m),Ge(),er(f),Xe()},W=(f,d,m,y,g,b,R,v,x=!1)=>{const _=f&&f.children,F=f?f.shapeFlag:0,C=d.children,{patchFlag:P,shapeFlag:D}=d;if(P>0){if(P&128){Yt(_,C,m,y,g,b,R,v,x);return}else if(P&256){et(_,C,m,y,g,b,R,v,x);return}}D&8?(F&16&&Tt(_,g,b),C!==_&&a(m,C)):F&16?D&16?Yt(_,C,m,y,g,b,R,v,x):Tt(_,g,b,!0):(F&8&&a(m,""),D&16&&ge(C,m,y,g,b,R,v,x))},et=(f,d,m,y,g,b,R,v,x)=>{f=f||gt,d=d||gt;const _=f.length,F=d.length,C=Math.min(_,F);let P;for(P=0;P<C;P++){const D=d[P]=x?Ke(d[P]):De(d[P]);T(f[P],D,m,null,g,b,R,v,x)}_>F?Tt(f,g,b,!0,!1,C):ge(d,m,y,g,b,R,v,x,C)},Yt=(f,d,m,y,g,b,R,v,x)=>{let _=0;const F=d.length;let C=f.length-1,P=F-1;for(;_<=C&&_<=P;){const D=f[_],$=d[_]=x?Ke(d[_]):De(d[_]);if(At(D,$))T(D,$,m,null,g,b,R,v,x);else break;_++}for(;_<=C&&_<=P;){const D=f[C],$=d[P]=x?Ke(d[P]):De(d[P]);if(At(D,$))T(D,$,m,null,g,b,R,v,x);else break;C--,P--}if(_>C){if(_<=P){const D=P+1,$=D<F?d[D].el:y;for(;_<=P;)T(null,d[_]=x?Ke(d[_]):De(d[_]),m,$,g,b,R,v,x),_++}}else if(_>P)for(;_<=C;)Pe(f[_],g,b,!0),_++;else{const D=_,$=_,J=new Map;for(_=$;_<=P;_++){const _e=d[_]=x?Ke(d[_]):De(d[_]);_e.key!=null&&J.set(_e.key,_)}let q,be=0;const ie=P-$+1;let Oe=!1,ye=0;const Ot=new Array(ie);for(_=0;_<ie;_++)Ot[_]=0;for(_=D;_<=C;_++){const _e=f[_];if(be>=ie){Pe(_e,g,b,!0);continue}let Ie;if(_e.key!=null)Ie=J.get(_e.key);else for(q=$;q<=P;q++)if(Ot[q-$]===0&&At(_e,d[q])){Ie=q;break}Ie===void 0?Pe(_e,g,b,!0):(Ot[Ie-$]=_+1,Ie>=ye?ye=Ie:Oe=!0,T(_e,d[Ie],m,null,g,b,R,v,x),be++)}const Gs=Oe?Xl(Ot):gt;for(q=Gs.length-1,_=ie-1;_>=0;_--){const _e=$+_,Ie=d[_e],Xs=_e+1<F?d[_e+1].el:y;Ot[_]===0?T(null,Ie,m,Xs,g,b,R,v,x):Oe&&(q<0||_!==Gs[q]?tt(Ie,m,Xs,2):q--)}}},tt=(f,d,m,y,g=null)=>{const{el:b,type:R,transition:v,children:x,shapeFlag:_}=f;if(_&6){tt(f.component.subTree,d,m,y);return}if(_&128){f.suspense.move(d,m,y);return}if(_&64){R.move(f,d,m,Rt);return}if(R===he){s(b,d,m);for(let C=0;C<x.length;C++)tt(x[C],d,m,y);s(f.anchor,d,m);return}if(R===qn){j(f,d,m);return}if(y!==2&&_&1&&v)if(y===0)v.beforeEnter(b),s(b,d,m),we(()=>v.enter(b),g);else{const{leave:C,delayLeave:P,afterLeave:D}=v,$=()=>s(b,d,m),J=()=>{C(b,()=>{$(),D&&D()})};P?P(b,$,J):J()}else s(b,d,m)},Pe=(f,d,m,y=!1,g=!1)=>{const{type:b,props:R,ref:v,children:x,dynamicChildren:_,shapeFlag:F,patchFlag:C,dirs:P,cacheIndex:D}=f;if(C===-2&&(g=!1),v!=null&&rs(v,null,m,f,!0),D!=null&&(d.renderCache[D]=void 0),F&256){d.ctx.deactivate(f);return}const $=F&1&&P,J=!Bt(f);let q;if(J&&(q=R&&R.onVnodeBeforeUnmount)&&Fe(q,d,f),F&6)So(f.component,m,y);else{if(F&128){f.suspense.unmount(m,y);return}$&&nt(f,null,d,"beforeUnmount"),F&64?f.type.remove(f,d,m,Rt,y):_&&!_.hasOnce&&(b!==he||C>0&&C&64)?Tt(_,d,m,!1,!0):(b===he&&C&384||!g&&F&16)&&Tt(x,d,m),y&&Ks(f)}(J&&(q=R&&R.onVnodeUnmounted)||$)&&we(()=>{q&&Fe(q,d,f),$&&nt(f,null,d,"unmounted")},m)},Ks=f=>{const{type:d,el:m,anchor:y,transition:g}=f;if(d===he){wo(m,y);return}if(d===qn){A(f);return}const b=()=>{r(m),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(f.shapeFlag&1&&g&&!g.persisted){const{leave:R,delayLeave:v}=g,x=()=>R(m,b);v?v(f.el,b,x):x()}else b()},wo=(f,d)=>{let m;for(;f!==d;)m=w(f),r(f),f=m;r(d)},So=(f,d,m)=>{const{bum:y,scope:g,job:b,subTree:R,um:v,m:x,a:_}=f;lr(x),lr(_),y&&nn(y),g.stop(),b&&(b.flags|=8,Pe(R,f,d,m)),v&&we(v,d),we(()=>{f.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},Tt=(f,d,m,y=!1,g=!1,b=0)=>{for(let R=b;R<f.length;R++)Pe(f[R],d,m,y,g)},Zt=f=>{if(f.shapeFlag&6)return Zt(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const d=w(f.anchor||f.el),m=d&&d[ml];return m?w(m):d};let Dn=!1;const Ws=(f,d,m)=>{f==null?d._vnode&&Pe(d._vnode,null,null,!0):T(d._vnode||null,f,d,null,null,null,m),d._vnode=f,Dn||(Dn=!0,er(),gi(),Dn=!1)},Rt={p:T,um:Pe,m:tt,r:Ks,mt:Nn,mc:ge,pc:W,pbc:Qe,n:Zt,o:e};let Js,zs;return{render:Ws,hydrate:Js,createApp:jl(Ws,Js)}}function $n({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function st({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Gl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Di(e,t,n=!1){const s=e.children,r=t.children;if(L(s)&&L(r))for(let i=0;i<s.length;i++){const o=s[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=Ke(r[i]),l.el=o.el),!n&&l.patchFlag!==-2&&Di(o,l)),l.type===Rn&&(l.el=o.el)}}function Xl(e){const t=e.slice(),n=[0];let s,r,i,o,l;const c=e.length;for(s=0;s<c;s++){const u=e[s];if(u!==0){if(r=n[n.length-1],e[r]<u){t[s]=r,n.push(s);continue}for(i=0,o=n.length-1;i<o;)l=i+o>>1,e[n[l]]<u?i=l+1:o=l;u<e[n[i]]&&(i>0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Li(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Li(t)}function lr(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Yl=Symbol.for("v-scx"),Zl=()=>rn(Yl);function Vn(e,t,n){return Bi(e,t,n)}function Bi(e,t,n=K){const{immediate:s,deep:r,flush:i,once:o}=n,l=re({},n),c=t&&s||!t&&i!=="post";let u;if(kt){if(i==="sync"){const E=Zl();u=E.__watcherHandles||(E.__watcherHandles=[])}else if(!c){const E=()=>{};return E.stop=Le,E.resume=Le,E.pause=Le,E}}const a=ce;l.call=(E,S,T)=>Me(E,a,S,T);let h=!1;i==="post"?l.scheduler=E=>{we(E,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(E,S)=>{S?E():Ns(E)}),l.augmentJob=E=>{t&&(E.flags|=4),h&&(E.flags|=2,a&&(E.id=a.uid,E.i=a))};const w=cl(e,t,l);return kt&&(u?u.push(w):c&&w()),w}function Ql(e,t,n){const s=this.proxy,r=Q(e)?e.includes(".")?Mi(s,e):()=>s[e]:e.bind(s,s);let i;U(t)?i=t:(i=t.handler,n=t);const o=Wt(this),l=Bi(r,i.bind(s),n);return o(),l}function Mi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}const ec=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Re(t)}Modifiers`]||e[`${ze(t)}Modifiers`];function tc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||K;let r=n;const i=t.startsWith("update:"),o=i&&ec(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>Q(a)?a.trim():a)),o.number&&(r=n.map(Zn)));let l,c=s[l=Ln(t)]||s[l=Ln(Re(t))];!c&&i&&(c=s[l=Ln(ze(t))]),c&&Me(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Me(u,e,6,r)}}function Ui(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!U(e)){const c=u=>{const a=Ui(u,t,!0);a&&(l=!0,re(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(X(e)&&s.set(e,null),null):(L(i)?i.forEach(c=>o[c]=null):re(o,i),X(e)&&s.set(e,o),o)}function Tn(e,t){return!e||!bn(t)?!1:(t=t.slice(2).replace(/Once$/,""),k(e,t[0].toLowerCase()+t.slice(1))||k(e,ze(t))||k(e,t))}function kn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:a,props:h,data:w,setupState:E,ctx:S,inheritAttrs:T}=e,O=dn(e);let I,B;try{if(n.shapeFlag&4){const A=r||s,H=A;I=De(u.call(H,A,a,h,E,w,S)),B=l}else{const A=t;I=De(A.length>1?A(h,{attrs:l,slots:o,emit:c}):A(h,null)),B=t.props?l:nc(l)}}catch(A){Ut.length=0,En(A,e,1),I=ne(at)}let j=I;if(B&&T!==!1){const A=Object.keys(B),{shapeFlag:H}=j;A.length&&H&7&&(i&&A.some(ws)&&(B=sc(B,i)),j=St(j,B,!1,!0))}return n.dirs&&(j=St(j,null,!1,!0),j.dirs=j.dirs?j.dirs.concat(n.dirs):n.dirs),n.transition&&Ds(j,n.transition),I=j,dn(O),I}const nc=e=>{let t;for(const n in e)(n==="class"||n==="style"||bn(n))&&((t||(t={}))[n]=e[n]);return t},sc=(e,t)=>{const n={};for(const s in e)(!ws(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function rc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?cr(s,o,u):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;h<a.length;h++){const w=a[h];if(o[w]!==s[w]&&!Tn(u,w))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:s===o?!1:s?o?cr(s,o,u):!0:!!o;return!1}function cr(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const i=s[r];if(t[i]!==e[i]&&!Tn(n,i))return!0}return!1}function ic({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const ji=e=>e.__isSuspense;function oc(e,t){t&&t.pendingBranch?L(e)?t.effects.push(...e):t.effects.push(e):dl(e)}const he=Symbol.for("v-fgt"),Rn=Symbol.for("v-txt"),at=Symbol.for("v-cmt"),qn=Symbol.for("v-stc"),Ut=[];let Ee=null;function Z(e=!1){Ut.push(Ee=e?null:[])}function lc(){Ut.pop(),Ee=Ut[Ut.length-1]||null}let Vt=1;function ar(e){Vt+=e,e<0&&Ee&&(Ee.hasOnce=!0)}function Hi(e){return e.dynamicChildren=Vt>0?Ee||gt:null,lc(),Vt>0&&Ee&&Ee.push(e),e}function ee(e,t,n,s,r,i){return Hi(N(e,t,n,s,r,i,!0))}function $i(e,t,n,s,r){return Hi(ne(e,t,n,s,r,!0))}function Vi(e){return e?e.__v_isVNode===!0:!1}function At(e,t){return e.type===t.type&&e.key===t.key}const ki=({key:e})=>e??null,on=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Q(e)||ae(e)||U(e)?{i:xe,r:e,k:t,f:!!n}:e:null);function N(e,t=null,n=null,s=0,r=null,i=e===he?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ki(t),ref:t&&on(t),scopeId:yi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:xe};return l?(Us(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=Q(n)?8:16),Vt>0&&!o&&Ee&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ee.push(c),c}const ne=cc;function cc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Pl)&&(e=at),Vi(e)){const l=St(e,t,!0);return n&&Us(l,n),Vt>0&&!i&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag=-2,l}if(yc(e)&&(e=e.__vccOpts),t){t=ac(t);let{class:l,style:c}=t;l&&!Q(l)&&(t.class=vs(l)),X(c)&&(Fs(c)&&!L(c)&&(c=re({},c)),t.style=Es(c))}const o=Q(e)?1:ji(e)?128:gl(e)?64:X(e)?4:U(e)?2:0;return N(e,t,n,s,r,o,i,!0)}function ac(e){return e?Fs(e)||Oi(e)?re({},e):e:null}function St(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?ft(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ki(u),ref:t&&t.ref?n&&i?L(i)?i.concat(on(t)):[i,on(t)]:on(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&St(e.ssContent),ssFallback:e.ssFallback&&St(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Ds(a,c.clone(a)),a}function Ft(e=" ",t=0){return ne(Rn,null,e,t)}function Ms(e="",t=!1){return t?(Z(),$i(at,null,e)):ne(at,null,e)}function De(e){return e==null||typeof e=="boolean"?ne(at):L(e)?ne(he,null,e.slice()):Vi(e)?Ke(e):ne(Rn,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:St(e)}function Us(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(L(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Us(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Oi(t)?t._ctx=xe:r===3&&xe&&(xe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else U(t)?(t={default:t,_ctx:xe},n=32):(t=String(t),s&64?(n=16,t=[Ft(t)]):n=8);e.children=t,e.shapeFlag|=n}function ft(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=vs([t.class,s.class]));else if(r==="style")t.style=Es([t.style,s.style]);else if(bn(r)){const i=t[r],o=s[r];o&&i!==o&&!(L(i)&&i.includes(o))&&(t[r]=i?[].concat(i,o):o)}else r!==""&&(t[r]=s[r])}return t}function Fe(e,t,n,s=null){Me(e,t,7,[n,s])}const uc=vi();let fc=0;function dc(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||uc,i={uid:fc++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Xr(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ai(s,r),emitsOptions:Ui(s,r),emit:null,emitted:null,propsDefaults:K,inheritAttrs:s.inheritAttrs,ctx:K,data:K,props:K,attrs:K,slots:K,refs:K,setupState:K,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=tc.bind(null,i),e.ce&&e.ce(i),i}let ce=null,pn,us;{const e=Sn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};pn=t("__VUE_INSTANCE_SETTERS__",n=>ce=n),us=t("__VUE_SSR_SETTERS__",n=>kt=n)}const Wt=e=>{const t=ce;return pn(e),e.scope.on(),()=>{e.scope.off(),pn(t)}},ur=()=>{ce&&ce.scope.off(),pn(null)};function qi(e){return e.vnode.shapeFlag&4}let kt=!1;function hc(e,t=!1,n=!1){t&&us(t);const{props:s,children:r}=e.vnode,i=qi(e);$l(e,s,i,t),Kl(e,r,n);const o=i?pc(e,t):void 0;return t&&us(!1),o}function pc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Fl);const{setup:s}=n;if(s){Ge();const r=e.setupContext=s.length>1?gc(e):null,i=Wt(e),o=Kt(s,e,0,[e.props,r]),l=kr(o);if(Xe(),i(),(l||e.sp)&&!Bt(e)&&_i(e),l){if(o.then(ur,ur),t)return o.then(c=>{fr(e,c,t)}).catch(c=>{En(c,e,0)});e.asyncDep=o}else fr(e,o,t)}else Ki(e,t)}function fr(e,t,n){U(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:X(t)&&(e.setupState=hi(t)),Ki(e,n)}let dr;function Ki(e,t,n){const s=e.type;if(!e.render){if(!t&&dr&&!s.render){const r=s.template||Ls(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=re(re({isCustomElement:i,delimiters:l},o),c);s.render=dr(r,u)}}e.render=s.render||Le}{const r=Wt(e);Ge();try{Nl(e)}finally{Xe(),r()}}}const mc={get(e,t){return oe(e,"get",""),e[t]}};function gc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,mc),slots:e.slots,emit:e.emit,expose:t}}function On(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(hi(di(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}})):e.proxy}function bc(e,t=!0){return U(e)?e.displayName||e.name:e.name||t&&e.__name}function yc(e){return U(e)&&"__vccOpts"in e}const _c=(e,t)=>ol(e,t,kt),wc="3.5.12";/**
+* @vue/runtime-dom v3.5.12
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let fs;const hr=typeof window<"u"&&window.trustedTypes;if(hr)try{fs=hr.createPolicy("vue",{createHTML:e=>e})}catch{}const Wi=fs?e=>fs.createHTML(e):e=>e,Sc="http://www.w3.org/2000/svg",xc="http://www.w3.org/1998/Math/MathML",je=typeof document<"u"?document:null,pr=je&&je.createElement("template"),Ec={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?je.createElementNS(Sc,e):t==="mathml"?je.createElementNS(xc,e):n?je.createElement(e,{is:n}):je.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>je.createTextNode(e),createComment:e=>je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>je.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{pr.innerHTML=Wi(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const l=pr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},vc=Symbol("_vtc");function Tc(e,t,n){const s=e[vc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const mr=Symbol("_vod"),Rc=Symbol("_vsh"),Oc=Symbol(""),Cc=/(^|;)\s*display\s*:/;function Ac(e,t,n){const s=e.style,r=Q(n);let i=!1;if(n&&!r){if(t)if(Q(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&ln(s,l,"")}else for(const o in t)n[o]==null&&ln(s,o,"");for(const o in n)o==="display"&&(i=!0),ln(s,o,n[o])}else if(r){if(t!==n){const o=s[Oc];o&&(n+=";"+o),s.cssText=n,i=Cc.test(n)}}else t&&e.removeAttribute("style");mr in e&&(e[mr]=i?s.display:"",e[Rc]&&(s.display="none"))}const gr=/\s*!important$/;function ln(e,t,n){if(L(n))n.forEach(s=>ln(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Pc(e,t);gr.test(n)?e.setProperty(ze(s),n.replace(gr,""),"important"):e[s]=n}}const br=["Webkit","Moz","ms"],Kn={};function Pc(e,t){const n=Kn[t];if(n)return n;let s=Re(t);if(s!=="filter"&&s in e)return Kn[t]=s;s=wn(s);for(let r=0;r<br.length;r++){const i=br[r]+s;if(i in e)return Kn[t]=i}return t}const yr="http://www.w3.org/1999/xlink";function _r(e,t,n,s,r,i=Fo(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(yr,t.slice(6,t.length)):e.setAttributeNS(yr,t,n):n==null||i&&!Jr(n)?e.removeAttribute(t):e.setAttribute(t,i?"":Je(n)?String(n):n)}function wr(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Wi(n):n);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const l=i==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(l!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let o=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=Jr(n):n==null&&l==="string"?(n="",o=!0):l==="number"&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(r||t)}function mt(e,t,n,s){e.addEventListener(t,n,s)}function Ic(e,t,n,s){e.removeEventListener(t,n,s)}const Sr=Symbol("_vei");function Fc(e,t,n,s,r=null){const i=e[Sr]||(e[Sr]={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Nc(t);if(s){const u=i[t]=Bc(s,r);mt(e,l,u,c)}else o&&(Ic(e,l,o,c),i[t]=void 0)}}const xr=/(?:Once|Passive|Capture)$/;function Nc(e){let t;if(xr.test(e)){t={};let s;for(;s=e.match(xr);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):ze(e.slice(2)),t]}let Wn=0;const Dc=Promise.resolve(),Lc=()=>Wn||(Dc.then(()=>Wn=0),Wn=Date.now());function Bc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Me(Mc(s,n.value),t,5,[s])};return n.value=e,n.attached=Lc(),n}function Mc(e,t){if(L(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Er=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Uc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Tc(e,s,o):t==="style"?Ac(e,n,s):bn(t)?ws(t)||Fc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):jc(e,t,s,o))?(wr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&_r(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Q(s))?wr(e,Re(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),_r(e,t,s,o))};function jc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Er(t)&&U(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Er(t)&&Q(n)?!1:t in e}const vr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return L(t)?n=>nn(t,n):t};function Hc(e){e.target.composing=!0}function Tr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Jn=Symbol("_assign"),$c={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Jn]=vr(r);const i=s||r.props&&r.props.type==="number";mt(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Zn(l)),e[Jn](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",Hc),mt(e,"compositionend",Tr),mt(e,"change",Tr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[Jn]=vr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Zn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Vc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},kc=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=ze(r.key);if(t.some(o=>o===i||Vc[o]===i))return e(r)})},qc=re({patchProp:Uc},Ec);let Rr;function Kc(){return Rr||(Rr=Jl(qc))}const Wc=(...e)=>{const t=Kc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=zc(s);if(!r)return;const i=t._component;!U(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Jc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function Jc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function zc(e){return Q(e)?document.querySelector(e):e}var Gc=!1;/*!
+ * pinia v2.2.6
+ * (c) 2024 Eduardo San Martin Morote
+ * @license MIT
+ */const Xc=Symbol();var Or;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Or||(Or={}));function Yc(){const e=No(!0),t=e.run(()=>el({}));let n=[],s=[];const r=di({install(i){r._a=i,i.provide(Xc,r),i.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(i){return!this._a&&!Gc?s.push(i):n.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Ye=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Zc={props:{label:{type:String,default:""},modelValue:{type:["String","Number"],default:""},error:{type:String,default:""}}},Qc={class:"form-row"},ea=["placeholder","value"];function ta(e,t,n,s,r,i){return Z(),ee("div",Qc,[N("label",null,Be(n.label),1),N("input",ft(e.$attrs,{placeholder:n.label,value:n.modelValue,onInput:t[0]||(t[0]=o=>e.$emit("update:modelValue",o.target.value))}),null,16,ea)])}const Ji=Ye(Zc,[["render",ta]]),na={props:{label:{type:String,default:""},modelValue:{type:[String,Number],default:""},error:{type:String,default:""},options:{type:Array,required:!0}}},sa={class:"form-row"},ra={key:0},ia=["value"],oa=["value","selected"];function la(e,t,n,s,r,i){return Z(),ee("div",sa,[n.label?(Z(),ee("label",ra,Be(n.label),1)):Ms("",!0),N("select",ft({value:n.modelValue},{...e.$attrs,onChange:o=>{e.$emit("update:modelValue",o.target.value)}}),[(Z(!0),ee(he,null,is(n.options,o=>(Z(),ee("option",{value:o,key:o,selected:o===n.modelValue},Be(o),9,oa))),128))],16,ia)])}const ca=Ye(na,[["render",la]]),aa={props:{label:{type:String,default:""},modelValue:{type:"String",default:""}}},ua={key:0},fa=["value","placeholder"];function da(e,t,n,s,r,i){return Z(),ee(he,null,[n.label?(Z(),ee("label",ua,Be(n.label),1)):Ms("",!0),N("textarea",ft({value:n.modelValue},e.$attrs,{placeholder:n.label,onInput:t[0]||(t[0]=o=>e.$emit("update:modelValue",e.$special.target.value))}),`
+        `,16,fa)],64)}const ha=Ye(aa,[["render",da]]);function pa(e,t,n){let s=document.getElementById("image-article-"+e);s.src=t,s.name=n,document.getElementById("image-label-"+e).innerHTML=n}const ma={props:{label:{type:String,default:""},modelValue:{type:"file",default:""},error:{type:String,default:""},ImageIndex:0},methods:{loadImage(e,t){t.target.files[0].type.match("^image")&&(console.log("file",t.target.files[0]),console.log("illustration",this.IssueIllustration),this.IssueIllustration=t.target.files[0],console.log("illustration",this.IssueIllustration),this.readImage(e,t.target.files[0]))},readImage(e,t){let n=new FileReader;n.onload=function(){pa(e,n.result,t.name)},n.readAsDataURL(t)}}},ga={class:"form-row"},ba=["id","placeholder","value"],ya={class:"canvas"},_a=["id"];function wa(e,t,n,s,r,i){return Z(),ee(he,null,[N("div",ga,[N("label",null,Be(n.label),1),N("input",ft({id:"image-input-"+n.ImageIndex},e.$attrs,{placeholder:n.label,value:n.modelValue,onChange:t[0]||(t[0]=o=>i.loadImage(n.ImageIndex,o)),onInput:t[1]||(t[1]=o=>e.$emit("update:modelValue",o.target.value)),accept:".jpg, .jpeg, .png"}),null,16,ba)]),N("div",ya,[N("img",{id:"image-article-"+n.ImageIndex,class:"img-preview"},null,8,_a)])],64)}const Sa=Ye(ma,[["render",wa]]),xa={props:{label:{type:String,default:""},modelValue:{type:Boolean,default:!1},error:{type:String,default:""},checked:{type:Boolean,default:!1}},methods:{updateInput(e){console.log("dans le update"),console.log("avant",this.checked),this.$emit("update:modelValue",e.target.checked),console.log("après",this.checked)}}},Ea={class:"form-row"},va=["checked"];function Ta(e,t,n,s,r,i){return Z(),ee("div",Ea,[N("label",null,Be(n.label),1),N("input",ft(e.$attrs,{type:"checkbox",checked:n.modelValue,onChange:t[0]||(t[0]=(...o)=>i.updateInput&&i.updateInput(...o))}),null,16,va)])}const Ra=Ye(xa,[["render",Ta]]),Oa={props:{label:{type:String,default:""},modelValue:{type:["String","Number"],default:""},error:{type:String,default:""}}},Ca={class:"form-row"},Aa=["placeholder","value"];function Pa(e,t,n,s,r,i){return Z(),ee("div",Ca,[N("label",null,Be(n.label),1),N("textarea",ft(e.$attrs,{placeholder:n.label,value:n.modelValue,onInput:t[0]||(t[0]=o=>e.$emit("update:modelValue",o.target.value))}),null,16,Aa)])}const Ia=Ye(Oa,[["render",Pa]]),Fa={components:{BaseInput:Ji,BaseCheckbox:Ra,BaseTextArea:Ia},props:{label:{type:String,default:""},index:{type:Number,default:0,required:!0},contrib:{type:Object,required:!0,validator:function(e){return["firstname","lastname"].every(n=>e.hasOwnPropertiy(n))}},modelValue:{type:Object,required:!0,validator:function(e){return["firstname","lastname","contributing"].every(n=>e.hasOwnPropertiy(n))}},error:{type:String,default:""}}},Na={class:"form-row form-box"},Da={key:0},La={class:"sc-form-row"};function Ba(e,t,n,s,r,i){const o=sn("BaseInput");return Z(),ee("div",Na,[n.label?(Z(),ee("label",Da,Be(n.contrib.last_name)+" "+Be(n.contrib.first_name),1)):Ms("",!0),N("div",La,[ne(o,{modelValue:n.contrib.first_name,"onUpdate:modelValue":t[0]||(t[0]=l=>n.contrib.first_name=l),label:"Firstname:",type:"text"},null,8,["modelValue"]),ne(o,{modelValue:n.contrib.last_name,"onUpdate:modelValue":t[1]||(t[1]=l=>n.contrib.last_name=l),label:"Lastname:",type:"text"},null,8,["modelValue"]),ne(o,{modelValue:n.contrib.orcid,"onUpdate:modelValue":t[2]||(t[2]=l=>n.contrib.orcid=l),label:"ORCID:",type:"text"},null,8,["modelValue"]),N("button",{id:"iconBin",onClick:t[3]||(t[3]=l=>e.$emit("remove-contributor")),title:"Delete this image",style:{"margin-left":"95%"}},t[4]||(t[4]=[N("i",{class:"bi bi-trash"},null,-1)]))])])}const Ma=Ye(Fa,[["render",Ba]]);function zi(e,t){return function(){return e.apply(t,arguments)}}const{toString:Ua}=Object.prototype,{getPrototypeOf:js}=Object,Cn=(e=>t=>{const n=Ua.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ae=e=>(e=e.toLowerCase(),t=>Cn(t)===e),An=e=>t=>typeof t===e,{isArray:xt}=Array,qt=An("undefined");function ja(e){return e!==null&&!qt(e)&&e.constructor!==null&&!qt(e.constructor)&&ve(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Gi=Ae("ArrayBuffer");function Ha(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Gi(e.buffer),t}const $a=An("string"),ve=An("function"),Xi=An("number"),Pn=e=>e!==null&&typeof e=="object",Va=e=>e===!0||e===!1,cn=e=>{if(Cn(e)!=="object")return!1;const t=js(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},ka=Ae("Date"),qa=Ae("File"),Ka=Ae("Blob"),Wa=Ae("FileList"),Ja=e=>Pn(e)&&ve(e.pipe),za=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||ve(e.append)&&((t=Cn(e))==="formdata"||t==="object"&&ve(e.toString)&&e.toString()==="[object FormData]"))},Ga=Ae("URLSearchParams"),[Xa,Ya,Za,Qa]=["ReadableStream","Request","Response","Headers"].map(Ae),eu=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Jt(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let s,r;if(typeof e!="object"&&(e=[e]),xt(e))for(s=0,r=e.length;s<r;s++)t.call(null,e[s],s,e);else{const i=n?Object.getOwnPropertyNames(e):Object.keys(e),o=i.length;let l;for(s=0;s<o;s++)l=i[s],t.call(null,e[l],l,e)}}function Yi(e,t){t=t.toLowerCase();const n=Object.keys(e);let s=n.length,r;for(;s-- >0;)if(r=n[s],t===r.toLowerCase())return r;return null}const it=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Zi=e=>!qt(e)&&e!==it;function ds(){const{caseless:e}=Zi(this)&&this||{},t={},n=(s,r)=>{const i=e&&Yi(t,r)||r;cn(t[i])&&cn(s)?t[i]=ds(t[i],s):cn(s)?t[i]=ds({},s):xt(s)?t[i]=s.slice():t[i]=s};for(let s=0,r=arguments.length;s<r;s++)arguments[s]&&Jt(arguments[s],n);return t}const tu=(e,t,n,{allOwnKeys:s}={})=>(Jt(t,(r,i)=>{n&&ve(r)?e[i]=zi(r,n):e[i]=r},{allOwnKeys:s}),e),nu=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),su=(e,t,n,s)=>{e.prototype=Object.create(t.prototype,s),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},ru=(e,t,n,s)=>{let r,i,o;const l={};if(t=t||{},e==null)return t;do{for(r=Object.getOwnPropertyNames(e),i=r.length;i-- >0;)o=r[i],(!s||s(o,e,t))&&!l[o]&&(t[o]=e[o],l[o]=!0);e=n!==!1&&js(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},iu=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const s=e.indexOf(t,n);return s!==-1&&s===n},ou=e=>{if(!e)return null;if(xt(e))return e;let t=e.length;if(!Xi(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},lu=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&js(Uint8Array)),cu=(e,t)=>{const s=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=s.next())&&!r.done;){const i=r.value;t.call(e,i[0],i[1])}},au=(e,t)=>{let n;const s=[];for(;(n=e.exec(t))!==null;)s.push(n);return s},uu=Ae("HTMLFormElement"),fu=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,r){return s.toUpperCase()+r}),Cr=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),du=Ae("RegExp"),Qi=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),s={};Jt(n,(r,i)=>{let o;(o=t(r,i,e))!==!1&&(s[i]=o||r)}),Object.defineProperties(e,s)},hu=e=>{Qi(e,(t,n)=>{if(ve(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const s=e[n];if(ve(s)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},pu=(e,t)=>{const n={},s=r=>{r.forEach(i=>{n[i]=!0})};return xt(e)?s(e):s(String(e).split(t)),n},mu=()=>{},gu=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,zn="abcdefghijklmnopqrstuvwxyz",Ar="0123456789",eo={DIGIT:Ar,ALPHA:zn,ALPHA_DIGIT:zn+zn.toUpperCase()+Ar},bu=(e=16,t=eo.ALPHA_DIGIT)=>{let n="";const{length:s}=t;for(;e--;)n+=t[Math.random()*s|0];return n};function yu(e){return!!(e&&ve(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const _u=e=>{const t=new Array(10),n=(s,r)=>{if(Pn(s)){if(t.indexOf(s)>=0)return;if(!("toJSON"in s)){t[r]=s;const i=xt(s)?[]:{};return Jt(s,(o,l)=>{const c=n(o,r+1);!qt(c)&&(i[l]=c)}),t[r]=void 0,i}}return s};return n(e,0)},wu=Ae("AsyncFunction"),Su=e=>e&&(Pn(e)||ve(e))&&ve(e.then)&&ve(e.catch),to=((e,t)=>e?setImmediate:t?((n,s)=>(it.addEventListener("message",({source:r,data:i})=>{r===it&&i===n&&s.length&&s.shift()()},!1),r=>{s.push(r),it.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",ve(it.postMessage)),xu=typeof queueMicrotask<"u"?queueMicrotask.bind(it):typeof process<"u"&&process.nextTick||to,p={isArray:xt,isArrayBuffer:Gi,isBuffer:ja,isFormData:za,isArrayBufferView:Ha,isString:$a,isNumber:Xi,isBoolean:Va,isObject:Pn,isPlainObject:cn,isReadableStream:Xa,isRequest:Ya,isResponse:Za,isHeaders:Qa,isUndefined:qt,isDate:ka,isFile:qa,isBlob:Ka,isRegExp:du,isFunction:ve,isStream:Ja,isURLSearchParams:Ga,isTypedArray:lu,isFileList:Wa,forEach:Jt,merge:ds,extend:tu,trim:eu,stripBOM:nu,inherits:su,toFlatObject:ru,kindOf:Cn,kindOfTest:Ae,endsWith:iu,toArray:ou,forEachEntry:cu,matchAll:au,isHTMLForm:uu,hasOwnProperty:Cr,hasOwnProp:Cr,reduceDescriptors:Qi,freezeMethods:hu,toObjectSet:pu,toCamelCase:fu,noop:mu,toFiniteNumber:gu,findKey:Yi,global:it,isContextDefined:Zi,ALPHABET:eo,generateString:bu,isSpecCompliantForm:yu,toJSONObject:_u,isAsyncFn:wu,isThenable:Su,setImmediate:to,asap:xu};function M(e,t,n,s,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),s&&(this.request=s),r&&(this.response=r,this.status=r.status?r.status:null)}p.inherits(M,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:p.toJSONObject(this.config),code:this.code,status:this.status}}});const no=M.prototype,so={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{so[e]={value:e}});Object.defineProperties(M,so);Object.defineProperty(no,"isAxiosError",{value:!0});M.from=(e,t,n,s,r,i)=>{const o=Object.create(no);return p.toFlatObject(e,o,function(c){return c!==Error.prototype},l=>l!=="isAxiosError"),M.call(o,e.message,t,n,s,r),o.cause=e,o.name=e.name,i&&Object.assign(o,i),o};const Eu=null;function hs(e){return p.isPlainObject(e)||p.isArray(e)}function ro(e){return p.endsWith(e,"[]")?e.slice(0,-2):e}function Pr(e,t,n){return e?e.concat(t).map(function(r,i){return r=ro(r),!n&&i?"["+r+"]":r}).join(n?".":""):t}function vu(e){return p.isArray(e)&&!e.some(hs)}const Tu=p.toFlatObject(p,{},null,function(t){return/^is[A-Z]/.test(t)});function In(e,t,n){if(!p.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=p.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(T,O){return!p.isUndefined(O[T])});const s=n.metaTokens,r=n.visitor||a,i=n.dots,o=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&p.isSpecCompliantForm(t);if(!p.isFunction(r))throw new TypeError("visitor must be a function");function u(S){if(S===null)return"";if(p.isDate(S))return S.toISOString();if(!c&&p.isBlob(S))throw new M("Blob is not supported. Use a Buffer instead.");return p.isArrayBuffer(S)||p.isTypedArray(S)?c&&typeof Blob=="function"?new Blob([S]):Buffer.from(S):S}function a(S,T,O){let I=S;if(S&&!O&&typeof S=="object"){if(p.endsWith(T,"{}"))T=s?T:T.slice(0,-2),S=JSON.stringify(S);else if(p.isArray(S)&&vu(S)||(p.isFileList(S)||p.endsWith(T,"[]"))&&(I=p.toArray(S)))return T=ro(T),I.forEach(function(j,A){!(p.isUndefined(j)||j===null)&&t.append(o===!0?Pr([T],A,i):o===null?T:T+"[]",u(j))}),!1}return hs(S)?!0:(t.append(Pr(O,T,i),u(S)),!1)}const h=[],w=Object.assign(Tu,{defaultVisitor:a,convertValue:u,isVisitable:hs});function E(S,T){if(!p.isUndefined(S)){if(h.indexOf(S)!==-1)throw Error("Circular reference detected in "+T.join("."));h.push(S),p.forEach(S,function(I,B){(!(p.isUndefined(I)||I===null)&&r.call(t,I,p.isString(B)?B.trim():B,T,w))===!0&&E(I,T?T.concat(B):[B])}),h.pop()}}if(!p.isObject(e))throw new TypeError("data must be an object");return E(e),t}function Ir(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(s){return t[s]})}function Hs(e,t){this._pairs=[],e&&In(e,this,t)}const io=Hs.prototype;io.append=function(t,n){this._pairs.push([t,n])};io.toString=function(t){const n=t?function(s){return t.call(this,s,Ir)}:Ir;return this._pairs.map(function(r){return n(r[0])+"="+n(r[1])},"").join("&")};function Ru(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function oo(e,t,n){if(!t)return e;const s=n&&n.encode||Ru,r=n&&n.serialize;let i;if(r?i=r(t,n):i=p.isURLSearchParams(t)?t.toString():new Hs(t,n).toString(s),i){const o=e.indexOf("#");o!==-1&&(e=e.slice(0,o)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class Fr{constructor(){this.handlers=[]}use(t,n,s){return this.handlers.push({fulfilled:t,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){p.forEach(this.handlers,function(s){s!==null&&t(s)})}}const lo={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ou=typeof URLSearchParams<"u"?URLSearchParams:Hs,Cu=typeof FormData<"u"?FormData:null,Au=typeof Blob<"u"?Blob:null,Pu={isBrowser:!0,classes:{URLSearchParams:Ou,FormData:Cu,Blob:Au},protocols:["http","https","file","blob","url","data"]},$s=typeof window<"u"&&typeof document<"u",ps=typeof navigator=="object"&&navigator||void 0,Iu=$s&&(!ps||["ReactNative","NativeScript","NS"].indexOf(ps.product)<0),Fu=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Nu=$s&&window.location.href||"http://localhost",Du=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:$s,hasStandardBrowserEnv:Iu,hasStandardBrowserWebWorkerEnv:Fu,navigator:ps,origin:Nu},Symbol.toStringTag,{value:"Module"})),pe={...Du,...Pu};function Lu(e,t){return In(e,new pe.classes.URLSearchParams,Object.assign({visitor:function(n,s,r,i){return pe.isNode&&p.isBuffer(n)?(this.append(s,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}function Bu(e){return p.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function Mu(e){const t={},n=Object.keys(e);let s;const r=n.length;let i;for(s=0;s<r;s++)i=n[s],t[i]=e[i];return t}function co(e){function t(n,s,r,i){let o=n[i++];if(o==="__proto__")return!0;const l=Number.isFinite(+o),c=i>=n.length;return o=!o&&p.isArray(r)?r.length:o,c?(p.hasOwnProp(r,o)?r[o]=[r[o],s]:r[o]=s,!l):((!r[o]||!p.isObject(r[o]))&&(r[o]=[]),t(n,s,r[o],i)&&p.isArray(r[o])&&(r[o]=Mu(r[o])),!l)}if(p.isFormData(e)&&p.isFunction(e.entries)){const n={};return p.forEachEntry(e,(s,r)=>{t(Bu(s),r,n,0)}),n}return null}function Uu(e,t,n){if(p.isString(e))try{return(t||JSON.parse)(e),p.trim(e)}catch(s){if(s.name!=="SyntaxError")throw s}return(0,JSON.stringify)(e)}const zt={transitional:lo,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const s=n.getContentType()||"",r=s.indexOf("application/json")>-1,i=p.isObject(t);if(i&&p.isHTMLForm(t)&&(t=new FormData(t)),p.isFormData(t))return r?JSON.stringify(co(t)):t;if(p.isArrayBuffer(t)||p.isBuffer(t)||p.isStream(t)||p.isFile(t)||p.isBlob(t)||p.isReadableStream(t))return t;if(p.isArrayBufferView(t))return t.buffer;if(p.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(i){if(s.indexOf("application/x-www-form-urlencoded")>-1)return Lu(t,this.formSerializer).toString();if((l=p.isFileList(t))||s.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return In(l?{"files[]":t}:t,c&&new c,this.formSerializer)}}return i||r?(n.setContentType("application/json",!1),Uu(t)):t}],transformResponse:[function(t){const n=this.transitional||zt.transitional,s=n&&n.forcedJSONParsing,r=this.responseType==="json";if(p.isResponse(t)||p.isReadableStream(t))return t;if(t&&p.isString(t)&&(s&&!this.responseType||r)){const o=!(n&&n.silentJSONParsing)&&r;try{return JSON.parse(t)}catch(l){if(o)throw l.name==="SyntaxError"?M.from(l,M.ERR_BAD_RESPONSE,this,null,this.response):l}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pe.classes.FormData,Blob:pe.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};p.forEach(["delete","get","head","post","put","patch"],e=>{zt.headers[e]={}});const ju=p.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Hu=e=>{const t={};let n,s,r;return e&&e.split(`
+`).forEach(function(o){r=o.indexOf(":"),n=o.substring(0,r).trim().toLowerCase(),s=o.substring(r+1).trim(),!(!n||t[n]&&ju[n])&&(n==="set-cookie"?t[n]?t[n].push(s):t[n]=[s]:t[n]=t[n]?t[n]+", "+s:s)}),t},Nr=Symbol("internals");function Pt(e){return e&&String(e).trim().toLowerCase()}function an(e){return e===!1||e==null?e:p.isArray(e)?e.map(an):String(e)}function $u(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(e);)t[s[1]]=s[2];return t}const Vu=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Gn(e,t,n,s,r){if(p.isFunction(s))return s.call(this,t,n);if(r&&(t=n),!!p.isString(t)){if(p.isString(s))return t.indexOf(s)!==-1;if(p.isRegExp(s))return s.test(t)}}function ku(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,s)=>n.toUpperCase()+s)}function qu(e,t){const n=p.toCamelCase(" "+t);["get","set","has"].forEach(s=>{Object.defineProperty(e,s+n,{value:function(r,i,o){return this[s].call(this,t,r,i,o)},configurable:!0})})}class me{constructor(t){t&&this.set(t)}set(t,n,s){const r=this;function i(l,c,u){const a=Pt(c);if(!a)throw new Error("header name must be a non-empty string");const h=p.findKey(r,a);(!h||r[h]===void 0||u===!0||u===void 0&&r[h]!==!1)&&(r[h||c]=an(l))}const o=(l,c)=>p.forEach(l,(u,a)=>i(u,a,c));if(p.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(p.isString(t)&&(t=t.trim())&&!Vu(t))o(Hu(t),n);else if(p.isHeaders(t))for(const[l,c]of t.entries())i(c,l,s);else t!=null&&i(n,t,s);return this}get(t,n){if(t=Pt(t),t){const s=p.findKey(this,t);if(s){const r=this[s];if(!n)return r;if(n===!0)return $u(r);if(p.isFunction(n))return n.call(this,r,s);if(p.isRegExp(n))return n.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Pt(t),t){const s=p.findKey(this,t);return!!(s&&this[s]!==void 0&&(!n||Gn(this,this[s],s,n)))}return!1}delete(t,n){const s=this;let r=!1;function i(o){if(o=Pt(o),o){const l=p.findKey(s,o);l&&(!n||Gn(s,s[l],l,n))&&(delete s[l],r=!0)}}return p.isArray(t)?t.forEach(i):i(t),r}clear(t){const n=Object.keys(this);let s=n.length,r=!1;for(;s--;){const i=n[s];(!t||Gn(this,this[i],i,t,!0))&&(delete this[i],r=!0)}return r}normalize(t){const n=this,s={};return p.forEach(this,(r,i)=>{const o=p.findKey(s,i);if(o){n[o]=an(r),delete n[i];return}const l=t?ku(i):String(i).trim();l!==i&&delete n[i],n[l]=an(r),s[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return p.forEach(this,(s,r)=>{s!=null&&s!==!1&&(n[r]=t&&p.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
+`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const s=new this(t);return n.forEach(r=>s.set(r)),s}static accessor(t){const s=(this[Nr]=this[Nr]={accessors:{}}).accessors,r=this.prototype;function i(o){const l=Pt(o);s[l]||(qu(r,o),s[l]=!0)}return p.isArray(t)?t.forEach(i):i(t),this}}me.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);p.reduceDescriptors(me.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(s){this[n]=s}}});p.freezeMethods(me);function Xn(e,t){const n=this||zt,s=t||n,r=me.from(s.headers);let i=s.data;return p.forEach(e,function(l){i=l.call(n,i,r.normalize(),t?t.status:void 0)}),r.normalize(),i}function ao(e){return!!(e&&e.__CANCEL__)}function Et(e,t,n){M.call(this,e??"canceled",M.ERR_CANCELED,t,n),this.name="CanceledError"}p.inherits(Et,M,{__CANCEL__:!0});function uo(e,t,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):t(new M("Request failed with status code "+n.status,[M.ERR_BAD_REQUEST,M.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Ku(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Wu(e,t){e=e||10;const n=new Array(e),s=new Array(e);let r=0,i=0,o;return t=t!==void 0?t:1e3,function(c){const u=Date.now(),a=s[i];o||(o=u),n[r]=c,s[r]=u;let h=i,w=0;for(;h!==r;)w+=n[h++],h=h%e;if(r=(r+1)%e,r===i&&(i=(i+1)%e),u-o<t)return;const E=a&&u-a;return E?Math.round(w*1e3/E):void 0}}function Ju(e,t){let n=0,s=1e3/t,r,i;const o=(u,a=Date.now())=>{n=a,r=null,i&&(clearTimeout(i),i=null),e.apply(null,u)};return[(...u)=>{const a=Date.now(),h=a-n;h>=s?o(u,a):(r=u,i||(i=setTimeout(()=>{i=null,o(r)},s-h)))},()=>r&&o(r)]}const mn=(e,t,n=3)=>{let s=0;const r=Wu(50,250);return Ju(i=>{const o=i.loaded,l=i.lengthComputable?i.total:void 0,c=o-s,u=r(c),a=o<=l;s=o;const h={loaded:o,total:l,progress:l?o/l:void 0,bytes:c,rate:u||void 0,estimated:u&&l&&a?(l-o)/u:void 0,event:i,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(h)},n)},Dr=(e,t)=>{const n=e!=null;return[s=>t[0]({lengthComputable:n,total:e,loaded:s}),t[1]]},Lr=e=>(...t)=>p.asap(()=>e(...t)),zu=pe.hasStandardBrowserEnv?function(){const t=pe.navigator&&/(msie|trident)/i.test(pe.navigator.userAgent),n=document.createElement("a");let s;function r(i){let o=i;return t&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return s=r(window.location.href),function(o){const l=p.isString(o)?r(o):o;return l.protocol===s.protocol&&l.host===s.host}}():function(){return function(){return!0}}(),Gu=pe.hasStandardBrowserEnv?{write(e,t,n,s,r,i){const o=[e+"="+encodeURIComponent(t)];p.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),p.isString(s)&&o.push("path="+s),p.isString(r)&&o.push("domain="+r),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Xu(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Yu(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function fo(e,t){return e&&!Xu(t)?Yu(e,t):t}const Br=e=>e instanceof me?{...e}:e;function ut(e,t){t=t||{};const n={};function s(u,a,h){return p.isPlainObject(u)&&p.isPlainObject(a)?p.merge.call({caseless:h},u,a):p.isPlainObject(a)?p.merge({},a):p.isArray(a)?a.slice():a}function r(u,a,h){if(p.isUndefined(a)){if(!p.isUndefined(u))return s(void 0,u,h)}else return s(u,a,h)}function i(u,a){if(!p.isUndefined(a))return s(void 0,a)}function o(u,a){if(p.isUndefined(a)){if(!p.isUndefined(u))return s(void 0,u)}else return s(void 0,a)}function l(u,a,h){if(h in t)return s(u,a);if(h in e)return s(void 0,u)}const c={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:l,headers:(u,a)=>r(Br(u),Br(a),!0)};return p.forEach(Object.keys(Object.assign({},e,t)),function(a){const h=c[a]||r,w=h(e[a],t[a],a);p.isUndefined(w)&&h!==l||(n[a]=w)}),n}const ho=e=>{const t=ut({},e);let{data:n,withXSRFToken:s,xsrfHeaderName:r,xsrfCookieName:i,headers:o,auth:l}=t;t.headers=o=me.from(o),t.url=oo(fo(t.baseURL,t.url),e.params,e.paramsSerializer),l&&o.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):"")));let c;if(p.isFormData(n)){if(pe.hasStandardBrowserEnv||pe.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if((c=o.getContentType())!==!1){const[u,...a]=c?c.split(";").map(h=>h.trim()).filter(Boolean):[];o.setContentType([u||"multipart/form-data",...a].join("; "))}}if(pe.hasStandardBrowserEnv&&(s&&p.isFunction(s)&&(s=s(t)),s||s!==!1&&zu(t.url))){const u=r&&i&&Gu.read(i);u&&o.set(r,u)}return t},Zu=typeof XMLHttpRequest<"u",Qu=Zu&&function(e){return new Promise(function(n,s){const r=ho(e);let i=r.data;const o=me.from(r.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:u}=r,a,h,w,E,S;function T(){E&&E(),S&&S(),r.cancelToken&&r.cancelToken.unsubscribe(a),r.signal&&r.signal.removeEventListener("abort",a)}let O=new XMLHttpRequest;O.open(r.method.toUpperCase(),r.url,!0),O.timeout=r.timeout;function I(){if(!O)return;const j=me.from("getAllResponseHeaders"in O&&O.getAllResponseHeaders()),H={data:!l||l==="text"||l==="json"?O.responseText:O.response,status:O.status,statusText:O.statusText,headers:j,config:e,request:O};uo(function(te){n(te),T()},function(te){s(te),T()},H),O=null}"onloadend"in O?O.onloadend=I:O.onreadystatechange=function(){!O||O.readyState!==4||O.status===0&&!(O.responseURL&&O.responseURL.indexOf("file:")===0)||setTimeout(I)},O.onabort=function(){O&&(s(new M("Request aborted",M.ECONNABORTED,e,O)),O=null)},O.onerror=function(){s(new M("Network Error",M.ERR_NETWORK,e,O)),O=null},O.ontimeout=function(){let A=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const H=r.transitional||lo;r.timeoutErrorMessage&&(A=r.timeoutErrorMessage),s(new M(A,H.clarifyTimeoutError?M.ETIMEDOUT:M.ECONNABORTED,e,O)),O=null},i===void 0&&o.setContentType(null),"setRequestHeader"in O&&p.forEach(o.toJSON(),function(A,H){O.setRequestHeader(H,A)}),p.isUndefined(r.withCredentials)||(O.withCredentials=!!r.withCredentials),l&&l!=="json"&&(O.responseType=r.responseType),u&&([w,S]=mn(u,!0),O.addEventListener("progress",w)),c&&O.upload&&([h,E]=mn(c),O.upload.addEventListener("progress",h),O.upload.addEventListener("loadend",E)),(r.cancelToken||r.signal)&&(a=j=>{O&&(s(!j||j.type?new Et(null,e,O):j),O.abort(),O=null)},r.cancelToken&&r.cancelToken.subscribe(a),r.signal&&(r.signal.aborted?a():r.signal.addEventListener("abort",a)));const B=Ku(r.url);if(B&&pe.protocols.indexOf(B)===-1){s(new M("Unsupported protocol "+B+":",M.ERR_BAD_REQUEST,e));return}O.send(i||null)})},ef=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let s=new AbortController,r;const i=function(u){if(!r){r=!0,l();const a=u instanceof Error?u:this.reason;s.abort(a instanceof M?a:new Et(a instanceof Error?a.message:a))}};let o=t&&setTimeout(()=>{o=null,i(new M(`timeout ${t} of ms exceeded`,M.ETIMEDOUT))},t);const l=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(i):u.removeEventListener("abort",i)}),e=null)};e.forEach(u=>u.addEventListener("abort",i));const{signal:c}=s;return c.unsubscribe=()=>p.asap(l),c}},tf=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let s=0,r;for(;s<n;)r=s+t,yield e.slice(s,r),s=r},nf=async function*(e,t){for await(const n of sf(e))yield*tf(n,t)},sf=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:s}=await t.read();if(n)break;yield s}}finally{await t.cancel()}},Mr=(e,t,n,s)=>{const r=nf(e,t);let i=0,o,l=c=>{o||(o=!0,s&&s(c))};return new ReadableStream({async pull(c){try{const{done:u,value:a}=await r.next();if(u){l(),c.close();return}let h=a.byteLength;if(n){let w=i+=h;n(w)}c.enqueue(new Uint8Array(a))}catch(u){throw l(u),u}},cancel(c){return l(c),r.return()}},{highWaterMark:2})},Fn=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",po=Fn&&typeof ReadableStream=="function",rf=Fn&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),mo=(e,...t)=>{try{return!!e(...t)}catch{return!1}},of=po&&mo(()=>{let e=!1;const t=new Request(pe.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ur=64*1024,ms=po&&mo(()=>p.isReadableStream(new Response("").body)),gn={stream:ms&&(e=>e.body)};Fn&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!gn[t]&&(gn[t]=p.isFunction(e[t])?n=>n[t]():(n,s)=>{throw new M(`Response type '${t}' is not supported`,M.ERR_NOT_SUPPORT,s)})})})(new Response);const lf=async e=>{if(e==null)return 0;if(p.isBlob(e))return e.size;if(p.isSpecCompliantForm(e))return(await new Request(pe.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(p.isArrayBufferView(e)||p.isArrayBuffer(e))return e.byteLength;if(p.isURLSearchParams(e)&&(e=e+""),p.isString(e))return(await rf(e)).byteLength},cf=async(e,t)=>{const n=p.toFiniteNumber(e.getContentLength());return n??lf(t)},af=Fn&&(async e=>{let{url:t,method:n,data:s,signal:r,cancelToken:i,timeout:o,onDownloadProgress:l,onUploadProgress:c,responseType:u,headers:a,withCredentials:h="same-origin",fetchOptions:w}=ho(e);u=u?(u+"").toLowerCase():"text";let E=ef([r,i&&i.toAbortSignal()],o),S;const T=E&&E.unsubscribe&&(()=>{E.unsubscribe()});let O;try{if(c&&of&&n!=="get"&&n!=="head"&&(O=await cf(a,s))!==0){let H=new Request(t,{method:"POST",body:s,duplex:"half"}),se;if(p.isFormData(s)&&(se=H.headers.get("content-type"))&&a.setContentType(se),H.body){const[te,ge]=Dr(O,mn(Lr(c)));s=Mr(H.body,Ur,te,ge)}}p.isString(h)||(h=h?"include":"omit");const I="credentials"in Request.prototype;S=new Request(t,{...w,signal:E,method:n.toUpperCase(),headers:a.normalize().toJSON(),body:s,duplex:"half",credentials:I?h:void 0});let B=await fetch(S);const j=ms&&(u==="stream"||u==="response");if(ms&&(l||j&&T)){const H={};["status","statusText","headers"].forEach(Ze=>{H[Ze]=B[Ze]});const se=p.toFiniteNumber(B.headers.get("content-length")),[te,ge]=l&&Dr(se,mn(Lr(l),!0))||[];B=new Response(Mr(B.body,Ur,te,()=>{ge&&ge(),T&&T()}),H)}u=u||"text";let A=await gn[p.findKey(gn,u)||"text"](B,e);return!j&&T&&T(),await new Promise((H,se)=>{uo(H,se,{data:A,headers:me.from(B.headers),status:B.status,statusText:B.statusText,config:e,request:S})})}catch(I){throw T&&T(),I&&I.name==="TypeError"&&/fetch/i.test(I.message)?Object.assign(new M("Network Error",M.ERR_NETWORK,e,S),{cause:I.cause||I}):M.from(I,I&&I.code,e,S)}}),gs={http:Eu,xhr:Qu,fetch:af};p.forEach(gs,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const jr=e=>`- ${e}`,uf=e=>p.isFunction(e)||e===null||e===!1,go={getAdapter:e=>{e=p.isArray(e)?e:[e];const{length:t}=e;let n,s;const r={};for(let i=0;i<t;i++){n=e[i];let o;if(s=n,!uf(n)&&(s=gs[(o=String(n)).toLowerCase()],s===void 0))throw new M(`Unknown adapter '${o}'`);if(s)break;r[o||"#"+i]=s}if(!s){const i=Object.entries(r).map(([l,c])=>`adapter ${l} `+(c===!1?"is not supported by the environment":"is not available in the build"));let o=t?i.length>1?`since :
+`+i.map(jr).join(`
+`):" "+jr(i[0]):"as no adapter specified";throw new M("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return s},adapters:gs};function Yn(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Et(null,e)}function Hr(e){return Yn(e),e.headers=me.from(e.headers),e.data=Xn.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),go.getAdapter(e.adapter||zt.adapter)(e).then(function(s){return Yn(e),s.data=Xn.call(e,e.transformResponse,s),s.headers=me.from(s.headers),s},function(s){return ao(s)||(Yn(e),s&&s.response&&(s.response.data=Xn.call(e,e.transformResponse,s.response),s.response.headers=me.from(s.response.headers))),Promise.reject(s)})}const bo="1.7.7",Vs={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Vs[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}});const $r={};Vs.transitional=function(t,n,s){function r(i,o){return"[Axios v"+bo+"] Transitional option '"+i+"'"+o+(s?". "+s:"")}return(i,o,l)=>{if(t===!1)throw new M(r(o," has been removed"+(n?" in "+n:"")),M.ERR_DEPRECATED);return n&&!$r[o]&&($r[o]=!0,console.warn(r(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,o,l):!0}};function ff(e,t,n){if(typeof e!="object")throw new M("options must be an object",M.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let r=s.length;for(;r-- >0;){const i=s[r],o=t[i];if(o){const l=e[i],c=l===void 0||o(l,i,e);if(c!==!0)throw new M("option "+i+" must be "+c,M.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new M("Unknown option "+i,M.ERR_BAD_OPTION)}}const bs={assertOptions:ff,validators:Vs},ke=bs.validators;class lt{constructor(t){this.defaults=t,this.interceptors={request:new Fr,response:new Fr}}async request(t,n){try{return await this._request(t,n)}catch(s){if(s instanceof Error){let r;Error.captureStackTrace?Error.captureStackTrace(r={}):r=new Error;const i=r.stack?r.stack.replace(/^.+\n/,""):"";try{s.stack?i&&!String(s.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(s.stack+=`
+`+i):s.stack=i}catch{}}throw s}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=ut(this.defaults,n);const{transitional:s,paramsSerializer:r,headers:i}=n;s!==void 0&&bs.assertOptions(s,{silentJSONParsing:ke.transitional(ke.boolean),forcedJSONParsing:ke.transitional(ke.boolean),clarifyTimeoutError:ke.transitional(ke.boolean)},!1),r!=null&&(p.isFunction(r)?n.paramsSerializer={serialize:r}:bs.assertOptions(r,{encode:ke.function,serialize:ke.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=i&&p.merge(i.common,i[n.method]);i&&p.forEach(["delete","get","head","post","put","patch","common"],S=>{delete i[S]}),n.headers=me.concat(o,i);const l=[];let c=!0;this.interceptors.request.forEach(function(T){typeof T.runWhen=="function"&&T.runWhen(n)===!1||(c=c&&T.synchronous,l.unshift(T.fulfilled,T.rejected))});const u=[];this.interceptors.response.forEach(function(T){u.push(T.fulfilled,T.rejected)});let a,h=0,w;if(!c){const S=[Hr.bind(this),void 0];for(S.unshift.apply(S,l),S.push.apply(S,u),w=S.length,a=Promise.resolve(n);h<w;)a=a.then(S[h++],S[h++]);return a}w=l.length;let E=n;for(h=0;h<w;){const S=l[h++],T=l[h++];try{E=S(E)}catch(O){T.call(this,O);break}}try{a=Hr.call(this,E)}catch(S){return Promise.reject(S)}for(h=0,w=u.length;h<w;)a=a.then(u[h++],u[h++]);return a}getUri(t){t=ut(this.defaults,t);const n=fo(t.baseURL,t.url);return oo(n,t.params,t.paramsSerializer)}}p.forEach(["delete","get","head","options"],function(t){lt.prototype[t]=function(n,s){return this.request(ut(s||{},{method:t,url:n,data:(s||{}).data}))}});p.forEach(["post","put","patch"],function(t){function n(s){return function(i,o,l){return this.request(ut(l||{},{method:t,headers:s?{"Content-Type":"multipart/form-data"}:{},url:i,data:o}))}}lt.prototype[t]=n(),lt.prototype[t+"Form"]=n(!0)});class ks{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(i){n=i});const s=this;this.promise.then(r=>{if(!s._listeners)return;let i=s._listeners.length;for(;i-- >0;)s._listeners[i](r);s._listeners=null}),this.promise.then=r=>{let i;const o=new Promise(l=>{s.subscribe(l),i=l}).then(r);return o.cancel=function(){s.unsubscribe(i)},o},t(function(i,o,l){s.reason||(s.reason=new Et(i,o,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=s=>{t.abort(s)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new ks(function(r){t=r}),cancel:t}}}function df(e){return function(n){return e.apply(null,n)}}function hf(e){return p.isObject(e)&&e.isAxiosError===!0}const ys={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ys).forEach(([e,t])=>{ys[t]=e});function yo(e){const t=new lt(e),n=zi(lt.prototype.request,t);return p.extend(n,lt.prototype,t,{allOwnKeys:!0}),p.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return yo(ut(e,r))},n}const Y=yo(zt);Y.Axios=lt;Y.CanceledError=Et;Y.CancelToken=ks;Y.isCancel=ao;Y.VERSION=bo;Y.toFormData=In;Y.AxiosError=M;Y.Cancel=Y.CanceledError;Y.all=function(t){return Promise.all(t)};Y.spread=df;Y.isAxiosError=hf;Y.mergeConfig=ut;Y.AxiosHeaders=me;Y.formToJSON=e=>co(p.isHTMLForm(e)?new FormData(e):e);Y.getAdapter=go.getAdapter;Y.HttpStatusCode=ys;Y.default=Y;function pf(e,t){console.log("bonjour"),setTimeout(()=>{e.forEach(n=>{CKEDITOR.replace(n,t)})},100)}function ht(e){return CKEDITOR.instances[e]}const mf={data(){return{data_issue:{},titleFR:"",special:{},articles:[],colid:"",pk:0,IssueIcon:{},IssueIllustration:null,editorContentConfig:{toolbar:[{name:"document",items:["Source","-","Preview","-","NewPage"]},{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"editing",items:["Find","Replace","-","SelectAll","-"]},{name:"styles",items:["Styles","Format","Font","FontSize"]},{name:"colors",items:["TextColor","BGColor"]},{name:"tools",items:["Maximize","ShowBlocks"]},{name:"mathjax",items:["Mathjax"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","CopyFormatting","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","CreateDiv","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","BidiLtr","BidiRtl"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Flash","Table","HorizontalRule","SpecialChar"]}],height:500,width:"90%",removePlugins:"exportpdf",extraPlugins:"mathjax",mathJaxLib:"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_HTML",mathJaxClass:"mathjax-formula",editorplaceholder:"Write the special issue description here.",filebrowserBrowseUrl:"/ckeditor/browse/",filebrowserUploadUrl:"/ckeditor/upload/"},editorCitationConfig:{toolbar:[{name:"document",items:["Source"]},{name:"basicstyles",items:["Bold","Italic","Underline","Strike","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","JustifyLeft","JustifyCenter","JustifyBlock"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"styles",items:["Styles","Format","Font","FontSize"]},{name:"colors",items:["TextColor","BGColor"]}],height:180,width:"100%",removePlugins:["exportpdf","mathjax"],forcePasteAsPlainText:!0}}},el:"#special-issue",components:{BaseInput:Ji,BaseSelect:ca,BaseCKEditor:ha,BaseImage:Sa,BaseAuthor:Ma},methods:{titleError(){let e=document.getElementById("saveButtonLegend");e.style="color: red",e.textContent="One title field is empty. Please enter a value before saving.",setTimeout(()=>{e.textContent=""},5e3)},removeContributor(e){console.log("remove contrib"),document.getElementById(`contrib-${e}`),console.log(this.special.contribs),this.special.contribs.splice(e,1);for(let t=0;t<this.special.contribs.length;t++)ht("citation"+t).setData(this.articles[t].citation),displayImage(t,this.articles[t].src,this.articles[t].imageName)},moveRef(e,t){let n=e+t;if(n>=0&&n<this.articles.length){let s=this.articles.splice(e,1);this.articles.splice(n,0,s[0]);let r=ht("citation"+e),i=ht("citation"+n),o=r.getData();r.setData(i.getData()),i.setData(o);let l=document.getElementById("image-article-"+e),c=document.getElementById("image-article-"+n);for(const h of["src","name"])o=l.getAttribute(h),l.setAttribute(h,c.getAttribute(h)),c.setAttribute(h,o);let u=document.getElementById("image-label-"+e),a=document.getElementById("image-label-"+n);o=u.innerHTML,u.innerHTML=a.innerHTML,a.innerHTML=o}},removeArticle(e){this.articles.splice(e,1);for(let t=0;t<this.articles.length;t++)ht("citation"+t).setData(this.articles[t].citation),displayImage(t,this.articles[t].src,this.articles[t].imageName)},fetchRefDoi(e,t){if(!t||!t.doi.trim()||!t.doi.startsWith("10."))return this.wrongDOI(e),!1;let n="/fetch-ref/"+e+"/"+t.doi+"/";return Y.get(n).then(s=>{if(!s.data.citation_tex)return this.wrongDOI(e),!1;let r='<p><a href="https://doi.org/'+s.data.doi+'">',i=s.data.citation_html.split("] ")[1],o=i.match(/<span class="citation-author">(.*?)<\/span>/),l=i.match(/<span class="citation-document-title">(.*?)<\/span>/),c=i.match(/<span class="citation-publication-title">(.*?)<\/span>/),u=i.match(/<span class="citation-volume">(.*?)<\/span>(.*)/);i=l?r+l[1].trim()+"</a></p>":"",i+=o?"<p>"+o[1]+"</p>":"",i+=c?c[1].slice(2):"",i+=u?u[1]+u[2]:"",t.citation=i}).catch(s=>(console.error(s),!1)),!0},insertNewRef(){let e={doi:"",citation:"",image:""};this.articles.push(e),this.articles.length-1},saveForm(){let e=document.getElementById("saveButtonLegend");e.innerHTML="Saving Data";let t=new FormData,n={};this.articles.length>0&&(this.articles.forEach((i,o)=>{t.append(`article[${o}]`,JSON.stringify(i))}),t.append("nb_articles",this.articles.length)),this.special.contribs.length>0&&(this.special.contribs.forEach((i,o)=>{"author_id"in i||(i.author_id=null),console.log(JSON.stringify(i)),t.append(`contrib[${o}]`,JSON.stringify(i))}),t.append("nb_contrib",this.special.contribs.length)),t.append("title",this.special.titleFr),t.append("trans_title",this.special.titleEn),t.append("year",this.special.year),t.append("volume",this.special.volume),n.head_fr=ht("head_fr").getData(),n.head_en=ht("head_en").getData(),t.append("head_fr",n.head_fr),t.append("head_en",n.head_en);let s="/special_issue_edit_api/"+this.colid+"/"+this.pk+"/";const r=document.querySelector("[name=csrfmiddlewaretoken]").value;Y.post(s,t,{headers:{"X-CSRFTOKEN":r,"Content-type":"multipart/form-data"}}).then(i=>{console.log("r",i),e.innerHTML="Data Saved",setTimeout(()=>{e.innerHTML=""},2e3);let o="/special_issue_edit/"+i.data.colid+"/"+i.data.pk;window.location.href=o}).catch(i=>{console.log(i)}),console.log("route",this.$route)},insertNewAuthor(){let e={firstname:"",lastname:"",prefix:"",suffix:"",orcid:"",email:"",string_name:"",mid:"",addresses:[],address_text:"",role:"editor",deceased_before_publication:!1,equal_contrib:!1,contrib_xml:'<contrib equal-contrib="yes"><name><surname></surname><given-names></given-names></name></contrib>',corresponding:!1};this.special.contribs.push(e);let t=this.special.contribs;t.length>0&&t.length-1}},mounted(){console.log("bonjour"),setTimeout(()=>{let e=window.location.href,n=new URL(e).pathname.replace("_edit","_edit_api");Y.get(n).then(s=>{console.log("response.Data",s.data),this.special.titleFr=s.data.title,console.log("this.special.titleFr",this.special.titleFr),this.special.titleEn=s.data.trans_title,this.special.year=s.data.year,this.special.head_fr=s.data.head_fr,this.special.head_en=s.data.head_en,this.special.volume=s.data.volume,this.special.contribs=s.data.contribs,this.colid=s.data.colid,this.pk=s.data.pk,this.articles=Array.from(s.data.articles),pf(["head_fr","head_en"],this.editorContentConfig)})},100)}},gf={class:"column left form-box"},bf={class:"column left"},yf=["id"],_f={class:"form-row form-box column left headnote-form"},wf={class:"form-row form-box column left headnote-form"},Sf={class:"column left form-box"},xf={class:"badge badge-pill"},Ef=["innerHTML"],vf={class:"form-row"},Tf=["onKeyup","onUpdate:modelValue"],Rf=["onClick"],Of=["onClick"],Cf=["disabled","onClick"],Af=["disabled","onClick"],Pf={class:"form-row"},If={style:{"background-color":"white"}},Ff=["innerHTML","id"],Nf={class:"column-left"},Df={class:"column-left"};function Lf(e,t,n,s,r,i){const o=sn("BaseInput"),l=sn("BaseAuthor"),c=sn("BaseCKEditor");return Z(),ee(he,null,[t[20]||(t[20]=N("h4",null,[N("span",null,"Comptes Rendus de l'Académie des Sciences 〉"),Ft(" Special Issue ")],-1)),N("div",gf,[ne(o,{modelValue:r.special.titleEn,"onUpdate:modelValue":t[0]||(t[0]=u=>r.special.titleEn=u),label:"Title [en]",type:"text"},null,8,["modelValue"]),ne(o,{modelValue:r.special.titleFr,"onUpdate:modelValue":t[1]||(t[1]=u=>r.special.titleFr=u),label:"Title [fr]",type:"text"},null,8,["modelValue"]),ne(o,{modelValue:r.special.year,"onUpdate:modelValue":t[2]||(t[2]=u=>r.special.year=u),label:"Year"},null,8,["modelValue"])]),N("div",bf,[(Z(!0),ee(he,null,is(r.special.contribs,(u,a)=>(Z(),ee("div",{id:"contrib-"+a,key:u.contrib_xml},[t[10]||(t[10]=N("div",{class:"se-label"},"Editor",-1)),ne(l,{modelValue:r.special.contribs,"onUpdate:modelValue":t[3]||(t[3]=h=>r.special.contribs=h),label:"Authors",index:a,contrib:u,onRemoveContributor:h=>i.removeContributor(a)},null,8,["modelValue","index","contrib","onRemoveContributor"])],8,yf))),128)),N("button",{class:"btn btn-add-article",onClick:t[4]||(t[4]=u=>i.insertNewAuthor())},t[11]||(t[11]=[N("i",{class:"bi bi-plus-lg"},null,-1),Ft(" Add an editor")]))]),N("div",_f,[ne(c,{modelValue:r.special.head_fr,"onUpdate:modelValue":t[5]||(t[5]=u=>r.special.head_fr=u),label:"Description [fr]",type:"text",id:"head_fr"},null,8,["modelValue"])]),N("div",wf,[ne(c,{modelValue:r.special.head_en,"onUpdate:modelValue":t[6]||(t[6]=u=>r.special.head_en=u),label:"Description [en]",type:"text",id:"head_en"},null,8,["modelValue"])]),(Z(!0),ee(he,null,is(r.articles,(u,a)=>(Z(),ee("div",null,[N("div",Sf,[N("span",xf,[t[12]||(t[12]=Ft("Article ")),N("span",{innerHTML:a+1},null,8,Ef)]),N("div",vf,[t[17]||(t[17]=N("label",{class:"doi-label"},"DOI",-1)),pl(N("input",{onKeyup:kc(h=>i.fetchRefDoi(a,u),["enter"]),class:"sc-text-input","onUpdate:modelValue":h=>u.doi=h,placeholder:"Enter a DOI (10.5802/cr...) and press return"},null,40,Tf),[[$c,u.doi,void 0,{trim:!0}]]),N("button",{onClick:h=>i.fetchRefDoi(a,u),title:"Get reference metadata from Crossref"},t[13]||(t[13]=[N("i",{class:"bi bi-cloud-download"},null,-1)]),8,Rf),N("button",{onClick:h=>i.removeArticle(a),title:"Delete this article"},t[14]||(t[14]=[N("i",{class:"bi bi-trash"},null,-1)]),8,Of),N("button",{disabled:a<=0,onClick:h=>i.moveRef(a,-1),title:"Move this reference up"},t[15]||(t[15]=[N("i",{class:"bi bi-arrow-up"},null,-1)]),8,Cf),N("button",{disabled:a>=r.articles.length-1,onClick:h=>i.moveRef(a,1),title:"Move this reference down"},t[16]||(t[16]=[N("i",{class:"bi bi-arrow-down"},null,-1)]),8,Af)]),N("div",Pf,[N("div",If,[N("div",{innerHTML:u.citation,id:"citation"+a},null,8,Ff)])])])]))),256)),N("div",Nf,[N("button",{class:"btn btn-add-article",onClick:t[7]||(t[7]=u=>i.insertNewRef())},t[18]||(t[18]=[N("i",{class:"bi bi-plus-lg"},null,-1),Ft(" Add an article")]))]),N("div",Df,[r.special.titleFr&&r.special.titleEn?(Z(),ee("button",{key:0,class:"btn btn-primary",onClick:t[8]||(t[8]=(...u)=>i.saveForm&&i.saveForm(...u))},"Save")):(Z(),ee("button",{key:1,class:"btn btn-primary disabled",onClick:t[9]||(t[9]=(...u)=>i.titleError&&i.titleError(...u))},"Save")),t[19]||(t[19]=N("p",{id:"saveButtonLegend"},null,-1))])],64)}const Bf=Ye(mf,[["render",Lf]]),Mf={__name:"App",setup(e){return(t,n)=>(Z(),$i(Bf))}},_o=Wc(Mf);_o.use(Yc());_o.mount("#special-issue");
diff --git a/src/ptf_tools/static/vuejs/special-issues/src/components/BaseAuthor.vue b/src/ptf_tools/static/vuejs/special-issues/src/components/BaseAuthor.vue
index 47129db3bb191cb5e00b1a61e70acb815f5d791e..2267a97e3a6efbddb789497e80f35776b895d040 100644
--- a/src/ptf_tools/static/vuejs/special-issues/src/components/BaseAuthor.vue
+++ b/src/ptf_tools/static/vuejs/special-issues/src/components/BaseAuthor.vue
@@ -13,7 +13,7 @@
                 label="Lastname:"
                 type="text"
             />
-            <BaseCheckbox
+            <!-- <BaseCheckbox
               v-model="contrib['corresponding']"
               label="Corresponding Author:"
               type="boolean"
@@ -27,20 +27,20 @@
                 v-model="contrib['address_text']"
                 label="Affiliation:"
                 type="text"
-            />
+            /> -->
             <BaseInput
                 v-model="contrib['orcid']"
                 label="ORCID:"
                 type="text"
             />
-            <BaseCheckbox
+            <!-- <BaseCheckbox
               v-model="contrib['equal_contrib']"
               label="Equal contrib:"
             />
             <BaseCheckbox
               v-model="contrib['deceased_before_publication']"
               label="Deceased:"
-            />
+            /> -->
             <button id="iconBin" @click="$emit('remove-contributor')" title="Delete this image" style="margin-left: 95%;"><i class="bi bi-trash"></i></button>
         </div>
         
diff --git a/src/ptf_tools/static/vuejs/special-issues/src/views/Special.vue b/src/ptf_tools/static/vuejs/special-issues/src/views/Special.vue
index c23da6b12dd65cd541757476334bceed2f651d42..1a18b5a89b620e115ecf34f275dd936fc5bc4327 100644
--- a/src/ptf_tools/static/vuejs/special-issues/src/views/Special.vue
+++ b/src/ptf_tools/static/vuejs/special-issues/src/views/Special.vue
@@ -1,4 +1,4 @@
-<template>
+<template class="special-issue-form">
     <h4>
         <span>Comptes Rendus de l'Académie des Sciences 〉</span>
         Special Issue
@@ -45,53 +45,23 @@
               <img id="issue_icon" class="img-preview" />
           </div>
       </div> -->
-      <!-- <div class="column left">
-        
-            
-          <div v-for="(contrib, index) in special.contribs" v-bind:id="'contrib-' + index" v-bind:key="contrib.contrib_xml" >
-            <div class="se-label">Editor</div>
-            <BaseAuthor
-              v-model="special.contribs"
-              label="Authors"
-              :index="index"
-              :contrib="contrib"
-              @remove-contributor="removeContributor(index)"
-            />
-          </div>
-          <button class="btn btn-add-article" @click="insertNewAuthor()"><i class="bi bi-plus-lg"></i> Add an editor</button>
-      </div> -->
-
-      <!-- Editor section-->
-      <!--WARNING: One should import a generic component BaseAuthor but for some reasons the import make vuejs bug.
-      This is a temporary solution that shall be investigated.-->
       <div class="column left">
         
+            
         <div v-for="(contrib, index) in special.contribs" v-bind:id="'contrib-' + index" v-bind:key="contrib.contrib_xml" >
-          <div class="form-row form-box">
-            <BaseInput
-              v-model="contrib['first_name']"
-              label="Firstname:"
-              type="text"
-            />
-            <BaseInput
-              v-model="contrib['last_name']"
-              label="Lastname:"
-              type="text"
-            />
-            <BaseInput
-              v-model="contrib['orcid']"
-              label="ORCID:"
-              type="text"
-            />
-            <button id="iconBin" @click="removeContributor(index)" title="Delete this editor" style="margin-left: 95%;"><i class="bi bi-trash"></i></button>
-          </div>
-          
+          <div class="se-label">Editor</div>
+          <BaseAuthor
+            v-model="special.contribs"
+            label="Authors"
+            :index="index"
+            :contrib="contrib"
+            @remove-contributor="removeContributor(index)"
+          />
         </div>
         <button class="btn btn-add-article" @click="insertNewAuthor()"><i class="bi bi-plus-lg"></i> Add an editor</button>
       </div>
-      
-<!--
-      <div class="form-row form-box">
+
+      <div class="form-row form-box column left headnote-form">
         <BaseCKEditor 
             v-model="special.head_fr"
             label="Description [fr]"
@@ -100,22 +70,19 @@
         />
       </div>
 
-      <div class="form-row form-box">
+      <div class="form-row form-box column left headnote-form">
         <BaseCKEditor 
             v-model="special.head_en"
             label="Description [en]"
             type="text"
             id="head_en"
         />
-      </div> -->
+      </div>
 
     
     
     
     
-
-    
-    
     
     <div v-for="(item, index) in articles">
       <div class="column left form-box">
@@ -142,23 +109,11 @@
         </div>
       </div>
 
-      <!-- <div class="column right">
-        <label class="doi-label">Illustration</label>
-        <div class="form-row">
-          <input type="file" :id="'image-input-' + index" accept=".jpg, .jpeg, .png" @change="loadImage(index, $event)" />
-          <button @click="removeImage(index)" title="Delete this image"><i class="bi bi-trash"></i></button>
-        </div>
-        <div class="canvas" @paste="onPaste(index, $event)" @drop.stop.prevent="onDrop(index, $event)" @dragover.prevent>
-          <div :id="'image-label-' + index">
-            <p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>
-          </div>
-          <img :id="'image-article-' + index" class="img-preview"/>
-        </div>
-      </div> -->
     </div>
 
   <div class="column-left">
     <button class="btn btn-add-article" @click="insertNewRef()"><i class="bi bi-plus-lg"></i> Add an article</button>
+  </div>
     <!-- <div class="concluding-part">
       <button data-bs-toggle="collapse" class="collapsed" href="#footnote" id="footnote-button">
         <i class="bi bi-chevron-double-down" aria-hidden="true"></i>
@@ -190,7 +145,7 @@
       </div>
     </div> -->
     
-  </div>
+  <!-- </div> -->
   <div class="column-left">
 
     <button v-if="special.titleFr && special.titleEn" class="btn btn-primary" v-on:click="saveForm">Save</button>
@@ -207,7 +162,6 @@ import BaseCKEditor from "../components/BaseCKEditor.vue"
 import BaseImage from "../components/BaseImage.vue"
 import BaseAuthor from "../components/BaseAuthor.vue"
 import axios from "axios"
-// import { useRoute } from 'vue-router'
 
 function add_ckeditor(ids, config) {
   console.log("bonjour")
@@ -222,35 +176,33 @@ function get_ckeditor(id) {
   return CKEDITOR.instances[id];
 }
 
-function displayIcon(ImageId, data, name) {
-  let output = document.getElementById(ImageId);
+// function displayIcon(ImageId, data, name) {
+//   let output = document.getElementById(ImageId);
   
-  output.src = data;
-  output.name = name;
-  document.getElementById("icon_text").innerHTML = name;
-}
-
-function displayImage(index, data, name) {
-  let output = document.getElementById("image-article-" + index);
-  output.src = data;
-  output.name = name;
-  document.getElementById("image-label-" + index).innerHTML = name;
-}
+//   output.src = data;
+//   output.name = name;
+//   document.getElementById("icon_text").innerHTML = name;
+// }
 
+// function displayImage(index, data, name) {
+//   let output = document.getElementById("image-article-" + index);
+//   output.src = data;
+//   output.name = name;
+//   document.getElementById("image-label-" + index).innerHTML = name;
+// }
 
 
 export default {
     data () {
         return {
-            special: {},                
-            status: [
-                "Draft",
-                "Published"
-            ],
+            data_issue: {},
+            titleFR: "",
+            special: {},
             articles : [],
             colid: "",
             pk: 0,
             IssueIcon : {},
+            
             IssueIllustration : null,
             editorContentConfig: {
                 toolbar: [
@@ -301,7 +253,18 @@ export default {
         BaseImage,
         BaseAuthor
     },
+    // created() {
+    // // It seems that with multiple ckeditor in the page, we need to delay the creation
+    // console.log("created")  
+    // this.special = this.delayedCreated()
+    //   console.log("ho", this.special)
+    //   let new_special = JSON.parse(JSON.stringify(this.special))
+    //   console.log("new_special", new_special)
+            
+    // },
+    
     methods: {
+        
         titleError() {
           let legend = document.getElementById("saveButtonLegend")
           legend.style = "color: red"
@@ -321,35 +284,35 @@ export default {
             }
 
         },
-        getDefaultImage(index, source) {
-          let journal = source.replace("é", "e")
-          let imageName = "logo-as.png";
-          let series = ["Biologies", "Chimie", "Geoscience", "Mecanique", "Mathematique", "Physique", "Palevol"];
-          for (const serie of series) {
-            if (journal.match("^Comptes Rendus") && journal.search(serie) > 14) {
-              imageName = "couv_" + serie.toLowerCase().substring(0, 4) + ".jpg";
-              break;
-            }
-          }
-          displayImage(index, "/static/cr/img/" + imageName, imageName);
-        },
-        onPaste(index, event) {
-          const data = event.clipboardData || window.clipboardData;
-          this.processEventData(index, data.items);
-        },
-        onDrop(index, event) {
-          let imageFile = event.dataTransfer.getData("text/uri-list");
-          let imageName = event.dataTransfer.getData("application/x-moz-file-promise-dest-filename");
-          if (!imageFile) {
-            imageFile = event.dataTransfer.getData("text/plain");
-          }
-          imageName = imageName ? imageName : imageFile.split("/").pop();
-          if (!imageFile) {
-            this.processEventData(index, event.dataTransfer.items);
-          } else {
-            displayImage(index, imageFile, imageName);
-          }
-        },
+        // getDefaultImage(index, source) {
+        //   let journal = source.replace("é", "e")
+        //   let imageName = "logo-as.png";
+        //   let series = ["Biologies", "Chimie", "Geoscience", "Mecanique", "Mathematique", "Physique", "Palevol"];
+        //   for (const serie of series) {
+        //     if (journal.match("^Comptes Rendus") && journal.search(serie) > 14) {
+        //       imageName = "couv_" + serie.toLowerCase().substring(0, 4) + ".jpg";
+        //       break;
+        //     }
+        //   }
+        //   displayImage(index, "/static/cr/img/" + imageName, imageName);
+        // },
+        // onPaste(index, event) {
+        //   const data = event.clipboardData || window.clipboardData;
+        //   this.processEventData(index, data.items);
+        // },
+        // onDrop(index, event) {
+        //   let imageFile = event.dataTransfer.getData("text/uri-list");
+        //   let imageName = event.dataTransfer.getData("application/x-moz-file-promise-dest-filename");
+        //   if (!imageFile) {
+        //     imageFile = event.dataTransfer.getData("text/plain");
+        //   }
+        //   imageName = imageName ? imageName : imageFile.split("/").pop();
+        //   if (!imageFile) {
+        //     this.processEventData(index, event.dataTransfer.items);
+        //   } else {
+        //     displayImage(index, imageFile, imageName);
+        //   }
+        // },
         moveRef(index, step) {
             let pos = index + step;
             if (pos >= 0 && pos < this.articles.length) {
@@ -382,25 +345,25 @@ export default {
             displayImage(i, this.articles[i].src, this.articles[i].imageName);
           }
         },
-        removeFootnotes() {
-          this.special.tail_en = ""
-          this.special.tail_fr = ""
-          CKEDITOR.instances.tail_fr.setData("")
-          CKEDITOR.instances.tail_en.setData("")
-          setTimeout(() => {
-            this.checkFootnote(this.special.tail_fr, this.special.tail_en)
-          }, 500)
-        },
-        removeImage(index) {
-          if(index == "issue_icon") {
-            displayIcon(index, "", "<p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>")
-            this.IssueIllustration = None
-          } else {
-            this.articles[index].src = "";
-            displayImage(index, "", "<p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>")
-          }
+        // removeFootnotes() {
+        //   this.special.tail_en = ""
+        //   this.special.tail_fr = ""
+        //   CKEDITOR.instances.tail_fr.setData("")
+        //   CKEDITOR.instances.tail_en.setData("")
+        //   setTimeout(() => {
+        //     this.checkFootnote(this.special.tail_fr, this.special.tail_en)
+        //   }, 500)
+        // },
+        // removeImage(index) {
+        //   if(index == "issue_icon") {
+        //     displayIcon(index, "", "<p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>")
+        //     this.IssueIllustration = None
+        //   } else {
+        //     this.articles[index].src = "";
+        //     displayImage(index, "", "<p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>")
+        //   }
           
-        },
+        // },
         fetchRefDoi(index, article) {
           if (!article || !article.doi.trim() || !article.doi.startsWith("10.")) {
             this.wrongDOI(index);
@@ -445,24 +408,24 @@ export default {
           let index = this.articles.length - 1;
           
         },
-        loadImage(ImageId, event) {
-              if (event.target.files[0].type.match("^image")) {
-                  this.IssueIllustration = event.target.files[0]
-                  this.readImage(ImageId, event.target.files[0]);
-              }
-          },
-        readImage(ImageId, imageFile) {
-            let reader = new FileReader();
-            reader.onload = function () {
-              if (ImageId == "issue_icon") {
-                displayIcon(ImageId, reader.result, imageFile.name);
-              } else {
-                displayImage(ImageId, reader.result, imageFile.name);
-              }
+        // loadImage(ImageId, event) {
+        //       if (event.target.files[0].type.match("^image")) {
+        //           this.IssueIllustration = event.target.files[0]
+        //           this.readImage(ImageId, event.target.files[0]);
+        //       }
+        //   },
+        // readImage(ImageId, imageFile) {
+        //     let reader = new FileReader();
+        //     reader.onload = function () {
+        //       if (ImageId == "issue_icon") {
+        //         displayIcon(ImageId, reader.result, imageFile.name);
+        //       } else {
+        //         displayImage(ImageId, reader.result, imageFile.name);
+        //       }
                 
-            };
-            reader.readAsDataURL(imageFile);
-        },
+        //     };
+        //     reader.readAsDataURL(imageFile);
+        // },
         saveForm() {
           // console.log("contribs", this.special.contribs)
             let saveButtonLegend = document.getElementById('saveButtonLegend')
@@ -501,7 +464,6 @@ export default {
             formData.append("trans_title", this.special.titleEn)
             formData.append("year", this.special.year)
             formData.append("volume", this.special.volume)
-            formData.append("contribs", this.special.contribs)
             // let icon_src = document.getElementById('issue_icon').src
             // if (this.IssueIllustration) {
             //   formData.set("IssuesIllustration", this.IssueIllustration)
@@ -509,10 +471,10 @@ export default {
             // } else if (icon_src) {
             //   formData.append("icon_present", true)
             // }
-            // data.head_fr = get_ckeditor("head_fr").getData()
-            // data.head_en = get_ckeditor("head_en").getData()
-            // formData.append("head_fr", data.head_fr)
-            // formData.append("head_en", data.head_en)
+            data.head_fr = get_ckeditor("head_fr").getData()
+            data.head_en = get_ckeditor("head_en").getData()
+            formData.append("head_fr", data.head_fr)
+            formData.append("head_en", data.head_en)
             // data.tail_fr = get_ckeditor("tail_fr").getData()
             // data.tail_en = get_ckeditor("tail_en").getData()
             // formData.append("tail_fr", data.tail_fr)
@@ -548,56 +510,56 @@ export default {
             // this.$router.push({ name: 'special_issue_edit_api', params: {'colid': }})
             
         },
-        mountImages(mountIcon=false) {
-          setTimeout(() => {
-            for (let i = 0; i < this.articles.length; i++) {
-              let imname = document.getElementById("image-label-" + i);
-              let img = document.getElementById("image-article-" + i);
-              if (imname && img && this.articles[i].src) {
-                imname.innerHTML = this.articles[i].imageName;
-                img.name = this.articles[i].imageName;
-                let src = this.articles[i].src;
-                if (src.startsWith("/static/") || src.startsWith("http")) {
-                  img.src = src;
-                } else {
-                  // We remove the site domain to get the Trammel media path:
-                  img.src = "/media" + src.split("/media").pop();
-                }
-              }
-            }
-            if (this.icon_name != "") {
-              document.getElementById('icon_text').innerHTML = ""
-            }
-          }, 100);
-          setTimeout(() => {
+    //     mountImages(mountIcon=false) {
+    //       setTimeout(() => {
+    //         for (let i = 0; i < this.articles.length; i++) {
+    //           let imname = document.getElementById("image-label-" + i);
+    //           let img = document.getElementById("image-article-" + i);
+    //           if (imname && img && this.articles[i].src) {
+    //             imname.innerHTML = this.articles[i].imageName;
+    //             img.name = this.articles[i].imageName;
+    //             let src = this.articles[i].src;
+    //             if (src.startsWith("/static/") || src.startsWith("http")) {
+    //               img.src = src;
+    //             } else {
+    //               // We remove the site domain to get the Trammel media path:
+    //               img.src = "/media" + src.split("/media").pop();
+    //             }
+    //           }
+    //         }
+    //         if (this.icon_name != "") {
+    //           document.getElementById('icon_text').innerHTML = ""
+    //         }
+    //       }, 100);
+    //       setTimeout(() => {
             
-            let img = document.getElementById("issue_icon");
-            if(mountIcon) {
-              img.src = this.icon_path
-              document.getElementById('icon_text').innerHTML = ""
-
-            } else {
-              document.getElementById('icon_text').innerHTML = "<p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>"
-            }
-
-          }, 100);
-        },
-        checkFootnote(tailFr, tailEn) {
-          let footnoteButton = document.getElementById("footnote-button")
-          let footnoteFields = document.getElementById("footnote")
-          if(tailFr != "" | tailEn != "") {
-              footnoteButton.classList = []
-              footnoteButton.setAttribute("aria-expanded", 'true')
-              footnoteFields.classList = ["collapse", "show"]
-            } else {
-              footnoteButton.classList = ["collapsed"]
-              footnoteButton.setAttribute("aria-expanded", 'false')
-              footnoteFields.classList = ["collapse", "show", "collapsing"]
-              setTimeout(() => {
-                footnoteFields.classList = ["collapse"]
-              }, 100)
-            }
-        },
+    //         let img = document.getElementById("issue_icon");
+    //         if(mountIcon) {
+    //           img.src = this.icon_path
+    //           document.getElementById('icon_text').innerHTML = ""
+
+    //         } else {
+    //           document.getElementById('icon_text').innerHTML = "<p> <br><br> Click and paste your image here <br><br> (Ctrl + v or ⌘ + v).</p>"
+    //         }
+
+    //       }, 100);
+    //     },
+    //     checkFootnote(tailFr, tailEn) {
+    //       let footnoteButton = document.getElementById("footnote-button")
+    //       let footnoteFields = document.getElementById("footnote")
+    //       if(tailFr != "" | tailEn != "") {
+    //           footnoteButton.classList = []
+    //           footnoteButton.setAttribute("aria-expanded", 'true')
+    //           footnoteFields.classList = ["collapse", "show"]
+    //         } else {
+    //           footnoteButton.classList = ["collapsed"]
+    //           footnoteButton.setAttribute("aria-expanded", 'false')
+    //           footnoteFields.classList = ["collapse", "show", "collapsing"]
+    //           setTimeout(() => {
+    //             footnoteFields.classList = ["collapse"]
+    //           }, 100)
+    //         }
+    //     },
         insertNewAuthor(){
           let contrib = {
             firstname: "",
@@ -623,47 +585,58 @@ export default {
             index = contributors.length - 1
           }
         }
-    },
-    
+    // },
+      },
     mounted() {
         console.log("bonjour")
-        let location = window.location.href;
-        let pathname = new URL(location).pathname;
-        let uri = pathname.replace("_edit", "_edit_api");
-        let mountIcon = false
+        setTimeout( () => {
+          let location = window.location.href;
+          let pathname = new URL(location).pathname;
+          let uri = pathname.replace("_edit", "_edit_api");
+          let mountIcon = false
+          
+          // console.log(uri);
+          
+          axios.get(uri).then((response) => {
+            console.log("response.Data", response.data)
+              this.special.titleFr = response.data["title"]
+              console.log("this.special.titleFr", this.special.titleFr)
+              this.special.titleEn = response.data["trans_title"]
+              this.special.year = response.data["year"]
+              this.special.head_fr = response.data["head_fr"]
+              this.special.head_en = response.data["head_en"]
+              // this.special.tail_fr = response.data["tail_fr"]
+              // this.special.tail_en = response.data["tail_en"]
+              this.special.volume = response.data["volume"]
+              this.special.contribs = response.data["contribs"]
+              this.colid = response.data["colid"]
+              this.pk = response.data["pk"]
+              // if (response.data["icon_name"]) {
+              //   this.icon_name = response.data["icon_name"]
+              //   this.icon_path = response.data["icon_path"]
+              //   mountIcon = true
+              // }
+              this.articles = Array.from(response.data["articles"])
+              
+              add_ckeditor(["head_fr", "head_en"], this.editorContentConfig)
+              // add_ckeditor(["tail_en", "tail_fr"], this.editorCitationConfig);
+              
+              // this.mountImages(mountIcon)
+              // this.checkFootnote(this.special.tail_fr, this.special.tail_en)
+              // console.log("articles", this.articles)
+          });
+        },
+        100
+          
+        )
+          
+      
+
         
-        // console.log(uri);
-    
-        axios.get(uri).then((response) => {
-            this.special.titleFr = response.data["title"]
-            this.special.titleEn = response.data["trans_title"]
-            this.special.year = response.data["year"]
-            // this.special.head_fr = response.data["head_fr"]
-            // this.special.head_en = response.data["head_en"]
-            // this.special.tail_fr = response.data["tail_fr"]
-            // this.special.tail_en = response.data["tail_en"]
-            this.special.volume = response.data["volume"]
-            this.special.contribs = response.data["contribs"]
-            // console.log("contribs", this.special.contribs)
-            this.colid = response.data["colid"]
-            this.pk = response.data["pk"]
-            // if (response.data["icon_name"]) {
-            //   this.icon_name = response.data["icon_name"]
-            //   this.icon_path = response.data["icon_path"]
-            //   mountIcon = true
-            // }
-            this.articles = Array.from(response.data["articles"])
-            
-            // add_ckeditor(["head_fr", "head_en"], this.editorContentConfig)
-            // add_ckeditor(["tail_en", "tail_fr"], this.editorCitationConfig);
-            
-            // this.mountImages(mountIcon)
-            // this.checkFootnote(this.special.tail_fr, this.special.tail_en)
-            console.log("articles", this.articles)
-        });
         
     },
-}
+    
+  }
 </script>
 
 <style>
@@ -827,5 +800,12 @@ label {
     display: none;
 }
 
+/* .special-issue-form {
+  max-width: 90%;
+} */
 
+.headnote-form {
+  margin: 0;
+  margin-bottom: 15px
+}
 </style>
\ No newline at end of file
diff --git a/src/ptf_tools/tests/tests.py b/src/ptf_tools/tests/tests.py
index c785ab21ff14a8d41f4f1ed79b276c2433ba7802..242971a5e1a246dfb68e01e030ede18eda374f2a 100644
--- a/src/ptf_tools/tests/tests.py
+++ b/src/ptf_tools/tests/tests.py
@@ -14,6 +14,7 @@ from ptf import model_helpers, tex, utils
 from ptf.cmds import ptf_cmds, xml_cmds
 from ptf.display import resolver
 from ptf.factories import (
+    AbstractFactory,
     ArticleWithSiteFactory,
     ContainerFactory,
     PublisherFactory,
@@ -840,7 +841,20 @@ class ToolsTestCase(TestCase):
             trans_title_html="test for special issue get",
             title_html="test pour les numéros thématiques",
         )
-        special_issue_pk = special_issue.pk
+        AbstractFactory(
+            resource=special_issue,
+            lang="fr",
+            value_html="text d'introduction pour les tests",
+            value_tex="text d'introduction pour les tests",
+            tag="head_fr",
+        )
+        AbstractFactory(
+            resource=special_issue,
+            lang="en",
+            value_html="introduction text for tests purpose",
+            value_tex="introduction text for tests purpose",
+            tag="head_en",
+        )
         article1.my_container = special_issue
         article2.my_container = special_issue
         ResourceInSpecialIssueFactory(
@@ -852,7 +866,7 @@ class ToolsTestCase(TestCase):
         )
 
         response_data = self.client.get(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": special_issue_pk})
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": special_issue.pid})
         )
         json_received = response_data.json()
         self.assertEqual(json_received["colid"], "CRGEOS")
@@ -865,6 +879,8 @@ class ToolsTestCase(TestCase):
             for article in special_issue.resources_in_special_issue.all()
         ]
         self.assertEqual(json_received["articles"], resources_in_special_issue)
+        self.assertEqual(json_received["head_fr"], "text d'introduction pour les tests")
+        self.assertEqual(json_received["head_en"], "introduction text for tests purpose")
         print("test 11 ok ")
 
     def test_12_add_special_issue_button(self):
@@ -888,7 +904,7 @@ class ToolsTestCase(TestCase):
         self.assertEqual(collection.pid, "CRGEOS")
 
         response_data = self.client.get(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": "create"})
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"})
         )
         json_received = response_data.json()
         self.assertEqual(json_received["colid"], "CRGEOS")
@@ -931,11 +947,13 @@ class ToolsTestCase(TestCase):
             title_html="besoin pour le test",
         )
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": "create"}),
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
             },
         )
         special_issue = Container.objects.get(ctype="issue_special")
@@ -955,6 +973,13 @@ class ToolsTestCase(TestCase):
         self.assertEqual(special_issue.pid, expected_pid)
         expected_publisher = PublisherFactory(pub_name="academie-des-sciences-paris")
         self.assertEqual(special_issue.my_publisher.pid, expected_publisher.pid)
+        abstract_set = special_issue.abstract_set.all()
+        self.assertEqual(
+            abstract_set.get(tag="head_fr").value_html, "text d'introduction pour les tests"
+        )
+        self.assertEqual(
+            abstract_set.get(tag="head_en").value_html, "introduction text for tests purpose"
+        )
         print("test 13 ok")
 
     def test_14_new_resource_in_special_issue(self):
@@ -993,21 +1018,26 @@ class ToolsTestCase(TestCase):
             title_html="besoin pour le test",
         )
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": "create"}),
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
             },
         )
         special_issue = Container.objects.get(ctype="issue_special")
-        special_issue_pk = special_issue.pk
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": special_issue_pk}),
+            reverse(
+                "special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": special_issue.pid}
+            ),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "nouveau texte d'introduction",
+                "head_en": "new introduction text",
                 "nb_articles": "2",
                 "article[0]": '{"doi":"10.5802/crgeos.180","citation":"this is the citation"}',
                 "article[1]": '{"doi":"10.5802/crgeos.185","citation":"this is the second citation"}',
@@ -1016,6 +1046,11 @@ class ToolsTestCase(TestCase):
         special_issue2 = Container.objects.get(
             trans_title_html="test of creation with no resource nor editors"
         )
+        abstract_set = special_issue2.abstract_set.all()
+        self.assertEqual(
+            abstract_set.get(tag="head_fr").value_html, "nouveau texte d'introduction"
+        )
+        self.assertEqual(abstract_set.get(tag="head_en").value_html, "new introduction text")
         self.assertEqual(len(special_issue2.resources_in_special_issue.all()), 2)
         self.assertEqual(special_issue2.pk, special_issue.pk + 1)
         resource_in_special_issue = special_issue2.resources_in_special_issue.get(
@@ -1066,24 +1101,29 @@ class ToolsTestCase(TestCase):
             title_html="besoin pour le test",
         )
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": "create"}),
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
                 "nb_articles": "2",
                 "article[0]": '{"doi":"10.5802/crgeos.180","citation":"this is the citation"}',
                 "article[1]": '{"doi":"10.5802/crgeos.185","citation":"this is the second citation"}',
             },
         )
         special_issue = Container.objects.get(ctype="issue_special")
-        special_issue_pk = special_issue.pk
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": special_issue_pk}),
+            reverse(
+                "special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": special_issue.pid}
+            ),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
                 "nb_articles": "1",
                 "article[0]": '{"doi":"10.5802/crgeos.185","citation":"this is the second citation"}',
             },
@@ -1136,21 +1176,26 @@ class ToolsTestCase(TestCase):
             title_html="besoin pour le test",
         )
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": "create"}),
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
             },
         )
         special_issue = Container.objects.get(ctype="issue_special")
-        special_issue_pk = special_issue.pk
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": special_issue_pk}),
+            reverse(
+                "special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": special_issue.pid}
+            ),
             {
                 "title": "test of creation with no resource but with editors",
                 "trans_title": "test de création sans resource mais avec editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
                 "nb_contrib": "2",
                 "contrib[0]": '{"orcid":"","idref":"","mid":"","first_name":"First","last_name":"Editor","prefix":"","suffix":"","email":"","string_name":"","addresses":[],"address_text":"","role":"editor","deceased_before_publication":false,"equal_contrib":false,"contrib_xml":"","corresponding":false,"seq":0,"author_id":null}',
                 "contrib[1]": '{"orcid":"","idref":"","mid":"","first_name":"Second","last_name":"Editor","prefix":"","suffix":"","email":"","string_name":"","addresses":[],"address_text":"","role":"editor","deceased_before_publication":false,"equal_contrib":false,"contrib_xml":"","corresponding":false,"seq":0,"author_id":null}',
@@ -1218,23 +1263,28 @@ class ToolsTestCase(TestCase):
             title_html="besoin pour le test",
         )
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": "create"}),
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
             {
                 "title": "test of creation with no resource nor editors",
                 "trans_title": "test de création sans resource ni editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
                 "contrib[0]": '{"orcid":"","idref":"","mid":"","first_name":"First","last_name":"Editor","prefix":"","suffix":"","email":"","string_name":"","addresses":[],"address_text":"","role":"editor","deceased_before_publication":false,"equal_contrib":false,"contrib_xml":"","corresponding":false,"seq":0,"author_id":null}',
                 "contrib[1]": '{"orcid":"","idref":"","mid":"","first_name":"Second","last_name":"Editor","prefix":"","suffix":"","email":"","string_name":"","addresses":[],"address_text":"","role":"editor","deceased_before_publication":false,"equal_contrib":false,"contrib_xml":"","corresponding":false,"seq":0,"author_id":null}',
             },
         )
         special_issue = Container.objects.get(ctype="issue_special")
-        special_issue_pk = special_issue.pk
         self.client.post(
-            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pk": special_issue_pk}),
+            reverse(
+                "special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": special_issue.pid}
+            ),
             {
                 "title": "test of creation with no resource but with editors",
                 "trans_title": "test de création sans resource mais avec editeurs",
                 "year": "2023",
+                "head_fr": "text d'introduction pour les tests",
+                "head_en": "introduction text for tests purpose",
                 "nb_contrib": "1",
                 "contrib[0]": '{"orcid":"","idref":"","mid":"","first_name":"First","last_name":"Editor","prefix":"","suffix":"","email":"","string_name":"","addresses":[],"address_text":"","role":"editor","deceased_before_publication":false,"equal_contrib":false,"contrib_xml":"","corresponding":false,"seq":0,"author_id":null}',
             },
@@ -1256,6 +1306,150 @@ class ToolsTestCase(TestCase):
         )
         print("test 17 ok")
 
+    def test_18_create_special_issue_with_existing_S2_number(self):
+        """
+        how should the number attribution work if there already is a unique special issue with number= S2 ?
+        --> we expect the new number to be S3
+        """
+        print("test_18_create_special_issue_with_existing_S2_number")
+        response = self.client.get("/")
+        self.assertRedirects(response, "/accounts/login/?next=/", fetch_redirect_response=False)
+        staff_user = User.objects.create_user("staff_user", "staff@test.test", "***")
+        staff_user.is_staff = True
+        staff_user.save()
+        self.client.login(username="staff@test.test", password="***")
+
+        response = self.client.get("/")
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.templates[0].name, "home.html")
+
+        from_folder = os.path.join(self.data_folder, "special_issue")
+        with open(f"{from_folder}/collection_crgeos.xml") as collection_xml:
+            collection_body = collection_xml.read()
+        cmd0 = xml_cmds.addCollectionsXmlCmd({"body": collection_body})
+        collection = cmd0.do()[0]
+        self.assertEqual(collection.pid, "CRGEOS")
+        # when a special issue is created the automated pid will look for the existing to get the correct year
+        # so we need to create it first
+        ContainerFactory(
+            my_collection=collection,
+            pid="annual_volume",
+            ctype="issue",
+            year="2023",
+            volume="355",
+            trans_title_html="needed to the test",
+            title_html="besoin pour le test",
+        )
+        ContainerFactory(
+            my_collection=collection,
+            pid="CRGEOS_2023__355_S2",
+            ctype="issue_special",
+            year="2023",
+            volume="355",
+            trans_title_html="needed to the test",
+            title_html="besoin pour le test",
+            number="S2",
+        )
+        self.client.post(
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
+            {
+                "title": "test",
+                "trans_title": "test",
+                "year": "2023",
+                "head_fr": "text ",
+                "head_en": "introduction",
+            },
+        )
+        special_issue = Container.objects.get(pid="CRGEOS_2023__355_S3")
+        self.assertEqual(special_issue.pid, "CRGEOS_2023__355_S3")
+
+        print("test 18 ok")
+
+    def test_19_create_special_issue_with_4_existing(self):
+        print("test_19_create_special_issue_with_4_existing")
+        response = self.client.get("/")
+        self.assertRedirects(response, "/accounts/login/?next=/", fetch_redirect_response=False)
+        staff_user = User.objects.create_user("staff_user", "staff@test.test", "***")
+        staff_user.is_staff = True
+        staff_user.save()
+        self.client.login(username="staff@test.test", password="***")
+
+        response = self.client.get("/")
+        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.templates[0].name, "home.html")
+
+        from_folder = os.path.join(self.data_folder, "special_issue")
+        with open(f"{from_folder}/collection_crgeos.xml") as collection_xml:
+            collection_body = collection_xml.read()
+        cmd0 = xml_cmds.addCollectionsXmlCmd({"body": collection_body})
+        collection = cmd0.do()[0]
+        self.assertEqual(collection.pid, "CRGEOS")
+        # when a special issue is created the automated pid will look for the existing to get the correct year
+        # so we need to create it first
+        ContainerFactory(
+            my_collection=collection,
+            pid="annual_volume",
+            ctype="issue",
+            year="2023",
+            volume="355",
+            trans_title_html="needed to the test",
+            title_html="besoin pour le test",
+        )
+        ContainerFactory(
+            my_collection=collection,
+            pid="CRGEOS_2023__355_S1",
+            ctype="issue_special",
+            year="2023",
+            volume="355",
+            trans_title_html="special 1",
+            title_html="special 1t",
+            number="S1",
+        )
+        ContainerFactory(
+            my_collection=collection,
+            pid="CRGEOS_2023__355_S2",
+            ctype="issue_special",
+            year="2023",
+            volume="355",
+            trans_title_html="special 2",
+            title_html="special 2",
+            number="S2",
+        )
+        ContainerFactory(
+            my_collection=collection,
+            pid="CRGEOS_2023__355_S3",
+            ctype="issue_special",
+            year="2023",
+            volume="355",
+            trans_title_html="special 3",
+            title_html="special 3",
+            number="S3",
+        )
+        ContainerFactory(
+            my_collection=collection,
+            pid="CRGEOS_2023__355_S4",
+            ctype="issue_special",
+            year="2023",
+            volume="355",
+            trans_title_html="special 4",
+            title_html="special 4",
+            number="S4",
+        )
+        self.client.post(
+            reverse("special_issue_edit_api", kwargs={"colid": "CRGEOS", "pid": "create"}),
+            {
+                "title": "test",
+                "trans_title": "test",
+                "year": "2023",
+                "head_fr": "text ",
+                "head_en": "introduction",
+            },
+        )
+        special_issue = Container.objects.get(pid="CRGEOS_2023__355_S5")
+        self.assertEqual(special_issue.pid, "CRGEOS_2023__355_S5")
+
+        print("test 19 ok")
+
     # def test_00_check_schema(self):
     #     f = open('/mathdoc_archive/CRGEOS/CRGEOS_2020__352_4-5/CRGEOS_2020__352_4-5_309_0/CRGEOS_2020__352_4-5_309_0.xml')
     #     # f = open(
diff --git a/src/ptf_tools/urls.py b/src/ptf_tools/urls.py
index 3f6b38f081f253580b2a90408cc262098e1b5808..9a98c55888ca09fd3966a86aef94d2a081fcd875 100644
--- a/src/ptf_tools/urls.py
+++ b/src/ptf_tools/urls.py
@@ -1,112 +1,111 @@
 import debug_toolbar
 from allauth.account import urls as account_urls
 from ckeditor_uploader.views import upload
-
 from django.conf import settings
 from django.conf.urls.static import static
 from django.contrib.admin.views.decorators import staff_member_required
 from django.contrib.auth.decorators import login_required
-from django.urls import include
-from django.urls import path
-from django.urls import re_path
+from django.urls import include, path, re_path
 from django.views.decorators.cache import never_cache
-
-from comments_moderation import urls as comments_urls
-from history import urls as history_urls
 from invitations import urls as invitations_urls
 from matching import urls as matching_urls
 from mersenne_cms import urls as cms_urls
 from oai import urls as oai_urls
 from ptf import urls
 from ptf.admin import ptf_admin
-from ptf_tools.views import AddIssuePDFView
-from ptf_tools.views import ArchiveAllAPIView
-from ptf_tools.views import ArchiveIssueAPIView
-from ptf_tools.views import ArticleDeleteView
-from ptf_tools.views import ArticleEditWithVueAPIView
-from ptf_tools.views import ArticleEditWithVueView
-from ptf_tools.views import ArticleListView
-from ptf_tools.views import BibItemIdApiDetail
-from ptf_tools.views import BibItemIdCreate
-from ptf_tools.views import BibItemIdUpdate
-from ptf_tools.views import BibtexAPIView
-from ptf_tools.views import CollectionCreate
-from ptf_tools.views import CollectionDetail
-from ptf_tools.views import CollectionUpdate
-from ptf_tools.views import ContainerEditView
-from ptf_tools.views import CreateAllDjvuAPIView
-from ptf_tools.views import CreateDjvuAPIView
-from ptf_tools.views import CreatedVolumesDashboardView
-from ptf_tools.views import CROSSREFResourceCheckStatusView
-from ptf_tools.views import CROSSREFResourceRegisterView
-from ptf_tools.views import DeleteJatsIssueAPIView
-from ptf_tools.views import DeployAllAPIView
-from ptf_tools.views import DeployAllNumdamAPIView
-from ptf_tools.views import DeployCMSAPIView
-from ptf_tools.views import DeployCollectionAPIView
-from ptf_tools.views import DeployJatsResourceAPIView
-from ptf_tools.views import DeployTranslatedArticleAPIView
-from ptf_tools.views import DiffCedricsIssueView
-from ptf_tools.views import DOAJResourceRegisterView
-from ptf_tools.views import EditorialToolsArticleView
-from ptf_tools.views import EditorialToolsVolumeItemsView
-from ptf_tools.views import ExtIdApiDetail
-from ptf_tools.views import ExtIdCreate
-from ptf_tools.views import ExtIdFormTemplate
-from ptf_tools.views import ExtIdUpdate
-from ptf_tools.views import FailedTasksDeleteView
-from ptf_tools.views import FailedTasksListView
-from ptf_tools.views import FailedTasksRetryView
-from ptf_tools.views import GetCMSFromSiteAPIView
-from ptf_tools.views import GraphicalAbstractDeployView
-from ptf_tools.views import GraphicalAbstractUpdateView
-from ptf_tools.views import ImportAllAPIView
-from ptf_tools.views import ImportCedricsArticleFormView
-from ptf_tools.views import ImportCedricsIssueView
-from ptf_tools.views import ImportJatsContainerAPIView
-from ptf_tools.views import IssueDetailAPIView
-from ptf_tools.views import MatchingAPIView
-from ptf_tools.views import NewsCreateView
-from ptf_tools.views import NewsDeleteView
-from ptf_tools.views import NewsUpdateView
-from ptf_tools.views import NumdamArchiveView
-from ptf_tools.views import NumdamDeleteAPIView
-from ptf_tools.views import NumdamView
-from ptf_tools.views import PageCreateView
-from ptf_tools.views import PageDeleteView
-from ptf_tools.views import PageIndexView
-from ptf_tools.views import PageUpdateView
-from ptf_tools.views import PTFToolsContainerView
-from ptf_tools.views import PTFToolsHomeView
-from ptf_tools.views import PublishedArticlesDashboardView
-from ptf_tools.views import RegisterPubmedFormView
-from ptf_tools.views import RegisterPubmedView
-from ptf_tools.views import RestoreCMSAPIView
-from ptf_tools.views import SpecialIssueEditAPIView
-from ptf_tools.views import SpecialIssueEditView
-from ptf_tools.views import SpecialIssuesIndex
-from ptf_tools.views import SuggestDeployView
-from ptf_tools.views import SuggestUpdateView
-from ptf_tools.views import TasksProgressView
-from ptf_tools.views import TasksView
-from ptf_tools.views import TestView
-from ptf_tools.views import TrammelArchiveView
-from ptf_tools.views import TrammelFailedTasksListView
-from ptf_tools.views import TrammelTasksProgressView
-from ptf_tools.views import UpdateTexmfZipAPIView
-from ptf_tools.views import VirtualIssueCreateView
-from ptf_tools.views import VirtualIssueDeployView
-from ptf_tools.views import VirtualIssueParseView
-from ptf_tools.views import VirtualIssuesIndex
-from ptf_tools.views import VirtualIssueUpdateView
-from ptf_tools.views import VolumeListView
-from ptf_tools.views import do_not_publish_article
-from ptf_tools.views import file_browse_in_collection
-from ptf_tools.views import file_upload_in_collection
-from ptf_tools.views import load_cedrics_article_choices
-from ptf_tools.views import show_article_body
 from pubmed import urls as pubmed_urls
 
+from comments_moderation import urls as comments_urls
+from history import urls as history_urls
+from ptf_tools.views import (
+    AddIssuePDFView,
+    ArchiveAllAPIView,
+    ArchiveIssueAPIView,
+    ArticleDeleteView,
+    ArticleEditWithVueAPIView,
+    ArticleEditWithVueView,
+    ArticleListView,
+    BibItemIdApiDetail,
+    BibItemIdCreate,
+    BibItemIdUpdate,
+    BibtexAPIView,
+    CollectionCreate,
+    CollectionDetail,
+    CollectionUpdate,
+    ContainerEditView,
+    CreateAllDjvuAPIView,
+    CreateDjvuAPIView,
+    CreatedVolumesDashboardView,
+    CROSSREFResourceCheckStatusView,
+    CROSSREFResourceRegisterView,
+    DeleteJatsIssueAPIView,
+    DeployAllAPIView,
+    DeployAllNumdamAPIView,
+    DeployCMSAPIView,
+    DeployCollectionAPIView,
+    DeployJatsResourceAPIView,
+    DeployTranslatedArticleAPIView,
+    DiffCedricsIssueView,
+    DOAJResourceRegisterView,
+    EditorialToolsArticleView,
+    EditorialToolsVolumeItemsView,
+    ExtIdApiDetail,
+    ExtIdCreate,
+    ExtIdFormTemplate,
+    ExtIdUpdate,
+    FailedTasksDeleteView,
+    FailedTasksListView,
+    FailedTasksRetryView,
+    GetCMSFromSiteAPIView,
+    GraphicalAbstractDeployView,
+    GraphicalAbstractUpdateView,
+    ImportAllAPIView,
+    ImportCedricsArticleFormView,
+    ImportCedricsIssueView,
+    ImportJatsContainerAPIView,
+    IssueDetailAPIView,
+    MatchingAPIView,
+    NewsCreateView,
+    NewsDeleteView,
+    NewsUpdateView,
+    NumdamArchiveView,
+    NumdamDeleteAPIView,
+    NumdamView,
+    PageCreateView,
+    PageDeleteView,
+    PageIndexView,
+    PageUpdateView,
+    PTFToolsContainerView,
+    PTFToolsHomeView,
+    PublishedArticlesDashboardView,
+    RegisterPubmedFormView,
+    RegisterPubmedView,
+    RestoreCMSAPIView,
+    SpecialIssueEditAPIView,
+    SpecialIssueEditView,
+    SpecialIssuesIndex,
+    SuggestDeployView,
+    SuggestUpdateView,
+    TasksProgressView,
+    TasksView,
+    TestView,
+    TrammelArchiveView,
+    TrammelFailedTasksListView,
+    TrammelTasksProgressView,
+    UpdateTexmfZipAPIView,
+    VirtualIssueCreateView,
+    VirtualIssueDeployView,
+    VirtualIssueParseView,
+    VirtualIssuesIndex,
+    VirtualIssueUpdateView,
+    VolumeListView,
+    do_not_publish_article,
+    file_browse_in_collection,
+    file_upload_in_collection,
+    load_cedrics_article_choices,
+    show_article_body,
+)
+
 from .views import view_404
 
 urlpatterns_staff = [
@@ -366,7 +365,7 @@ urlpatterns_editors = [
         name="special_issues_index",
     ),
     re_path(
-        r"^special_issue_edit_api/(?P<colid>[A-Z].+)/(?P<pk>.+)/$",
+        r"^special_issue_edit_api/(?P<colid>[A-Z].+)/(?P<pid>.+)/$",
         SpecialIssueEditAPIView.as_view(),
         name="special_issue_edit_api",
     ),
@@ -382,7 +381,7 @@ urlpatterns_editors = [
         name="page_delete",
     ),
     re_path(
-        "special_issue_edit/(?P<colid>[A-Z].+)/(?P<pk>.+)/$",
+        "special_issue_edit/(?P<colid>[A-Z].+)/(?P<pid>.+)/$",
         SpecialIssueEditView.as_view(),
         name="special-issue-edit",
     ),
diff --git a/src/ptf_tools/views/cms_views.py b/src/ptf_tools/views/cms_views.py
index 13a2f137ed7ebb921705e218f07a31695ec5d74b..2b104513b87df7d575cdd869ecb22955725ce3be 100644
--- a/src/ptf_tools/views/cms_views.py
+++ b/src/ptf_tools/views/cms_views.py
@@ -52,7 +52,6 @@ from ptf.model_data import IssueData, create_contributor, create_publisherdata
 # from ptf.models import ResourceInSpecialIssue
 # from ptf.models import Contribution
 # from ptf.models import Collection
-# from ptf.models import Abstract
 from ptf.models import (
     Article,
     Collection,
@@ -774,28 +773,28 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
             contrib_address = ContribAddress(contribution=contribution, address=address)
             contrib_address.save()
 
-    def delete(self, pk, colid):
-        special_issue = Container.objects.get(id=pk)
+    def delete(self, pid):
+        special_issue = Container.objects.get(pid=pid)
         cmd = base_ptf_cmds.addContainerPtfCmd()
         cmd.set_object_to_be_deleted(special_issue)
         cmd.undo()
 
     def get(self, request, *args, **kwargs):
-        pk = kwargs.get("pk", "")
+        pid = kwargs.get("pid", "")
 
-        data = {"pk": pk}
+        data = {"pid": pid}
         data["colid"] = kwargs.get("colid", "")
 
         name = resolve(request.path_info).url_name
         if name == "special_issue_delete":
-            self.delete(pk, data["colid"])
+            self.delete(pid)
             return redirect("special_issues_index", data["colid"])
 
         journal = model_helpers.get_collection(data["colid"], sites=False)
         data["journal_title"] = journal.title_tex.replace(".", "")
 
-        if pk != "create":
-            container = get_object_or_404(Container, id=pk)
+        if pid != "create":
+            container = get_object_or_404(Container, pid=pid)
             # TODO: pass the lang and trans_lang as well
             # In VueJS (Special.vu)e, titleFr = title_html
             data["title"] = container.trans_title_html
@@ -809,6 +808,18 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
 
             contribs = model_data_converter.db_to_contributors(container.contributions)
             data["contribs"] = contribs
+            abstract_set = container.abstract_set.all()
+            data["head_fr"] = (
+                abstract_set.filter(tag="head_fr").first().value_html
+                if abstract_set.filter(tag="head_fr").exists()
+                else ""
+            )
+            data["head_en"] = (
+                abstract_set.filter(tag="head_en").first().value_html
+                if abstract_set.filter(tag="head_en").exists()
+                else ""
+            )
+
         else:
             data["title"] = ""
             data["trans_title"] = ""
@@ -817,18 +828,9 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
             data["articles"] = []
             data["contribs"] = []
 
-        # abstract_set = container.abstract_set.all()
-
-        # try:
-        #     data["head_fr"] = abstract_set.get(tag="head_fr").value_html
-        # except:
-        #     data["head_fr"] = ""
-
-        # try:
-        #     data["head_en"] = abstract_set.get(tag="head_en").value_html
-        # except:
-        #     data["head_en"] = ""
-
+            data["head_fr"] = ""
+            data["head_en"] = ""
+        # time.sleep(3)
         # try:
         #     data["tail_fr"] = abstract_set.get(tag="tail_fr").value_html
         # except:
@@ -858,18 +860,11 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
         # except ExtLink.DoesNotExist:
         #     pass
 
-        # try:
-        #     data["articles"] = parse_content(
-        #         container.abstract_set.all().get(tag="summary_en").value_html
-        #     )["articles"]
-        # except:
-        #     data["articles"] = ""
-
         return JsonResponse(data)
 
     def post(self, request, *args, **kwargs):
         # le but est de faire un IssueDAta
-        pk = kwargs.get("pk", "")
+        pid = kwargs.get("pid", "")
         colid = kwargs.get("colid", "")
         journal = collection = model_helpers.get_collection(colid, sites=False)
         special_issue = IssueData()
@@ -879,9 +874,9 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
         trans_title_html = request.POST["title"]
         title_html = request.POST["trans_title"]
         volume = collection.content.filter(year=year).first().volume
-        if pk != "create":
+        if pid != "create":
             # TODO: do not use the pk, but the pid in the URLs
-            container = get_object_or_404(Container, id=pk)
+            container = get_object_or_404(Container, pid=pid)
             lang = container.lang
             trans_lang = container.trans_lang
             xpub = create_publisherdata()
@@ -892,22 +887,29 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
                 resource_in_special_issue
                 for resource_in_special_issue in container.resources_in_special_issue.all()
             ]
-
+            special_issue_pid = pid
         else:
             lang = "en"
             trans_lang = "fr"
             xpub = create_publisherdata()
             xpub.name = collection.content.filter(year=year).first().my_publisher.pid
             special_issue.provider = collection.provider
-            special_issue.number = len(collection.content.filter(year=year).exclude(title_html=""))
+            all_special_issues_numbers = [
+                int(si.number[1:])
+                for si in collection.content.filter(year=year).filter(ctype="issue_special")
+            ]
+            if all_special_issues_numbers:
+                max_number = max(all_special_issues_numbers)
+            else:
+                max_number = 0
+            special_issue.number = f"S{max_number + 1}"
+            special_issue_pid = f"{colid}_{year}__{volume}_{special_issue.number}"
             resources_in_base = []
 
         title_xml = get_issue_title_xml(title_html, lang, trans_title_html, trans_lang)
 
-        special_issue_pid = f"{colid}_{year}__{volume}_S{special_issue.number}"
-
         existing_issue = model_helpers.get_resource(special_issue_pid)
-        if pk == "create" and existing_issue is not None:
+        if pid == "create" and existing_issue is not None:
             raise ValueError(f"The special issue with the pid {special_issue_pid} already exists")
 
         special_issue.lang = lang
@@ -929,8 +931,6 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
         contribs = []
         index = 0
 
-        # contribs_in_base = container.contributions.all()
-
         if "nb_articles" in request.POST.keys():
             while index < int(request.POST["nb_articles"]):
                 article = json.loads(request.POST[f"article[{index}]"])
@@ -962,54 +962,6 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
                 index += 1
         special_issue.contributors = contribs
 
-        #         try:
-        #             contrib_in_special_issue = Contribution.objects.get(id=contrib["author_id"])
-        #             contrib_in_special_issue.first_name = first_name
-        #             contrib_in_special_issue.last_name = last_name
-        #             contrib_in_special_issue.corresponding = corresponding
-        #             contrib_in_special_issue.email = email
-        #             contrib_in_special_issue.orcid = orcid
-        #             contrib_in_special_issue.equal_contrib = equal_contrib
-        #             contrib_in_special_issue.deceased_before_publication = deceased
-        #             contrib_in_special_issue.seq = index
-        #             contrib_in_special_issue.contrib_xml = contrib_xml
-        #             contrib_in_special_issue.contribaddress_set.all().delete()
-        #             contrib_in_special_issue.save()
-        #             self.set_contrib_addresses(contrib["addresses"], contrib_in_special_issue)
-
-        #             contribs_in_base = contribs_in_base.exclude(id=contrib_in_special_issue.id)
-        #         except Contribution.DoesNotExist:
-        #             contrib_in_special_issue = Contribution(
-        #                 first_name=first_name,
-        #                 last_name=last_name,
-        #                 corresponding=corresponding,
-        #                 email=email,
-        #                 orcid=orcid,
-        #                 role=role,
-        #                 equal_contrib=equal_contrib,
-        #                 deceased_before_publication=deceased,
-        #                 seq=index,
-        #                 resource=container,
-        #                 contrib_xml=contrib_xml,
-        #             )
-        #             contrib_in_special_issue.save()
-        #             self.set_contrib_addresses(contrib["addresses"], contrib_in_special_issue)
-
-        #             contribs_in_base = contribs_in_base.exclude(id=contrib_in_special_issue.id)
-        #         index += 1
-
-        #     for contribution in contribs_in_base:
-        #         contribution.delete()
-        # else:
-        #     for contrib in contribs_in_base:
-        #         contrib.delete()
-        # container.year = request.POST["year"]
-        # container.title_html = request.POST["title"]
-        # container.trans_title_html = request.POST["trans_title"]
-        # container.title_xml = jats_parser.get_issue_title_xml(
-        #     container.title_html, container.lang, container.trans_title_html, container.trans_lang
-        # )
-        # container.volume = request.POST["volume"]
         colid_lo = colid.lower()
         site_domain = SITE_REGISTER[colid_lo]["site_domain"].split("/")
         site_domain = "/" + site_domain[-1] if len(site_domain) == 2 else ""
@@ -1060,10 +1012,26 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
         #         pass
 
         # Part of the code that handle forwords and lastwords
-        # head_fr_html = xml_utils.replace_html_entities(request.POST["head_fr"])
-        # head_en_html = xml_utils.replace_html_entities(request.POST["head_en"])
+        head_fr_html = xml_utils.replace_html_entities(request.POST["head_fr"])
+        head_en_html = xml_utils.replace_html_entities(request.POST["head_en"])
         # tail_fr_html = xml_utils.replace_html_entities(request.POST["tail_fr"])
         # tail_en_html = xml_utils.replace_html_entities(request.POST["tail_en"])
+        special_issue.abstracts = [
+            {
+                "tag": "head_fr",
+                "lang": "fr",
+                "value_html": head_fr_html,
+                "value_tex": head_fr_html,
+                "value_xml": f'<abstract xml:lang="fr">{head_fr_html}</abstract>',
+            },
+            {
+                "tag": "head_en",
+                "lang": "en",
+                "value_html": head_en_html,
+                "value_tex": head_en_html,
+                "value_xml": f'<abstract xml:lang="en">{head_en_html}</abstract>',
+            },
+        ]
         # try:
         #     head_fr = container.abstract_set.all().get(tag="head_fr")
         #     head_fr.value_html = head_fr_html
@@ -1172,6 +1140,9 @@ class SpecialIssueEditAPIView(HandleCMSMixin, TemplateView):
         params = {"xissue": special_issue, "use_body": False}
         cmd = xml_cmds.addOrUpdateIssueXmlCmd(params)
         new_container = cmd.do()
+        # tail_fr_html = xml_utils.replace_html_entities(request.POST["tail_fr"])
+        # tail_en_html = xml_utils.replace_html_entities(request.POST["tail_en"])
+        # special_issue.abstracts= [head_fr, head_en]
         pk = new_container.pk
         return redirect("special_issue_edit_api", colid, pk)
 
diff --git a/src/templates/editorial_tools/special-issue-edit.html b/src/templates/editorial_tools/special-issue-edit.html
index 8a99b11b1f18d33395ef5739dafadc37b59010e5..5712cc5806d7318ba7e33fba57b1a8a98029867a 100644
--- a/src/templates/editorial_tools/special-issue-edit.html
+++ b/src/templates/editorial_tools/special-issue-edit.html
@@ -11,7 +11,11 @@
 </div>
 
 <link href="{% static '/vuejs/special-issues/dist/index.css' %}" rel="stylesheet" />
-<script src="{% static '/vuejs/special-issues/dist/index.js' %}"></script>
 
 {% endblock content %}
 
+{% block extrajs %}
+<script type="text/javascript" src="{% static '/vuejs/special-issues/dist/index.js' %}"></script>
+{% endblock %}
+
+
diff --git a/src/templates/editorial_tools/special-issues-index.html b/src/templates/editorial_tools/special-issues-index.html
index 9df17686469ad17649469de9e4e0fd13397e3376..5f8a97f3c48f9078b46296771f3a9f4e5638323f 100644
--- a/src/templates/editorial_tools/special-issues-index.html
+++ b/src/templates/editorial_tools/special-issues-index.html
@@ -26,7 +26,7 @@
     <tbody>
       {% for special_issue in special_issues %}
       <tr>
-        <td><a href="{% url 'special-issue-edit' colid special_issue.id %}"> {{ special_issue.title_html }}</a></td>
+        <td><a href="{% url 'special-issue-edit' colid special_issue.pid %}"> {{ special_issue.title_html }}</a></td>
         <td>
           <div class="btn-group">
             {% comment %} <div class="btn-group">