@xcpcio/board-app 0.64.0 → 0.64.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/404.html +1 -1
  2. package/dist/assets/{Balloon.vue_vue_type_script_setup_true_lang-DwBrrom6.js → Balloon.vue_vue_type_script_setup_true_lang-m1_Bu8S1.js} +1 -1
  3. package/dist/assets/{Board-BO2oDVPE.js → Board-C5aw5Vz0.js} +32 -32
  4. package/dist/assets/{Board-Bw50IitD.css → Board-DfGcLI3S.css} +1 -1
  5. package/dist/assets/{ContestStateBadge-DrpQq5N4.js → ContestStateBadge-BtHgMKT8.js} +1 -1
  6. package/dist/assets/{Countdown-C_GA1usV.js → Countdown-_bOhbjlN.js} +1 -1
  7. package/dist/assets/{DataSourceInput.vue_vue_type_script_setup_true_lang-Cr0K67q9.js → DataSourceInput.vue_vue_type_script_setup_true_lang-BeTAYXZq.js} +1 -1
  8. package/dist/assets/Footer-99AAgm08.js +1 -0
  9. package/dist/assets/{NavBar-DU4kcs_k.js → NavBar-Cl48XJnt.js} +1 -1
  10. package/dist/assets/{Resolver--KusTBWk.js → Resolver-D3ZU6Z76.js} +1 -1
  11. package/dist/assets/{RightArrowIcon-Cx82txLy.js → RightArrowIcon-Dp1frbz2.js} +1 -1
  12. package/dist/assets/{TheInput.vue_vue_type_script_setup_true_lang-BfGQccfF.js → TheInput.vue_vue_type_script_setup_true_lang-D7oKrTsh.js} +1 -1
  13. package/dist/assets/{Tooltip.vue_vue_type_script_setup_true_lang-BiZQbZpU.js → Tooltip.vue_vue_type_script_setup_true_lang-CgNaLbjM.js} +1 -1
  14. package/dist/assets/{_...all_-DrWZoiU0.js → _...all_-C4jby8Fb.js} +1 -1
  15. package/dist/assets/{_...all_-CJpyse53.js → _...all_-C83ZJkec.js} +1 -1
  16. package/dist/assets/{_name_-aS9b9-yu.js → _name_-CTY1WnJu.js} +1 -1
  17. package/dist/assets/{about-B1R70Y8f.js → about-BUmG1GXw.js} +1 -1
  18. package/dist/assets/board-Rg0TaGCD.js +1 -0
  19. package/dist/assets/{board-layout-DpYiD2TY.js → board-layout-DX9OTP6m.js} +1 -1
  20. package/dist/assets/constant-XVIkJ-EB.js +1 -0
  21. package/dist/assets/{contest-BX77J6xB.js → contest-BiuSnW4a.js} +1 -1
  22. package/dist/assets/{dayjs-CeI8Tzzs.js → dayjs-BGRSp297.js} +1 -1
  23. package/dist/assets/{default-B-oEEZYB.js → default-bzEvHh77.js} +1 -1
  24. package/dist/assets/en-78xzu5B_.js +1 -0
  25. package/dist/assets/{headless-vGEFxcro.js → headless-DiJg7xE_.js} +1 -1
  26. package/dist/assets/{home-C-hiyiKF.js → home-BMaGf7TT.js} +1 -1
  27. package/dist/assets/index-B3notrRB.js +1 -0
  28. package/dist/assets/{index-Bqh8RKJZ.js → index-B585uw5O.js} +1 -1
  29. package/dist/assets/{index-BPQNJR9C.css → index-BiwUz1KO.css} +1 -1
  30. package/dist/assets/{index-CM3RvXoz.js → index-CeypIf10.js} +5 -5
  31. package/dist/assets/{index-CSH4p42n.js → index-CjyRkIbw.js} +1 -1
  32. package/dist/assets/{index-D0568hUU.js → index-DeZd3E2u.js} +1 -1
  33. package/dist/assets/{index-BySc0CqQ.js → index-DgGZQ-bQ.js} +1 -1
  34. package/dist/assets/{index-layout-DMOaRWHr.js → index-layout-YR31XS70.js} +1 -1
  35. package/dist/assets/{pagination-xM3o6sP4.js → pagination-B27dUMId.js} +1 -1
  36. package/dist/assets/{query-CJJZPkfS.js → query-LW63gP-7.js} +1 -1
  37. package/dist/assets/{rank-DeeyMXnu.js → rank-mUxoQND-.js} +1 -1
  38. package/dist/assets/{test-Cy4YHoDZ.js → test-BAbK8B6Y.js} +1 -1
  39. package/dist/assets/{use-vmodel-CcIbVTPv.js → use-vmodel-BDpYVuLl.js} +1 -1
  40. package/dist/assets/{user-DmhaXJDh.js → user-tAp-dHq6.js} +1 -1
  41. package/dist/assets/{virtual_pwa-register-DPwqiWvr.js → virtual_pwa-register-DEAi56it.js} +1 -1
  42. package/dist/assets/zh-CN-32UqCzRy.js +1 -0
  43. package/dist/index.html +1 -1
  44. package/dist/sw.js +1 -1
  45. package/package.json +17 -17
  46. package/src/components/Footer.vue +1 -1
  47. package/src/components/battle-of-giants/GiantsOptions.vue +2 -2
  48. package/src/components/board/Board.vue +0 -12
  49. package/src/components/board/Export.vue +5 -5
  50. package/src/components/board/FilterModal.vue +2 -2
  51. package/src/components/board/SubmissionsTable.vue +4 -4
  52. package/src/components/board/Utility.vue +60 -36
  53. package/src/components/rating/RatingTable.vue +2 -2
  54. package/src/components.d.ts +4 -4
  55. package/dist/assets/Footer-DNR-ilJ5.js +0 -1
  56. package/dist/assets/board-CTGu5nLW.js +0 -1
  57. package/dist/assets/constant-BLR-mMXv.js +0 -1
  58. package/dist/assets/en-C8WQ1AP4.js +0 -1
  59. package/dist/assets/index-gbWfw8RI.js +0 -1
  60. package/dist/assets/zh-CN-Bs0tKfN4.js +0 -1
  61. /package/src/components/{TheCheckbox.vue → common/TheCheckbox.vue} +0 -0
  62. /package/src/components/{TheCounter.vue → common/TheCounter.vue} +0 -0
  63. /package/src/components/{TheInput.vue → common/TheInput.vue} +0 -0
  64. /package/src/components/common/{MultiSelectEnhanced.vue → TheMultiSelect.vue} +0 -0
@@ -1 +1 @@
1
- import{a5 as V,a6 as j,a7 as d,a8 as D,a9 as w,aa as z,ab as k,ac as M,ad as H,ae as T,af as K,ag as G,ah as L,ai as Y,aj as J,ak as X,al as Z,f as W,am as q,an as tt,ao as et,C as Q,ap as $,aq as st,ar as A,as as it,at as nt,au as rt}from"./index-CM3RvXoz.js";import{b as at}from"./constant-BLR-mMXv.js";import{u as B}from"./contest-BX77J6xB.js";var ot=class extends V{constructor(t,e){super(),this.options=e,this.#s=t,this.#n=null,this.#i=j(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#p=void 0;#e=void 0;#a;#l;#i;#n;#b;#c;#f;#o;#h;#r;#d=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),_(this.#t,this.options)?this.#u():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return U(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return U(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#g(),this.#O(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,i=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof d(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#w(),this.#t.setOptions(this.options),e._defaulted&&!D(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const s=this.hasListeners();s&&N(this.#t,i,this.options,e)&&this.#u(),this.updateResult(),s&&(this.#t!==i||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||w(this.options.staleTime,this.#t)!==w(e.staleTime,this.#t))&&this.#v();const n=this.#m();s&&(this.#t!==i||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||n!==this.#r)&&this.#R(n)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),i=this.createResult(e,t);return ut(this,i)&&(this.#e=i,this.#l=this.options,this.#a=this.#t.state),i}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(i,s)=>(this.trackProp(s),e?.(s),s==="promise"&&!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled")),Reflect.get(i,s))})}trackProp(t){this.#d.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),i=this.#s.getQueryCache().build(this.#s,e);return i.fetch().then(()=>this.createResult(i,e))}fetch(t){return this.#u({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#u(t){this.#w();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(z)),e}#v(){this.#g();const t=w(this.options.staleTime,this.#t);if(k||this.#e.isStale||!M(t))return;const i=H(this.#e.dataUpdatedAt,t)+1;this.#o=T.setTimeout(()=>{this.#e.isStale||this.updateResult()},i)}#m(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#R(t){this.#O(),this.#r=t,!(k||d(this.options.enabled,this.#t)===!1||!M(this.#r)||this.#r===0)&&(this.#h=T.setInterval(()=>{(this.options.refetchIntervalInBackground||K.isFocused())&&this.#u()},this.#r))}#y(){this.#v(),this.#R(this.#m())}#g(){this.#o&&(T.clearTimeout(this.#o),this.#o=void 0)}#O(){this.#h&&(T.clearInterval(this.#h),this.#h=void 0)}createResult(t,e){const i=this.#t,s=this.options,n=this.#e,a=this.#a,u=this.#l,v=t!==i?t.state:this.#p,{state:g}=t;let r={...g},S=!1,h;if(e._optimisticResults){const c=this.hasListeners(),C=!c&&_(t,e),y=c&&N(t,i,e,s);(C||y)&&(r={...r,...G(g.data,t.options)}),e._optimisticResults==="isRestoring"&&(r.fetchStatus="idle")}let{error:o,errorUpdatedAt:b,status:f}=r;h=r.data;let O=!1;if(e.placeholderData!==void 0&&h===void 0&&f==="pending"){let c;n?.isPlaceholderData&&e.placeholderData===u?.placeholderData?(c=n.data,O=!0):c=typeof e.placeholderData=="function"?e.placeholderData(this.#f?.state.data,this.#f):e.placeholderData,c!==void 0&&(f="success",h=L(n?.data,c,e),S=!0)}if(e.select&&h!==void 0&&!O)if(n&&h===a?.data&&e.select===this.#b)h=this.#c;else try{this.#b=e.select,h=e.select(h),h=L(n?.data,h,e),this.#c=h,this.#n=null}catch(c){this.#n=c}this.#n&&(o=this.#n,h=this.#c,b=Date.now(),f="error");const m=r.fetchStatus==="fetching",R=f==="pending",E=f==="error",P=R&&m,x=h!==void 0,p={status:f,fetchStatus:r.fetchStatus,isPending:R,isSuccess:f==="success",isError:E,isInitialLoading:P,isLoading:P,data:h,dataUpdatedAt:r.dataUpdatedAt,error:o,errorUpdatedAt:b,failureCount:r.fetchFailureCount,failureReason:r.fetchFailureReason,errorUpdateCount:r.errorUpdateCount,isFetched:r.dataUpdateCount>0||r.errorUpdateCount>0,isFetchedAfterMount:r.dataUpdateCount>v.dataUpdateCount||r.errorUpdateCount>v.errorUpdateCount,isFetching:m,isRefetching:m&&!R,isLoadingError:E&&!x,isPaused:r.fetchStatus==="paused",isPlaceholderData:S,isRefetchError:E&&x,isStale:F(t,e),refetch:this.refetch,promise:this.#i,isEnabled:d(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const c=I=>{p.status==="error"?I.reject(p.error):p.data!==void 0&&I.resolve(p.data)},C=()=>{const I=this.#i=p.promise=j();c(I)},y=this.#i;switch(y.status){case"pending":t.queryHash===i.queryHash&&c(y);break;case"fulfilled":(p.status==="error"||p.data!==y.value)&&C();break;case"rejected":(p.status!=="error"||p.error!==y.reason)&&C();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#a=this.#t.state,this.#l=this.options,this.#a.data!==void 0&&(this.#f=this.#t),D(e,t))return;this.#e=e;const i=()=>{if(!t)return!0;const{notifyOnChangeProps:s}=this.options,n=typeof s=="function"?s():s;if(n==="all"||!n&&!this.#d.size)return!0;const a=new Set(n??this.#d);return this.options.throwOnError&&a.add("error"),Object.keys(this.#e).some(u=>{const l=u;return this.#e[l]!==t[l]&&a.has(l)})};this.#S({listeners:i()})}#w(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#p=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#S(t){Y.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function ht(t,e){return d(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function _(t,e){return ht(t,e)||t.state.data!==void 0&&U(t,e,e.refetchOnMount)}function U(t,e,i){if(d(e.enabled,t)!==!1&&w(e.staleTime,t)!=="static"){const s=typeof i=="function"?i(t):i;return s==="always"||s!==!1&&F(t,e)}return!1}function N(t,e,i,s){return(t!==e||d(s.enabled,t)===!1)&&(!i.suspense||t.state.status!=="error")&&F(t,i)}function F(t,e){return d(e.enabled,t)!==!1&&t.isStaleByTime(w(e.staleTime,t))}function ut(t,e){return!D(t.getCurrentResult(),e)}function lt(t=""){if(!J())throw new Error("vue-query hooks can only be used inside setup() function or functions that support injection context.");const e=Z(t),i=X(e);if(!i)throw new Error("No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.");return i}function ct(t,e,i){const s=lt(),n=W(()=>{const o=q(e);typeof o.enabled=="function"&&(o.enabled=o.enabled());const b=s.defaultQueryOptions(o);return b._optimisticResults=s.isRestoring?.value?"isRestoring":"optimistic",b}),a=new t(s,n.value),u=n.value.shallow?tt(a.getCurrentResult()):et(a.getCurrentResult());let l=()=>{};s.isRestoring&&Q(s.isRestoring,o=>{o||(l(),l=a.subscribe(b=>{$(u,b)}))},{immediate:!0});const v=()=>{a.setOptions(n.value),$(u,a.getCurrentResult())};Q(n,v),st(()=>{l()});const g=(...o)=>(v(),u.refetch(...o)),r=()=>new Promise((o,b)=>{let f=()=>{};const O=()=>{if(n.value.enabled!==!1){a.setOptions(n.value);const m=a.getOptimisticResult(n.value);m.isStale?(f(),a.fetchOptimistic(n.value).then(o,R=>{A(n.value.throwOnError,[R,a.getCurrentQuery()])?b(R):o(a.getCurrentResult())})):(f(),o(m))}};O(),f=Q(n,O)});Q(()=>u.error,o=>{if(u.isError&&!u.isFetching&&A(n.value.throwOnError,[o,a.getCurrentQuery()]))throw o});const S=n.value.shallow?it(u):nt(u),h=rt(S);for(const o in u)typeof u[o]=="function"&&(h[o]=u[o]);return h.suspense=r,h.refetch=g,h}function ft(t,e){return ct(ot,t)}const dt=3;async function pt(t,e){const i=t.startsWith("/")?t.slice(1):t;let s=`${window.DATA_HOST}${i}`;const n={allInOne:!1};if(s.includes("#")){const r=new URLSearchParams(s.split("#")[1]);n.allInOne=r.get("allInOne")==="true",s=s.split("#")[0]}t.startsWith("http")&&(s=t),s.endsWith("/")&&(s=s.slice(0,-1));const a=r=>r.includes("?")?`${r}&t=${e??0}`:`${r}?t=${e??0}`,u=n.allInOne?[await fetch(a(s))]:[await fetch(a(`${s}/config.json`)),await fetch(a(`${s}/team.json`)),await fetch(a(`${s}/run.json`))],{status:l,statusText:v}=u[0];if(l>=300||l<200)throw new Error(`fetch data failed. [status=${l}] [statusText=${v}]`);return Promise.all(u.map(r=>r.json())).then(r=>n.allInOne?r[0]:{contest:r[0],teams:r[1],submissions:r[2]})}function yt(t,e,i=!1){let s=3e4,n=s;const a=W(()=>Math.floor(e.value.getTime()/1e3/10));return at.value==="I18N"&&(s=10*1e3,n=s),i&&(s=Number.POSITIVE_INFINITY,n=!1),ft({queryKey:[t,a.value],queryFn:()=>pt(t,a.value),retry:dt,staleTime:s,refetchInterval:n})}function gt(){return B("data-source","",{transform:String})}function Ot(){return B("battle-of-giants","",{transform:String})}export{Ot as a,gt as g,yt as u};
1
+ import{a5 as V,a6 as j,a7 as d,a8 as D,a9 as w,aa as z,ab as k,ac as M,ad as H,ae as T,af as K,ag as G,ah as L,ai as Y,aj as J,ak as X,al as Z,f as W,am as q,an as tt,ao as et,C as Q,ap as $,aq as st,ar as A,as as it,at as nt,au as rt}from"./index-CeypIf10.js";import{b as at}from"./constant-XVIkJ-EB.js";import{u as B}from"./contest-BiuSnW4a.js";var ot=class extends V{constructor(t,e){super(),this.options=e,this.#s=t,this.#n=null,this.#i=j(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#p=void 0;#e=void 0;#a;#l;#i;#n;#b;#c;#f;#o;#h;#r;#d=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),_(this.#t,this.options)?this.#u():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return U(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return U(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#g(),this.#O(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,i=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof d(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#w(),this.#t.setOptions(this.options),e._defaulted&&!D(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const s=this.hasListeners();s&&N(this.#t,i,this.options,e)&&this.#u(),this.updateResult(),s&&(this.#t!==i||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||w(this.options.staleTime,this.#t)!==w(e.staleTime,this.#t))&&this.#v();const n=this.#m();s&&(this.#t!==i||d(this.options.enabled,this.#t)!==d(e.enabled,this.#t)||n!==this.#r)&&this.#R(n)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),i=this.createResult(e,t);return ut(this,i)&&(this.#e=i,this.#l=this.options,this.#a=this.#t.state),i}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(i,s)=>(this.trackProp(s),e?.(s),s==="promise"&&!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled")),Reflect.get(i,s))})}trackProp(t){this.#d.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),i=this.#s.getQueryCache().build(this.#s,e);return i.fetch().then(()=>this.createResult(i,e))}fetch(t){return this.#u({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#u(t){this.#w();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(z)),e}#v(){this.#g();const t=w(this.options.staleTime,this.#t);if(k||this.#e.isStale||!M(t))return;const i=H(this.#e.dataUpdatedAt,t)+1;this.#o=T.setTimeout(()=>{this.#e.isStale||this.updateResult()},i)}#m(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#R(t){this.#O(),this.#r=t,!(k||d(this.options.enabled,this.#t)===!1||!M(this.#r)||this.#r===0)&&(this.#h=T.setInterval(()=>{(this.options.refetchIntervalInBackground||K.isFocused())&&this.#u()},this.#r))}#y(){this.#v(),this.#R(this.#m())}#g(){this.#o&&(T.clearTimeout(this.#o),this.#o=void 0)}#O(){this.#h&&(T.clearInterval(this.#h),this.#h=void 0)}createResult(t,e){const i=this.#t,s=this.options,n=this.#e,a=this.#a,u=this.#l,v=t!==i?t.state:this.#p,{state:g}=t;let r={...g},S=!1,h;if(e._optimisticResults){const c=this.hasListeners(),C=!c&&_(t,e),y=c&&N(t,i,e,s);(C||y)&&(r={...r,...G(g.data,t.options)}),e._optimisticResults==="isRestoring"&&(r.fetchStatus="idle")}let{error:o,errorUpdatedAt:b,status:f}=r;h=r.data;let O=!1;if(e.placeholderData!==void 0&&h===void 0&&f==="pending"){let c;n?.isPlaceholderData&&e.placeholderData===u?.placeholderData?(c=n.data,O=!0):c=typeof e.placeholderData=="function"?e.placeholderData(this.#f?.state.data,this.#f):e.placeholderData,c!==void 0&&(f="success",h=L(n?.data,c,e),S=!0)}if(e.select&&h!==void 0&&!O)if(n&&h===a?.data&&e.select===this.#b)h=this.#c;else try{this.#b=e.select,h=e.select(h),h=L(n?.data,h,e),this.#c=h,this.#n=null}catch(c){this.#n=c}this.#n&&(o=this.#n,h=this.#c,b=Date.now(),f="error");const m=r.fetchStatus==="fetching",R=f==="pending",E=f==="error",P=R&&m,x=h!==void 0,p={status:f,fetchStatus:r.fetchStatus,isPending:R,isSuccess:f==="success",isError:E,isInitialLoading:P,isLoading:P,data:h,dataUpdatedAt:r.dataUpdatedAt,error:o,errorUpdatedAt:b,failureCount:r.fetchFailureCount,failureReason:r.fetchFailureReason,errorUpdateCount:r.errorUpdateCount,isFetched:r.dataUpdateCount>0||r.errorUpdateCount>0,isFetchedAfterMount:r.dataUpdateCount>v.dataUpdateCount||r.errorUpdateCount>v.errorUpdateCount,isFetching:m,isRefetching:m&&!R,isLoadingError:E&&!x,isPaused:r.fetchStatus==="paused",isPlaceholderData:S,isRefetchError:E&&x,isStale:F(t,e),refetch:this.refetch,promise:this.#i,isEnabled:d(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const c=I=>{p.status==="error"?I.reject(p.error):p.data!==void 0&&I.resolve(p.data)},C=()=>{const I=this.#i=p.promise=j();c(I)},y=this.#i;switch(y.status){case"pending":t.queryHash===i.queryHash&&c(y);break;case"fulfilled":(p.status==="error"||p.data!==y.value)&&C();break;case"rejected":(p.status!=="error"||p.error!==y.reason)&&C();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#a=this.#t.state,this.#l=this.options,this.#a.data!==void 0&&(this.#f=this.#t),D(e,t))return;this.#e=e;const i=()=>{if(!t)return!0;const{notifyOnChangeProps:s}=this.options,n=typeof s=="function"?s():s;if(n==="all"||!n&&!this.#d.size)return!0;const a=new Set(n??this.#d);return this.options.throwOnError&&a.add("error"),Object.keys(this.#e).some(u=>{const l=u;return this.#e[l]!==t[l]&&a.has(l)})};this.#S({listeners:i()})}#w(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#p=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#S(t){Y.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function ht(t,e){return d(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function _(t,e){return ht(t,e)||t.state.data!==void 0&&U(t,e,e.refetchOnMount)}function U(t,e,i){if(d(e.enabled,t)!==!1&&w(e.staleTime,t)!=="static"){const s=typeof i=="function"?i(t):i;return s==="always"||s!==!1&&F(t,e)}return!1}function N(t,e,i,s){return(t!==e||d(s.enabled,t)===!1)&&(!i.suspense||t.state.status!=="error")&&F(t,i)}function F(t,e){return d(e.enabled,t)!==!1&&t.isStaleByTime(w(e.staleTime,t))}function ut(t,e){return!D(t.getCurrentResult(),e)}function lt(t=""){if(!J())throw new Error("vue-query hooks can only be used inside setup() function or functions that support injection context.");const e=Z(t),i=X(e);if(!i)throw new Error("No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.");return i}function ct(t,e,i){const s=lt(),n=W(()=>{const o=q(e);typeof o.enabled=="function"&&(o.enabled=o.enabled());const b=s.defaultQueryOptions(o);return b._optimisticResults=s.isRestoring?.value?"isRestoring":"optimistic",b}),a=new t(s,n.value),u=n.value.shallow?tt(a.getCurrentResult()):et(a.getCurrentResult());let l=()=>{};s.isRestoring&&Q(s.isRestoring,o=>{o||(l(),l=a.subscribe(b=>{$(u,b)}))},{immediate:!0});const v=()=>{a.setOptions(n.value),$(u,a.getCurrentResult())};Q(n,v),st(()=>{l()});const g=(...o)=>(v(),u.refetch(...o)),r=()=>new Promise((o,b)=>{let f=()=>{};const O=()=>{if(n.value.enabled!==!1){a.setOptions(n.value);const m=a.getOptimisticResult(n.value);m.isStale?(f(),a.fetchOptimistic(n.value).then(o,R=>{A(n.value.throwOnError,[R,a.getCurrentQuery()])?b(R):o(a.getCurrentResult())})):(f(),o(m))}};O(),f=Q(n,O)});Q(()=>u.error,o=>{if(u.isError&&!u.isFetching&&A(n.value.throwOnError,[o,a.getCurrentQuery()]))throw o});const S=n.value.shallow?it(u):nt(u),h=rt(S);for(const o in u)typeof u[o]=="function"&&(h[o]=u[o]);return h.suspense=r,h.refetch=g,h}function ft(t,e){return ct(ot,t)}const dt=3;async function pt(t,e){const i=t.startsWith("/")?t.slice(1):t;let s=`${window.DATA_HOST}${i}`;const n={allInOne:!1};if(s.includes("#")){const r=new URLSearchParams(s.split("#")[1]);n.allInOne=r.get("allInOne")==="true",s=s.split("#")[0]}t.startsWith("http")&&(s=t),s.endsWith("/")&&(s=s.slice(0,-1));const a=r=>r.includes("?")?`${r}&t=${e??0}`:`${r}?t=${e??0}`,u=n.allInOne?[await fetch(a(s))]:[await fetch(a(`${s}/config.json`)),await fetch(a(`${s}/team.json`)),await fetch(a(`${s}/run.json`))],{status:l,statusText:v}=u[0];if(l>=300||l<200)throw new Error(`fetch data failed. [status=${l}] [statusText=${v}]`);return Promise.all(u.map(r=>r.json())).then(r=>n.allInOne?r[0]:{contest:r[0],teams:r[1],submissions:r[2]})}function yt(t,e,i=!1){let s=3e4,n=s;const a=W(()=>Math.floor(e.value.getTime()/1e3/10));return at.value==="I18N"&&(s=10*1e3,n=s),i&&(s=Number.POSITIVE_INFINITY,n=!1),ft({queryKey:[t,a.value],queryFn:()=>pt(t,a.value),retry:dt,staleTime:s,refetchInterval:n})}function gt(){return B("data-source","",{transform:String})}function Ot(){return B("battle-of-giants","",{transform:String})}export{Ot as a,gt as g,yt as u};
@@ -1 +1 @@
1
- import{b as V,_ as f,P as Z,T as H,M as T,A as R}from"./contest-BX77J6xB.js";var n=(t=>(t.PENDING="PENDING",t.WAITING="WAITING",t.PREPARING="PREPARING",t.COMPILING="COMPILING",t.RUNNING="RUNNING",t.JUDGING="JUDGING",t.FROZEN="FROZEN",t.ACCEPTED="ACCEPTED",t.CORRECT="CORRECT",t.PARTIALLY_CORRECT="PARTIALLY_CORRECT",t.REJECTED="REJECTED",t.WRONG_ANSWER="WRONG_ANSWER",t.NO_OUTPUT="NO_OUTPUT",t.COMPILATION_ERROR="COMPILATION_ERROR",t.PRESENTATION_ERROR="PRESENTATION_ERROR",t.RUNTIME_ERROR="RUNTIME_ERROR",t.TIME_LIMIT_EXCEEDED="TIME_LIMIT_EXCEEDED",t.MEMORY_LIMIT_EXCEEDED="MEMORY_LIMIT_EXCEEDED",t.OUTPUT_LIMIT_EXCEEDED="OUTPUT_LIMIT_EXCEEDED",t.IDLENESS_LIMIT_EXCEEDED="IDLENESS_LIMIT_EXCEEDED",t.HACKED="HACKED",t.JUDGEMENT_FAILED="JUDGEMENT_FAILED",t.CONFIGURATION_ERROR="CONFIGURATION_ERROR",t.FILE_ERROR="FILE_ERROR",t.SYSTEM_ERROR="SYSTEM_ERROR",t.CANCELED="CANCELED",t.SKIPPED="SKIPPED",t.SECURITY_VIOLATED="SECURITY_VIOLATED",t.DENIAL_OF_JUDGEMENT="DENIAL_OF_JUDGEMENT",t.UNKNOWN="UNKNOWN",t.UNDEFINED="UNDEFINED",t))(n||{});const It={PENDING:"Pending",WAITING:"Waiting",PREPARING:"Preparing",COMPILING:"Compiling",RUNNING:"Running",JUDGING:"Judging",FROZEN:"Frozen",ACCEPTED:"Accepted",CORRECT:"Correct",PARTIALLY_CORRECT:"Partially Correct",REJECTED:"Rejected",WRONG_ANSWER:"Wrong Answer",NO_OUTPUT:"No Output",COMPILATION_ERROR:"Compilation Error",PRESENTATION_ERROR:"Presentation Error",RUNTIME_ERROR:"Runtime Error",TIME_LIMIT_EXCEEDED:"Time Limit Exceeded",MEMORY_LIMIT_EXCEEDED:"Memory Limit Exceeded",OUTPUT_LIMIT_EXCEEDED:"Output Limit Exceeded",IDLENESS_LIMIT_EXCEEDED:"Idleness Limit Exceeded",HACKED:"Hacked",JUDGEMENT_FAILED:"Judgement Failed",CONFIGURATION_ERROR:"Configuration Error",FILE_ERROR:"File Error",SYSTEM_ERROR:"System Error",CANCELED:"Canceled",SKIPPED:"Skipped",SECURITY_VIOLATED:"Security Violated",DENIAL_OF_JUDGEMENT:"Denial Of Judgement",UNKNOWN:"Unknown",UNDEFINED:"Undefined"},gt={PENDING:"PD",WAITING:"PD",PREPARING:"PD",COMPILING:"PD",RUNNING:"PD",JUDGING:"PD",FROZEN:"?",ACCEPTED:"AC",CORRECT:"AC",PARTIALLY_CORRECT:"RJ",REJECTED:"RJ",WRONG_ANSWER:"WA",NO_OUTPUT:"NO",COMPILATION_ERROR:"CE",PRESENTATION_ERROR:"PE",RUNTIME_ERROR:"RTE",TIME_LIMIT_EXCEEDED:"TLE",MEMORY_LIMIT_EXCEEDED:"MLE",OUTPUT_LIMIT_EXCEEDED:"OLE",IDLENESS_LIMIT_EXCEEDED:"ILE",HACKED:"RJ",JUDGEMENT_FAILED:"RJ",CONFIGURATION_ERROR:"RJ",FILE_ERROR:"RJ",SYSTEM_ERROR:"RJ",CANCELED:"RJ",SKIPPED:"RJ",SECURITY_VIOLATED:"RJ",DENIAL_OF_JUDGEMENT:"RJ",UNKNOWN:"RJ",UNDEFINED:"RJ"};function $(t){return t=t.toUpperCase().replace(" ","_"),["OK","AC",n.ACCEPTED.toString()].includes(t)||[n.CORRECT.toString()].includes(t)?n.ACCEPTED:[n.PARTIALLY_CORRECT.toString()].includes(t)?n.PARTIALLY_CORRECT:["WA",n.WRONG_ANSWER.toString()].includes(t)?n.WRONG_ANSWER:["RJ","INCORRECT",n.REJECTED.toString()].includes(t)?n.REJECTED:["NO",n.NO_OUTPUT.toString()].includes(t)?n.NO_OUTPUT:["PD",n.PENDING.toString()].includes(t)?n.PENDING:[n.WAITING.toString()].includes(t)?n.WAITING:[n.JUDGING.toString()].includes(t)?n.JUDGING:[n.FROZEN.toString()].includes(t)?n.FROZEN:["CE",n.COMPILATION_ERROR.toString()].includes(t)?n.COMPILATION_ERROR:["PE",n.PRESENTATION_ERROR.toString()].includes(t)?n.PRESENTATION_ERROR:["TL","TLE",n.TIME_LIMIT_EXCEEDED.toString()].includes(t)?n.TIME_LIMIT_EXCEEDED:["ML","MLE",n.MEMORY_LIMIT_EXCEEDED.toString()].includes(t)?n.MEMORY_LIMIT_EXCEEDED:["OL","OLE",n.OUTPUT_LIMIT_EXCEEDED.toString()].includes(t)?n.OUTPUT_LIMIT_EXCEEDED:["IL","ILE",n.IDLENESS_LIMIT_EXCEEDED.toString()].includes(t)?n.IDLENESS_LIMIT_EXCEEDED:["RT","RE","RTE",n.RUNTIME_ERROR.toString()].includes(t)?n.RUNTIME_ERROR:["JE",n.JUDGEMENT_FAILED.toString()].includes(t)?n.JUDGEMENT_FAILED:["SE",n.SYSTEM_ERROR.toString()].includes(t)?n.SYSTEM_ERROR:[n.HACKED.toString()].includes(t)?n.HACKED:[n.CONFIGURATION_ERROR.toString()].includes(t)?n.CONFIGURATION_ERROR:[n.CANCELED.toString()].includes(t)?n.CANCELED:[n.SKIPPED.toString()].includes(t)?n.SKIPPED:[n.SECURITY_VIOLATED.toString()].includes(t)?n.SECURITY_VIOLATED:[n.DENIAL_OF_JUDGEMENT.toString()].includes(t)?n.DENIAL_OF_JUDGEMENT:n.UNKNOWN}function q(t){return[n.ACCEPTED,n.CORRECT].includes(t)}function Q(t){return[n.RUNTIME_ERROR,n.TIME_LIMIT_EXCEEDED,n.MEMORY_LIMIT_EXCEEDED,n.OUTPUT_LIMIT_EXCEEDED,n.IDLENESS_LIMIT_EXCEEDED,n.WRONG_ANSWER,n.REJECTED,n.NO_OUTPUT,n.JUDGEMENT_FAILED,n.HACKED].includes(t)}function tt(t){return[n.PENDING,n.WAITING,n.COMPILING,n.JUDGING,n.FROZEN].includes(t)}function et(t){return[n.COMPILATION_ERROR,n.PRESENTATION_ERROR,n.CONFIGURATION_ERROR,n.SYSTEM_ERROR,n.CANCELED,n.SKIPPED,n.UNKNOWN,n.UNDEFINED].includes(t)}class b{constructor(){this.status=n.UNKNOWN,this.isIgnore=!1,this.isSolved=!1,this.isFirstSolved=!1,this.id="",this.teamId="",this.problemId="",this.timestamp=0,this.timestampUnit="second"}isAccepted(){return q(this.status)}isRejected(){return Q(this.status)}isPending(){return tt(this.status)}isNotCalculatedPenaltyStatus(){return et(this.status)}get timestampToMinute(){return this.timestampUnit==="nanosecond"?Math.floor(this.timestamp/60/1e3/1e3/1e3):this.timestampUnit==="microsecond"?Math.floor(this.timestamp/60/1e3/1e3):this.timestampUnit==="millisecond"?Math.floor(this.timestamp/60/1e3):Math.floor(this.timestamp/60)}get timestampToSecond(){return this.timestampUnit==="nanosecond"?Math.floor(this.timestamp/1e3/1e3/1e3):this.timestampUnit==="microsecond"?Math.floor(this.timestamp/1e3/1e3):this.timestampUnit==="millisecond"?Math.floor(this.timestamp/1e3):this.timestamp}get timestampDisplayFormatWithSecond(){const e=this.timestampToSecond,i=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60,a=m=>m.toString().padStart(2,"0");return`${a(i)}:${a(s)}:${a(r)}`}get timestampDisplayFormatWithMilliSecond(){let e=this.timestampDisplayFormatWithSecond;if(this.timestampUnit==="millisecond"){const i=(this.timestamp%1e3).toString().padStart(3,"0");e+=`.${i}`}return e}static compare(e,i){if(e.timestamp!==i.timestamp)return e.timestamp-i.timestamp;if(e.teamId===i.teamId){if(e.isAccepted()&&!i.isAccepted())return-1;if(!e.isAccepted()&&i.isAccepted())return 1}return e.id<i.id?-1:e.id===i.id?0:1}}function P(t,e){const i=new b;return i.id=String(t.id??t.submission_id??""),i.teamId=String(t.team_id),i.problemId=String(t.problem_id),i.timestamp=t.timestamp,i.status=$(t.status),i.isIgnore=t.is_ignore??!1,t.time&&(i.time=t.time),t.language&&(i.language=t.language),t.reaction?i.reaction=t.reaction:e?.options.reactionVideoUrlTemplate&&(i.reaction={url:e.options.reactionVideoUrlTemplate.replace(/\$\{submission_id\}/,i.id)}),i}function Nt(t,e){return Array.isArray(t)?t.map((i,s)=>P({...i,id:i.submission_id??String(s)},e)):Object.entries(t).map(([s,r])=>P({...r,id:r.submission_id??s},e))}class p{constructor(){this.id="",this.name="",this.organization="",this.group=[],this.tag=[],this.rank=0,this.originalRank=0,this.organizationRank=-1,this.solvedProblemNum=0,this.attemptedProblemNum=0,this.lastSolvedProblem=null,this.lastSolvedProblemStatistics=null,this.penalty=0,this.problemStatistics=[],this.problemStatisticsMap=new Map,this.submissions=[],this.placeChartPoints=[],this.awards=[],this.se=0}reset(){this.rank=0,this.originalRank=0,this.organizationRank=-1,this.solvedProblemNum=0,this.attemptedProblemNum=0,this.lastSolvedProblem=null,this.lastSolvedProblemStatistics=null,this.penalty=0,this.problemStatistics=[],this.problemStatisticsMap=new Map,this.submissions=[],this.placeChartPoints=[],this.awards=[],this.se=0}get penaltyToMinute(){return Math.floor(this.penalty/60)}get isUnofficial(){return this.group.includes("unofficial")}get isGirl(){return this.group.includes("girl")}get membersToArray(){if(Array.isArray(this.members))return this.members;if(typeof this.members=="string"){if(this.members.includes(", "))return this.members.split(", ");if(this.members.includes("、"))return this.members.split("、")}return[]}get membersToString(){return typeof this.members=="string"?this.members:this.members?.join(", ")}get isEffectiveTeam(){return this.solvedProblemNum>0}get dirt(){const e=this.attemptedProblemNum,i=this.solvedProblemNum;return V(e,i)}calcSE(e){let i=0,s=0;if(this.problemStatistics.forEach(a=>{a.isSolved&&(i+=1,s+=a.problem.statistics.acceptedNum)}),e===0||i===0)return 0;const r=(i*e-s)/e/i;return this.se=Math.round(r*100)/100,this.se}calcSolvedData(e){this.solvedProblemNum=0,this.attemptedProblemNum=0,this.penalty=0;for(const i of this.problemStatistics)i.isAccepted&&(this.solvedProblemNum++,this.attemptedProblemNum+=i.failedCount+1,e?.calculationOfPenalty==="in_seconds"||e?.calculationOfPenalty==="accumulate_in_seconds_and_finally_to_the_minute"?this.penalty+=i.penaltyInSecond:this.penalty+=i.penalty);e?.calculationOfPenalty==="accumulate_in_seconds_and_finally_to_the_minute"&&(this.penalty=Math.floor(this.penalty/60)*60)}calcAwards(e){if(e)for(const i of e)this.rank>=i.minRank&&this.rank<=i.maxRank&&this.awards.push(i.medalType)}isEqualRank(e){return this.solvedProblemNum===e.solvedProblemNum&&this.penalty===e.penalty}postProcessPlaceChartPoints(){if(this.placeChartPoints.length===0)return;const e=[];e.push(this.placeChartPoints[0]);for(let i=1;i<this.placeChartPoints.length-1;i++){const s=this.placeChartPoints[i],r=e[e.length-1];(s.rank!==r.rank||s.lastSolvedProblem!==r.lastSolvedProblem)&&e.push(s)}this.placeChartPoints.length>1&&e.push(this.placeChartPoints[this.placeChartPoints.length-1]),this.placeChartPoints=e}static compare(e,i){return e.solvedProblemNum!==i.solvedProblemNum?i.solvedProblemNum-e.solvedProblemNum:e.penalty!==i.penalty?e.penalty-i.penalty:e.lastSolvedProblemStatistics&&i.lastSolvedProblemStatistics?e.lastSolvedProblemStatistics.solvedTimestampToMinute-i.lastSolvedProblemStatistics.solvedTimestampToMinute:e.name<i.name?-1:e.name>i.name?1:0}}function O(t){const e=new p;e.id=t.id??t.team_id??"",e.name=t.name??t.team_name??"",e.organization=t.organization??"",e.badge=t.badge,e.group=f.cloneDeep(t.group??[]),e.tag=f.cloneDeep(t.tag??[]),e.coach=t.coach,e.members=t.members,t.official&&e.group.push("official"),t.unofficial&&e.group.push("unofficial"),t.girl&&e.group.push("girl");{const i=t;for(const s of Object.keys(i))(i[s]===1||i[s]===!0)&&e.group.push(s)}return e.group=[...new Set(e.group)],e.group.sort(),t.location&&(e.location=t.location),t.icpc_id&&(e.icpcID=t.icpc_id),e}function bt(t){return Array.isArray(t)?t.map(e=>O(e)):Object.entries(t).map(([i,s])=>O({...s,team_id:s.team_id??i}))}class it{constructor(){this.problem=new Z,this.team=new p,this.submission=new b}get key(){return`balloon-${this.team.id}-${this.problem.id}`}static compare(e,i){return b.compare(e.submission,i.submission)}}const x="3.7.8",st=x,h=typeof Buffer=="function",M=typeof TextDecoder=="function"?new TextDecoder:void 0,y=typeof TextEncoder=="function"?new TextEncoder:void 0,rt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=Array.prototype.slice.call(rt),I=(t=>{let e={};return t.forEach((i,s)=>e[i]=s),e})(d),nt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,u=String.fromCharCode.bind(String),U=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),F=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),G=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),k=t=>{let e,i,s,r,a="";const l=t.length%3;for(let m=0;m<t.length;){if((i=t.charCodeAt(m++))>255||(s=t.charCodeAt(m++))>255||(r=t.charCodeAt(m++))>255)throw new TypeError("invalid character found");e=i<<16|s<<8|r,a+=d[e>>18&63]+d[e>>12&63]+d[e>>6&63]+d[e&63]}return l?a.slice(0,l-3)+"===".substring(l):a},A=typeof btoa=="function"?t=>btoa(t):h?t=>Buffer.from(t,"binary").toString("base64"):k,D=h?t=>Buffer.from(t).toString("base64"):t=>{let i=[];for(let s=0,r=t.length;s<r;s+=4096)i.push(u.apply(null,t.subarray(s,s+4096)));return A(i.join(""))},N=(t,e=!1)=>e?F(D(t)):D(t),at=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?u(192|e>>>6)+u(128|e&63):u(224|e>>>12&15)+u(128|e>>>6&63)+u(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return u(240|e>>>18&7)+u(128|e>>>12&63)+u(128|e>>>6&63)+u(128|e&63)}},ot=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,w=t=>t.replace(ot,at),L=h?t=>Buffer.from(t,"utf8").toString("base64"):y?t=>D(y.encode(t)):t=>A(w(t)),E=(t,e=!1)=>e?F(L(t)):L(t),v=t=>E(t,!0),lt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,mt=t=>{switch(t.length){case 4:var e=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),i=e-65536;return u((i>>>10)+55296)+u((i&1023)+56320);case 3:return u((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return u((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},B=t=>t.replace(lt,mt),z=t=>{if(t=t.replace(/\s+/g,""),!nt.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,i,s,r=[];for(let a=0;a<t.length;)e=I[t.charAt(a++)]<<18|I[t.charAt(a++)]<<12|(i=I[t.charAt(a++)])<<6|(s=I[t.charAt(a++)]),i===64?r.push(u(e>>16&255)):s===64?r.push(u(e>>16&255,e>>8&255)):r.push(u(e>>16&255,e>>8&255,e&255));return r.join("")},S=typeof atob=="function"?t=>atob(G(t)):h?t=>Buffer.from(t,"base64").toString("binary"):z,W=h?t=>U(Buffer.from(t,"base64")):t=>U(S(t).split("").map(e=>e.charCodeAt(0))),X=t=>W(Y(t)),ct=h?t=>Buffer.from(t,"base64").toString("utf8"):M?t=>M.decode(W(t)):t=>B(S(t)),Y=t=>G(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),C=t=>ct(Y(t)),ut=t=>{if(typeof t!="string")return!1;const e=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},K=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),j=function(){const t=(e,i)=>Object.defineProperty(String.prototype,e,K(i));t("fromBase64",function(){return C(this)}),t("toBase64",function(e){return E(this,e)}),t("toBase64URI",function(){return E(this,!0)}),t("toBase64URL",function(){return E(this,!0)}),t("toUint8Array",function(){return X(this)})},J=function(){const t=(e,i)=>Object.defineProperty(Uint8Array.prototype,e,K(i));t("toBase64",function(e){return N(this,e)}),t("toBase64URI",function(){return N(this,!0)}),t("toBase64URL",function(){return N(this,!0)})},Et=()=>{j(),J()},_={version:x,VERSION:st,atob:S,atobPolyfill:z,btoa:A,btoaPolyfill:k,fromBase64:C,toBase64:E,encode:E,encodeURI:v,encodeURL:v,utob:w,btou:B,decode:C,isValid:ut,fromUint8Array:N,toUint8Array:X,extendString:j,extendUint8Array:J,extendBuiltins:Et};var ht=(t=>(t[t.BLUE=0]="BLUE",t[t.RED=1]="RED",t))(ht||{});class g{constructor(e=0){this.type=e,this.name=`${e===0?"Blue":"Red"} Team`,this.teams=[],this.filterOrganizations=[],this.filterOrganizationMap=new Map,this.filterTeams=[],this.filterTeamMap=new Map}setFilterOrganizations(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterOrganizations=e,this.filterOrganizationMap=i}setFilterTeams(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterTeams=e,this.filterTeamMap=i}refreshName(){return this.filterOrganizations.length>0?this.name=this.filterOrganizations[0].text:this.name=`${this.type===0?"Blue":"Red"} Team`,this.name}get totalSolvedProblemNum(){let e=0;return this.teams.forEach(i=>{e+=i.solvedProblemNum}),e}get totalPenalty(){let e=0;return this.teams.forEach(i=>{e+=i.penaltyToMinute}),e}get totalPenaltyToString(){const e=this.totalPenalty,i=a=>a<10?`0${a}`:String(a),s=Math.floor(e/60),r=Math.floor(e%60);return[i(s),i(r)].join(":")}toJSON(){return{type:this.type,name:this.name,filterOrganizations:this.filterOrganizations,filterTeams:this.filterTeams}}}class dt{constructor(){this.enable=!1,this.topX=5,this.equalTeams=!0,this.persist=!1,this.blueTeam=new g(0),this.redTeam=new g(1)}ToBase64(){return _.encode(JSON.stringify(this))}FromBase64(e){if(e.length===0||_.isValid(e)===!1)return;const i=JSON.parse(_.decode(e));this.enable=i.enable,this.topX=i.topX,this.equalTeams=i.equalTeams,this.persist=i.persist,this.blueTeam=new g(0),this.blueTeam.name=i.blueTeam.name,this.blueTeam.setFilterOrganizations(i.blueTeam.filterOrganizations),this.blueTeam.setFilterTeams(i.blueTeam.filterTeams),this.redTeam=new g(1),this.redTeam.name=i.redTeam.name,this.redTeam.setFilterOrganizations(i.redTeam.filterOrganizations),this.redTeam.setFilterTeams(i.redTeam.filterTeams)}}class ft{constructor(){this.teamSolvedNum=[],this.teamSolvedNumIndex=[],this.maxSolvedProblems=0,this.effectiveTeamNum=0,this.totalTeamNum=0}reset(){this.teamSolvedNum=[],this.teamSolvedNumIndex=[],this.maxSolvedProblems=0,this.effectiveTeamNum=0,this.totalTeamNum=0}getTeamSolvedNumIndex(e){return this.teamSolvedNumIndex[e]??0}}class pt{constructor(){this.enableFilterSubmissionsByTimestamp=!1,this.width=0,this.timestamp=0,this.enableFilterTeamsByGroup=!1,this.group="all",this.filterOrganizations=[],this.filterOrganizationMap=new Map,this.filterTeams=[],this.filterTeamMap=new Map,this.enableAnimatedSubmissions=!1,this.battleOfGiants=new dt}setSelf(e){this.enableFilterSubmissionsByTimestamp=e.enableFilterSubmissionsByTimestamp,this.width=e.width,this.timestamp=e.timestamp,this.enableFilterTeamsByGroup=e.enableFilterTeamsByGroup,this.group=e.group,this.filterOrganizations=e.filterOrganizations,this.filterOrganizationMap=e.filterOrganizationMap,this.filterTeams=e.filterTeams,this.filterTeamMap=e.filterTeamMap,this.enableAnimatedSubmissions=e.enableAnimatedSubmissions,this.battleOfGiants=e.battleOfGiants}setWidth(e,i){this.width=e,this.timestamp=Math.floor((i.getEndTime().unix()-i.getStartTime().unix())*this.width*1e-4),this.enableFilterSubmissionsByTimestamp=!0}disableFilterSubmissionByTimestamp(){this.enableFilterSubmissionsByTimestamp=!1}setGroup(e){this.group=e,this.enableFilterTeamsByGroup=!0,this.group==="all"&&this.disableFilterTeamsByGroup()}disableFilterTeamsByGroup(){this.enableFilterTeamsByGroup=!1,this.group="all"}setFilterOrganizations(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterOrganizations=e,this.filterOrganizationMap=i}setFilterTeams(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterTeams=e,this.filterTeamMap=i}isNeedReBuildRank(e){return this.enableFilterSubmissionsByTimestamp!==e.enableFilterSubmissionsByTimestamp||this.width!==e.width||this.timestamp!==e.timestamp||this.enableFilterTeamsByGroup!==e.enableFilterTeamsByGroup||this.group!==e.group}}class _t{constructor(e,i,s){this.contest=e,this.teams=f.cloneDeep(i),this.teamsMap=new Map(this.teams.map(r=>[r.id,r])),this.submissions=f.cloneDeep(s).sort(b.compare);{const r=this.contest.options,a=f.cloneDeep(r.submissionTimestampUnit);this.submissions.forEach(l=>{l.timestampUnit=a,l.time&&(r.submissionHasTimeField=!0),l.language&&(r.submissionHasLanguageField=!0)})}this.submissionsMap=new Map(this.submissions.map(r=>[r.id,r])),this.organizations=this.buildOrganizations(),this.originTeams=this.teams.map(r=>r),this.originTeams.sort(p.compare),this.rankStatistics=new ft,this.options=new pt,this.balloons=[];{const r=new Set;this.submissions.forEach(a=>{a.language&&r.add(a.language)}),this.languages=[...r].sort()}{const r=new Set;this.submissions.forEach(a=>{r.add(a.status)}),this.statuses=[...r].sort()}}cleanRank(){(()=>{this.teams=[];for(const[e,i]of this.teamsMap)this.filterTeamByOrg(i)||this.teams.push(i)})();for(const e of this.teams)e.reset(),e.problemStatistics=this.contest.problems.map(i=>{const s=new H;return s.problem=i,s.contestPenalty=this.contest.penalty,s}),e.problemStatisticsMap=new Map(e.problemStatistics.map(i=>[i.problem.id,i]));this.contest.problems.forEach(e=>{e.statistics.reset()})}buildRank(){return(()=>{this.cleanRank(),this.teams.forEach(s=>s.placeChartPoints.push({timePoint:0,rank:1,lastSolvedProblem:null})),this.rankStatistics.reset(),this.rankStatistics.teamSolvedNum=Array.from({length:this.contest.problems.length+1}).fill(0),this.rankStatistics.teamSolvedNumIndex=Array.from({length:this.contest.problems.length+1}).fill(0);let e=0;const i=this.getSubmissions();for(let s=0;s<i.length;s++){const r=i[s],a=r.teamId,l=r.problemId,m=this.teamsMap.get(a),c=this.contest.problemsMap.get(l);(()=>{if(m===void 0||this.filterTeamByOrg(m)||c===void 0)return;const o=m.problemStatisticsMap.get(l);if(o.submissions.push(r),m.submissions.push(r),c.statistics.submittedNum++,o.isSolved){r.isSolved=!1,r.isFirstSolved=!1;return}if(r.isIgnore||r.isNotCalculatedPenaltyStatus()){c.statistics.ignoreNum++,o.ignoreCount++;return}if(o.isSubmitted=!0,o.lastSubmitTimestamp=r.timestampToSecond,o.totalCount++,r.isAccepted()){for(r.isSolved=!0,o.isSolved=!0,o.solvedTimestamp=r.timestampToSecond,c.statistics.acceptedNum++,c.statistics.attemptedNum+=o.failedCount+1,(c.statistics.firstSolveSubmissions.length===0||c.statistics.firstSolveSubmissions[c.statistics.firstSolveSubmissions.length-1].timestamp===r.timestamp)&&(r.isFirstSolved=!0,o.isFirstSolved=!0,c.statistics.firstSolveSubmissions.push(r));c.statistics.lastSolveSubmissions.length>0;)c.statistics.lastSolveSubmissions.pop();c.statistics.lastSolveSubmissions.push(r),m.lastSolvedProblem=c,m.lastSolvedProblemStatistics=o}r.isRejected()&&(o.failedCount++,c.statistics.rejectedNum++),r.isPending()&&(o.pendingCount++,c.statistics.pendingNum++)})(),(r.timestampToMinute>e||s===i.length-1)&&(this.teams.forEach(o=>o.calcSolvedData(this.contest.options)),this.teams.sort(p.compare),this.buildTeamRank(),this.teams.forEach(o=>o.placeChartPoints.push({timePoint:r.timestampToMinute,rank:o.rank,lastSolvedProblem:o.lastSolvedProblem}))),e=r.timestampToMinute}this.teams.forEach(s=>s.calcSolvedData(this.contest.options)),this.teams.sort(p.compare),this.buildTeamRank(),this.buildOrgRank(),this.rankStatistics.effectiveTeamNum=this.teams.filter(s=>s.isEffectiveTeam).length,this.rankStatistics.totalTeamNum=this.teams.length,this.teams.forEach(s=>s.calcSE(this.rankStatistics.totalTeamNum)),this.contest.problems.forEach(s=>s.statistics.calcSE(this.rankStatistics.totalTeamNum)),this.buildAwards(),this.teams.forEach(s=>s.calcAwards(this.contest.awards?.get(this.options.group))),this.teams.forEach(s=>s.postProcessPlaceChartPoints())})(),(()=>{for(const e of this.teams)this.rankStatistics.teamSolvedNum[e.solvedProblemNum]++;{let e=0;const i=this.rankStatistics.teamSolvedNum,s=this.rankStatistics.teamSolvedNumIndex;for(let r=s.length-1;r>=0;r--)e+=i[r]>0?1:0,s[r]=e}this.teams.length>0&&(this.rankStatistics.maxSolvedProblems=this.teams[0].solvedProblemNum)})(),this}buildTeamRank(){let e=1,i=1,s=null;for(const r of this.teams)r.rank=e++,r.originalRank=i++,s!==null&&r.isEqualRank(s)&&(r.rank=s.rank),s=r}buildOrgRank(){if(!this.contest.organization)return;let e=1,i=null;const s=new Set;for(const r of this.teams){const a=r.organization;s.has(a)||(s.add(a),r.organizationRank=e++,i!==null&&r.isEqualRank(i)&&(r.organizationRank=i.organizationRank),i=r)}}buildOrganizations(){if(!this.contest.organization)return[];const e=new Array,i=new Set;return this.teams.forEach(s=>{const r=s.organization;i.has(r)||(e.push(r),i.add(r))}),e.sort(),e}buildAwards(){if(this.contest.medal==="ccpc"){this.contest.awards=new Map;const e=this.rankStatistics.effectiveTeamNum,i=[],s=new R,r=new R,a=new R,l=new R;s.medalType=T.GOLD,s.minRank=1,s.maxRank=Math.ceil(e*.1),s.maxRank>=s.minRank&&i.push(s),r.medalType=T.SILVER,r.minRank=s.maxRank+1,r.maxRank=Math.ceil(e*.3),r.maxRank>=r.minRank&&i.push(r),a.medalType=T.BRONZE,a.minRank=r.maxRank+1,a.maxRank=Math.ceil(e*.6),a.maxRank>=a.minRank&&i.push(a),l.medalType=T.HONORABLE,l.minRank=a.maxRank+1,this.teams.forEach(m=>{m.solvedProblemNum>0&&(l.maxRank=Math.max(l.maxRank,m.rank))}),l.maxRank>=l.minRank&&i.push(l),this.contest.awards.set("official",i)}}filterTeamByOrg(e){const i=this.options;return!!(i.enableFilterTeamsByGroup&&!e.group?.includes(i.group))}getSubmissions(){return this.contest.replayContestStartTimestamp===void 0&&this.options.enableFilterSubmissionsByTimestamp===!1?this.submissions:this.submissions.filter(e=>!(this.contest.replayContestStartTimestamp!==void 0&&e.timestampToSecond>this.contest.replayContestStartTimestamp||this.options.enableFilterSubmissionsByTimestamp&&e.timestampToSecond>this.options.timestamp))}buildBalloons(){this.balloons=[],this.cleanRank();const e=this.getSubmissions();for(let i=0;i<e.length;i++){const s=e[i],r=s.teamId,a=s.problemId,l=this.teamsMap.get(r),m=this.contest.problemsMap.get(a);(()=>{if(l===void 0||m===void 0)return;const c=l.problemStatisticsMap.get(a);if(!c.isSolved&&s.isAccepted()){c.isSolved=!0,c.solvedTimestamp=s.timestampToSecond;const o=new it;o.team=l,o.problem=m,o.submission=s,this.balloons.push(o)}})()}}setReplayTime(e){this.contest.setReplayTime(e)}}export{it as B,ht as G,_t as R,n as S,p as T,Nt as a,et as b,bt as c,tt as d,gt as e,b as f,Q as g,It as h,q as i,pt as j};
1
+ import{b as V,_ as f,P as Z,T as H,M as T,A as R}from"./contest-BiuSnW4a.js";var n=(t=>(t.PENDING="PENDING",t.WAITING="WAITING",t.PREPARING="PREPARING",t.COMPILING="COMPILING",t.RUNNING="RUNNING",t.JUDGING="JUDGING",t.FROZEN="FROZEN",t.ACCEPTED="ACCEPTED",t.CORRECT="CORRECT",t.PARTIALLY_CORRECT="PARTIALLY_CORRECT",t.REJECTED="REJECTED",t.WRONG_ANSWER="WRONG_ANSWER",t.NO_OUTPUT="NO_OUTPUT",t.COMPILATION_ERROR="COMPILATION_ERROR",t.PRESENTATION_ERROR="PRESENTATION_ERROR",t.RUNTIME_ERROR="RUNTIME_ERROR",t.TIME_LIMIT_EXCEEDED="TIME_LIMIT_EXCEEDED",t.MEMORY_LIMIT_EXCEEDED="MEMORY_LIMIT_EXCEEDED",t.OUTPUT_LIMIT_EXCEEDED="OUTPUT_LIMIT_EXCEEDED",t.IDLENESS_LIMIT_EXCEEDED="IDLENESS_LIMIT_EXCEEDED",t.HACKED="HACKED",t.JUDGEMENT_FAILED="JUDGEMENT_FAILED",t.CONFIGURATION_ERROR="CONFIGURATION_ERROR",t.FILE_ERROR="FILE_ERROR",t.SYSTEM_ERROR="SYSTEM_ERROR",t.CANCELED="CANCELED",t.SKIPPED="SKIPPED",t.SECURITY_VIOLATED="SECURITY_VIOLATED",t.DENIAL_OF_JUDGEMENT="DENIAL_OF_JUDGEMENT",t.UNKNOWN="UNKNOWN",t.UNDEFINED="UNDEFINED",t))(n||{});const It={PENDING:"Pending",WAITING:"Waiting",PREPARING:"Preparing",COMPILING:"Compiling",RUNNING:"Running",JUDGING:"Judging",FROZEN:"Frozen",ACCEPTED:"Accepted",CORRECT:"Correct",PARTIALLY_CORRECT:"Partially Correct",REJECTED:"Rejected",WRONG_ANSWER:"Wrong Answer",NO_OUTPUT:"No Output",COMPILATION_ERROR:"Compilation Error",PRESENTATION_ERROR:"Presentation Error",RUNTIME_ERROR:"Runtime Error",TIME_LIMIT_EXCEEDED:"Time Limit Exceeded",MEMORY_LIMIT_EXCEEDED:"Memory Limit Exceeded",OUTPUT_LIMIT_EXCEEDED:"Output Limit Exceeded",IDLENESS_LIMIT_EXCEEDED:"Idleness Limit Exceeded",HACKED:"Hacked",JUDGEMENT_FAILED:"Judgement Failed",CONFIGURATION_ERROR:"Configuration Error",FILE_ERROR:"File Error",SYSTEM_ERROR:"System Error",CANCELED:"Canceled",SKIPPED:"Skipped",SECURITY_VIOLATED:"Security Violated",DENIAL_OF_JUDGEMENT:"Denial Of Judgement",UNKNOWN:"Unknown",UNDEFINED:"Undefined"},gt={PENDING:"PD",WAITING:"PD",PREPARING:"PD",COMPILING:"PD",RUNNING:"PD",JUDGING:"PD",FROZEN:"?",ACCEPTED:"AC",CORRECT:"AC",PARTIALLY_CORRECT:"RJ",REJECTED:"RJ",WRONG_ANSWER:"WA",NO_OUTPUT:"NO",COMPILATION_ERROR:"CE",PRESENTATION_ERROR:"PE",RUNTIME_ERROR:"RTE",TIME_LIMIT_EXCEEDED:"TLE",MEMORY_LIMIT_EXCEEDED:"MLE",OUTPUT_LIMIT_EXCEEDED:"OLE",IDLENESS_LIMIT_EXCEEDED:"ILE",HACKED:"RJ",JUDGEMENT_FAILED:"RJ",CONFIGURATION_ERROR:"RJ",FILE_ERROR:"RJ",SYSTEM_ERROR:"RJ",CANCELED:"RJ",SKIPPED:"RJ",SECURITY_VIOLATED:"RJ",DENIAL_OF_JUDGEMENT:"RJ",UNKNOWN:"RJ",UNDEFINED:"RJ"};function $(t){return t=t.toUpperCase().replace(" ","_"),["OK","AC",n.ACCEPTED.toString()].includes(t)||[n.CORRECT.toString()].includes(t)?n.ACCEPTED:[n.PARTIALLY_CORRECT.toString()].includes(t)?n.PARTIALLY_CORRECT:["WA",n.WRONG_ANSWER.toString()].includes(t)?n.WRONG_ANSWER:["RJ","INCORRECT",n.REJECTED.toString()].includes(t)?n.REJECTED:["NO",n.NO_OUTPUT.toString()].includes(t)?n.NO_OUTPUT:["PD",n.PENDING.toString()].includes(t)?n.PENDING:[n.WAITING.toString()].includes(t)?n.WAITING:[n.JUDGING.toString()].includes(t)?n.JUDGING:[n.FROZEN.toString()].includes(t)?n.FROZEN:["CE",n.COMPILATION_ERROR.toString()].includes(t)?n.COMPILATION_ERROR:["PE",n.PRESENTATION_ERROR.toString()].includes(t)?n.PRESENTATION_ERROR:["TL","TLE",n.TIME_LIMIT_EXCEEDED.toString()].includes(t)?n.TIME_LIMIT_EXCEEDED:["ML","MLE",n.MEMORY_LIMIT_EXCEEDED.toString()].includes(t)?n.MEMORY_LIMIT_EXCEEDED:["OL","OLE",n.OUTPUT_LIMIT_EXCEEDED.toString()].includes(t)?n.OUTPUT_LIMIT_EXCEEDED:["IL","ILE",n.IDLENESS_LIMIT_EXCEEDED.toString()].includes(t)?n.IDLENESS_LIMIT_EXCEEDED:["RT","RE","RTE",n.RUNTIME_ERROR.toString()].includes(t)?n.RUNTIME_ERROR:["JE",n.JUDGEMENT_FAILED.toString()].includes(t)?n.JUDGEMENT_FAILED:["SE",n.SYSTEM_ERROR.toString()].includes(t)?n.SYSTEM_ERROR:[n.HACKED.toString()].includes(t)?n.HACKED:[n.CONFIGURATION_ERROR.toString()].includes(t)?n.CONFIGURATION_ERROR:[n.CANCELED.toString()].includes(t)?n.CANCELED:[n.SKIPPED.toString()].includes(t)?n.SKIPPED:[n.SECURITY_VIOLATED.toString()].includes(t)?n.SECURITY_VIOLATED:[n.DENIAL_OF_JUDGEMENT.toString()].includes(t)?n.DENIAL_OF_JUDGEMENT:n.UNKNOWN}function q(t){return[n.ACCEPTED,n.CORRECT].includes(t)}function Q(t){return[n.RUNTIME_ERROR,n.TIME_LIMIT_EXCEEDED,n.MEMORY_LIMIT_EXCEEDED,n.OUTPUT_LIMIT_EXCEEDED,n.IDLENESS_LIMIT_EXCEEDED,n.WRONG_ANSWER,n.REJECTED,n.NO_OUTPUT,n.JUDGEMENT_FAILED,n.HACKED].includes(t)}function tt(t){return[n.PENDING,n.WAITING,n.COMPILING,n.JUDGING,n.FROZEN].includes(t)}function et(t){return[n.COMPILATION_ERROR,n.PRESENTATION_ERROR,n.CONFIGURATION_ERROR,n.SYSTEM_ERROR,n.CANCELED,n.SKIPPED,n.UNKNOWN,n.UNDEFINED].includes(t)}class b{constructor(){this.status=n.UNKNOWN,this.isIgnore=!1,this.isSolved=!1,this.isFirstSolved=!1,this.id="",this.teamId="",this.problemId="",this.timestamp=0,this.timestampUnit="second"}isAccepted(){return q(this.status)}isRejected(){return Q(this.status)}isPending(){return tt(this.status)}isNotCalculatedPenaltyStatus(){return et(this.status)}get timestampToMinute(){return this.timestampUnit==="nanosecond"?Math.floor(this.timestamp/60/1e3/1e3/1e3):this.timestampUnit==="microsecond"?Math.floor(this.timestamp/60/1e3/1e3):this.timestampUnit==="millisecond"?Math.floor(this.timestamp/60/1e3):Math.floor(this.timestamp/60)}get timestampToSecond(){return this.timestampUnit==="nanosecond"?Math.floor(this.timestamp/1e3/1e3/1e3):this.timestampUnit==="microsecond"?Math.floor(this.timestamp/1e3/1e3):this.timestampUnit==="millisecond"?Math.floor(this.timestamp/1e3):this.timestamp}get timestampDisplayFormatWithSecond(){const e=this.timestampToSecond,i=Math.floor(e/3600),s=Math.floor(e%3600/60),r=e%60,a=m=>m.toString().padStart(2,"0");return`${a(i)}:${a(s)}:${a(r)}`}get timestampDisplayFormatWithMilliSecond(){let e=this.timestampDisplayFormatWithSecond;if(this.timestampUnit==="millisecond"){const i=(this.timestamp%1e3).toString().padStart(3,"0");e+=`.${i}`}return e}static compare(e,i){if(e.timestamp!==i.timestamp)return e.timestamp-i.timestamp;if(e.teamId===i.teamId){if(e.isAccepted()&&!i.isAccepted())return-1;if(!e.isAccepted()&&i.isAccepted())return 1}return e.id<i.id?-1:e.id===i.id?0:1}}function P(t,e){const i=new b;return i.id=String(t.id??t.submission_id??""),i.teamId=String(t.team_id),i.problemId=String(t.problem_id),i.timestamp=t.timestamp,i.status=$(t.status),i.isIgnore=t.is_ignore??!1,t.time&&(i.time=t.time),t.language&&(i.language=t.language),t.reaction?i.reaction=t.reaction:e?.options.reactionVideoUrlTemplate&&(i.reaction={url:e.options.reactionVideoUrlTemplate.replace(/\$\{submission_id\}/,i.id)}),i}function Nt(t,e){return Array.isArray(t)?t.map((i,s)=>P({...i,id:i.submission_id??String(s)},e)):Object.entries(t).map(([s,r])=>P({...r,id:r.submission_id??s},e))}class p{constructor(){this.id="",this.name="",this.organization="",this.group=[],this.tag=[],this.rank=0,this.originalRank=0,this.organizationRank=-1,this.solvedProblemNum=0,this.attemptedProblemNum=0,this.lastSolvedProblem=null,this.lastSolvedProblemStatistics=null,this.penalty=0,this.problemStatistics=[],this.problemStatisticsMap=new Map,this.submissions=[],this.placeChartPoints=[],this.awards=[],this.se=0}reset(){this.rank=0,this.originalRank=0,this.organizationRank=-1,this.solvedProblemNum=0,this.attemptedProblemNum=0,this.lastSolvedProblem=null,this.lastSolvedProblemStatistics=null,this.penalty=0,this.problemStatistics=[],this.problemStatisticsMap=new Map,this.submissions=[],this.placeChartPoints=[],this.awards=[],this.se=0}get penaltyToMinute(){return Math.floor(this.penalty/60)}get isUnofficial(){return this.group.includes("unofficial")}get isGirl(){return this.group.includes("girl")}get membersToArray(){if(Array.isArray(this.members))return this.members;if(typeof this.members=="string"){if(this.members.includes(", "))return this.members.split(", ");if(this.members.includes("、"))return this.members.split("、")}return[]}get membersToString(){return typeof this.members=="string"?this.members:this.members?.join(", ")}get isEffectiveTeam(){return this.solvedProblemNum>0}get dirt(){const e=this.attemptedProblemNum,i=this.solvedProblemNum;return V(e,i)}calcSE(e){let i=0,s=0;if(this.problemStatistics.forEach(a=>{a.isSolved&&(i+=1,s+=a.problem.statistics.acceptedNum)}),e===0||i===0)return 0;const r=(i*e-s)/e/i;return this.se=Math.round(r*100)/100,this.se}calcSolvedData(e){this.solvedProblemNum=0,this.attemptedProblemNum=0,this.penalty=0;for(const i of this.problemStatistics)i.isAccepted&&(this.solvedProblemNum++,this.attemptedProblemNum+=i.failedCount+1,e?.calculationOfPenalty==="in_seconds"||e?.calculationOfPenalty==="accumulate_in_seconds_and_finally_to_the_minute"?this.penalty+=i.penaltyInSecond:this.penalty+=i.penalty);e?.calculationOfPenalty==="accumulate_in_seconds_and_finally_to_the_minute"&&(this.penalty=Math.floor(this.penalty/60)*60)}calcAwards(e){if(e)for(const i of e)this.rank>=i.minRank&&this.rank<=i.maxRank&&this.awards.push(i.medalType)}isEqualRank(e){return this.solvedProblemNum===e.solvedProblemNum&&this.penalty===e.penalty}postProcessPlaceChartPoints(){if(this.placeChartPoints.length===0)return;const e=[];e.push(this.placeChartPoints[0]);for(let i=1;i<this.placeChartPoints.length-1;i++){const s=this.placeChartPoints[i],r=e[e.length-1];(s.rank!==r.rank||s.lastSolvedProblem!==r.lastSolvedProblem)&&e.push(s)}this.placeChartPoints.length>1&&e.push(this.placeChartPoints[this.placeChartPoints.length-1]),this.placeChartPoints=e}static compare(e,i){return e.solvedProblemNum!==i.solvedProblemNum?i.solvedProblemNum-e.solvedProblemNum:e.penalty!==i.penalty?e.penalty-i.penalty:e.lastSolvedProblemStatistics&&i.lastSolvedProblemStatistics?e.lastSolvedProblemStatistics.solvedTimestampToMinute-i.lastSolvedProblemStatistics.solvedTimestampToMinute:e.name<i.name?-1:e.name>i.name?1:0}}function O(t){const e=new p;e.id=t.id??t.team_id??"",e.name=t.name??t.team_name??"",e.organization=t.organization??"",e.badge=t.badge,e.group=f.cloneDeep(t.group??[]),e.tag=f.cloneDeep(t.tag??[]),e.coach=t.coach,e.members=t.members,t.official&&e.group.push("official"),t.unofficial&&e.group.push("unofficial"),t.girl&&e.group.push("girl");{const i=t;for(const s of Object.keys(i))(i[s]===1||i[s]===!0)&&e.group.push(s)}return e.group=[...new Set(e.group)],e.group.sort(),t.location&&(e.location=t.location),t.icpc_id&&(e.icpcID=t.icpc_id),e}function bt(t){return Array.isArray(t)?t.map(e=>O(e)):Object.entries(t).map(([i,s])=>O({...s,team_id:s.team_id??i}))}class it{constructor(){this.problem=new Z,this.team=new p,this.submission=new b}get key(){return`balloon-${this.team.id}-${this.problem.id}`}static compare(e,i){return b.compare(e.submission,i.submission)}}const x="3.7.8",st=x,h=typeof Buffer=="function",M=typeof TextDecoder=="function"?new TextDecoder:void 0,y=typeof TextEncoder=="function"?new TextEncoder:void 0,rt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=Array.prototype.slice.call(rt),I=(t=>{let e={};return t.forEach((i,s)=>e[i]=s),e})(d),nt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,u=String.fromCharCode.bind(String),U=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):t=>new Uint8Array(Array.prototype.slice.call(t,0)),F=t=>t.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),G=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),k=t=>{let e,i,s,r,a="";const l=t.length%3;for(let m=0;m<t.length;){if((i=t.charCodeAt(m++))>255||(s=t.charCodeAt(m++))>255||(r=t.charCodeAt(m++))>255)throw new TypeError("invalid character found");e=i<<16|s<<8|r,a+=d[e>>18&63]+d[e>>12&63]+d[e>>6&63]+d[e&63]}return l?a.slice(0,l-3)+"===".substring(l):a},A=typeof btoa=="function"?t=>btoa(t):h?t=>Buffer.from(t,"binary").toString("base64"):k,D=h?t=>Buffer.from(t).toString("base64"):t=>{let i=[];for(let s=0,r=t.length;s<r;s+=4096)i.push(u.apply(null,t.subarray(s,s+4096)));return A(i.join(""))},N=(t,e=!1)=>e?F(D(t)):D(t),at=t=>{if(t.length<2){var e=t.charCodeAt(0);return e<128?t:e<2048?u(192|e>>>6)+u(128|e&63):u(224|e>>>12&15)+u(128|e>>>6&63)+u(128|e&63)}else{var e=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return u(240|e>>>18&7)+u(128|e>>>12&63)+u(128|e>>>6&63)+u(128|e&63)}},ot=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,w=t=>t.replace(ot,at),L=h?t=>Buffer.from(t,"utf8").toString("base64"):y?t=>D(y.encode(t)):t=>A(w(t)),E=(t,e=!1)=>e?F(L(t)):L(t),v=t=>E(t,!0),lt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,mt=t=>{switch(t.length){case 4:var e=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),i=e-65536;return u((i>>>10)+55296)+u((i&1023)+56320);case 3:return u((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return u((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},B=t=>t.replace(lt,mt),z=t=>{if(t=t.replace(/\s+/g,""),!nt.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let e,i,s,r=[];for(let a=0;a<t.length;)e=I[t.charAt(a++)]<<18|I[t.charAt(a++)]<<12|(i=I[t.charAt(a++)])<<6|(s=I[t.charAt(a++)]),i===64?r.push(u(e>>16&255)):s===64?r.push(u(e>>16&255,e>>8&255)):r.push(u(e>>16&255,e>>8&255,e&255));return r.join("")},S=typeof atob=="function"?t=>atob(G(t)):h?t=>Buffer.from(t,"base64").toString("binary"):z,W=h?t=>U(Buffer.from(t,"base64")):t=>U(S(t).split("").map(e=>e.charCodeAt(0))),X=t=>W(Y(t)),ct=h?t=>Buffer.from(t,"base64").toString("utf8"):M?t=>M.decode(W(t)):t=>B(S(t)),Y=t=>G(t.replace(/[-_]/g,e=>e=="-"?"+":"/")),C=t=>ct(Y(t)),ut=t=>{if(typeof t!="string")return!1;const e=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},K=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),j=function(){const t=(e,i)=>Object.defineProperty(String.prototype,e,K(i));t("fromBase64",function(){return C(this)}),t("toBase64",function(e){return E(this,e)}),t("toBase64URI",function(){return E(this,!0)}),t("toBase64URL",function(){return E(this,!0)}),t("toUint8Array",function(){return X(this)})},J=function(){const t=(e,i)=>Object.defineProperty(Uint8Array.prototype,e,K(i));t("toBase64",function(e){return N(this,e)}),t("toBase64URI",function(){return N(this,!0)}),t("toBase64URL",function(){return N(this,!0)})},Et=()=>{j(),J()},_={version:x,VERSION:st,atob:S,atobPolyfill:z,btoa:A,btoaPolyfill:k,fromBase64:C,toBase64:E,encode:E,encodeURI:v,encodeURL:v,utob:w,btou:B,decode:C,isValid:ut,fromUint8Array:N,toUint8Array:X,extendString:j,extendUint8Array:J,extendBuiltins:Et};var ht=(t=>(t[t.BLUE=0]="BLUE",t[t.RED=1]="RED",t))(ht||{});class g{constructor(e=0){this.type=e,this.name=`${e===0?"Blue":"Red"} Team`,this.teams=[],this.filterOrganizations=[],this.filterOrganizationMap=new Map,this.filterTeams=[],this.filterTeamMap=new Map}setFilterOrganizations(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterOrganizations=e,this.filterOrganizationMap=i}setFilterTeams(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterTeams=e,this.filterTeamMap=i}refreshName(){return this.filterOrganizations.length>0?this.name=this.filterOrganizations[0].text:this.name=`${this.type===0?"Blue":"Red"} Team`,this.name}get totalSolvedProblemNum(){let e=0;return this.teams.forEach(i=>{e+=i.solvedProblemNum}),e}get totalPenalty(){let e=0;return this.teams.forEach(i=>{e+=i.penaltyToMinute}),e}get totalPenaltyToString(){const e=this.totalPenalty,i=a=>a<10?`0${a}`:String(a),s=Math.floor(e/60),r=Math.floor(e%60);return[i(s),i(r)].join(":")}toJSON(){return{type:this.type,name:this.name,filterOrganizations:this.filterOrganizations,filterTeams:this.filterTeams}}}class dt{constructor(){this.enable=!1,this.topX=5,this.equalTeams=!0,this.persist=!1,this.blueTeam=new g(0),this.redTeam=new g(1)}ToBase64(){return _.encode(JSON.stringify(this))}FromBase64(e){if(e.length===0||_.isValid(e)===!1)return;const i=JSON.parse(_.decode(e));this.enable=i.enable,this.topX=i.topX,this.equalTeams=i.equalTeams,this.persist=i.persist,this.blueTeam=new g(0),this.blueTeam.name=i.blueTeam.name,this.blueTeam.setFilterOrganizations(i.blueTeam.filterOrganizations),this.blueTeam.setFilterTeams(i.blueTeam.filterTeams),this.redTeam=new g(1),this.redTeam.name=i.redTeam.name,this.redTeam.setFilterOrganizations(i.redTeam.filterOrganizations),this.redTeam.setFilterTeams(i.redTeam.filterTeams)}}class ft{constructor(){this.teamSolvedNum=[],this.teamSolvedNumIndex=[],this.maxSolvedProblems=0,this.effectiveTeamNum=0,this.totalTeamNum=0}reset(){this.teamSolvedNum=[],this.teamSolvedNumIndex=[],this.maxSolvedProblems=0,this.effectiveTeamNum=0,this.totalTeamNum=0}getTeamSolvedNumIndex(e){return this.teamSolvedNumIndex[e]??0}}class pt{constructor(){this.enableFilterSubmissionsByTimestamp=!1,this.width=0,this.timestamp=0,this.enableFilterTeamsByGroup=!1,this.group="all",this.filterOrganizations=[],this.filterOrganizationMap=new Map,this.filterTeams=[],this.filterTeamMap=new Map,this.enableAnimatedSubmissions=!1,this.battleOfGiants=new dt}setSelf(e){this.enableFilterSubmissionsByTimestamp=e.enableFilterSubmissionsByTimestamp,this.width=e.width,this.timestamp=e.timestamp,this.enableFilterTeamsByGroup=e.enableFilterTeamsByGroup,this.group=e.group,this.filterOrganizations=e.filterOrganizations,this.filterOrganizationMap=e.filterOrganizationMap,this.filterTeams=e.filterTeams,this.filterTeamMap=e.filterTeamMap,this.enableAnimatedSubmissions=e.enableAnimatedSubmissions,this.battleOfGiants=e.battleOfGiants}setWidth(e,i){this.width=e,this.timestamp=Math.floor((i.getEndTime().unix()-i.getStartTime().unix())*this.width*1e-4),this.enableFilterSubmissionsByTimestamp=!0}disableFilterSubmissionByTimestamp(){this.enableFilterSubmissionsByTimestamp=!1}setGroup(e){this.group=e,this.enableFilterTeamsByGroup=!0,this.group==="all"&&this.disableFilterTeamsByGroup()}disableFilterTeamsByGroup(){this.enableFilterTeamsByGroup=!1,this.group="all"}setFilterOrganizations(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterOrganizations=e,this.filterOrganizationMap=i}setFilterTeams(e){const i=new Map;e.forEach(s=>{i.set(s.value,s)}),this.filterTeams=e,this.filterTeamMap=i}isNeedReBuildRank(e){return this.enableFilterSubmissionsByTimestamp!==e.enableFilterSubmissionsByTimestamp||this.width!==e.width||this.timestamp!==e.timestamp||this.enableFilterTeamsByGroup!==e.enableFilterTeamsByGroup||this.group!==e.group}}class _t{constructor(e,i,s){this.contest=e,this.teams=f.cloneDeep(i),this.teamsMap=new Map(this.teams.map(r=>[r.id,r])),this.submissions=f.cloneDeep(s).sort(b.compare);{const r=this.contest.options,a=f.cloneDeep(r.submissionTimestampUnit);this.submissions.forEach(l=>{l.timestampUnit=a,l.time&&(r.submissionHasTimeField=!0),l.language&&(r.submissionHasLanguageField=!0)})}this.submissionsMap=new Map(this.submissions.map(r=>[r.id,r])),this.organizations=this.buildOrganizations(),this.originTeams=this.teams.map(r=>r),this.originTeams.sort(p.compare),this.rankStatistics=new ft,this.options=new pt,this.balloons=[];{const r=new Set;this.submissions.forEach(a=>{a.language&&r.add(a.language)}),this.languages=[...r].sort()}{const r=new Set;this.submissions.forEach(a=>{r.add(a.status)}),this.statuses=[...r].sort()}}cleanRank(){(()=>{this.teams=[];for(const[e,i]of this.teamsMap)this.filterTeamByOrg(i)||this.teams.push(i)})();for(const e of this.teams)e.reset(),e.problemStatistics=this.contest.problems.map(i=>{const s=new H;return s.problem=i,s.contestPenalty=this.contest.penalty,s}),e.problemStatisticsMap=new Map(e.problemStatistics.map(i=>[i.problem.id,i]));this.contest.problems.forEach(e=>{e.statistics.reset()})}buildRank(){return(()=>{this.cleanRank(),this.teams.forEach(s=>s.placeChartPoints.push({timePoint:0,rank:1,lastSolvedProblem:null})),this.rankStatistics.reset(),this.rankStatistics.teamSolvedNum=Array.from({length:this.contest.problems.length+1}).fill(0),this.rankStatistics.teamSolvedNumIndex=Array.from({length:this.contest.problems.length+1}).fill(0);let e=0;const i=this.getSubmissions();for(let s=0;s<i.length;s++){const r=i[s],a=r.teamId,l=r.problemId,m=this.teamsMap.get(a),c=this.contest.problemsMap.get(l);(()=>{if(m===void 0||this.filterTeamByOrg(m)||c===void 0)return;const o=m.problemStatisticsMap.get(l);if(o.submissions.push(r),m.submissions.push(r),c.statistics.submittedNum++,o.isSolved){r.isSolved=!1,r.isFirstSolved=!1;return}if(r.isIgnore||r.isNotCalculatedPenaltyStatus()){c.statistics.ignoreNum++,o.ignoreCount++;return}if(o.isSubmitted=!0,o.lastSubmitTimestamp=r.timestampToSecond,o.totalCount++,r.isAccepted()){for(r.isSolved=!0,o.isSolved=!0,o.solvedTimestamp=r.timestampToSecond,c.statistics.acceptedNum++,c.statistics.attemptedNum+=o.failedCount+1,(c.statistics.firstSolveSubmissions.length===0||c.statistics.firstSolveSubmissions[c.statistics.firstSolveSubmissions.length-1].timestamp===r.timestamp)&&(r.isFirstSolved=!0,o.isFirstSolved=!0,c.statistics.firstSolveSubmissions.push(r));c.statistics.lastSolveSubmissions.length>0;)c.statistics.lastSolveSubmissions.pop();c.statistics.lastSolveSubmissions.push(r),m.lastSolvedProblem=c,m.lastSolvedProblemStatistics=o}r.isRejected()&&(o.failedCount++,c.statistics.rejectedNum++),r.isPending()&&(o.pendingCount++,c.statistics.pendingNum++)})(),(r.timestampToMinute>e||s===i.length-1)&&(this.teams.forEach(o=>o.calcSolvedData(this.contest.options)),this.teams.sort(p.compare),this.buildTeamRank(),this.teams.forEach(o=>o.placeChartPoints.push({timePoint:r.timestampToMinute,rank:o.rank,lastSolvedProblem:o.lastSolvedProblem}))),e=r.timestampToMinute}this.teams.forEach(s=>s.calcSolvedData(this.contest.options)),this.teams.sort(p.compare),this.buildTeamRank(),this.buildOrgRank(),this.rankStatistics.effectiveTeamNum=this.teams.filter(s=>s.isEffectiveTeam).length,this.rankStatistics.totalTeamNum=this.teams.length,this.teams.forEach(s=>s.calcSE(this.rankStatistics.totalTeamNum)),this.contest.problems.forEach(s=>s.statistics.calcSE(this.rankStatistics.totalTeamNum)),this.buildAwards(),this.teams.forEach(s=>s.calcAwards(this.contest.awards?.get(this.options.group))),this.teams.forEach(s=>s.postProcessPlaceChartPoints())})(),(()=>{for(const e of this.teams)this.rankStatistics.teamSolvedNum[e.solvedProblemNum]++;{let e=0;const i=this.rankStatistics.teamSolvedNum,s=this.rankStatistics.teamSolvedNumIndex;for(let r=s.length-1;r>=0;r--)e+=i[r]>0?1:0,s[r]=e}this.teams.length>0&&(this.rankStatistics.maxSolvedProblems=this.teams[0].solvedProblemNum)})(),this}buildTeamRank(){let e=1,i=1,s=null;for(const r of this.teams)r.rank=e++,r.originalRank=i++,s!==null&&r.isEqualRank(s)&&(r.rank=s.rank),s=r}buildOrgRank(){if(!this.contest.organization)return;let e=1,i=null;const s=new Set;for(const r of this.teams){const a=r.organization;s.has(a)||(s.add(a),r.organizationRank=e++,i!==null&&r.isEqualRank(i)&&(r.organizationRank=i.organizationRank),i=r)}}buildOrganizations(){if(!this.contest.organization)return[];const e=new Array,i=new Set;return this.teams.forEach(s=>{const r=s.organization;i.has(r)||(e.push(r),i.add(r))}),e.sort(),e}buildAwards(){if(this.contest.medal==="ccpc"){this.contest.awards=new Map;const e=this.rankStatistics.effectiveTeamNum,i=[],s=new R,r=new R,a=new R,l=new R;s.medalType=T.GOLD,s.minRank=1,s.maxRank=Math.ceil(e*.1),s.maxRank>=s.minRank&&i.push(s),r.medalType=T.SILVER,r.minRank=s.maxRank+1,r.maxRank=Math.ceil(e*.3),r.maxRank>=r.minRank&&i.push(r),a.medalType=T.BRONZE,a.minRank=r.maxRank+1,a.maxRank=Math.ceil(e*.6),a.maxRank>=a.minRank&&i.push(a),l.medalType=T.HONORABLE,l.minRank=a.maxRank+1,this.teams.forEach(m=>{m.solvedProblemNum>0&&(l.maxRank=Math.max(l.maxRank,m.rank))}),l.maxRank>=l.minRank&&i.push(l),this.contest.awards.set("official",i)}}filterTeamByOrg(e){const i=this.options;return!!(i.enableFilterTeamsByGroup&&!e.group?.includes(i.group))}getSubmissions(){return this.contest.replayContestStartTimestamp===void 0&&this.options.enableFilterSubmissionsByTimestamp===!1?this.submissions:this.submissions.filter(e=>!(this.contest.replayContestStartTimestamp!==void 0&&e.timestampToSecond>this.contest.replayContestStartTimestamp||this.options.enableFilterSubmissionsByTimestamp&&e.timestampToSecond>this.options.timestamp))}buildBalloons(){this.balloons=[],this.cleanRank();const e=this.getSubmissions();for(let i=0;i<e.length;i++){const s=e[i],r=s.teamId,a=s.problemId,l=this.teamsMap.get(r),m=this.contest.problemsMap.get(a);(()=>{if(l===void 0||m===void 0)return;const c=l.problemStatisticsMap.get(a);if(!c.isSolved&&s.isAccepted()){c.isSolved=!0,c.solvedTimestamp=s.timestampToSecond;const o=new it;o.team=l,o.problem=m,o.submission=s,this.balloons.push(o)}})()}}setReplayTime(e){this.contest.setReplayTime(e)}}export{it as B,ht as G,_t as R,n as S,p as T,Nt as a,et as b,bt as c,tt as d,gt as e,b as f,Q as g,It as h,q as i,pt as j};
@@ -1 +1 @@
1
- import{_ as p}from"./TheInput.vue_vue_type_script_setup_true_lang-BfGQccfF.js";import{d as c,m as f,H as _,u as b,c as h,o as v,b as e,k as a,h as s,a as x,a2 as y,z as g}from"./index-CM3RvXoz.js";import{u as k}from"./user-DmhaXJDh.js";import{b as l}from"./route-block-B_A1xBdJ.js";import"./use-vmodel-CcIbVTPv.js";const V={flex:"","flex-col":"","justify-center":"","items-center":""},w={"text-sm":"","opacity-75":""},I={"w-48":""},B={class:"hidden",for:"input"},C=["disabled"],N=c({name:"IndexPage",__name:"test",setup(R){const i=k(),o=f(i.savedName),u=_();function r(){o.value&&u.push(`/hi/${encodeURIComponent(o.value)}`)}const{t:n}=b();return(U,t)=>{const d=p;return v(),h("div",V,[t[1]||(t[1]=e("div",{"text-4xl":""},[e("div",{"i-carbon-campsite":""})],-1)),t[2]||(t[2]=e("p",null,[e("a",{rel:"noreferrer",href:"https://github.com/antfu/vitesse",target:"_blank"}," Vitesse ")],-1)),e("p",null,[e("em",w,a(s(n)("intro.desc")),1)]),t[3]||(t[3]=e("div",{"py-4":""},null,-1)),e("div",I,[x(d,{modelValue:s(o),"onUpdate:modelValue":t[0]||(t[0]=m=>g(o)?o.value=m:null),placeholder:s(n)("intro.whats-your-name"),autocomplete:"false",onKeydown:y(r,["enter"])},null,8,["modelValue","placeholder"]),e("label",B,a(s(n)("intro.whats-your-name")),1)]),e("div",null,[e("button",{"m-3":"","text-sm":"",btn:"",disabled:!s(o),onClick:r},a(s(n)("button.go")),9,C)])])}}});typeof l=="function"&&l(N);export{N as default};
1
+ import{_ as p}from"./TheInput.vue_vue_type_script_setup_true_lang-D7oKrTsh.js";import{d as c,m as f,H as _,u as b,c as h,o as v,b as e,k as a,h as s,a as x,a2 as y,z as g}from"./index-CeypIf10.js";import{u as k}from"./user-tAp-dHq6.js";import{b as l}from"./route-block-B_A1xBdJ.js";import"./use-vmodel-BDpYVuLl.js";const V={flex:"","flex-col":"","justify-center":"","items-center":""},w={"text-sm":"","opacity-75":""},I={"w-48":""},B={class:"hidden",for:"input"},C=["disabled"],N=c({name:"IndexPage",__name:"test",setup(R){const i=k(),o=f(i.savedName),u=_();function r(){o.value&&u.push(`/hi/${encodeURIComponent(o.value)}`)}const{t:n}=b();return(U,t)=>{const d=p;return v(),h("div",V,[t[1]||(t[1]=e("div",{"text-4xl":""},[e("div",{"i-carbon-campsite":""})],-1)),t[2]||(t[2]=e("p",null,[e("a",{rel:"noreferrer",href:"https://github.com/antfu/vitesse",target:"_blank"}," Vitesse ")],-1)),e("p",null,[e("em",w,a(s(n)("intro.desc")),1)]),t[3]||(t[3]=e("div",{"py-4":""},null,-1)),e("div",I,[x(d,{modelValue:s(o),"onUpdate:modelValue":t[0]||(t[0]=m=>g(o)?o.value=m:null),placeholder:s(n)("intro.whats-your-name"),autocomplete:"false",onKeydown:y(r,["enter"])},null,8,["modelValue","placeholder"]),e("label",B,a(s(n)("intro.whats-your-name")),1)]),e("div",null,[e("button",{"m-3":"","text-sm":"",btn:"",disabled:!s(o),onClick:r},a(s(n)("button.go")),9,C)])])}}});typeof l=="function"&&l(N);export{N as default};
@@ -1 +1 @@
1
- import{aA as c,aB as r}from"./index-CM3RvXoz.js";const d=(...p)=>{const s=c().proxy.$props,t=Object.create(null);for(const e of p)if(typeof e=="string")t[e]=r(s,e,void 0,{eventName:`update:${e}`,passive:!0});else{const[o,n=o,a=`update:${o}`,u={}]=e;t[o]=r(s,n,void 0,{eventName:a,passive:!0,...u})}return t};export{d as _};
1
+ import{aA as c,aB as r}from"./index-CeypIf10.js";const d=(...p)=>{const s=c().proxy.$props,t=Object.create(null);for(const e of p)if(typeof e=="string")t[e]=r(s,e,void 0,{eventName:`update:${e}`,passive:!0});else{const[o,n=o,a=`update:${o}`,u={}]=e;t[o]=r(s,n,void 0,{eventName:a,passive:!0,...u})}return t};export{d as _};
@@ -1 +1 @@
1
- import{ay as n,m as r,f as t}from"./index-CM3RvXoz.js";const f=n("user",()=>{const e=r(""),s=r(new Set),o=t(()=>Array.from(s.value)),u=t(()=>o.value.filter(a=>a!==e.value));function m(a){e.value&&s.value.add(e.value),e.value=a}return{setNewName:m,otherNames:u,savedName:e}});export{f as u};
1
+ import{ay as n,m as r,f as t}from"./index-CeypIf10.js";const f=n("user",()=>{const e=r(""),s=r(new Set),o=t(()=>Array.from(s.value)),u=t(()=>o.value.filter(a=>a!==e.value));function m(a){e.value&&s.value.add(e.value),e.value=a}return{setNewName:m,otherNames:u,savedName:e}});export{f as u};
@@ -1 +1 @@
1
- import{_ as f}from"./index-CM3RvXoz.js";function p(n={}){const{immediate:s=!1,onNeedRefresh:u,onOfflineReady:o,onRegistered:d,onRegisteredSW:r,onRegisterError:i}=n;let t,a;const c=async(e=!0)=>{await a};async function l(){if("serviceWorker"in navigator){if(t=await f(async()=>{const{Workbox:e}=await import("./workbox-window.prod.es5-CwtvwXb3.js");return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e("/sw.js",{scope:"/",type:"classic"})).catch(e=>{i?.(e)}),!t)return;t.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),t.addEventListener("installed",e=>{e.isUpdate||o?.()}),t.register({immediate:s}).then(e=>{r?r("/sw.js",e):d?.(e)}).catch(e=>{i?.(e)})}}return a=l(),c}export{p as registerSW};
1
+ import{_ as f}from"./index-CeypIf10.js";function p(n={}){const{immediate:s=!1,onNeedRefresh:u,onOfflineReady:o,onRegistered:d,onRegisteredSW:r,onRegisterError:i}=n;let t,a;const c=async(e=!0)=>{await a};async function l(){if("serviceWorker"in navigator){if(t=await f(async()=>{const{Workbox:e}=await import("./workbox-window.prod.es5-CwtvwXb3.js");return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e("/sw.js",{scope:"/",type:"classic"})).catch(e=>{i?.(e)}),!t)return;t.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),t.addEventListener("installed",e=>{e.isUpdate||o?.()}),t.register({immediate:s}).then(e=>{r?r("/sw.js",e):d?.(e)}).catch(e=>{i?.(e)})}}return a=l(),c}export{p as registerSW};
@@ -0,0 +1 @@
1
+ const t={button:{about:{t:0,b:{t:2,i:[{t:3}],s:"关于"}},back:{t:0,b:{t:2,i:[{t:3}],s:"返回"}},go:{t:0,b:{t:2,i:[{t:3}],s:"确定"}},home:{t:0,b:{t:2,i:[{t:3}],s:"首页"}},confirm:{t:0,b:{t:2,i:[{t:3}],s:"确认"}},cancel:{t:0,b:{t:2,i:[{t:3}],s:"取消"}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:"切换深色模式"}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:"切换语言"}}},intro:{desc:{t:0,b:{t:2,i:[{t:3}],s:"固执己见的 Vite 项目模板"}},"dynamic-route":{t:0,b:{t:2,i:[{t:3}],s:"动态路由演示"}},hi:{t:0,b:{t:2,i:[{t:3,v:"你好,"},{t:4,k:"name"}]}},aka:{t:0,b:{t:2,i:[{t:3}],s:"也叫"}},"whats-your-name":{t:0,b:{t:2,i:[{t:3}],s:"输入你的名字"}}},"not-found":{t:0,b:{t:2,i:[{t:3}],s:"未找到页面"}},common:{loading:{t:0,b:{t:2,i:[{t:3}],s:"加载中"}},colon:{t:0,b:{t:2,i:[{t:3}],s:":"}}},index:{start:{t:0,b:{t:2,i:[{t:3}],s:"开始时间"}},duration:{t:0,b:{t:2,i:[{t:3}],s:"持续时长"}}},type_menu:{rank:{t:0,b:{t:2,i:[{t:3}],s:"排名"}},submissions:{t:0,b:{t:2,i:[{t:3}],s:"提交"}},statistics:{t:0,b:{t:2,i:[{t:3}],s:"统计"}},balloon:{t:0,b:{t:2,i:[{t:3}],s:"气球"}},resolver:{t:0,b:{t:2,i:[{t:3}],s:"滚榜"}},filter:{t:0,b:{t:2,i:[{t:3}],s:"筛选"}},options:{t:0,b:{t:2,i:[{t:3}],s:"选项"}},awards:{t:0,b:{t:2,i:[{t:3}],s:"奖项"}},utility:{t:0,b:{t:2,i:[{t:3}],s:"工具"}},countdown:{t:0,b:{t:2,i:[{t:3}],s:"倒计时"}}},utility:{tools:{t:0,b:{t:2,i:[{t:3}],s:"工具集"}},export:{t:0,b:{t:2,i:[{t:3}],s:"导出"}}},standings:{start_time:{t:0,b:{t:2,i:[{t:3}],s:"开始时间"}},end_time:{t:0,b:{t:2,i:[{t:3}],s:"结束时间"}},elapsed:{t:0,b:{t:2,i:[{t:3}],s:"当前时间"}},remaining:{t:0,b:{t:2,i:[{t:3}],s:"剩余时间"}},place:{t:0,b:{t:2,i:[{t:3}],s:"Place"}},team:{t:0,b:{t:2,i:[{t:3}],s:"Team"}},solved:{t:0,b:{t:2,i:[{t:3}],s:"Solved"}},penalty:{t:0,b:{t:2,i:[{t:3}],s:"Penalty"}},dirt:{t:0,b:{t:2,i:[{t:3}],s:"Dirt"}},se:{t:0,b:{t:2,i:[{t:3}],s:"SE"}},statistics:{submitted:{t:0,b:{t:2,i:[{t:3}],s:"Submitted"}},attempted:{t:0,b:{t:2,i:[{t:3}],s:"Attempted"}},accepted:{t:0,b:{t:2,i:[{t:3}],s:"Accepted"}},dirt:{t:0,b:{t:2,i:[{t:3}],s:"Dirt"}},se:{t:0,b:{t:2,i:[{t:3}],s:"SE"}},first_solved:{t:0,b:{t:2,i:[{t:3}],s:"First Solved"}},last_solved:{t:0,b:{t:2,i:[{t:3}],s:"Last Solved"}},head_data:{problems:{t:0,b:{t:2,i:[{t:3}],s:"题目数"}},teams:{t:0,b:{t:2,i:[{t:3}],s:"队伍数"}},submissions:{t:0,b:{t:2,i:[{t:3}],s:"提交数"}}},submit_heatmap:{t:0,b:{t:2,i:[{t:3}],s:"提交热力图"}}},options:{calculation_of_penalty:{t:0,b:{t:2,i:[{t:3}],s:"罚时计算方式"}},in_minutes:{t:0,b:{t:2,i:[{t:3}],s:"精确到分钟进行累加"}},in_seconds:{t:0,b:{t:2,i:[{t:3}],s:"精确到秒进行累加"}},accumulate_in_seconds_and_finally_to_the_minute:{t:0,b:{t:2,i:[{t:3}],s:"精确到秒进行累加,最后精确到分钟"}}}},submissions:{total_submissions:{t:0,b:{t:2,i:[{t:3}],s:"总提交数"}}}};export{t as default};
package/dist/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en-US" dir="ltr"><head><meta charset="UTF-8"/><script>!function(e,t,a,n){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id=GTM-WHLF55BJ",g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer")</script><link rel="icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.0/dist/balloon-512x512.svg" type="image/svg+xml"/><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.0/dist/balloon-512x512.svg" color="#00aba9"/><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.0/dist/balloon-192x192.png"/><meta name="msapplication-TileColor" content="#00aba9"/><meta name="author" content="Dup4"/><meta name="description" content="The ICPC Series Competition Leaderboard Visualization Engine."/><meta name="keywords" content="ICPC, Leaderboard, Visualization"/><meta name="og:title" content="XCPCIO"/><meta name="og:description" content="The ICPC Series Competition Leaderboard Visualization Engine."/><meta property="og:type" content="website"/><meta property="og:image" content="https://xcpcio.com/og.png"/><meta name="twitter:title" content="XCPCIO"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:image" content="https://xcpcio.com/og.png"/><meta name="twitter:url" content="https://xcpcio.com/"/><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return`${_}/`}{let _="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.0/dist";_=normalizePath(_),window.CDN_HOST=_,window.__toAssetUrl=_=>window.CDN_HOST+_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}try{let _=__DEFAULT_LANG__;window.DEFAULT_LANG=_}catch(_){window.DEFAULT_LANG="en"}</script><script>!function(){localStorage.getItem("vueuse-color-scheme")||localStorage.setItem("vueuse-color-scheme","light");const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,o=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===o||e&&"light"!==o)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.0/dist/assets/index-CM3RvXoz.js"></script><link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.0/dist/assets/index-BPQNJR9C.css"><link rel="manifest" href="/manifest.webmanifest"></head><body class="font-sans"><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WHLF55BJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="app"></div><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script");e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script");e.src=`https://hm.baidu.com/hm.js?${baiduAnalyticsId}`;var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}</script></body></html>
1
+ <!doctype html><html lang="en-US" dir="ltr"><head><meta charset="UTF-8"/><script>!function(e,t,a,n){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id=GTM-WHLF55BJ",g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer")</script><link rel="icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.2/dist/balloon-512x512.svg" type="image/svg+xml"/><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.2/dist/balloon-512x512.svg" color="#00aba9"/><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.2/dist/balloon-192x192.png"/><meta name="msapplication-TileColor" content="#00aba9"/><meta name="author" content="Dup4"/><meta name="description" content="The ICPC Series Competition Leaderboard Visualization Engine."/><meta name="keywords" content="ICPC, Leaderboard, Visualization"/><meta name="og:title" content="XCPCIO"/><meta name="og:description" content="The ICPC Series Competition Leaderboard Visualization Engine."/><meta property="og:type" content="website"/><meta property="og:image" content="https://xcpcio.com/og.png"/><meta name="twitter:title" content="XCPCIO"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:image" content="https://xcpcio.com/og.png"/><meta name="twitter:url" content="https://xcpcio.com/"/><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return`${_}/`}{let _="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.2/dist";_=normalizePath(_),window.CDN_HOST=_,window.__toAssetUrl=_=>window.CDN_HOST+_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}try{let _=__DEFAULT_LANG__;window.DEFAULT_LANG=_}catch(_){window.DEFAULT_LANG="en"}</script><script>!function(){localStorage.getItem("vueuse-color-scheme")||localStorage.setItem("vueuse-color-scheme","light");const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,o=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===o||e&&"light"!==o)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.2/dist/assets/index-CeypIf10.js"></script><link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.64.2/dist/assets/index-BiwUz1KO.css"><link rel="manifest" href="/manifest.webmanifest"></head><body class="font-sans"><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WHLF55BJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="app"></div><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script");e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script");e.src=`https://hm.baidu.com/hm.js?${baiduAnalyticsId}`;var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}</script></body></html>
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,r)=>{const i=s||("document"in self?document.currentScript.src:"")||location.href;if(e[i])return;let u={};const t=s=>l(s,i),o={module:{uri:i},exports:u,require:t};e[i]=Promise.all(n.map((s=>o[s]||t(s)))).then((s=>(r(...s),u)))}}define(["./workbox-7ee6f867"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/_..-5I0UWqRG.css",revision:null},{url:"assets/_...all_-CJpyse53.js",revision:null},{url:"assets/_...all_-DrWZoiU0.js",revision:null},{url:"assets/_name_-aS9b9-yu.js",revision:null},{url:"assets/_plugin-vue_export-helper-DlAUqK2U.js",revision:null},{url:"assets/about-B1R70Y8f.js",revision:null},{url:"assets/Balloon.vue_vue_type_script_setup_true_lang-DwBrrom6.js",revision:null},{url:"assets/Board-BO2oDVPE.js",revision:null},{url:"assets/Board-Bw50IitD.css",revision:null},{url:"assets/board-CTGu5nLW.js",revision:null},{url:"assets/board-layout-DpYiD2TY.js",revision:null},{url:"assets/constant-BLR-mMXv.js",revision:null},{url:"assets/contest-BX77J6xB.js",revision:null},{url:"assets/ContestStateBadge-BqhxSQpe.css",revision:null},{url:"assets/ContestStateBadge-DrpQq5N4.js",revision:null},{url:"assets/Countdown-C_GA1usV.js",revision:null},{url:"assets/Countdown-CGwMuG9S.css",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-Cr0K67q9.js",revision:null},{url:"assets/dayjs-CeI8Tzzs.js",revision:null},{url:"assets/default-B-oEEZYB.js",revision:null},{url:"assets/en-C8WQ1AP4.js",revision:null},{url:"assets/Footer-DNR-ilJ5.js",revision:null},{url:"assets/headless-vGEFxcro.js",revision:null},{url:"assets/home-C-hiyiKF.js",revision:null},{url:"assets/index-BPQNJR9C.css",revision:null},{url:"assets/index-Bqh8RKJZ.js",revision:null},{url:"assets/index-BySc0CqQ.js",revision:null},{url:"assets/index-CM3RvXoz.js",revision:null},{url:"assets/index-CREIPGSZ.css",revision:null},{url:"assets/index-CSH4p42n.js",revision:null},{url:"assets/index-D-msPqye.css",revision:null},{url:"assets/index-D0568hUU.js",revision:null},{url:"assets/index-gbWfw8RI.js",revision:null},{url:"assets/index-layout-DMOaRWHr.js",revision:null},{url:"assets/NavBar-aT2xEvYz.css",revision:null},{url:"assets/NavBar-DU4kcs_k.js",revision:null},{url:"assets/pagination-xM3o6sP4.js",revision:null},{url:"assets/query-CJJZPkfS.js",revision:null},{url:"assets/rank-DeeyMXnu.js",revision:null},{url:"assets/Resolver--KusTBWk.js",revision:null},{url:"assets/Resolver-BTlxgfNF.css",revision:null},{url:"assets/RightArrowIcon-Cx82txLy.js",revision:null},{url:"assets/route-block-B_A1xBdJ.js",revision:null},{url:"assets/test-Cy4YHoDZ.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-BfGQccfF.js",revision:null},{url:"assets/Tooltip-DzyPDwbo.css",revision:null},{url:"assets/Tooltip.vue_vue_type_script_setup_true_lang-BiZQbZpU.js",revision:null},{url:"assets/use-vmodel-CcIbVTPv.js",revision:null},{url:"assets/user-DmhaXJDh.js",revision:null},{url:"assets/virtual_pwa-register-DPwqiWvr.js",revision:null},{url:"assets/workbox-window.prod.es5-CwtvwXb3.js",revision:null},{url:"assets/zh-CN-Bs0tKfN4.js",revision:null},{url:"index.html",revision:"db80a0c8c9a11d3bbed28b546d56abb1"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"manifest.webmanifest",revision:"2a3579b4def3b981643d514aab210ae8"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));
1
+ if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,r)=>{const i=s||("document"in self?document.currentScript.src:"")||location.href;if(e[i])return;let u={};const t=s=>l(s,i),o={module:{uri:i},exports:u,require:t};e[i]=Promise.all(n.map((s=>o[s]||t(s)))).then((s=>(r(...s),u)))}}define(["./workbox-7ee6f867"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/_..-5I0UWqRG.css",revision:null},{url:"assets/_...all_-C4jby8Fb.js",revision:null},{url:"assets/_...all_-C83ZJkec.js",revision:null},{url:"assets/_name_-CTY1WnJu.js",revision:null},{url:"assets/_plugin-vue_export-helper-DlAUqK2U.js",revision:null},{url:"assets/about-BUmG1GXw.js",revision:null},{url:"assets/Balloon.vue_vue_type_script_setup_true_lang-m1_Bu8S1.js",revision:null},{url:"assets/Board-C5aw5Vz0.js",revision:null},{url:"assets/Board-DfGcLI3S.css",revision:null},{url:"assets/board-layout-DX9OTP6m.js",revision:null},{url:"assets/board-Rg0TaGCD.js",revision:null},{url:"assets/constant-XVIkJ-EB.js",revision:null},{url:"assets/contest-BiuSnW4a.js",revision:null},{url:"assets/ContestStateBadge-BqhxSQpe.css",revision:null},{url:"assets/ContestStateBadge-BtHgMKT8.js",revision:null},{url:"assets/Countdown-_bOhbjlN.js",revision:null},{url:"assets/Countdown-CGwMuG9S.css",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-BeTAYXZq.js",revision:null},{url:"assets/dayjs-BGRSp297.js",revision:null},{url:"assets/default-bzEvHh77.js",revision:null},{url:"assets/en-78xzu5B_.js",revision:null},{url:"assets/Footer-99AAgm08.js",revision:null},{url:"assets/headless-DiJg7xE_.js",revision:null},{url:"assets/home-BMaGf7TT.js",revision:null},{url:"assets/index-B3notrRB.js",revision:null},{url:"assets/index-B585uw5O.js",revision:null},{url:"assets/index-BiwUz1KO.css",revision:null},{url:"assets/index-CeypIf10.js",revision:null},{url:"assets/index-CjyRkIbw.js",revision:null},{url:"assets/index-CREIPGSZ.css",revision:null},{url:"assets/index-D-msPqye.css",revision:null},{url:"assets/index-DeZd3E2u.js",revision:null},{url:"assets/index-DgGZQ-bQ.js",revision:null},{url:"assets/index-layout-YR31XS70.js",revision:null},{url:"assets/NavBar-aT2xEvYz.css",revision:null},{url:"assets/NavBar-Cl48XJnt.js",revision:null},{url:"assets/pagination-B27dUMId.js",revision:null},{url:"assets/query-LW63gP-7.js",revision:null},{url:"assets/rank-mUxoQND-.js",revision:null},{url:"assets/Resolver-BTlxgfNF.css",revision:null},{url:"assets/Resolver-D3ZU6Z76.js",revision:null},{url:"assets/RightArrowIcon-Dp1frbz2.js",revision:null},{url:"assets/route-block-B_A1xBdJ.js",revision:null},{url:"assets/test-BAbK8B6Y.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-D7oKrTsh.js",revision:null},{url:"assets/Tooltip-DzyPDwbo.css",revision:null},{url:"assets/Tooltip.vue_vue_type_script_setup_true_lang-CgNaLbjM.js",revision:null},{url:"assets/use-vmodel-BDpYVuLl.js",revision:null},{url:"assets/user-tAp-dHq6.js",revision:null},{url:"assets/virtual_pwa-register-DEAi56it.js",revision:null},{url:"assets/workbox-window.prod.es5-CwtvwXb3.js",revision:null},{url:"assets/zh-CN-32UqCzRy.js",revision:null},{url:"index.html",revision:"90af0aa018282dd6a53fa4a083321562"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"manifest.webmanifest",revision:"2a3579b4def3b981643d514aab210ae8"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xcpcio/board-app",
3
3
  "type": "module",
4
- "version": "0.64.0",
4
+ "version": "0.64.2",
5
5
  "description": "The ICPC Series Competition Leaderboard Visualization Engine",
6
6
  "author": "Dup4 <hi@dup4.com>",
7
7
  "license": "MIT",
@@ -31,8 +31,8 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@tanstack/vue-query": "^5.90.2",
34
- "@unhead/vue": "^2.0.17",
35
- "@unocss/reset": "^66.5.2",
34
+ "@unhead/vue": "^2.0.19",
35
+ "@unocss/reset": "^66.5.3",
36
36
  "@vueuse/components": "^13.9.0",
37
37
  "@vueuse/core": "^13.9.0",
38
38
  "@vueuse/router": "^13.9.0",
@@ -53,11 +53,11 @@
53
53
  "vue-router": "^4.5.1",
54
54
  "vue-search-select": "^3.2.0",
55
55
  "vue-toast-notification": "^3.1.3",
56
- "@xcpcio/core": "0.64.0",
57
- "@xcpcio/types": "0.64.0"
56
+ "@xcpcio/core": "0.64.2",
57
+ "@xcpcio/types": "0.64.2"
58
58
  },
59
59
  "devDependencies": {
60
- "@iconify/json": "^2.2.388",
60
+ "@iconify/json": "^2.2.394",
61
61
  "@intlify/unplugin-vue-i18n": "^11.0.1",
62
62
  "@shikijs/markdown-it": "^3.13.0",
63
63
  "@types/file-saver": "^2.0.7",
@@ -68,27 +68,27 @@
68
68
  "@vue-macros/volar": "^3.1.1",
69
69
  "@vue/test-utils": "^2.4.6",
70
70
  "critters": "^0.0.25",
71
- "cross-env": "^10.0.0",
72
- "cypress": "^15.3.0",
71
+ "cross-env": "^10.1.0",
72
+ "cypress": "^15.4.0",
73
73
  "cypress-vite": "^1.8.0",
74
- "eslint": "^9.36.0",
75
- "eslint-plugin-cypress": "^5.1.1",
74
+ "eslint": "^9.37.0",
75
+ "eslint-plugin-cypress": "^5.2.0",
76
76
  "eslint-plugin-format": "^1.0.2",
77
77
  "git-repo-info": "^2.1.1",
78
78
  "https-localhost": "^4.7.1",
79
- "less": "^4.4.1",
79
+ "less": "^4.4.2",
80
80
  "markdown-it-link-attributes": "^4.0.1",
81
- "rollup": "^4.52.3",
81
+ "rollup": "^4.52.4",
82
82
  "shiki": "^3.13.0",
83
83
  "taze": "^19.7.0",
84
- "typescript": "^5.9.2",
85
- "unocss": "^66.5.2",
84
+ "typescript": "^5.9.3",
85
+ "unocss": "^66.5.3",
86
86
  "unplugin-auto-import": "^20.2.0",
87
87
  "unplugin-vue-components": "^29.1.0",
88
88
  "unplugin-vue-macros": "^2.14.5",
89
89
  "unplugin-vue-markdown": "^29.2.0",
90
90
  "unplugin-vue-router": "^0.15.0",
91
- "vite": "^7.1.7",
91
+ "vite": "^7.1.9",
92
92
  "vite-bundle-visualizer": "^1.2.1",
93
93
  "vite-plugin-html": "^3.2.2",
94
94
  "vite-plugin-inspect": "^11.3.3",
@@ -96,10 +96,10 @@
96
96
  "vite-plugin-vue-devtools": "^8.0.2",
97
97
  "vite-plugin-vue-layouts": "^0.11.0",
98
98
  "vite-plugin-webfont-dl": "^3.11.1",
99
- "vite-ssg": "^28.1.0",
99
+ "vite-ssg": "^28.2.1",
100
100
  "vite-ssg-sitemap": "^0.10.0",
101
101
  "vitest": "^3.2.4",
102
- "vue-tsc": "^3.0.8",
102
+ "vue-tsc": "^3.0.9",
103
103
  "workbox-build": "^7.3.0",
104
104
  "workbox-window": "^7.3.0"
105
105
  },
@@ -26,7 +26,7 @@
26
26
  w-full
27
27
  flex justify-center
28
28
  >
29
- Open-source project of ICPC/CCPC Standings.
29
+ The ICPC Series Competition Leaderboard Visualization Engine.
30
30
  </p>
31
31
 
32
32
  <ul
@@ -108,7 +108,7 @@ const color = computed(() => {
108
108
  w-full
109
109
  col-span-5
110
110
  >
111
- <MultiSelectEnhanced
111
+ <TheMultiSelect
112
112
  :options="orgOptions"
113
113
  :selected-options="orgSelectedItems"
114
114
  @select="orgOnSelect"
@@ -127,7 +127,7 @@ const color = computed(() => {
127
127
  w-full
128
128
  col-span-5
129
129
  >
130
- <MultiSelectEnhanced
130
+ <TheMultiSelect
131
131
  :options="teamsOptions"
132
132
  :selected-options="teamsSelectedItems"
133
133
  @select="teamsOnSelect"
@@ -175,10 +175,6 @@ const typeMenuList = ref<Array<Item>>([
175
175
  title: "type_menu.statistics",
176
176
  keyword: "statistics",
177
177
  },
178
- {
179
- title: "type_menu.export",
180
- keyword: "export",
181
- },
182
178
  {
183
179
  title: "type_menu.utility",
184
180
  keyword: "utility",
@@ -549,14 +545,6 @@ const widthClass = "sm:w-[1260px] xl:w-screen";
549
545
  />
550
546
  </div>
551
547
 
552
- <div
553
- v-if="currentType === 'export'"
554
- >
555
- <Export
556
- :rank="rank"
557
- />
558
- </div>
559
-
560
548
  <div
561
549
  v-if="currentType === 'utility'"
562
550
  >
@@ -17,16 +17,16 @@ const { copy, isSupported } = useClipboard();
17
17
 
18
18
  const rank = computed(() => props.rank);
19
19
 
20
- const currentItem = ref({ value: "cf-dat", text: "Codeforces Gym Ghost(dat)" });
20
+ const currentItem = ref({ value: "general-xlsx", text: "Excel Table(xlsx)" });
21
21
  const options = ref([
22
- {
23
- value: "cf-dat",
24
- text: "Codeforces Gym Ghost(dat)",
25
- },
26
22
  {
27
23
  value: "general-xlsx",
28
24
  text: "Excel Table(xlsx)",
29
25
  },
26
+ {
27
+ value: "cf-dat",
28
+ text: "Codeforces Gym Ghost(dat)",
29
+ },
30
30
  {
31
31
  value: "icpc-standings-csv",
32
32
  text: "ICPC Standings(csv)",
@@ -131,7 +131,7 @@ function onConfirm() {
131
131
  w-full
132
132
  col-span-6
133
133
  >
134
- <MultiSelectEnhanced
134
+ <TheMultiSelect
135
135
  :options="orgOptions"
136
136
  :selected-options="orgSelectedItems"
137
137
  @select="orgOnSelect"
@@ -150,7 +150,7 @@ function onConfirm() {
150
150
  w-full
151
151
  col-span-6
152
152
  >
153
- <MultiSelectEnhanced
153
+ <TheMultiSelect
154
154
  :options="teamsOptions"
155
155
  :selected-options="teamsSelectedItems"
156
156
  @select="teamsOnSelect"
@@ -302,7 +302,7 @@ function closeVideoModal() {
302
302
  v-if="rank.contest.organization && enableFilter?.organization"
303
303
  w-64
304
304
  >
305
- <MultiSelectEnhanced
305
+ <TheMultiSelect
306
306
  :options="orgOptions"
307
307
  :selected-options="orgSelectedItems"
308
308
  :placeholder="rank.contest.organization"
@@ -314,7 +314,7 @@ function closeVideoModal() {
314
314
  v-if="enableFilter?.team"
315
315
  w-64
316
316
  >
317
- <MultiSelectEnhanced
317
+ <TheMultiSelect
318
318
  :options="teamsOptions"
319
319
  :selected-options="teamsSelectedItems"
320
320
  placeholder="Team"
@@ -326,7 +326,7 @@ function closeVideoModal() {
326
326
  v-if="enableFilter?.status"
327
327
  w-64
328
328
  >
329
- <MultiSelectEnhanced
329
+ <TheMultiSelect
330
330
  :options="statusOptions"
331
331
  :selected-options="statusSelectedItems"
332
332
  placeholder="Status"
@@ -339,7 +339,7 @@ function closeVideoModal() {
339
339
  v-if="enableFilter?.language && languageOptions.length > 0"
340
340
  w-48
341
341
  >
342
- <MultiSelectEnhanced
342
+ <TheMultiSelect
343
343
  :options="languageOptions"
344
344
  :selected-options="languageSelectedItems"
345
345
  placeholder="Language"
@@ -1,6 +1,11 @@
1
- <script setup lang="ts">
1
+ <script setup lang="ts">
2
+ import type { Rank } from "@xcpcio/core";
2
3
  import { useRouteQuery } from "@vueuse/router";
3
4
 
5
+ const props = defineProps<{
6
+ rank: Rank;
7
+ }>();
8
+
4
9
  const { t } = useI18n();
5
10
 
6
11
  const route = useRoute();
@@ -34,44 +39,63 @@ function goCountdown() {
34
39
 
35
40
  <template>
36
41
  <div
37
- w-full
38
- flex mt-4 gap-4
42
+ flex flex-col
39
43
  >
40
- <button
41
- btn
42
- title="Balloon"
43
- @click="goBalloon"
44
- >
45
- {{ t('type_menu.balloon') }}
46
- </button>
44
+ <div>
45
+ <div class="mb-2 text-xl font-bold">
46
+ {{ t('utility.tools') }}
47
+ </div>
47
48
 
48
- <button
49
- btn
50
- title="Submissions"
51
- disabled="true"
52
- >
53
- {{ t('type_menu.submissions') }}
54
- </button>
55
- </div>
49
+ <div class="border-t border-gray-300 pt-4">
50
+ <div
51
+ w-full
52
+ flex gap-4
53
+ >
54
+ <button
55
+ btn
56
+ title="Countdown"
57
+ @click="goCountdown"
58
+ >
59
+ {{ t('type_menu.countdown') }}
60
+ </button>
56
61
 
57
- <div
58
- w-full
59
- flex mt-4 gap-4
60
- >
61
- <button
62
- btn
63
- title="Resolver"
64
- @click="goResolver"
65
- >
66
- {{ t('type_menu.resolver') }}
67
- </button>
62
+ <button
63
+ btn
64
+ title="Balloon"
65
+ @click="goBalloon"
66
+ >
67
+ {{ t('type_menu.balloon') }}
68
+ </button>
69
+
70
+ <button
71
+ btn
72
+ title="Resolver"
73
+ @click="goResolver"
74
+ >
75
+ {{ t('type_menu.resolver') }}
76
+ </button>
77
+
78
+ <button
79
+ btn
80
+ title="Submissions"
81
+ disabled="true"
82
+ >
83
+ {{ t('type_menu.submissions') }}
84
+ </button>
85
+ </div>
86
+ </div>
87
+ </div>
88
+
89
+ <div class="mt-8">
90
+ <div class="mb-2 text-xl font-bold">
91
+ {{ t('utility.export') }}
92
+ </div>
68
93
 
69
- <button
70
- btn
71
- title="Countdown"
72
- @click="goCountdown"
73
- >
74
- {{ t('type_menu.countdown') }}
75
- </button>
94
+ <div class="border-t border-gray-300 pt-4">
95
+ <Export
96
+ :rank="props.rank"
97
+ />
98
+ </div>
99
+ </div>
76
100
  </div>
77
101
  </template>
@@ -155,7 +155,7 @@ const currentUsers = computed(() => {
155
155
  <div
156
156
  w-108
157
157
  >
158
- <MultiSelectEnhanced
158
+ <TheMultiSelect
159
159
  :options="orgOptions"
160
160
  :selected-options="orgSelectedItems"
161
161
  placeholder="Organization"
@@ -166,7 +166,7 @@ const currentUsers = computed(() => {
166
166
  <!-- <div
167
167
  w-68
168
168
  >
169
- <MultiSelectEnhanced
169
+ <TheMultiSelect
170
170
  :options="memberOptions"
171
171
  :selected-options="memberSelectedItems"
172
172
  placeholder="Member"