PageSourceSearch

https://www.maiachess.com/_next/static/chunks/pages/_app-98bd2a2f271a9d7b.js

js maiachess.com collected 2026-10-02 04:19:52 UTC 985,905 bytes, 2,985 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{92:(t,r,i)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return i(25059)}])},1856:(t,r,i)=>{"use strict";function a(t,r){return r?1e3/r*t:0}i.d(r,{f:()=>a})},1960:(t,r,i)=>{"use strict";i.d(r,{S:()=>a});let a=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu},2205:(t,r,i)=>{"use strict";i.d(r,{B:()=>a});let a="undefined"!=typeof window},2589:(t,r,i)=>{"use strict";i.d(r,{q:()=>a});let a=(t,r,i)=>{let a=r-t;return 0===a?1:(i-t)/a}},2703:(t,r,i)=>{"use strict";i.d(r,{J:()=>n});var a=i(14232);let n=t=>{let[r,i]=(0,a.useState)({rating:void 0,lastRating:void 0,session:{gamesPlayed:0,gamesWon:0},lifetime:void 0});return(0,a.useEffect)(()=>{(async()=>{let a=await t();i(t=>({...r,rating:a.rating,lastRating:r.rating,lifetime:{gamesPlayed:a.gamesPlayed,gamesWon:a.gamesWon}}))})()},[]),[r,(0,a.useCallback)((t,r)=>{i(i=>({...i,session:{gamesPlayed:i.session.gamesPlayed+t,gamesWon:i.session.gamesWon+r},lifetime:i.lifetime?{gamesPlayed:i.lifetime.gamesPlayed+t,gamesWon:i.lifetime.gamesWon+r}:{gamesPlayed:t,gamesWon:r}}))},[]),(0,a.useCallback)(t=>{i(r=>({...r,rating:t,lastRating:r.rating}))},[])]}},2926:(t,r,i)=>{"use strict";i.d(r,{F:()=>n});let a=(t,r)=>i=>r(t(i)),n=(...t)=>t.reduce(a)},3717:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},3866:(t,r,i)=>{"use strict";i.d(r,{t:()=>a});let a=(0,i(14232).createContext)(null)},5048:(t,r,i)=>{"use strict";i.d(r,{L:()=>a});let a=(0,i(14232).createContext)({})},5897:(t,r,i)=>{"use strict";i.d(r,{u:()=>n});var a=i(12562);let n={test:(0,i(31062).$)("#"),parse:function(t){let r="",i="",a="",n="";return t.length>5?(r=t.substring(1,3),i=t.substring(3,5),a=t.substring(5,7),n=t.substring(7,9)):(r=t.substring(1,2),i=t.substring(2,3),a=t.substring(3,4),n=t.substring(4,5),r+=r,i+=i,a+=a,n+=n),{red:parseInt(r,16),green:parseInt(i,16),blue:parseInt(a,16),alpha:n?parseInt(n,16)/255:1}},transform:a.B.transform}},6162:(t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.ROOKS=r.SQUARES=r.RANKS=r.RANK_8=r.RANK_7=r.RANK_6=r.RANK_5=r.RANK_4=r.RANK_3=r.RANK_2=r.RANK_1=r.BITS=r.FLAGS=r.SHIFTS=r.RAYS=r.ATTACKS=r.PIECE_OFFSETS=r.PAWN_OFFSETS=r.POSSIBLE_RESULTS=r.DEFAULT_POSITION=r.SYMBOLS=r.EMPTY=r.KING=r.QUEEN=r.ROOK=r.BISHOP=r.KNIGHT=r.PAWN=r.BLACK=r.WHITE=void 0,r.WHITE="w",r.BLACK="b",r.PAWN="p",r.KNIGHT="n",r.BISHOP="b",r.ROOK="r",r.QUEEN="q",r.KING="k",r.EMPTY=-1,r.SYMBOLS="pnbrqkPNBRQK",r.DEFAULT_POSITION="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",r.POSSIBLE_RESULTS=["1-0","0-1","1/2-1/2","*"],r.PAWN_OFFSETS={b:[16,32,17,15],w:[-16,-32,-17,-15]},r.PIECE_OFFSETS={p:[],n:[-18,-33,-31,-14,18,33,31,14],b:[-17,-15,17,15],r:[-16,1,16,-1],q:[-17,-16,-15,1,17,16,15,-1],k:[-17,-16,-15,1,17,16,15,-1]},r.ATTACKS=[20,0,0,0,0,0,0,24,0,0,0,0,0,0,20,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,24,24,24,24,24,24,56,0,56,24,24,24,24,24,24,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,20,0,0,0,0,0,0,24,0,0,0,0,0,0,20],r.RAYS=[17,0,0,0,0,0,0,16,0,0,0,0,0,0,15,0,0,17,0,0,0,0,0,16,0,0,0,0,0,15,0,0,0,0,17,0,0,0,0,16,0,0,0,0,15,0,0,0,0,0,0,17,0,0,0,16,0,0,0,15,0,0,0,0,0,0,0,0,17,0,0,16,0,0,15,0,0,0,0,0,0,0,0,0,0,17,0,16,0,15,0,0,0,0,0,0,0,0,0,0,0,0,17,16,15,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-15,-16,-17,0,0,0,0,0,0,0,0,0,0,0,0,-15,0,-16,0,-17,0,0,0,0,0,0,0,0,0,0,-15,0,0,-16,0,0,-17,0,0,0,0,0,0,0,0,-15,0,0,0,-16,0,0,0,-17,0,0,0,0,0,0,-15,0,0,0,0,-16,0,0,0,0,-17,0,0,0,0,-15,0,0,0,0,0,-16,0,0,0,0,0,-17,0,0,-15,0,0,0,0,0,0,-16,0,0,0,0,0,0,-17],r.SHIFTS={p:0,n:1,b:2,r:3,q:4,k:5},r.FLAGS={NORMAL:"n",CAPTURE:"c",BIG_PAWN:"b",EP_CAPTURE:"e",PROMOTION:"p",KSIDE_CASTLE:"k",QSIDE_CASTLE:"q"},r.BITS={NORMAL:1,CAPTURE:2,BIG_PAWN:4,EP_CAPTURE:8,PROMOTION:16,KSIDE_CASTLE:32,QSIDE_CASTLE:64},r.RANK_1=7,r.RANK_2=6,r.RANK_3=5,r.RANK_4=4,r.RANK_5=3,r.RANK_6=2,r.RANK_7=1,r.RANK_8=0,r.RANKS=[r.RANK_8,r.RANK_7,r.RANK_6,r.RANK_5,r.RANK_4,r.RANK_3,r.RANK_2,r.RANK_1],r.SQUARES={a8:0,b8:1,c8:2,d8:3,e8:4,f8:5,g8:6,h8:7,a7:16,b7:17,c7:18,d7:19,e7:20,f7:21,g7:22,h7:23,a6:32,b6:33,c6:34,d6:35,e6:36,f6:37,g6:38,h6:39,a5:48,b5:49,c5:50,d5:51,e5:52,f5:53,g5:54,h5:55,a4:64,b4:65,c4:66,d4:67,e4:68,f4:69,g4:70,h4:71,a3:80,b3:81,c3:82,d3:83,e3:84,f3:85,g3:86,h3:87,a2:96,b2:97,c2:98,d2:99,e2:100,f2:101,g2
1:102,h2:103,a1:112,b1:113,c1:114,d1:115,e1:116,f1:117,g1:118,h1:119},r.ROOKS={w:[{square:r.SQUARES.a1,flag:r.BITS.QSIDE_CASTLE},{square:r.SQUARES.h1,flag:r.BITS.KSIDE_CASTLE}],b:[{square:r.SQUARES.a8,flag:r.BITS.QSIDE_CASTLE},{square:r.SQUARES.h8,flag:r.BITS.KSIDE_CASTLE}]}},6249:(t,r,i)=>{"use strict";i.d(r,{d:()=>a});let a={current:!1}},7862:(t,r,i)=>{"use strict";function a(t){let r;return()=>(void 0===r&&(r=t()),r)}i.d(r,{p:()=>a})},9186:(t,r,i)=>{"use strict";i.d(r,{l:()=>s});var a=i(32711),n=i(98082);class s{setHeader(t,r){this.headers.set(t,r)}getHeader(t){return this.headers.get(t)}toPGN(){return this.toChess().pgn()}toChess(){let t=new a.d$;this.root.fen!==t.fen()&&t.load(this.root.fen),this.headers.forEach((r,i)=>{t.addHeader(i,r)});let r=!1,i=this.root;for(;!r;)i.mainChild?(i=i.mainChild,t.move(i.san||i.move||"")):r=!0;return t}getRoot(){return this.root}getLastMainlineNode(){let t=this.root.getMainLine();return t[t.length-1]}getMainLine(){return this.root.getMainLine()}addMainlineNode(t,r,i,a,n,s){return t.addChild(r,i,a,!0,n,s)}addVariationNode(t,r,i,a,n,s){return t.findVariation(i)?t.findVariation(i):t.addChild(r,i,a,!1,n,s)}toMoveArray(){let t=[],r=this.root;for(;r.mainChild;)(r=r.mainChild).move&&t.push(r.move);return t}toTimeArray(){let t=[],r=this.root;for(;r.mainChild;)t.push((r=r.mainChild).time||0);return t}addMoveToMainLine(t,r){let i=this.getMainLine(),n=i[i.length-1],s=new a.d$(n.fen),o=s.move(t,{sloppy:!0});return o?this.addMainlineNode(n,s.fen(),t,o.san,void 0,r):null}addMovesToMainLine(t,r){let i=null;for(let a=0;a<t.length;a++){let n=t[a],s=null==r?void 0:r[a];if(!(i=this.addMoveToMainLine(n,s)))return null}return i}constructor(t){this.root=new n.R(t),this.headers=new Map,"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"!==t&&(this.headers.set("SetUp","1"),this.headers.set("FEN",t))}}},9504:(t,r,i)=>{"use strict";i.d(r,{u:()=>of,t:()=>op});var a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w,x,$,S,k,C,E,T,I,A,N,O,M,P,R,j,z=i(37876),D=Object.defineProperty,B=Object.getOwnPropertyDescriptor,L=Object.getOwnPropertyNames,U=Object.prototype.hasOwnProperty,F=(t=>"u">typeof require?require:"u">typeof Proxy?new Proxy(t,{get:(t,r)=>("u">typeof require?require:t)[r]}):t)(function(t){if("u">typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')}),q=(t,r)=>()=>(t&&(r=t(t=0)),r),V=(t,r)=>{for(var i in r)D(t,i,{get:r[i],enumerable:!0})},W=t=>((t,r,i,a)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let n of L(r))U.call(t,n)||n===i||D(t,n,{get:()=>r[n],enumerable:!(a=B(r,n))||a.enumerable});return t})(D({},"__esModule",{value:!0}),t),H=q(()=>{a=new Map,n=[],s=(t,r,i)=>{if(r&&"function"==typeof r.init&&"function"==typeof r.createInferenceSessionHandler){let s=a.get(t);if(void 0===s)a.set(t,{backend:r,priority:i});else{if(s.priority>i)return;if(s.priority===i&&s.backend!==r)throw Error(`cannot register backend "${t}" using priority ${i}`)}if(i>=0){let r=n.indexOf(t);-1!==r&&n.splice(r,1);for(let r=0;r<n.length;r++)if(a.get(n[r]).priority<=i)return void n.splice(r,0,t);n.push(t)}return}throw TypeError("not a valid backend")},o=async t=>{let r=a.get(t);if(!r)return"backend not found.";if(r.initialized)return r.backend;if(r.aborted)return r.error;{let i=!!r.initPromise;try{return i||(r.initPromise=r.backend.init(t)),await r.initPromise,r.initialized=!0,r.backend}catch(t){return i||(r.error=`${t}`,r.aborted=!0),r.error}finally{delete r.initPromise}}},l=async t=>{let r=t.executionProviders||[],i=r.map(t=>"string"==typeof t?t:t.name),a=0===i.length?n:i,s,l=[],u=new Set;for(let t of a){let r=await o(t);"string"==typeof r?l.push({name:t,err:r}):(s||(s=r),s===r&&u.add(t))}if(!s)throw Error(`no available backend found. ERR: ${l.map(t=>`[${t.name}] ${t.err}`).join(", ")}`);for(let{name:t,err:r}of l)i.includes(t)&&console.warn(`removing requested execution provider "${t}" from session options because it is not available: ${r}`);let d=r.filter(t=>u.has("string"==typeof t?t:t.name));return[s,new Proxy(t,{get:(t,r)=>"executionProviders"===r?d:Reflect.get(t,r)})]}}),G=q(()=>{H()}),K=q(()=>{u="1.23.0"}),Y=q(()=>{K(),d="warning",Object.defineProperty(c={wasm:{},webgl:{},webgpu:{},versions:{common:u},set logLevel(e){if(void 0!==e){if("string"!=typeof e||-1===["verbose","info","warning","error","fatal"].indexOf(e))throw Error(`Unsupported logging level: ${e}`);d=e}},get logLevel(){return d}},"logLevel",{enumerable:!0})}),Q=q(()=>{Y(),h=c}),X=q(()=>{f=(t,r)=>{let i="u">typeof document?document.createElement("canvas"):new OffscreenCanvas(1,1);i.width=t.dims[3],i.height=t.dims[2];let a=i.getContext("2d");if(null!=a){let n,s;r?.tensorLayout!==void 0&&"NHWC"===r.tensorLayout?(n=t.dims[2],s=t.dims[3]):(n=t.dims[3],s=t.dims[2]);let o=r?.format!==void 0?r.format:"RGB",l=r?.norm,u,d;void 0===l||void 0===l.mean?u=[255,255,255,255]:"number"==typeof l.mean?u=[l.mean,l.mean,l.mean,l.mean]:(u=[l.mean[0],l.mean[1],l.mean[2],0],void 0!==l.mean[3]&&(u[3]=l.mean[3])),void 0===l||void 0===l.bias?d=[0,0,0,0]:"number"==typeof l.bias?d=[l.bias,l.bias,l.bias,l.bias]:(d=[l.bias[0],l.bias[1],l.bias[2],0],void 0!==l.bias[3]&&(d[3]=l.bias[3]));let c=s*n,h=0,f=c,p=2*c,m=-1;"RGBA"===o?(h=0,f=c,p=2*c,m=3*c):"RGB"===o?(h=0,f=c,p=2*c):"RBG"===o&&(h=0,p=c,f=2*c);for(let r=0;r<s;r++)for(let i=0;i<n;i++)a.fillStyle="rgba("+(t.data[h++]-d[0])*u[0]+","+(t.data[f++]-d[1])*u[1]+","+(t.data[p++]-d[2])*u[2]+","+(-1===m?255:(t.data[m++]-d[3])*u[3])+")",a.fillRect(i,r,1,1);if("toDataURL"in i)return i.toDataURL();throw Error("toDataURL is not supported")}throw Error("Can not access image data")},p=(t,r)=>{let i="u">typeof document?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),a;if(null!=i){let n,s,o;r?.tensorLayout!==void 0&&"NHWC"===r.tensorLayout?(n=t.dims[2],s=t.dims[1],o=t.dims[3]):(n=t.dims[3],s=t.dims[2],o=t.dims[1]);let l=void 0!==r&&void 0!==r.format?r.format:"RGB",u=r?.norm,d,c;void 0===u||void 0===u.mean?d=[255,255,255,255]:"number"==typeof u.mean?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],255],void 0!==u.mean[3]&&(d[3]=u.mean[3])),void 0===u||void 0===u.bias?c=[0,0,0,0]:"number"==typeof u.bias?c=[u.bias,u.bias,u.bias,u.bias]:(c=[u.bias[0],u.bias[1],u.bias[2],0],void 0!==u.bias[3]&&(c[3]=u.bias[3]));let h=s*n;if(void 0!==r&&(void 0!==r.format&&4===o&&"RGBA"!==r.format||3===o&&"RGB"!==r.format&&"BGR"!==r.format))throw Error("Tensor format doesn't match input tensor dims");let f=0,p=1,m=2,g=3,b=0,y=h,v=2*h,_=-1;"RGBA"===l?(b=0,y=h,v=2*h,_=3*h):"RGB"===l?(b=0,y=h,v=2*h):"RBG"===l&&(b=0,v=h,y=2*h),a=i.createImageData(n,s);for(let r=0;r<s*n;f+=4,p+=4,m+=4,g+=4,r++)a.data[f]=(t.data[b++]-c[0])*d[0],a.data[p]=(t.data[y++]-c[1])*d[1],a.data[m]=(t.data[v
1++]-c[2])*d[2],a.data[g]=-1===_?255:(t.data[_++]-c[3])*d[3]}else throw Error("Can not access image data");return a}}),Z=q(()=>{et(),m=(t,r)=>{if(void 0===t)throw Error("Image buffer must be defined");if(void 0===r.height||void 0===r.width)throw Error("Image height and width must be defined");if("NHWC"===r.tensorLayout)throw Error("NHWC Tensor layout is not supported yet");let{height:i,width:a}=r,n=r.norm??{mean:255,bias:0},s,o;s="number"==typeof n.mean?[n.mean,n.mean,n.mean,n.mean]:[n.mean[0],n.mean[1],n.mean[2],n.mean[3]??255],o="number"==typeof n.bias?[n.bias,n.bias,n.bias,n.bias]:[n.bias[0],n.bias[1],n.bias[2],n.bias[3]??0];let l=void 0!==r.format?r.format:"RGBA",u=void 0!==r.tensorFormat&&void 0!==r.tensorFormat?r.tensorFormat:"RGB",d=i*a,c=new Float32Array("RGBA"===u?4*d:3*d),h=4,f=0,p=1,m=2,g=3,b=0,y=d,v=2*d,_=-1;"RGB"===l&&(h=3,f=0,p=1,m=2,g=-1),"RGBA"===u?_=3*d:"RBG"===u?(b=0,v=d,y=2*d):"BGR"===u&&(v=0,y=d,b=2*d);for(let r=0;r<d;r++,f+=h,m+=h,p+=h,g+=h)c[b++]=(t[f]+o[0])/s[0],c[y++]=(t[p]+o[1])/s[1],c[v++]=(t[m]+o[2])/s[2],-1!==_&&-1!==g&&(c[_++]=(t[g]+o[3])/s[3]);return"RGBA"===u?new E("float32",c,[1,4,i,a]):new E("float32",c,[1,3,i,a])},g=async(t,r)=>{let i="u">typeof HTMLImageElement&&t instanceof HTMLImageElement,a="u">typeof ImageData&&t instanceof ImageData,n="u">typeof ImageBitmap&&t instanceof ImageBitmap,s="string"==typeof t,o,l=r??{},u=()=>{if("u">typeof document)return document.createElement("canvas");if("u">typeof OffscreenCanvas)return new OffscreenCanvas(1,1);throw Error("Canvas is not supported")},d=t=>"u">typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||t instanceof OffscreenCanvas?t.getContext("2d"):null;if(i){let i=u();i.width=t.width,i.height=t.height;let a=d(i);if(null!=a){let i=t.height,n=t.width;if(void 0!==r&&void 0!==r.resizedHeight&&void 0!==r.resizedWidth&&(i=r.resizedHeight,n=r.resizedWidth),void 0!==r){if(l=r,void 0!==r.tensorFormat)throw Error("Image input config format must be RGBA for HTMLImageElement");l.tensorFormat="RGBA",l.height=i,l.width=n}else l.tensorFormat="RGBA",l.height=i,l.width=n;a.drawImage(t,0,0),o=a.getImageData(0,0,n,i).data}else throw Error("Can not access image data")}else if(a){let i,a;if(void 0!==r&&void 0!==r.resizedWidth&&void 0!==r.resizedHeight?(i=r.resizedHeight,a=r.resizedWidth):(i=t.height,a=t.width),void 0!==r&&(l=r),l.format="RGBA",l.height=i,l.width=a,void 0!==r){let r=u();r.width=a,r.height=i;let n=d(r);if(null!=n)n.putImageData(t,0,0),o=n.getImageData(0,0,a,i).data;else throw Error("Can not access image data")}else o=t.data}else if(n){if(void 0===r)throw Error("Please provide image config with format for Imagebitmap");let i=u();i.width=t.width,i.height=t.height;let a=d(i);if(null!=a){let r=t.height,i=t.width;return a.drawImage(t,0,0,i,r),o=a.getImageData(0,0,i,r).data,l.height=r,l.width=i,m(o,l)}throw Error("Can not access image data")}else{if(s)return new Promise((r,i)=>{let a=u(),n=d(a);if(!t||!n)return i();let s=new Image;s.crossOrigin="Anonymous",s.src=t,s.onload=()=>{a.width=s.width,a.height=s.height,n.drawImage(s,0,0,a.width,a.height);let t=n.getImageData(0,0,a.width,a.height);l.height=a.height,l.width=a.width,r(m(t.data,l))}});throw Error("Input data provided is not supported - aborted tensor creation")}if(void 0!==o)return m(o,l);throw Error("Input data provided is not supported - aborted tensor creation")},b=(t,r)=>{let{width:i,height:a,download:n,dispose:s}=r;return new E({location:"texture",type:"float32",texture:t,dims:[1,a,i,4],download:n,dispose:s})},y=(t,r)=>{let{dataType:i,dims:a,download:n,dispose:s}=r;return new E({location:"gpu-buffer",type:i??"float32",gpuBuffer:t,dims:a,download:n,dispose:s})},v=(t,r)=>{let{dataType:i,dims:a,download:n,dispose:s}=r;return new E({location:"ml-tensor",type:i??"float32",mlTensor:t,dims:a,download:n,dispose:s})},_=(t,r,i)=>new E({location:"cpu-pinned",type:t,data:r,dims:i??[r.length]})}),J=q(()=>{w=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array],["int4",Uint8Array],["uint4",Uint8Array]]),x=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),$=!1,S=()=>
1{if(!$){$=!0;let t="u">typeof BigInt64Array&&BigInt64Array.from,r="u">typeof BigUint64Array&&BigUint64Array.from,i=globalThis.Float16Array,a="u">typeof i&&i.from;t&&(w.set("int64",BigInt64Array),x.set(BigInt64Array,"int64")),r&&(w.set("uint64",BigUint64Array),x.set(BigUint64Array,"uint64")),a?(w.set("float16",i),x.set(i,"float16")):w.set("float16",Uint16Array)}}}),ee=q(()=>{et(),k=t=>{let r=1;for(let i=0;i<t.length;i++){let a=t[i];if("number"!=typeof a||!Number.isSafeInteger(a))throw TypeError(`dims[${i}] must be an integer, got: ${a}`);if(a<0)throw RangeError(`dims[${i}] must be a non-negative integer, got: ${a}`);r*=a}return r},C=(t,r)=>{switch(t.location){case"cpu":return new E(t.type,t.data,r);case"cpu-pinned":return new E({location:"cpu-pinned",data:t.data,type:t.type,dims:r});case"texture":return new E({location:"texture",texture:t.texture,type:t.type,dims:r});case"gpu-buffer":return new E({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:r});case"ml-tensor":return new E({location:"ml-tensor",mlTensor:t.mlTensor,type:t.type,dims:r});default:throw Error(`tensorReshape: tensor location ${t.location} is not supported`)}}}),et=q(()=>{X(),Z(),J(),ee(),E=class{constructor(t,r,i){let a,n;if(S(),"object"==typeof t&&"location"in t)switch(this.dataLocation=t.location,a=t.type,n=t.dims,t.location){case"cpu-pinned":{let r=w.get(a);if(!r)throw TypeError(`unsupported type "${a}" to create tensor from pinned buffer`);if(!(t.data instanceof r))throw TypeError(`buffer should be of type ${r.name}`);this.cpuData=t.data;break}case"texture":if("float32"!==a)throw TypeError(`unsupported type "${a}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break;case"gpu-buffer":if("float32"!==a&&"float16"!==a&&"int32"!==a&&"int64"!==a&&"uint32"!==a&&"uint8"!==a&&"bool"!==a&&"uint4"!==a&&"int4"!==a)throw TypeError(`unsupported type "${a}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break;case"ml-tensor":if("float32"!==a&&"float16"!==a&&"int32"!==a&&"int64"!==a&&"uint32"!==a&&"uint64"!==a&&"int8"!==a&&"uint8"!==a&&"bool"!==a&&"uint4"!==a&&"int4"!==a)throw TypeError(`unsupported type "${a}" to create tensor from MLTensor`);this.mlTensorData=t.mlTensor,this.downloader=t.download,this.disposer=t.dispose;break;default:throw Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let s,o;if("string"==typeof t)if(a=t,o=i,"string"===t){if(!Array.isArray(r))throw TypeError("A string tensor's data must be a string array.");s=r}else{let i=w.get(t);if(void 0===i)throw TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(r)){if("float16"===t&&i===Uint16Array||"uint4"===t||"int4"===t)throw TypeError(`Creating a ${t} tensor from number array is not supported. Please use ${i.name} as data.`);s="uint64"===t||"int64"===t?i.from(r,BigInt):i.from(r)}else if(r instanceof i)s=r;else if(r instanceof Uint8ClampedArray)if("uint8"===t)s=Uint8Array.from(r);else throw TypeError("A Uint8ClampedArray tensor's data must be type of uint8");else if("float16"===t&&r instanceof Uint16Array&&i!==Uint16Array)s=new globalThis.Float16Array(r.buffer,r.byteOffset,r.length);else throw TypeError(`A ${a} tensor's data must be type of ${i}`)}else if(o=r,Array.isArray(t)){if(0===t.length)throw TypeError("Tensor type cannot be inferred from an empty array.");let r=typeof t[0];if("string"===r)a="string",s=t;else if("boolean"===r)a="bool",s=Uint8Array.from(t);else throw TypeError(`Invalid element type of data array: ${r}.`)}else if(t instanceof Uint8ClampedArray)a="uint8",s=Uint8Array.from(t);else{let r=x.get(t.constructor);if(void 0===r)throw TypeError(`Unsupported type for tensor data: ${t.constructor}.`);a=r,s=t}if(void 0===o)o=[s.length];else if(!Array.isArray(o))throw TypeError("A tensor's dims must be a number array");n=o,this.cpuData=s,this.dataLocation="cpu"}let s=k(n);if(this.cpuData&&s!==this.cpuData.length&&("uint4"!==a&&"int4"!==a||Math.ceil(s/2)!==this.cpuData.length))throw Error(`Tensor's size(${s}) does not match data length(${this.cpuData.length}).`);this.type=a,this.dims=n,this.size=s}static async fromImage(t,r){return g(t,r)}static fromTexture(t,r){return b(t,r)}static fromGpuBuffer(t,r){return y(t,r)}static fromMLTensor(t,r){return v(t,r)}static fromPinnedBuffer(t,r,i){return _(t,r,i)}toDataURL(t){return f(this,t)}toImageData(t){return p(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}get mlTensor(){if(this.ensureValid(),!this.mlTensorData)throw Error("The data is not stored as a WebNN MLTensor.");return this.mlTensorData}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":case"ml-tensor":if(!this.downloader)throw Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let r=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=r,t&&this.disposer&&(this.disposer(),this.disposer=void 0),r}finally{this.isDownloading=!1}default:throw Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.mlTensorData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if("none"===this.dataLocation)throw Error("The tensor is disposed.")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw Error("Cannot reshape a tensor that owns GPU resource.");return C(this,t)}}}),er=q(()=>{et(),T=E}),ei=q(()=>{Y(),I=(t,r)=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&console.timeStamp(`${t}::ORT::${r}`)},A=(t,r)=>{let i=Error().stack?.split(/\r\n|\r|\n/g)||[],a=!1;for(let n=0;n<i.length;n++){if(a&&!i[n].includes("TRACE_FUNC")){let a=`FUNC_${t}::${i[n].trim().split(" ")[1]}`;r&&(a+=`::${r}`),I("CPU",a);return}i[n].includes("TRACE_FUNC")&&(a=!0)}},N=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&A("BEGIN",t)},O=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&A("END",t)},M=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&console.time(`ORT::${t}`)},P=t=>{(typeof c.trace>"u"?c.wasm.trace:c.trace)&&console.timeEnd(`ORT::${t}`)}}),ea=q(()=>{H(),er(),ei(),R=class t{constructor(t){this.handler=t}async run(t,r,i){N(),M("InferenceSession.run");let a={},n={};if("object"!=typeof t||null===t||t instanceof T||Array.isArray(t))throw TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let s=!0;if("object"==typeof r){if(null===r)throw TypeError("Unexpected argument[1]: cannot be null.");if(r instanceof T)throw TypeError("'fetches' cannot be a Tensor");if(Array.isArray(r)){if(0===r.length)throw TypeError("'fetches' cannot be an empty array.");
1for(let t of(s=!1,r)){if("string"!=typeof t)throw TypeError("'fetches' must be a string array or an object.");if(-1===this.outputNames.indexOf(t))throw RangeError(`'fetches' contains invalid output name: ${t}.`);a[t]=null}if("object"==typeof i&&null!==i)n=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else{let t=!1,o=Object.getOwnPropertyNames(r);for(let i of this.outputNames)if(-1!==o.indexOf(i)){let n=r[i];(null===n||n instanceof T)&&(t=!0,s=!1,a[i]=n)}if(t){if("object"==typeof i&&null!==i)n=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else n=r}}else if("u">typeof r)throw TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let r of this.inputNames)if(typeof t[r]>"u")throw Error(`input '${r}' is missing in 'feeds'.`);if(s)for(let t of this.outputNames)a[t]=null;let o=await this.handler.run(t,a,n),l={};for(let t in o)if(Object.hasOwnProperty.call(o,t)){let r=o[t];r instanceof T?l[t]=r:l[t]=new T(r.type,r.data,r.dims)}return P("InferenceSession.run"),O(),l}async release(){return this.handler.dispose()}static async create(r,i,a,n){N(),M("InferenceSession.create");let s,o={};if("string"==typeof r){if(s=r,"object"==typeof i&&null!==i)o=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else if(r instanceof Uint8Array){if(s=r,"object"==typeof i&&null!==i)o=i;else if("u">typeof i)throw TypeError("'options' must be an object.")}else if(r instanceof ArrayBuffer||"u">typeof SharedArrayBuffer&&r instanceof SharedArrayBuffer){let t=0,l=r.byteLength;if("object"==typeof i&&null!==i)o=i;else if("number"==typeof i){if(!Number.isSafeInteger(t=i))throw RangeError("'byteOffset' must be an integer.");if(t<0||t>=r.byteLength)throw RangeError(`'byteOffset' is out of range [0, ${r.byteLength}).`);if(l=r.byteLength-t,"number"==typeof a){if(!Number.isSafeInteger(l=a))throw RangeError("'byteLength' must be an integer.");if(l<=0||t+l>r.byteLength)throw RangeError(`'byteLength' is out of range (0, ${r.byteLength-t}].`);if("object"==typeof n&&null!==n)o=n;else if("u">typeof n)throw TypeError("'options' must be an object.")}else if("u">typeof a)throw TypeError("'byteLength' must be a number.")}else if("u">typeof i)throw TypeError("'options' must be an object.");s=new Uint8Array(r,t,l)}else throw TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let[u,d]=await l(o),c=await u.createInferenceSessionHandler(s,d);return P("InferenceSession.create"),O(),new t(c)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}get inputMetadata(){return this.handler.inputMetadata}get outputMetadata(){return this.handler.outputMetadata}}}),en=q(()=>{ea(),j=R}),es=q(()=>{}),eo=q(()=>{}),el=q(()=>{}),eu=q(()=>{});V({},{InferenceSession:()=>j,TRACE:()=>I,TRACE_EVENT_BEGIN:()=>M,TRACE_EVENT_END:()=>P,TRACE_FUNC_BEGIN:()=>N,TRACE_FUNC_END:()=>O,Tensor:()=>T,env:()=>h,registerBackend:()=>s});var ed=q(()=>{G(),Q(),en(),er(),es(),eo(),ei(),el(),eu()}),ec=q(()=>{}),eh={};V(eh,{default:()=>ep});var ef,ep,em=q(()=>{s4(),nh(),nc(),(ef=globalThis.self?.name==="ort-wasm-proxy-worker")&&(self.onmessage=t=>{let{type:r,in:i}=t.data;try{switch(r){case"init-wasm":eP(i.wasm).then(()=>{sk(i).then(()=>{postMessage({type:r})},t=>{postMessage({type:r,err:t})})},t=>{postMessage({type:r,err:t})});break;case"init-ep":{let{epName:t,env:a}=i;sC(a,t).then(()=>{postMessage({type:r})},t=>{postMessage({type:r,err:t})});break}case"copy-from":{let{buffer:t}=i,a=sI(t);postMessage({type:r,out:a});break}case"create":{let{model:t,options:a}=i;sA(t,a).then(t=>{postMessage({type:r,out:t})},t=>{postMessage({type:r,err:t})});break}case"release":sN(i),postMessage({type:r});break;case"run":{let{sessionId:t,inputIndices:a,inputs:n,outputIndices:s,options:o}=i;sM(t,a,n,s,Array(s.length).fill(null),o).then(t=>{t.some(t=>"cpu"!==t[3])?postMessage({type:r,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:r,out:t},sR([...n,...t]))},t=>{postMessage({type:r,err:t})});break}case"end-profiling":sP(i),postMessage({type:r})}}catch(t){postMessage({type:r,err:t})}}),ep=ef?null:t=>new Worker(t??ew,{type:"module",name:"ort-wasm-proxy-worker"})}),eg={};V(eg,{default:()=>ey});var eb,ey,ev,e_,ew,ex,e$,eS,ek,eC,eE,eT,eI,eA,eN,eO,eM,eP,eR,ej,ez,eD,eB,eL,eU,eF,eq,eV,eW,eH,eG,eK,eY,eQ,eX,eZ,eJ,e1,e0,e2,e3,e4,e8,e7,e6,e5,e9,te,tt,tr,ti,ta,tn,ts,to,tl,tu,td,tc,th,tf,tp,tm,tg,tb,ty,tv,t_,tw,tx,t$,tS,tk,tC,tE,tT,tI,tA,tN,tO,tM,tP,tR,tj,tz,tD,tB,tL,tU,tF,tq,tV,tW,tH,tG,tK,tY,tQ,tX,tZ,tJ,t1,t0,t2,t3,t4,t8,t7,t6,t5,t9,re,rt,rr,ri,ra,rn,rs,ro,rl,ru,rd,rc,rh,rf,rp,rm,rg,rb,ry,rv,r_,rw,rx,r$,rS,rk,rC,rE,rT,rI,rA,rN,rO,rM,rP,rR,rj,rz,rD,rB,rL,rU,rF,rq,rV,rW,rH,rG,rK,rY,rQ,rX,rZ,rJ,r1,r0,r2,r3,r4,r8,r7,r6,r5,r9,ie,it,ir,ii,ia,is,io,il,iu,id,ic,ih,ip,im,ig,ib,iy,iv,i_,iw,ix,i$,iS,ik,iC,iE,iT,iI,iA,iN,iO,iM,iP,iR,ij,iz,iD,iB,iL,iU,iF,iq,iV,iW,iH,iG,
1iK,iY,iQ,iX,iZ,iJ,i1,i0,i2,i3,i4,i8,i7,i6,i5,i9,ae,at,ar,ai,aa,an,as,ao,al,au,ad,ac,ah,af,ap,am,ag,ab,ay,av,a_,aw,ax,a$,aS,ak,aC,aE,aT,aI,aA,aN,aO,aM,aP,aR,aj,az,aD,aB,aL,aU,aF,aq,aV,aW,aH,aG,aK,aY,aQ,aX,aZ,aJ,a1,a0,a2,a3,a4,a8,a7,a6,a5,a9,ne,nt,nr,ni,na,nn,ns,no,nl,nu,nd=q(()=>{ey=eb=async function(t={}){var r,a,n=new Promise((t,i)=>{r=t,a=i}),s="object"==typeof window,o="u">typeof WorkerGlobalScope,l=o&&self.name?.startsWith("em-pthread");t.mountExternalData=(r,i)=>{r.startsWith("./")&&(r=r.substring(2)),(t.Fb||(t.Fb=new Map)).set(r,i)},t.unmountExternalData=()=>{delete t.Fb};var u=globalThis.SharedArrayBuffer??new WebAssembly.Memory({initial:0,maximum:0,qc:!0}).buffer.constructor;let d=r=>async(...i)=>{try{if(t.Gb)throw Error("Session already started");let a=t.Gb={ec:i[0],errors:[]},n=await r(...i);if(t.Gb!==a)throw Error("Session mismatch");t.Kb?.flush();let s=a.errors;if(0<s.length){let t=await Promise.all(s);if(t=t.filter(t=>t),0<t.length)throw Error(t.join(`
2`))}return n}finally{t.Gb=null}};t.jsepInit=(r,i)=>{if("webgpu"===r){[t.Kb,t.Vb,t.Zb,t.Lb,t.Yb,t.Ab,t.$b,t.bc,t.Wb,t.Xb,t.ac]=i;let r=t.Kb;t.jsepRegisterBuffer=(t,i,a,n)=>r.registerBuffer(t,i,a,n),t.jsepGetBuffer=t=>r.getBuffer(t),t.jsepCreateDownloader=(t,i,a)=>r.createDownloader(t,i,a),t.jsepOnCreateSession=t=>{r.onCreateSession(t)},t.jsepOnReleaseSession=t=>{r.onReleaseSession(t)},t.jsepOnRunStart=t=>r.onRunStart(t),t.cc=(t,i)=>{r.upload(t,i)}}else if("webnn"===r){let r=i[0];[t.oc,t.Ob,t.webnnEnsureTensor,t.Pb,t.webnnDownloadTensor,t.nc,t.webnnEnableTraceEvent]=i.slice(1),t.webnnReleaseTensorId=t.Ob,t.webnnUploadTensor=t.Pb,t.webnnRegisterMLContext=t.nc,t.webnnOnRunStart=t=>r.onRunStart(t),t.webnnOnRunEnd=r.onRunEnd.bind(r),t.webnnOnReleaseSession=t=>{r.onReleaseSession(t)},t.webnnCreateMLTensorDownloader=(t,i)=>r.createMLTensorDownloader(t,i),t.webnnRegisterMLTensor=(t,i,a,n)=>r.registerMLTensor(t,i,a,n),t.webnnCreateMLContext=t=>r.createMLContext(t),t.webnnRegisterMLConstant=(i,a,n,s,o,l)=>r.registerMLConstant(i,a,n,s,o,t.Fb,l),t.webnnRegisterGraphInput=r.registerGraphInput.bind(r),t.webnnIsGraphInput=r.isGraphInput.bind(r),t.webnnRegisterGraphOutput=r.registerGraphOutput.bind(r),t.webnnIsGraphOutput=r.isGraphOutput.bind(r),t.webnnCreateTemporaryTensor=r.createTemporaryTensor.bind(r),t.webnnIsGraphInputOutputTypeSupported=r.isGraphInputOutputTypeSupported.bind(r)}};let c=()=>{let r=(t,r,i)=>(...a)=>{let n=tC,s=r?.();a=t(...a);let o=r?.();return s!==o&&(t=o,i(s),r=i=null),tC!=n?new Promise((t,r)=>{tO={resolve:t,reject:r}}):a};(()=>{for(let i of["_OrtAppendExecutionProvider","_OrtCreateSession","_OrtRun","_OrtRunWithBinding","_OrtBindInput"])t[i]=r(t[i],()=>t[i],r=>t[i]=r)})(),void 0!==d&&(t._OrtRun=d(t._OrtRun),t._OrtRunWithBinding=d(t._OrtRunWithBinding)),c=void 0};t.asyncInit=()=>{c?.()};var h,f,p=(t,r)=>{throw r},m="";if(s||o){try{m=new URL(".","file:///vercel/path0/node_modules/onnxruntime-web/dist/ort.bundle.min.mjs").href}catch{}o&&(f=t=>{var r=new XMLHttpRequest;return r.open("GET",t,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),h=async t=>{if(j(t))return new Promise((r,i)=>{var a=new XMLHttpRequest;a.open("GET",t,!0),a.responseType="arraybuffer",a.onload=()=>{200==a.status||0==a.status&&a.response?r(a.response):i(a.status)},a.onerror=i,a.send(null)});var r=await fetch(t,{credentials:"same-origin"});if(r.ok)return r.arrayBuffer();throw Error(r.status+" : "+r.url)}}var g,b,y,v,_,w,x,$,S,k,C,E,T,I,A,N=console.log.bind(console),O=console.error.bind(console),M=N,P=O,R=!1,j=t=>t.startsWith("file://");function z(){return b.buffer!=_.buffer&&H(),_}function D(){return b.buffer!=_.buffer&&H(),w}function B(){return b.buffer!=_.buffer&&H(),x}function L(){return b.buffer!=_.buffer&&H(),$}function U(){return b.buffer!=_.buffer&&H(),S}function F(){return b.buffer!=_.buffer&&H(),k}function q(){return b.buffer!=_.buffer&&H(),C}function V(){return b.buffer!=_.buffer&&H(),I}if(l){let r=function(i){try{var a=i.data,n=a.Db;if("load"===n){let i=[];for(let n of(self.onmessage=t=>i.push(t),self.startWorker=()=>{for(let t of(postMessage({Db:"loaded"}),i))r(t);self.onmessage=r},a.Sb))t[n]&&!t[n].proxy||(t[n]=(...t)=>{postMessage({Db:"callHandler",Rb:n,args:t})},"print"==n&&(M=t[n]),"printErr"==n&&(P=t[n]));b=a.kc,H(),A(a.lc)}else if("run"===n){eb(a.Bb),rq(a.Bb,0,0,1,0,0),ep(),th(a.Bb),W||(rB(),W=!0);try{ey(a.hc,a.Jb)}catch(t){if("unwind"!=t)throw t}}else"setimmediate"!==a.target&&("checkMailbox"===n?W&&tf():n&&(P(`worker: received unknown command ${n}`),P(a)))}catch(t){throw rV(),t}};var W=!1;self.onunhandledrejection=t=>{throw t.reason||t},self.onmessage=r}function H(){var r=b.buffer;t.HEAP8=_=new Int8Array(r),x=new Int16Array(r),t.HEAPU8=w=new Uint8Array(r),$=new Uint16Array(r),t.HEAP32=S=new Int32Array(r),t.HEAPU32
2=k=new Uint32Array(r),C=new Float32Array(r),I=new Float64Array(r),E=new BigInt64Array(r),T=new BigUint64Array(r)}function G(){l?startWorker(t):rz.Da()}var K,Y=0,Q=null;function X(){if(0==--Y&&Q){var t=Q;Q=null,t()}}function Z(t){throw P(t="Aborted("+t+")"),R=!0,t=new WebAssembly.RuntimeError(t+". Build with -sASSERTIONS for more info."),a(t),t}function J(){return{a:{L:rj,Aa:rR,b:e_,$:ex,A:eC,pa:eE,X:eT,Z:eI,qa:eA,na:eN,ga:eO,ma:eM,J:eP,Y:eR,V:ej,oa:ez,W:eD,va:eL,E:eK,Q:eQ,O:e4,D:e8,v:e7,s:e6,P:te,z:tl,R:tu,ja:td,T:tp,aa:tg,M:tb,F:ty,ia:th,sa:tv,r:tx,Ca:t$,w:tR,o:tz,m:tL,c:eJ,Ba:tU,n:tq,j:tV,u:tW,p:tH,f:tG,t:tK,l:tY,e:tQ,k:tX,h:tZ,g:tJ,d:t1,da:t0,ea:t8,fa:t7,ba:t6,ca:t5,N:rt,xa:rr,ua:ra,i:ro,C:rl,G:ru,ta:ri,x:rd,ra:rc,U:rh,q:re,y:rf,K:rp,S:rm,za:rv,ya:r_,ka:rS,la:rk,_:el,B:rC,I:rE,ha:rT,H:rA,a:b,wa:es}}}class ee{name="ExitStatus";constructor(t){this.message=`Program terminated with exit(${t})`,this.status=t}}var et=t=>{t.terminate(),t.onmessage=()=>{}},er=[],ei=t=>{0==eu.length&&(eg(),em(eu[0]));var r=eu.pop();if(!r)return 6;ed.push(r),eh[t.Bb]=r,r.Bb=t.Bb;var i={Db:"run",hc:t.fc,Jb:t.Jb,Bb:t.Bb};return r.postMessage(i,t.Nb),0},ea=0,en=(t,r,...i)=>{for(var a=2*i.length,n=rJ(),s=rZ(8*a),o=s>>>3,l=0;l<i.length;l++){var u=i[l];"bigint"==typeof u?(E[o+2*l]=1n,E[o+2*l+1]=u):(E[o+2*l]=0n,V()[o+2*l+1>>>0]=u)}return t=rW(t,0,a,s,r),rX(n),t};function es(t){if(l)return en(0,1,t);if(v=t,!(0<ea)){for(var r of ed)et(r);for(r of eu)et(r);eu=[],ed=[],eh={},R=!0}p(0,new ee(t))}function eo(t){if(l)return en(1,0,t);el(t)}var el=t=>{if(v=t,l)throw eo(t),"unwind";es(t)},eu=[],ed=[],ec=[],eh={},ef=t=>{var r=t.Bb;delete eh[r],eu.push(t),ed.splice(ed.indexOf(t),1),t.Bb=0,rH(r)};function ep(){ec.forEach(t=>t())}var em=r=>new Promise(i=>{r.onmessage=a=>{var n=(a=a.data).Db;if(a.Hb&&a.Hb!=rL()){var s=eh[a.Hb];s?s.postMessage(a,a.Nb):P(`Internal error! Worker sent a message "${n}" to target pthread ${a.Hb}, but that thread no longer exists!`)}else"checkMailbox"===n?tf():"spawnThread"===n?ei(a):"cleanupThread"===n?ef(eh[a.ic]):"loaded"===n?(r.loaded=!0,i(r)):"setimmediate"===a.target?r.postMessage(a):"callHandler"===n?t[a.Rb](...a.args):n&&P(`worker sent an unknown command ${n}`)},r.onerror=t=>{throw P(`worker sent an error! ${t.filename}:${t.lineno}: ${t.message}`),t};var a,n=[];for(a of[])t.propertyIsEnumerable(a)&&n.push(a);r.postMessage({Db:"load",Sb:n,kc:b,lc:y})});function eg(){var t=new Worker((URL,new i.U(i(17394))),{type:"module",workerData:"em-pthread",name:"em-pthread"});eu.push(t)}var eb=t=>{H();var r=F()[t+52>>>2>>>0];t=F()[t+56>>>2>>>0],rQ(r,r-t),rX(r)},ey=(t,r)=>{ea=0,t=r1(t,r),0<ea?v=t:rG(t)};class ev{constructor(t){this.Ib=t-24}}function e_(t,r,i){var a=new ev(t>>>=0);throw r>>>=0,i>>>=0,F()[a.Ib+16>>>2>>>0]=0,F()[a.Ib+4>>>2>>>0]=r,F()[a.Ib+8>>>2>>>0]=i,t}function ew(t,r,i,a){return l?en(2,1,t,r,i,a):ex(t,r,i,a)}function ex(t,r,i,a){if(t>>>=0,i>>>=0,a>>>=0,void 0===u)return 6;var n=[];return l&&0===n.length?ew(t,r>>>=0,i,a):(t={fc:i,Bb:t,Jb:a,Nb:n},l?(t.Db="spawnThread",postMessage(t,n),0):ei(t))}var e$="u">typeof TextDecoder?new TextDecoder:void 0,eS=(t,r=0,i=NaN)=>{var a=(r>>>=0)+i;for(i=r;t[i]&&!(i>=a);)++i;if(16<i-r&&t.buffer&&e$)return e$.decode(t.buffer instanceof ArrayBuffer?t.subarray(r,i):t.slice(r,i));for(a="";r<i;){var n=t[r++];if(128&n){var s=63&t[r++];if((224&n)==192)a+=String.fromCharCode((31&n)<<6|s);else{var o=63&t[r++];65536>(n=(240&n)==224?(15&n)<<12|s<<6|o:(7&n)<<18|s<<12|o<<6|63&t[r++])?a+=String.fromCharCode(n):(n-=65536,a+=String.fromCharCode(55296|n>>10,56320|1023&n))}}else a+=String.fromCharCode(n)}return a},ek=(t,r)=>(t>>>=0)?eS(D(),t,r):"";function eC(t,r,i){return l?en(3,1,t,r,i):0}function eE(t,r){if(l)return en(4,1,t,r)}function eT(t,r){if(l)return en(5,1,t,r)}function eI(t,r,i){if(l)return en(6,1,t,r,i)}function eA(t,r,i){return l?en(7,1,t,r,i):0}function eN(t,r){if(l)return en(8,1,t,r)}function eO(t,r,i){if(l)return en(9,1,t,r,i)}function eM(t,r,i,a){if(l)return en(10,1,t,r,i,a)}function eP(t,r,i,a){if(l)return en(11,1,t,r,i,a)}function eR(t,r,i,a){if(l)return en(12,1,t,r,i,a)}function ej(t){if(l)return en(13,1,t)}function ez(t,r){if(l)return en(14,1,t,r)}function eD(t,r,i){if(l)return en(15,1,t,r,i)}var eB,eL=()=>Z(""),eU=t=>{for(var r="";D()[t>>>
20];)r+=eB[D()[t++>>>0]];return r},eF={},eq={},eV={},eW=t.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}};function eH(t,r,i={}){return function(t,r,i={}){var a=r.name;if(!t)throw new eW(`type "${a}" must have a positive integer typeid pointer`);if(eq.hasOwnProperty(t)){if(i.Tb)return;throw new eW(`Cannot register type '${a}' twice`)}eq[t]=r,delete eV[t],eF.hasOwnProperty(t)&&(r=eF[t],delete eF[t],r.forEach(t=>t()))}(t,r,i)}var eG=(t,r,i)=>{switch(r){case 1:return i?t=>z()[t>>>0]:t=>D()[t>>>0];case 2:return i?t=>B()[t>>>1>>>0]:t=>L()[t>>>1>>>0];case 4:return i?t=>U()[t>>>2>>>0]:t=>F()[t>>>2>>>0];case 8:return i?t=>E[t>>>3]:t=>T[t>>>3];default:throw TypeError(`invalid integer width (${r}): ${t}`)}};function eK(t,r,i){i>>>=0,eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:t=>t,toWireType:function(t,r){if("bigint"!=typeof r&&"number"!=typeof r)throw r=null===r?"null":"object"==(t=typeof r)||"array"===t||"function"===t?r.toString():""+r,TypeError(`Cannot convert "${r}" to ${this.name}`);return"number"==typeof r&&(r=BigInt(r)),r},Cb:eY,readValueFromPointer:eG(r,i,-1==r.indexOf("u")),Eb:null})}var eY=8;function eQ(t,r,i,a){eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:function(t){return!!t},toWireType:function(t,r){return r?i:a},Cb:eY,readValueFromPointer:function(t){return this.fromWireType(D()[t>>>0])},Eb:null})}var eX=[],eZ=[];function eJ(t){9<(t>>>=0)&&0==--eZ[t+1]&&(eZ[t]=void 0,eX.push(t))}var e1=t=>{if(!t)throw new eW(`Cannot use deleted val. handle = ${t}`);return eZ[t]},e0=t=>{switch(t){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let r=eX.pop()||eZ.length;return eZ[r]=t,eZ[r+1]=1,r}};function e2(t){return this.fromWireType(F()[t>>>2>>>0])}var e3={name:"emscripten::val",fromWireType:t=>{var r=e1(t);return eJ(t),r},toWireType:(t,r)=>e0(r),Cb:8,readValueFromPointer:e2,Eb:null};function e4(t){return eH(t>>>0,e3)}function e8(t,r,i){i>>>=0,eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:t=>t,toWireType:(t,r)=>r,Cb:eY,readValueFromPointer:((t,r)=>{switch(r){case 4:return function(t){return this.fromWireType(q()[t>>>2>>>0])};case 8:return function(t){return this.fromWireType(V()[t>>>3>>>0])};default:throw TypeError(`invalid float width (${r}): ${t}`)}})(r,i),Eb:null})}function e7(t,r,i,a,n){if(t>>>=0,i>>>=0,r=eU(r>>>0),-1===n&&(n=0xffffffff),n=t=>t,0===a){var s=32-8*i;n=t=>t<<s>>>s}var o=r.includes("unsigned")?function(t,r){return r>>>0}:function(t,r){return r};eH(t,{name:r,fromWireType:n,toWireType:o,Cb:eY,readValueFromPointer:eG(r,i,0!==a),Eb:null})}function e6(t,r,i){function a(t){var r=F()[t>>>2>>>0];return t=F()[t+4>>>2>>>0],new n(z().buffer,t,r)}var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][r];eH(t>>>=0,{name:i=eU(i>>>0),fromWireType:a,Cb:eY,readValueFromPointer:a},{Tb:!0})}var e5=(t,r,i)=>{var a=D();if(r>>>=0,0<i){var n=r;i=r+i-1;for(var s=0;s<t.length;++s){var o=t.charCodeAt(s);if(55296<=o&&57343>=o&&(o=65536+((1023&o)<<10)|1023&t.charCodeAt(++s)),127>=o){if(r>=i)break;a[r++>>>0]=o}else{if(2047>=o){if(r+1>=i)break;a[r++>>>0]=192|o>>6}else{if(65535>=o){if(r+2>=i)break;a[r++>>>0]=224|o>>12}else{if(r+3>=i)break;a[r++>>>0]=240|o>>18,a[r++>>>0]=128|o>>12&63}a[r++>>>0]=128|o>>6&63}a[r++>>>0]=128|63&o}}a[r>>>0]=0,t=r-n}else t=0;return t},e9=t=>{for(var r=0,i=0;i<t.length;++i){var a=t.charCodeAt(i);127>=a?r++:2047>=a?r+=2:55296<=a&&57343>=a?(r+=4,++i):r+=3}return r};function te(t,r){eH(t>>>=0,{name:r=eU(r>>>0),fromWireType:function(t){for(var r,i=F()[t>>>2>>>0],a=t+4,n=a,s=0;s<=i;++s){var o=a+s;s!=i&&0!=D()[o>>>0]||(n=ek(n,o-n),void 0===r?r=n:(r+="\0",r+=n),n=o+1)}return rU(t),r},toWireType:function(t,r){r instanceof ArrayBuffer&&(r=new Uint8Array(r));var i="string"==typeof r;if(!(i||ArrayBuffer.isView(r)&&1==r.BYTES_PER_ELEMENT))throw new eW("Cannot pass non-string to std::string");var a=i?e9(r):r.length,n=rF(4+a+1),s=n+4;return F()[n>>>2>>>0]=a,i?e5(r,s,a+1):D().set(r,s>>>0),null!==t&&t.push(rU,n),n},Cb:eY,readValueFromPointer:e2,Eb(t){rU(t)}})}var tt="u">typeof TextDecoder?new TextDecoder("utf-16le"):void 0,tr=(t,r)=>{for(var i=t>>1,a=i+r/2;!(i>=a)&&L()[i>>>0];)++i;if(32<(i<<=1)-t&&tt)return tt.decode(D().slice(t,i));for(i="",a=0;!(a>=r/2);++a){var n=B()[t+2*a>>>1>>>0];if(0==n)break;i+=String.fromCharCode(n)}return i},ti=(t,r,i)=>{if(2>(i??=0x7fffffff))return 0;var a=r;
2i=(i-=2)<2*t.length?i/2:t.length;for(var n=0;n<i;++n){var s=t.charCodeAt(n);B()[r>>>1>>>0]=s,r+=2}return B()[r>>>1>>>0]=0,r-a},ta=t=>2*t.length,tn=(t,r)=>{for(var i=0,a="";!(i>=r/4);){var n=U()[t+4*i>>>2>>>0];if(0==n)break;++i,65536<=n?(n-=65536,a+=String.fromCharCode(55296|n>>10,56320|1023&n)):a+=String.fromCharCode(n)}return a},ts=(t,r,i)=>{if(r>>>=0,4>(i??=0x7fffffff))return 0;var a=r;i=a+i-4;for(var n=0;n<t.length;++n){var s=t.charCodeAt(n);if(55296<=s&&57343>=s&&(s=65536+((1023&s)<<10)|1023&t.charCodeAt(++n)),U()[r>>>2>>>0]=s,(r+=4)+4>i)break}return U()[r>>>2>>>0]=0,r-a},to=t=>{for(var r=0,i=0;i<t.length;++i){var a=t.charCodeAt(i);55296<=a&&57343>=a&&++i,r+=4}return r};function tl(t,r,i){if(t>>>=0,r>>>=0,i=eU(i>>>=0),2===r)var a=tr,n=ti,s=ta,o=t=>L()[t>>>1>>>0];else 4===r&&(a=tn,n=ts,s=to,o=t=>F()[t>>>2>>>0]);eH(t,{name:i,fromWireType:t=>{for(var i,n=F()[t>>>2>>>0],s=t+4,l=0;l<=n;++l){var u=t+4+l*r;l!=n&&0!=o(u)||(s=a(s,u-s),void 0===i?i=s:(i+="\0",i+=s),s=u+r)}return rU(t),i},toWireType:(t,a)=>{if("string"!=typeof a)throw new eW(`Cannot pass non-string to C++ string type ${i}`);var o=s(a),l=rF(4+o+r);return F()[l>>>2>>>0]=o/r,n(a,l+4,o+r),null!==t&&t.push(rU,l),l},Cb:eY,readValueFromPointer:e2,Eb(t){rU(t)}})}function tu(t,r){eH(t>>>=0,{Ub:!0,name:r=eU(r>>>0),Cb:0,fromWireType:()=>{},toWireType:()=>{}})}function td(t){rq(t>>>0,!o,1,!s,131072,!1),ep()}var tc=t=>{if(!R)try{if(t(),!(0<ea))try{l?rG(v):el(v)}catch(t){t instanceof ee||"unwind"==t||p(0,t)}}catch(t){t instanceof ee||"unwind"==t||p(0,t)}};function th(t){t>>>=0,"function"==typeof Atomics.jc&&(Atomics.jc(U(),t>>>2,t).value.then(tf),t+=128,Atomics.store(U(),t>>>2,1))}var tf=()=>{var t=rL();t&&(th(t),tc(rY))};function tp(t,r){(t>>>=0)==r>>>0?setTimeout(tf):l?postMessage({Hb:t,Db:"checkMailbox"}):(t=eh[t])&&t.postMessage({Db:"checkMailbox"})}var tm=[];function tg(t,r,i,a,n){for(r>>>=0,tm.length=a/=2,i=n>>>0>>>3,n=0;n<a;n++)tm[n]=E[i+2*n]?E[i+2*n+1]:V()[i+2*n+1>>>0];return(r?rP[r]:rM[t])(...tm)}var tb=()=>{ea=0};function ty(t){t>>>=0,l?postMessage({Db:"cleanupThread",ic:t}):ef(eh[t])}function tv(t){}var t_=(t,r)=>{var i=eq[t];if(void 0===i)throw i=eU(t=rD(t)),rU(t),new eW(`${r} has unknown type ${i}`);return i},tw=(t,r,i)=>{var a=[];return t=t.toWireType(a,i),a.length&&(F()[r>>>2>>>0]=e0(a)),t};function tx(t,r,i){return r>>>=0,i>>>=0,t=e1(t>>>0),tw(r=t_(r,"emval::as"),i,t)}function t$(t,r){return r>>>=0,t=e1(t>>>0),(r=t_(r,"emval::as")).toWireType(null,t)}var tS=t=>{try{t()}catch(t){Z(t)}},tk=0,tC=null,tE=0,tT=[],tI={},tA={},tN=0,tO=null,tM=[];function tP(t){return function(t){if(!R){if(0===tk){var r,i,a,n=!1,s=!1;t((t=0)=>{if(!R&&(tE=t,n=!0,s)){tk=2,tS(()=>r3(tC)),"u">typeof MainLoop&&MainLoop.Qb&&MainLoop.resume(),t=!1;try{var r,i=(r=rz[tA[r=U()[tC+8>>>2>>>0]]],--ea,r())}catch(r){i=r,t=!0}var a=!1;if(!tC){var o=tO;o&&(tO=null,(t?o.reject:o.resolve)(i),a=!0)}if(t&&!a)throw i}}),s=!0,n||(tk=1,i=(r=rF(65548))+12,F()[r>>>2>>>0]=i,F()[r+4>>>2>>>0]=i+65536,void 0===(a=tI[i=tT[0]])&&(a=tN++,tI[i]=a,tA[a]=i),i=a,U()[r+8>>>2>>>0]=i,tC=r,"u">typeof MainLoop&&MainLoop.Qb&&MainLoop.pause(),tS(()=>r0(tC)))}else 2===tk?(tk=0,tS(r4),rU(tC),tC=null,tM.forEach(tc)):Z(`invalid state: ${tk}`);return tE}}(r=>{t().then(r)})}function tR(t){return t>>>=0,tP(async()=>e0(await e1(t)))}var tj=[];function tz(t,r,i,a){return i>>>=0,a>>>=0,(t=tj[t>>>0])(null,r=e1(r>>>0),i,a)}var tD={},tB=t=>{var r=tD[t];return void 0===r?eU(t):r};function tL(t,r,i,a,n){return i>>>=0,a>>>=0,n>>>=0,(t=tj[t>>>0])(r=e1(r>>>0),r[i=tB(i)],a,n)}function tU(t,r){return r>>>=0,(t=e1(t>>>0))==e1(r)}var tF=()=>"object"==typeof globalThis?globalThis:Function("return this")();function tq(t){return 0==(t>>>=0)?e0(tF()):(t=tB(t),e0(tF()[t]))}function tV(t,r,i){var a,n,s=(r=((t,r)=>{for(var i=Array(t),a=0;a<t;++a)i[a]=t_(F()[r+4*a>>>2>>>0],`parameter ${a}`);return i})(t,r>>>0)).shift();t--;var o=`return function (obj, func, destructorsRef, args) {
3`,l=0,u=[];0===i&&u.push("obj");for(var d=["retType"],c=[s],h=0;h<t;++h)u.push(`arg${h}`),d.push(`argType${h}`),c.push(r[h]),o+=`  var arg${h} = argType${h}.readValueFromPointer(args${l?"+"+l:""});
4`,l+=r[h].Cb;return o+=`  var rv = ${1===i?"new func":"func.call"}(${u.join(", ")});
5`,s.Ub||(d.push("emval_returnValue"),c.push(tw),o+=`  return emval_returnValue(retType, destructorsRef, rv);
6`),a=Object.defineProperty(t=Function(...d,o+`};
7`)(...c),"name",{value:i=`methodCaller<(${r.map(t=>t.name).join(", ")}) => ${s.name}>`}),n=tj.length,tj.push(a),n}function tW(r){return e0(t[r=tB(r>>>0)])}function tH(t,r){return r>>>=0,e0((t=e1(t>>>0))[r=e1(r)])}function tG(t){9<(t>>>=0)&&(eZ[t+1]+=1)}function tK(){return e0([])}function tY(t){t=e1(t>>>0);for(var r=Array(t.length),i=0;i<t.length;i++)r[i]=t[i];return e0(r)}function tQ(t){return e0(tB(t>>>0))}function tX(){return e0({})}function tZ(t){for(var r=e1(t>>>=0);r.length;){var i=r.pop();r.pop()(i)}eJ(t)}function tJ(t,r,i){r>>>=0,i>>>=0,t=e1(t>>>0),r=e1(r),i=e1(i),t[r]=i}function t1(t,r){return r>>>=0,e0(t=(t=t_(t>>>0,"_emval_take_value")).readValueFromPointer(r))}function t0(t,r){t=-0x20000000000000>t||0x20000000000000<t?NaN:Number(t),r>>>=0,t=new Date(1e3*t),U()[r>>>2>>>0]=t.getUTCSeconds(),U()[r+4>>>2>>>0]=t.getUTCMinutes(),U()[r+8>>>2>>>0]=t.getUTCHours(),U()[r+12>>>2>>>0]=t.getUTCDate(),U()[r+16>>>2>>>0]=t.getUTCMonth(),U()[r+20>>>2>>>0]=t.getUTCFullYear()-1900,U()[r+24>>>2>>>0]=t.getUTCDay(),t=(t.getTime()-Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,U()[r+28>>>2>>>0]=t}var t2=t=>t%4==0&&(t%100!=0||t%400==0),t3=[0,31,60,91,121,152,182,213,244,274,305,335],t4=[0,31,59,90,120,151,181,212,243,273,304,334];function t8(t,r){t=-0x20000000000000>t||0x20000000000000<t?NaN:Number(t),r>>>=0,t=new Date(1e3*t),U()[r>>>2>>>0]=t.getSeconds(),U()[r+4>>>2>>>0]=t.getMinutes(),U()[r+8>>>2>>>0]=t.getHours(),U()[r+12>>>2>>>0]=t.getDate(),U()[r+16>>>2>>>0]=t.getMonth(),U()[r+20>>>2>>>0]=t.getFullYear()-1900,U()[r+24>>>2>>>0]=t.getDay();var i=(t2(t.getFullYear())?t3:t4)[t.getMonth()]+t.getDate()-1|0;U()[r+28>>>2>>>0]=i,U()[r+36>>>2>>>0]=-60*t.getTimezoneOffset(),i=new Date(t.getFullYear(),6,1).getTimezoneOffset();var a=new Date(t.getFullYear(),0,1).getTimezoneOffset();t=0|(i!=a&&t.getTimezoneOffset()==Math.min(a,i)),U()[r+32>>>2>>>0]=t}function t7(t){t>>>=0;var r=new Date(U()[t+20>>>2>>>0]+1900,U()[t+16>>>2>>>0],U()[t+12>>>2>>>0],U()[t+8>>>2>>>0],U()[t+4>>>2>>>0],U()[t>>>2>>>0],0),i=U()[t+32>>>2>>>0],a=r.getTimezoneOffset(),n=new Date(r.getFullYear(),6,1).getTimezoneOffset(),s=new Date(r.getFullYear(),0,1).getTimezoneOffset(),o=Math.min(s,n);return 0>i?U()[t+32>>>2>>>0]=+(n!=s&&o==a):0<i!=(o==a)&&(n=Math.max(s,n),r.setTime(r.getTime()+6e4*((0<i?o:n)-a))),U()[t+24>>>2>>>0]=r.getDay(),i=(t2(r.getFullYear())?t3:t4)[r.getMonth()]+r.getDate()-1|0,U()[t+28>>>2>>>0]=i,U()[t>>>2>>>0]=r.getSeconds(),U()[t+4>>>2>>>0]=r.getMinutes(),U()[t+8>>>2>>>0]=r.getHours(),U()[t+12>>>2>>>0]=r.getDate(),U()[t+16>>>2>>>0]=r.getMonth(),U()[t+20>>>2>>>0]=r.getYear(),BigInt(isNaN(t=r.getTime())?-1:t/1e3)}function t6(t,r,i,a,n,s,o){return l?en(16,1,t,r,i,a,n,s,o):-52}function t5(t,r,i,a,n,s){if(l)return en(17,1,t,r,i,a,n,s)}var t9={},re=()=>performance.timeOrigin+performance.now();function rt(t,r){if(l)return en(18,1,t,r);if(t9[t]&&(clearTimeout(t9[t].id),delete t9[t]),!r)return 0;var i=setTimeout(()=>{delete t9[t],tc(()=>rK(t,performance.timeOrigin+performance.now()))},r);return t9[t]={id:i,rc:r},0}function rr(t,r,i,a){t>>>=0,r>>>=0,i>>>=0,a>>>=0;var n=new Date().getFullYear(),s=new Date(n,0,1).getTimezoneOffset(),o=Math.max(s,n=new Date(n,6,1).getTimezoneOffset());F()[t>>>2>>>0]=60*o,U()[r>>>2>>>0]=+(s!=n),t=(r=t=>{var r=Math.abs(t);return`UTC${0<=t?"-":"+"}${String(Math.floor(r/60)).padStart(2,"0")}${String(r%60).padStart(2,"0")}`})(s),r=r(n),n<s?(e5(t,i,17),e5(r,a,17)):(e5(t,a,17),e5(r,i,17))}var ri=()=>Date.now();function ra(t,r,i){return 0<=t&&3>=t?(t=0===t?Date.now():performance.timeOrigin+performance.now(),E[i>>>0>>>3]=BigInt(Math.round(1e6*t)),0):28}var rn=[],rs=(t,r)=>{rn.length=0;for(var i;i=D()[t++>>>0];){var a=105!=i;r+=(a&=112!=i)&&r%8?4:0,rn.push(112==i?F()[r>>>2>>>0]:106==i?E[r>>>3]:105==i?U()[r>>>2>>>0]:V()[r>>>3>>>
70]),r+=a?8:4}return rn};function ro(t,r,i){return t>>>=0,r=rs(r>>>0,i>>>0),rP[t](...r)}function rl(t,r,i){return t>>>=0,r=rs(r>>>0,i>>>0),rP[t](...r)}var ru=()=>{};function rd(t,r){return P(ek(t>>>0,r>>>0))}var rc=()=>{throw ea+=1,"unwind"};function rh(){return 0xffff0000}var rf=()=>navigator.hardwareConcurrency;function rp(){return Z("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER"),0}function rm(t){t>>>=0;var r=D().length;if(t<=r||0xffff0000<t)return!1;for(var i=1;4>=i;i*=2){var a=r*(1+.2/i);a=Math.min(a,t+0x6000000);e:{a=(Math.min(0xffff0000,65536*Math.ceil(Math.max(t,a)/65536))-b.buffer.byteLength+65535)/65536|0;try{b.grow(a),H();var n=1;break e}catch{}n=void 0}if(n)return!0}return!1}var rg=()=>(Z("Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER"),0),rb={},ry=t=>{t.forEach(t=>{var r=rg();r&&(rb[r]=t)})};function rv(){var t=Error().stack.toString().split(`
8`);return"Error"==t[0]&&t.shift(),ry(t),rb.Mb=rg(),rb.dc=t,rb.Mb}function r_(t,r,i){if(t>>>=0,r>>>=0,rb.Mb==t)var a=rb.dc;else"Error"==(a=Error().stack.toString().split(`
9`))[0]&&a.shift(),ry(a);for(var n=3;a[n]&&rg()!=t;)++n;for(t=0;t<i&&a[t+n];++t)U()[r+4*t>>>2>>>0]=rg();return t}var rw,rx={},r$=()=>{if(!rw){var t,r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:"./this.program"};for(t in rx)void 0===rx[t]?delete r[t]:r[t]=rx[t];var i=[];for(t in r)i.push(`${t}=${r[t]}`);rw=i}return rw};function rS(t,r){if(l)return en(19,1,t,r);t>>>=0,r>>>=0;var i,a=0,n=0;for(i of r$()){var s=r+a;F()[t+n>>>2>>>0]=s,a+=e5(i,s,1/0)+1,n+=4}return 0}function rk(t,r){if(l)return en(20,1,t,r);t>>>=0,r>>>=0;var i=r$();for(var a of(F()[t>>>2>>>0]=i.length,t=0,i))t+=e9(a)+1;return F()[r>>>2>>>0]=t,0}function rC(t){return l?en(21,1,t):52}function rE(t,r,i,a){return l?en(22,1,t,r,i,a):52}function rT(t,r,i,a){return l?en(23,1,t,r,i,a):70}var rI=[null,[],[]];function rA(t,r,i,a){if(l)return en(24,1,t,r,i,a);r>>>=0,i>>>=0,a>>>=0;for(var n=0,s=0;s<i;s++){var o=F()[r>>>2>>>0],u=F()[r+4>>>2>>>0];r+=8;for(var d=0;d<u;d++){var c=D()[o+d>>>0],h=rI[t];0===c||10===c?((1===t?M:P)(eS(h)),h.length=0):h.push(c)}n+=u}return F()[a>>>2>>>0]=n,0}l||function(){for(var r=t.numThreads-1;r--;)eg();er.push(()=>{var t;Y++,t=()=>X(),l?t():Promise.all(eu.map(em)).then(t)})}();for(var rN=Array(256),rO=0;256>rO;++rO)rN[rO]=String.fromCharCode(rO);eB=rN,eZ.push(0,1,void 0,1,null,1,!0,1,!1,1),t.count_emval_handles=()=>eZ.length/2-5-eX.length,l||(b=new WebAssembly.Memory({initial:256,maximum:65536,shared:!0}),H()),t.wasmBinary&&(g=t.wasmBinary),t.stackSave=()=>rJ(),t.stackRestore=t=>rX(t),t.stackAlloc=t=>rZ(t),t.setValue=function(t,r,i="i8"){switch(i.endsWith("*")&&(i="*"),i){case"i1":case"i8":z()[t>>>0]=r;break;case"i16":B()[t>>>1>>>0]=r;break;case"i32":U()[t>>>2>>>0]=r;break;case"i64":E[t>>>3]=BigInt(r);break;case"float":q()[t>>>2>>>0]=r;break;case"double":V()[t>>>3>>>0]=r;break;case"*":F()[t>>>2>>>0]=r;break;default:Z(`invalid type for setValue: ${i}`)}},t.getValue=function(t,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":case"i8":return z()[t>>>0];case"i16":return B()[t>>>1>>>0];case"i32":return U()[t>>>2>>>0];case"i64":return E[t>>>3];case"float":return q()[t>>>2>>>0];case"double":return V()[t>>>3>>>0];case"*":return F()[t>>>2>>>0];default:Z(`invalid type for getValue: ${r}`)}},t.UTF8ToString=ek,t.stringToUTF8=e5,t.lengthBytesUTF8=e9;var rM=[es,eo,ew,eC,eE,eT,eI,eA,eN,eO,eM,eP,eR,ej,ez,eD,t6,t5,rt,rS,rk,rC,rE,rT,rA],rP={892060:(r,i,a,n,s)=>{if(void 0===t||!t.Fb)return 1;if((r=ek(Number(r>>>0))).startsWith("./")&&(r=r.substring(2)),!(r=t.Fb.get(r)))return 2;if(i=Number(i>>>0),a=Number(a>>>0),n=Number(n>>>0),i+a>r.byteLength)return 3;try{let o=r.subarray(i,i+a);switch(s){case 0:D().set(o,n>>>0);break;case 1:t.mc?t.mc(n,o):t.cc(n,o);break;default:return 4}return 0}catch{return 4}},892884:(r,i,a)=>{t.Pb(r,D().subarray(i>>>0,i+a>>>0))},892948:()=>t.oc(),892990:r=>{t.Ob(r)},893027:()=>{t.Wb()},893058:()=>{t.Xb()},893087:()=>{t.ac()},893112:r=>t.Vb(r),893145:r=>t.Zb(r),893177:(r,i,a)=>{t.Lb(Number(r),Number(i),Number(a),!0)},893240:(r,i,a)=>{t.Lb(Number(r),Number(i),Number(a))},893297:()=>"u">typeof wasmOffsetConverter,893354:r=>{t.Ab("Abs",r,void 0)},893405:r=>{t.Ab("Neg",r,void 0)},893456:r=>{t.Ab("Floor",r,void 0)},893509:r=>{t.Ab("Ceil",r,void 0)},893561:r=>{t.Ab("Reciprocal",r,void 0)},893619:r=>{t.Ab("Sqrt",r,void 0)},893671:r=>{t.Ab("Exp",r,void 0)},893722:r=>{t.Ab("Erf",r,void 0)},893773:r=>{t.Ab("Sigmoid",r,void 0)},893828:(r,i,a)=>{t.Ab("HardSigmoid",r,{alpha:i,beta:a})},893907:r=>{t.Ab("Log",r,void 0)},893958:r=>{t.Ab("Sin",r,void 0)},894009:r=>{t.Ab("Cos",r,void 0)},894060:r=>{t.Ab("Tan",r,void 0)},894111:r=>{t.Ab("Asin",r,void 0)},894163:r=>{t.Ab("Acos",r,void 0)},894215:r=>{t.Ab("Atan",r,void 0)},894267:r=>{t.Ab("Sinh",r,void 0)},894319:r=>{t.Ab("Cosh",r,void 0)},894371:r=>{t.Ab("Asinh",r,void 0)},894424:r=>{t.Ab("Acosh",r,void 0)},894477:r=>{t.Ab("Atanh",r,void 0)},894530:r=>{t.Ab("Tanh",r,void 0)},894582:r=>{t.Ab("Not",r,void 0)},894633:(r,i,a)=>{t.Ab("Clip",r,{min:i,max:a})},894702:r=>{t.Ab("Clip",r,void 0)}
vendor: 6,220 bytes, line 9
9,894754:(r,i)=>{t.Ab("Elu",r,{alpha:i})},894812:r=>{t.Ab("Gelu",r,void 0)},894864:r=>{t.Ab("Relu",r,void 0)},894916:(r,i)=>{t.Ab("LeakyRelu",r,{alpha:i})},894980:(r,i)=>{t.Ab("ThresholdedRelu",r,{alpha:i})},895050:(r,i)=>{t.Ab("Cast",r,{to:i})},895108:r=>{t.Ab("Add",r,void 0)},895159:r=>{t.Ab("Sub",r,void 0)},895210:r=>{t.Ab("Mul",r,void 0)},895261:r=>{t.Ab("Div",r,void 0)},895312:r=>{t.Ab("Pow",r,void 0)},895363:r=>{t.Ab("Equal",r,void 0)},895416:r=>{t.Ab("Greater",r,void 0)},895471:r=>{t.Ab("GreaterOrEqual",r,void 0)},895533:r=>{t.Ab("Less",r,void 0)},895585:r=>{t.Ab("LessOrEqual",r,void 0)},895644:(r,i,a,n,s)=>{t.Ab("ReduceMean",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},895819:(r,i,a,n,s)=>{t.Ab("ReduceMax",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},895993:(r,i,a,n,s)=>{t.Ab("ReduceMin",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896167:(r,i,a,n,s)=>{t.Ab("ReduceProd",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896342:(r,i,a,n,s)=>{t.Ab("ReduceSum",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896516:(r,i,a,n,s)=>{t.Ab("ReduceL1",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896689:(r,i,a,n,s)=>{t.Ab("ReduceL2",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},896862:(r,i,a,n,s)=>{t.Ab("ReduceLogSum",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},897039:(r,i,a,n,s)=>{t.Ab("ReduceSumSquare",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},897219:(r,i,a,n,s)=>{t.Ab("ReduceLogSumExp",r,{keepDims:!!i,noopWithEmptyAxes:!!a,axes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},897399:r=>{t.Ab("Where",r,void 0)},897452:(r,i,a)=>{t.Ab("Transpose",r,{perm:i?Array.from(U().subarray(Number(i)>>>0,Number(a)>>>0)):[]})},897576:(r,i,a,n)=>{t.Ab("DepthToSpace",r,{blocksize:i,mode:ek(a),format:n?"NHWC":"NCHW"})},897709:(r,i,a,n)=>{t.Ab("DepthToSpace",r,{blocksize:i,mode:ek(a),format:n?"NHWC":"NCHW"})},897842:(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g)=>{t.Ab("ConvTranspose",r,{format:d?"NHWC":"NCHW",autoPad:i,dilations:[a],group:n,kernelShape:[s],pads:[o,l],strides:[u],wIsConst:()=>!!z()[c>>>0],outputPadding:h?Array.from(U().subarray(Number(h)>>>0,Number(f)>>>0)):[],outputShape:p?Array.from(U().subarray(Number(p)>>>0,Number(m)>>>0)):[],activation:ek(g)})},898275:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("ConvTranspose",r,{format:u?"NHWC":"NCHW",autoPad:i,dilations:Array.from(U().subarray(Number(a)>>>0,2+(Number(a)>>>0)>>>0)),group:n,kernelShape:Array.from(U().subarray(Number(s)>>>0,2+(Number(s)>>>0)>>>0)),pads:Array.from(U().subarray(Number(o)>>>0,4+(Number(o)>>>0)>>>0)),strides:Array.from(U().subarray(Number(l)>>>0,2+(Number(l)>>>0)>>>0)),wIsConst:()=>!!z()[d>>>0],outputPadding:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],outputShape:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[],activation:ek(m)})},898936:(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g)=>{t.Ab("ConvTranspose",r,{format:d?"NHWC":"NCHW",autoPad:i,dilations:[a],group:n,kernelShape:[s],pads:[o,l],strides:[u],wIsConst:()=>!!z()[c>>>0],outputPadding:h?Array.from(U().subarray(Number(h)>>>0,Number(f)>>>0)):[],outputShape:p?Array.from(U().subarray(Number(p)>>>0,Number(m)>>>0)):[],activation:ek(g)})},899369:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("ConvTranspose",r,{format:u?"NHWC":"NCHW",autoPad:i,dilations:Array.from(U().subarray(Number(a)>>>0,2+(Number(a)>>>0)>>>0)),group:n,kernelShape:Array.from(U().subarray(Number(s)>>>0,2+(Number(s)>>>0)>>>0)),pads:Array.from(U().subarray(Number(o)>>>0,4+(Number(o)>>>0)>>>0)),strides:Array.from(U().subarray(Number(l)>>>0,2+(Number(l)>>>0)>>>0)),wIsConst:()=>!!z()[d>>>0],outputPadding:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],outputShape:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[],activation:ek(m)})},900030:(r,i)=>{t.Ab("GlobalAveragePool",r,{format:i?"NHWC":"NCHW"})},900121:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("AveragePool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},900600:(r,i)=>{t.Ab("GlobalAveragePool",r,{format:i?"NHWC":"NCHW"})},900691:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("AveragePool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},901170:(r,i)=>{t.Ab("GlobalMaxPool",r,{format:i?"NHWC":"NCHW"})},901257:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("MaxPool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},901732:(r,i)=>{t.Ab("GlobalMaxPool",r,{format:i?"NHWC":"NCHW"})},901819:(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>{t.Ab("MaxPool",r,{format:m?"NHWC":"NCHW",auto_pad:i,ceil_mode:a,count_include_pad:n,storage_order:s,dilations:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],kernel_shape:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],pads:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],strides:f?Array.from(U().subarray(Number(f)>>>0,Number(p)>>>0)):[]})},902294:(r,i,a,n,s)=>{t.Ab("Gemm",r,{alpha:i,beta:a,transA:n,transB:s}
9)},902398:r=>{t.Ab("MatMul",r,void 0)},902452:(r,i,a,n)=>{t.Ab("ArgMax",r,{keepDims:!!i,selectLastIndex:!!a,axis:n})},902560:(r,i,a,n)=>{t.Ab("ArgMin",r,{keepDims:!!i,selectLastIndex:!!a,axis:n})},902668:(r,i)=>{t.Ab("Softmax",r,{axis:i})},902731:(r,i)=>{t.Ab("Concat",r,{axis:i})},902791:(r,i,a,n,s)=>{t.Ab("Split",r,{axis:i,numOutputs:a,splitSizes:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},902947:r=>{t.Ab("Expand",r,void 0)},903001:(r,i)=>{t.Ab("Gather",r,{axis:Number(i)})},903072:(r,i)=>{t.Ab("GatherElements",r,{axis:Number(i)})},903151:(r,i)=>{t.Ab("GatherND",r,{batch_dims:Number(i)})},903230:(r,i,a,n,s,o,l,u,d,c,h)=>{t.Ab("Resize",r,{antialias:i,axes:a?Array.from(U().subarray(Number(a)>>>0,Number(n)>>>0)):[],coordinateTransformMode:ek(s),cubicCoeffA:o,excludeOutside:l,extrapolationValue:u,keepAspectRatioPolicy:ek(d),mode:ek(c),nearestMode:ek(h)})},903592:(r,i,a,n,s,o,l)=>{t.Ab("Slice",r,{starts:i?Array.from(U().subarray(Number(i)>>>0,Number(a)>>>0)):[],ends:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[],axes:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[]})},903856:r=>{t.Ab("Tile",r,void 0)},903908:(r,i,a)=>{t.Ab("InstanceNormalization",r,{epsilon:i,format:a?"NHWC":"NCHW"})},904022:(r,i,a)=>{t.Ab("InstanceNormalization",r,{epsilon:i,format:a?"NHWC":"NCHW"})},904136:r=>{t.Ab("Range",r,void 0)},904189:(r,i)=>{t.Ab("Einsum",r,{equation:ek(i)})},904270:(r,i,a,n,s)=>{t.Ab("Pad",r,{mode:i,value:a,pads:n?Array.from(U().subarray(Number(n)>>>0,Number(s)>>>0)):[]})},904413:(r,i,a,n,s,o)=>{t.Ab("BatchNormalization",r,{epsilon:i,momentum:a,spatial:!!s,trainingMode:!!n,format:o?"NHWC":"NCHW"})},904582:(r,i,a,n,s,o)=>{t.Ab("BatchNormalization",r,{epsilon:i,momentum:a,spatial:!!s,trainingMode:!!n,format:o?"NHWC":"NCHW"})},904751:(r,i,a)=>{t.Ab("CumSum",r,{exclusive:Number(i),reverse:Number(a)})},904848:(r,i,a)=>{t.Ab("DequantizeLinear",r,{axis:i,blockSize:a})},904938:(r,i,a,n,s)=>{t.Ab("GridSample",r,{align_corners:i,mode:ek(a),padding_mode:ek(n),format:s?"NHWC":"NCHW"})},905108:(r,i,a,n,s)=>{t.Ab("GridSample",r,{align_corners:i,mode:ek(a),padding_mode:ek(n),format:s?"NHWC":"NCHW"})},905278:(r,i)=>{t.Ab("ScatterND",r,{reduction:ek(i)})},905363:(r,i,a,n,s,o,l,u,d)=>{t.Ab("Attention",r,{numHeads:i,isUnidirectional:a,maskFilterValue:n,scale:s,doRotary:o,qkvHiddenSizes:l?Array.from(U().subarray(Number(u)>>>0,Number(u)+l>>>0)):[],pastPresentShareBuffer:!!d})},905635:r=>{t.Ab("BiasAdd",r,void 0)},905690:r=>{t.Ab("BiasSplitGelu",r,void 0)},905751:r=>{t.Ab("FastGelu",r,void 0)},905807:(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b)=>{t.Ab("Conv",r,{format:f?"NHWC":"NCHW",auto_pad:i,dilations:a?Array.from(U().subarray(Number(a)>>>0,Number(n)>>>0)):[],group:s,kernel_shape:o?Array.from(U().subarray(Number(o)>>>0,Number(l)>>>0)):[],pads:u?Array.from(U().subarray(Number(u)>>>0,Number(d)>>>0)):[],strides:c?Array.from(U().subarray(Number(c)>>>0,Number(h)>>>0)):[],w_is_const:()=>!!z()[Number(p)>>>0],activation:ek(m),activation_params:g?Array.from(q().subarray(Number(g)>>>0,Number(b)>>>0)):[]})},906391:r=>{t.Ab("Gelu",r,void 0)},906443:(r,i,a,n,s,o,l,u,d)=>{t.Ab("GroupQueryAttention",r,{numHeads:i,kvNumHeads:a,scale:n,softcap:s,doRotary:o,rotaryInterleaved:l,smoothSoftmax:u,localWindowSize:d})},906660:(r,i,a,n)=>{t.Ab("LayerNormalization",r,{axis:i,epsilon:a,simplified:!!n})},906771:(r,i,a,n)=>{t.Ab("LayerNormalization",r,{axis:i,epsilon:a,simplified:!!n})},906882:(r,i,a,n,s,o)=>{t.Ab("MatMulNBits",r,{k:i,n:a,accuracyLevel:n,bits:s,blockSize:o})},907009:(r,i,a,n,s,o)=>{t.Ab("MultiHeadAttention",r,{numHeads:i,isUnidirectional:a,maskFilterValue:n,scale:s,doRotary:o})},907168:(r,i)=>{t.Ab("QuickGelu",r,{alpha:i})},907232:(r,i,a,n,s)=>{t.Ab("RotaryEmbedding",r,{interleaved:!!i,numHeads:a,rotaryEmbeddingDim:n,scale:s})},907371:(r,i,a)=>{t.Ab("SkipLayerNormalization",r,{epsilon:i,simplified:!!a})},907473:(r,i,a)=>{t.Ab("SkipLayerNormalization",r,{epsilon:i,simplified:!!a})},907575:(r,i,a,n)=>{t.Ab("GatherBlockQuantized",r,{gatherAxis:i,quantizeAxis:a,blockSize:n})},907696:r=>{t.$b(r)},907730:(r,i)=>t.bc(Number(r),Number(i),t.Gb.ec,t.Gb.errors)};function rR(r,i,a){return tP(async()=>{await t.Yb(Number(r),Number(i),Number(a))})}function rj(){return"u">typeof wasmOffsetConverter}var rz=await async function(){function r(t,r){var i,a,n;return rz=t.exports,i=rz=function(){var t={};for(let[r,i]of Object.entries(rz))t[r]="function"==typeof i?(...t)=>{tT.push(r);try{return i(...t)}finally{R||(tT.pop(),tC&&1===tk&&0===tT.length&&(tk=0,ea+=1,tS(r2),"u">typeof Fibers&&Fibers.sc()))}}:i;return t}(),a=t=>r=>t(r)>>>0,n=t=>()=>t()>>>0,(i=Object.assign({},i)).Ea=a(i.Ea),i.gb=n(i.gb),i.ib=a(i.ib),i.tb=a(i.tb),i.ub=n(i.ub),i.__cxa_get_exception_ptr=a(i.__cxa_get_exception_ptr),rz=i,ec.push(rz.jb),y=r,X(),rz}Y++;var n=J();if(t.instantiateWasm)return new Promise(i=>{t.instantiateWasm(n,(t,a)=>{i(r(t,a))})});if(l)return new Promise(t=>{A=i=>{t(r(new WebAssembly.Instance(i,J()),i))}});K??=t.locateFile?t.locateFile?t.locateFile("ort-wasm-simd-threaded.jsep.wasm",m):m+"ort-wasm-simd-threaded.jsep.wasm":new i.U(i(84659)).href;try{var s=await async function(t){if(!g&&"function"==typeof WebAssembly.instantiateStreaming&&!j(K))try{var r=fetch(K,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(r,t)}catch(t){P(`wasm streaming compile failed: ${t}`),P("falling back to ArrayBuffer instantiation")}return async function(t,r){try{var i=await async function(t){if(!g)try{var r=await h(t);return new Uint8Array(r)}catch{}if(t==K&&g)t=new Uint8Array(g);else{if(!f)throw"both async and sync fetching of the wasm failed";t=f(t)}return t}(t);return await WebAssembly.instantiate(i,r)}catch(t){P(`failed to asynchronously prepare wasm: ${t}`),Z(t)}}(K,t)}(n);return r(s.instance,s.module)}catch(t){return a(t),Promise.reject(t)}}(),rD=t=>(rD=rz.Ea)(t),rB=()=>(rB=rz.Fa)();t._OrtInit=(r,i)=>(t._OrtInit=rz.Ga)(r,i),t._OrtGetLastError=(r,i)=>(t._OrtGetLastError=rz.Ha)(r,i),t._OrtCreateSessionOptions=(r,i,a,n,s,o,l,u,d,c)=>(t._OrtCreateSessionOptions=rz.Ia)(r,i,a,n,s,o,l,u,d,c),t._OrtAppendExecutionProvider=(r,i,a,n,s)=>(t._OrtAppendExecutionProvider=rz.Ja)(r,i,a,n,s),t._OrtAddFreeDimensionOverride=(r,i,a)=>(t._OrtAddFreeDimensionOverride=rz.Ka)(r,i,a),t._OrtAddSessionConfigEntry=(r,i,a)=>(t._OrtAddSessionConfigEntry=rz.La)(r,i,a),t._OrtReleaseSessionOptions=r=>(t._OrtReleaseSessionOptions=rz.Ma)(r),t._OrtCreateSession=(r,i,a)=>(t._OrtCreateSession=rz.Na)(r,i,a),t._OrtReleaseSession=r=>(t._OrtReleaseSession=rz.Oa)(r),t._OrtGetInputOutputCount=(r,i,a)=>(t._OrtGetInputOutputCount=rz.Pa)(r,i,a),t._OrtGetInputOutputMetadata=(r,i,a,n)=>(t._OrtGetInputOutputMetadata=rz.Qa)(r,i,a,n),t._OrtFree=r=>(t._OrtFree=rz.Ra)(r),t._OrtCreateTensor=(r,i,a,n,s,o)=>(t._OrtCreateTensor=rz.Sa)(r,i,a,n,s,o),t._OrtGetTensorData=(r,i,a,n,s)=>(t._OrtGetTensorData=rz.Ta)(r,i,a,n,s),t._OrtReleaseTensor=r=>
vendor: 5,620 bytes, line 9
9(t._OrtReleaseTensor=rz.Ua)(r),t._OrtCreateRunOptions=(r,i,a,n)=>(t._OrtCreateRunOptions=rz.Va)(r,i,a,n),t._OrtAddRunConfigEntry=(r,i,a)=>(t._OrtAddRunConfigEntry=rz.Wa)(r,i,a),t._OrtReleaseRunOptions=r=>(t._OrtReleaseRunOptions=rz.Xa)(r),t._OrtCreateBinding=r=>(t._OrtCreateBinding=rz.Ya)(r),t._OrtBindInput=(r,i,a)=>(t._OrtBindInput=rz.Za)(r,i,a),t._OrtBindOutput=(r,i,a,n)=>(t._OrtBindOutput=rz._a)(r,i,a,n),t._OrtClearBoundOutputs=r=>(t._OrtClearBoundOutputs=rz.$a)(r),t._OrtReleaseBinding=r=>(t._OrtReleaseBinding=rz.ab)(r),t._OrtRunWithBinding=(r,i,a,n,s)=>(t._OrtRunWithBinding=rz.bb)(r,i,a,n,s),t._OrtRun=(r,i,a,n,s,o,l,u)=>(t._OrtRun=rz.cb)(r,i,a,n,s,o,l,u),t._OrtEndProfiling=r=>(t._OrtEndProfiling=rz.db)(r),t._JsepOutput=(r,i,a)=>(t._JsepOutput=rz.eb)(r,i,a),t._JsepGetNodeName=r=>(t._JsepGetNodeName=rz.fb)(r);var rL=()=>(rL=rz.gb)(),rU=t._free=r=>(rU=t._free=rz.hb)(r),rF=t._malloc=r=>(rF=t._malloc=rz.ib)(r),rq=(t,r,i,a,n,s)=>(rq=rz.kb)(t,r,i,a,n,s),rV=()=>(rV=rz.lb)(),rW=(t,r,i,a,n)=>(rW=rz.mb)(t,r,i,a,n),rH=t=>(rH=rz.nb)(t),rG=t=>(rG=rz.ob)(t),rK=(t,r)=>(rK=rz.pb)(t,r),rY=()=>(rY=rz.qb)(),rQ=(t,r)=>(rQ=rz.rb)(t,r),rX=t=>(rX=rz.sb)(t),rZ=t=>(rZ=rz.tb)(t),rJ=()=>(rJ=rz.ub)(),r1=t.dynCall_ii=(r,i)=>(r1=t.dynCall_ii=rz.vb)(r,i);t.dynCall_vii=(r,i,a)=>(t.dynCall_vii=rz.dynCall_vii)(r,i,a),t.dynCall_iiiii=(r,i,a,n,s)=>(t.dynCall_iiiii=rz.dynCall_iiiii)(r,i,a,n,s),t.dynCall_iii=(r,i,a)=>(t.dynCall_iii=rz.dynCall_iii)(r,i,a),t.dynCall_iiiiii=(r,i,a,n,s,o)=>(t.dynCall_iiiiii=rz.dynCall_iiiiii)(r,i,a,n,s,o),t.dynCall_iiiiiiii=(r,i,a,n,s,o,l,u)=>(t.dynCall_iiiiiiii=rz.dynCall_iiiiiiii)(r,i,a,n,s,o,l,u),t.dynCall_iiiiiii=(r,i,a,n,s,o,l)=>(t.dynCall_iiiiiii=rz.dynCall_iiiiiii)(r,i,a,n,s,o,l),t.dynCall_vi=(r,i)=>(t.dynCall_vi=rz.dynCall_vi)(r,i),t.dynCall_iiii=(r,i,a,n)=>(t.dynCall_iiii=rz.dynCall_iiii)(r,i,a,n),t.dynCall_i=r=>(t.dynCall_i=rz.dynCall_i)(r),t.dynCall_viiiiiiii=(r,i,a,n,s,o,l,u,d)=>(t.dynCall_viiiiiiii=rz.dynCall_viiiiiiii)(r,i,a,n,s,o,l,u,d),t.dynCall_viii=(r,i,a,n)=>(t.dynCall_viii=rz.dynCall_viii)(r,i,a,n),t.dynCall_viijj=(r,i,a,n,s)=>(t.dynCall_viijj=rz.dynCall_viijj)(r,i,a,n,s),t.dynCall_viiiiii=(r,i,a,n,s,o,l)=>(t.dynCall_viiiiii=rz.dynCall_viiiiii)(r,i,a,n,s,o,l),t.dynCall_viiii=(r,i,a,n,s)=>(t.dynCall_viiii=rz.dynCall_viiii)(r,i,a,n,s),t.dynCall_viiiii=(r,i,a,n,s,o)=>(t.dynCall_viiiii=rz.dynCall_viiiii)(r,i,a,n,s,o),t.dynCall_vfiii=(r,i,a,n,s)=>(t.dynCall_vfiii=rz.dynCall_vfiii)(r,i,a,n,s),t.dynCall_viiiiff=(r,i,a,n,s,o,l)=>(t.dynCall_viiiiff=rz.dynCall_viiiiff)(r,i,a,n,s,o,l),t.dynCall_viiiiiff=(r,i,a,n,s,o,l,u)=>(t.dynCall_viiiiiff=rz.dynCall_viiiiiff)(r,i,a,n,s,o,l,u),t.dynCall_ffff=(r,i,a,n)=>(t.dynCall_ffff=rz.dynCall_ffff)(r,i,a,n),t.dynCall_viiff=(r,i,a,n,s)=>(t.dynCall_viiff=rz.dynCall_viiff)(r,i,a,n,s),t.dynCall_fffffff=(r,i,a,n,s,o,l)=>(t.dynCall_fffffff=rz.dynCall_fffffff)(r,i,a,n,s,o,l),t.dynCall_jjjjjjj=(r,i,a,n,s,o,l)=>(t.dynCall_jjjjjjj=rz.dynCall_jjjjjjj)(r,i,a,n,s,o,l),t.dynCall_jjjjjj=(r,i,a,n,s,o)=>(t.dynCall_jjjjjj=rz.dynCall_jjjjjj)(r,i,a,n,s,o),t.dynCall_iijjii=(r,i,a,n,s,o)=>(t.dynCall_iijjii=rz.dynCall_iijjii)(r,i,a,n,s,o),t.dynCall_viiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m)=>(t.dynCall_viiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m),t.dynCall_viiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h)=>(t.dynCall_viiiiiiiiii=rz.dynCall_viiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h),t.dynCall_viiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f)=>(t.dynCall_viiiiiiiiiii=rz.dynCall_viiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f),t.dynCall_viiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p)=>(t.dynCall_viiiiiiiiiiii=rz.dynCall_viiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p),t.dynCall_viiiiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_)=>(t.dynCall_viiiiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_),t.dynCall_viiiiiiiii=(r,i,a,n,s,o,l,u,d,c)=>(t.dynCall_viiiiiiiii=rz.dynCall_viiiiiiiii)(r,i,a,n,s,o,l,u,d,c),t.dynCall_viiiiiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w)=>(t.dynCall_viiiiiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w),t.dynCall_viiiiiii=(r,i,a,n,s,o,l,u)=>(t.dynCall_viiiiiii=rz.dynCall_viiiiiii)(r,i,a,n,s,o,l,u),t.dynCall_viiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b)=>(t.dynCall_viiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b),t.dynCall_jiji=(r,i,a,n)=>(t.dynCall_jiji=rz.dynCall_jiji)(r,i,a,n),t.dynCall_v=r=>(t.dynCall_v=rz.dynCall_v)(r),t.dynCall_iidiiii=(r,i,a,n,s,o,l)=>(t.dynCall_iidiiii=rz.dynCall_iidiiii)(r,i,a,n,s,o,l),t.dynCall_iiiiiiiii=(r,i,a,n,s,o,l,u,d)=>(t.dynCall_iiiiiiiii=rz.dynCall_iiiiiiiii)(r,i,a,n,s,o,l,u,d),t.dynCall_iiij=(r,i,a,n)=>(t.dynCall_iiij=rz.dynCall_iiij)(r,i,a,n),t.dynCall_iiiiiiiiii=(r,i,a,n,s,o,l,u,d,c)=>(t.dynCall_iiiiiiiiii=rz.dynCall_iiiiiiiiii)(r,i,a,n,s,o,l,u,d,c),t.dynCall_iiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p)=>(t.dynCall_iiiiiiiiiiiii=rz.dynCall_iiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p),t.dynCall_iiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h)=>(t.dynCall_iiiiiiiiiii=rz.dynCall_iiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h),t.dynCall_ji=(r,i)=>(t.dynCall_ji=rz.dynCall_ji)(r,i),t.dynCall_iijii=(r,i,a,n,s)=>(t.dynCall_iijii=rz.dynCall_iijii)(r,i,a,n,s),t.dynCall_vij=(r,i,a)=>(t.dynCall_vij=rz.dynCall_vij)(r,i,a),t.dynCall_viiijii=(r,i,a,n,s,o,l)=>(t.dynCall_viiijii=rz.dynCall_viiijii)(r,i,a,n,s,o,l),t.dynCall_viijiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v)=>(t.dynCall_viijiiiiiiiiiiiiii=rz.dynCall_viijiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v),t.dynCall_viiiji=(r,i,a,n,s,o)=>(t.dynCall_viiiji=rz.dynCall_viiiji)(r,i,a,n,s,o),t.dynCall_fiii=(r,i,a,n)=>
9(t.dynCall_fiii=rz.dynCall_fiii)(r,i,a,n),t.dynCall_viijii=(r,i,a,n,s,o)=>(t.dynCall_viijii=rz.dynCall_viijii)(r,i,a,n,s,o),t.dynCall_viij=(r,i,a,n)=>(t.dynCall_viij=rz.dynCall_viij)(r,i,a,n),t.dynCall_jiij=(r,i,a,n)=>(t.dynCall_jiij=rz.dynCall_jiij)(r,i,a,n),t.dynCall_fi=(r,i)=>(t.dynCall_fi=rz.dynCall_fi)(r,i),t.dynCall_fii=(r,i,a)=>(t.dynCall_fii=rz.dynCall_fii)(r,i,a),t.dynCall_jii=(r,i,a)=>(t.dynCall_jii=rz.dynCall_jii)(r,i,a),t.dynCall_dii=(r,i,a)=>(t.dynCall_dii=rz.dynCall_dii)(r,i,a),t.dynCall_fiiii=(r,i,a,n,s)=>(t.dynCall_fiiii=rz.dynCall_fiiii)(r,i,a,n,s),t.dynCall_fif=(r,i,a)=>(t.dynCall_fif=rz.dynCall_fif)(r,i,a),t.dynCall_jfi=(r,i,a)=>(t.dynCall_jfi=rz.dynCall_jfi)(r,i,a),t.dynCall_viiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g)=>(t.dynCall_viiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g),t.dynCall_viiiiiiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w,x)=>(t.dynCall_viiiiiiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y,v,_,w,x),t.dynCall_viiiiiiiiiiiiiiii=(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y)=>(t.dynCall_viiiiiiiiiiiiiiii=rz.dynCall_viiiiiiiiiiiiiiii)(r,i,a,n,s,o,l,u,d,c,h,f,p,m,g,b,y),t.dynCall_iif=(r,i,a)=>(t.dynCall_iif=rz.dynCall_iif)(r,i,a),t.dynCall_jiiii=(r,i,a,n,s)=>(t.dynCall_jiiii=rz.dynCall_jiiii)(r,i,a,n,s),t.dynCall_jiii=(r,i,a,n)=>(t.dynCall_jiii=rz.dynCall_jiii)(r,i,a,n),t.dynCall_viif=(r,i,a,n)=>(t.dynCall_viif=rz.dynCall_viif)(r,i,a,n),t.dynCall_viiij=(r,i,a,n,s)=>(t.dynCall_viiij=rz.dynCall_viiij)(r,i,a,n,s),t.dynCall_viiiijii=(r,i,a,n,s,o,l,u)=>(t.dynCall_viiiijii=rz.dynCall_viiiijii)(r,i,a,n,s,o,l,u),t.dynCall_iiiiij=(r,i,a,n,s,o)=>(t.dynCall_iiiiij=rz.dynCall_iiiiij)(r,i,a,n,s,o),t.dynCall_iiiiid=(r,i,a,n,s,o)=>(t.dynCall_iiiiid=rz.dynCall_iiiiid)(r,i,a,n,s,o),t.dynCall_iiiiijj=(r,i,a,n,s,o,l)=>(t.dynCall_iiiiijj=rz.dynCall_iiiiijj)(r,i,a,n,s,o,l),t.dynCall_iiiiiijj=(r,i,a,n,s,o,l,u)=>(t.dynCall_iiiiiijj=rz.dynCall_iiiiiijj)(r,i,a,n,s,o,l,u);var r0=t=>(r0=rz.wb)(t),r2=()=>(r2=rz.xb)(),r3=t=>(r3=rz.yb)(t),r4=()=>(r4=rz.zb)();return function i(){if(0<Y)Q=i;else if(l)r(t),G();else{for(;0<er.length;)er.shift()(t);0<Y?Q=i:(t.calledRun=!0,R||(G(),r(t)))}}(),t.PTR_SIZE=4,n},globalThis.self?.name?.startsWith("em-pthread")&&eb()}),nc=q(()=>{ec(),ev=typeof location>"u"?void 0:location.origin,ew=(e_=!0,URL,new URL(new i.U(i(17394)).href,ev).href),ex=()=>{if(ew&&!ew.startsWith("blob:"))return ew.substring(0,ew.lastIndexOf("/")+1)},e$=(t,r)=>{try{let i=r??ew;return(i?new URL(t,i):new URL(t)).origin===ev}catch{return!1}},eS=async t=>{let r=await (await fetch(t,{credentials:"same-origin"})).blob();return URL.createObjectURL(r)},ek=async t=>(await import(t)).default,eC=(em(),W(eh)).default,eE=async()=>{if(!ew)throw Error("Failed to load proxy worker: cannot determine the script source URL.");if(e$(ew))return[void 0,eC()];let t=await eS(ew);return[t,eC(t)]},eT=(nd(),W(eg)).default,eI=async(t,r,i,a)=>{let n=eT&&!(t||r);if(n)if(ew)n=e$(ew);else if(a&&!i)n=!0;else throw Error("cannot determine the script source URL.");if(n)return[void 0,eT];{let a,n,s="ort-wasm-simd-threaded.jsep.mjs",o=t??((t,r)=>{let i=r??ew;try{return(i?new URL(t,i):new URL(t)).href}catch{return}})(s,r),l=i&&o&&!e$(o,r),u=l?await eS(o):o??(a=s,n=r,`${n??"./"}${a}`);return[l?u:void 0,await ek(u)]}}}),nh=q(()=>{nc(),eN=!1,eO=!1,eM=!1,eP=async t=>{if(eN)return Promise.resolve();if(eO)throw Error("multiple calls to 'initializeWebAssembly()' detected.");if(eM)throw Error("previous call to 'initializeWebAssembly()' failed.");eO=!0;let r=t.initTimeout,i=t.numThreads;if(!1!==t.simd){if("relaxed"===t.simd){if(!(()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,19,1,17,0,65,1,253,15,65,2,253,15,65,3,253,15,253,147,2,11]))}catch{return!1}})())throw Error("Relaxed WebAssembly SIMD is not supported in the current environment.")}else if(!(()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch{return!1}})())throw Error("WebAssembly SIMD is not supported in the current environment.")}let a=(()=>
9{if(typeof SharedArrayBuffer>"u")return!1;try{return"u">typeof MessageChannel&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}})();i>1&&!a&&("u">typeof self&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+i+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),console.warn("WebAssembly multi-threading is not supported in the current environment. Falling back to single-threading."),t.numThreads=i=1);let n=t.wasmPaths,s="string"==typeof n?n:void 0,o=n?.mjs,l=o?.href??o,u=n?.wasm,d=u?.href??u,c=t.wasmBinary,[h,f]=await eI(l,s,i>1,!!c||!!d),p=!1,m=[];if(r>0&&m.push(new Promise(t=>{setTimeout(()=>{p=!0,t()},r)})),m.push(new Promise((t,r)=>{let a={numThreads:i};if(c)a.wasmBinary=c;else if(d||s)a.locateFile=t=>d??s+t;else if(l&&0!==l.indexOf("blob:"))a.locateFile=t=>new URL(t,l).href;else if(h){let t=ex();t&&(a.locateFile=r=>t+r)}f(a).then(r=>{eO=!1,eN=!0,eA=r,t(),h&&URL.revokeObjectURL(h)},t=>{eO=!1,eM=!0,r(t)})})),await Promise.race(m),p)throw Error(`WebAssembly backend initializing failed due to timeout: ${r}ms`)},eR=()=>{if(eN&&eA)return eA;throw Error("WebAssembly is not initialized yet.")}}),nf=q(()=>{nh(),ej=(t,r)=>{let i=eR(),a=i.lengthBytesUTF8(t)+1,n=i._malloc(a);return i.stringToUTF8(t,n,a),r.push(n),n},ez=(t,r,i,a)=>{if("object"==typeof t&&null!==t){if(i.has(t))throw Error("Circular reference in options");
9i.add(t)}Object.entries(t).forEach(([t,n])=>{let s=r?r+t:t;if("object"==typeof n)ez(n,s+".",i,a);else if("string"==typeof n||"number"==typeof n)a(s,n.toString());else if("boolean"==typeof n)a(s,n?"1":"0");else throw Error(`Can't handle extra config type: ${typeof n}`)})},eD=t=>{let r=eR(),i=r.stackSave();try{let i=r.PTR_SIZE,a=r.stackAlloc(2*i);r._OrtGetLastError(a,a+i);let n=Number(r.getValue(a,4===i?"i32":"i64")),s=r.getValue(a+i,"*"),o=s?r.UTF8ToString(s):"";throw Error(`${t} ERROR_CODE: ${n}, ERROR_MESSAGE: ${o}`)}finally{r.stackRestore(i)}}}),np=q(()=>{nh(),nf(),eB=t=>{let r=eR(),i=0,a=[],n=t||{};try{if(t?.logSeverityLevel===void 0)n.logSeverityLevel=2;else if("number"!=typeof t.logSeverityLevel||!Number.isInteger(t.logSeverityLevel)||t.logSeverityLevel<0||t.logSeverityLevel>4)throw Error(`log severity level is not valid: ${t.logSeverityLevel}`);if(t?.logVerbosityLevel===void 0)n.logVerbosityLevel=0;else if("number"!=typeof t.logVerbosityLevel||!Number.isInteger(t.logVerbosityLevel))throw Error(`log verbosity level is not valid: ${t.logVerbosityLevel}`);t?.terminate===void 0&&(n.terminate=!1);let s=0;return t?.tag!==void 0&&(s=ej(t.tag,a)),i=r._OrtCreateRunOptions(n.logSeverityLevel,n.logVerbosityLevel,!!n.terminate,s),0===i&&eD("Can't create run options."),t?.extra!==void 0&&ez(t.extra,"",new WeakSet,(t,n)=>{let s=ej(t,a),o=ej(n,a);0!==r._OrtAddRunConfigEntry(i,s,o)&&eD(`Can't set a run config entry: ${t} - ${n}.`)}),[i,a]}catch(t){throw 0!==i&&r._OrtReleaseRunOptions(i),a.forEach(t=>r._free(t)),t}}}),nm=q(()=>{nh(),nf(),eL=(t,r,i,a)=>{let n=ej(r,a),s=ej(i,a);0!==eR()._OrtAddSessionConfigEntry(t,n,s)&&eD(`Can't set a session config entry: ${r} - ${i}.`)},eU=async(t,r,i)=>{for(let a of r){let r="string"==typeof a?a:a.name,n=[];switch(r){case"webnn":if(r="WEBNN","string"!=typeof a){let r=a?.deviceType;r&&eL(t,"deviceType",r,i)}break;case"webgpu":if(r="JS","string"!=typeof a&&a?.preferredLayout){if("NCHW"!==a.preferredLayout&&"NHWC"!==a.preferredLayout)throw Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${a.preferredLayout}`);eL(t,"preferredLayout",a.preferredLayout,i)}break;case"wasm":case"cpu":continue;default:throw Error(`not supported execution provider: ${r}`)}let s=ej(r,i),o=n.length,l=0,u=0;if(o>0){l=eR()._malloc(o*eR().PTR_SIZE),i.push(l),u=eR()._malloc(o*eR().PTR_SIZE),i.push(u);for(let t=0;t<o;t++)eR().setValue(l+t*eR().PTR_SIZE,n[t][0],"*"),eR().setValue(u+t*eR().PTR_SIZE,n[t][1],"*")}await eR()._OrtAppendExecutionProvider(t,s,l,u,o)!==0&&eD(`Can't append execution provider: ${r}.`)}},eF=async t=>{let r=eR(),i=0,a=[],n=t||{};(t=>{t.extra||(t.extra={}),t.extra.session||(t.extra.session={});let r=t.extra.session;r.use_ort_model_bytes_directly||(r.use_ort_model_bytes_directly="1"),t.executionProviders&&t.executionProviders.some(t=>("string"==typeof t?t:t.name)==="webgpu")&&(t.enableMemPattern=!1)})(n);try{let t=(t=>{switch(t){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"layout":return 3;case"all":return 99;default:throw Error(`unsupported graph optimization level: ${t}`)}})(n.graphOptimizationLevel??"all"),s=(t=>{switch(t){case"sequential":return 0;case"parallel":return 1;default:throw Error(`unsupported execution mode: ${t}`)}})(n.executionMode??"sequential"),o="string"==typeof n.logId?ej(n.logId,a):0,l=n.logSeverityLevel??2;if(!Number.isInteger(l)||l<0||l>4)throw Error(`log severity level is not valid: ${l}`);let u=n.logVerbosityLevel??0;if(!Number.isInteger(u)||u<0||u>4)throw Error(`log verbosity level is not valid: ${u}`);let d="string"==typeof n.optimizedModelFilePath?ej(n.optimizedModelFilePath,a):0;if(i=r._OrtCreateSessionOptions(t,!!n.enableCpuMemArena,!!n.enableMemPattern,s,!!n.enableProfiling,0,o,l,u,d),0===i&&eD("Can't create session options."),n.executionProviders&&await eU(i,n.executionProviders,a),void 0!==n.enableGraphCapture){if("boolean"!=typeof n.enableGraphCapture)throw Error(`enableGraphCapture must be a boolean value: ${n.enableGraphCapture}`);eL(i,"enableGraphCapture",n.enableGraphCapture.toString(),a)}if(n.freeDimensionOverrides)for(let[t,s]of Object.entries(n.freeDimensionOverrides)){if("string"!=typeof t)throw Error(`free dimension override name must be a string: ${t}`);if("number"!=typeof s||!Number.isInteger(s)||s<0)throw Error(`free dimension override value must be a non-negative integer: ${s}`);let n=ej(t,a);0!==r._OrtAddFreeDimensionOverride(i,n,s)&&eD(`Can't set a free dimension override: ${t} - ${s}.`)}return void 0!==n.extra&&ez(n.extra,"",new WeakSet,(t,r)=>{eL(i,t,r,a)}),[i,a]}catch(t){throw 0!==i&&0!==r._OrtReleaseSessionOptions(i)&&eD("Can't release session options."),a.forEach(t=>r._free(t)),t}}}),ng=q(()=>{eq=t=>{switch(t){case"int8":return 3;case"uint8":return 2;case"bool":return 9;
9case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;case"int4":return 22;case"uint4":return 21;default:throw Error(`unsupported data type: ${t}`)}},eV=t=>{switch(t){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";case 22:return"int4";case 21:return"uint4";default:throw Error(`unsupported data type: ${t}`)}},eW=(t,r)=>{let i=[-1,4,1,1,2,2,4,8,-1,1,2,8,4,8,-1,-1,-1,-1,-1,-1,-1,.5,.5][t],a="number"==typeof r?r:r.reduce((t,r)=>t*r,1);return i>0?Math.ceil(a*i):void 0},eH=t=>{switch(t){case"float16":return"u">typeof Float16Array&&Float16Array.from?Float16Array:Uint16Array;case"float32":return Float32Array;case"uint8":case"bool":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw Error(`unsupported type: ${t}`)}},eG=t=>{switch(t){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw Error(`unsupported logging level: ${t}`)}},eK=t=>"float32"===t||"float16"===t||"int32"===t||"int64"===t||"uint32"===t||"uint8"===t||"bool"===t||"uint4"===t||"int4"===t,eY=t=>"float32"===t||"float16"===t||"int32"===t||"int64"===t||"uint32"===t||"uint64"===t||"int8"===t||"uint8"===t||"bool"===t||"uint4"===t||"int4"===t,eQ=t=>{switch(t){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;case"ml-tensor":return 5;default:throw Error(`unsupported data location: ${t}`)}}}),nb=q(()=>{ec(),eX=async t=>{if("string"!=typeof t)return t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t instanceof Uint8Array?t:new Uint8Array(t);{let r=await fetch(t);if(!r.ok)throw Error(`failed to load external data file: ${t}`);let i=r.headers.get("Content-Length"),a=i?parseInt(i,10):0;if(a<0x40000000)return new Uint8Array(await r.arrayBuffer());{if(!r.body)throw Error(`failed to load external data file: ${t}, no response body.`);let i=r.body.getReader(),n;try{n=new ArrayBuffer(a)}catch(t){if(t instanceof RangeError){let t=Math.ceil(a/65536);n=new WebAssembly.Memory({initial:t,maximum:t}).buffer}else throw t}let s=0;for(;;){let{done:t,value:r}=await i.read();if(t)break;let a=r.byteLength;new Uint8Array(n,s,a).set(r),s+=a}return new Uint8Array(n,0,a)}}}}),ny=q(()=>{ng(),eZ=["V","I","W","E","F"],e0=(t,r)=>{eJ=t,e1=r},e2=(...t)=>{e1&&((t,r)=>{var i,a;let n=eG(t);n>=eG(eJ)&&(i=n,a="function"==typeof r?r():r,console.log(`[${eZ[i]},${new Date().toISOString()}]${a}`))})(...t)}}),nv=q(()=>{e3=class{static calcMatMulShape(t,r){return t[1]!==r[0]?void 0:[t[0],r[1]]}},e4=class{static calcShape(t,r,i=!1){let a=t.length,n=r.length;if(0===a)return r;if(0===n)return t;let s=Math.max(t.length,r.length),o=Array(s);if(i){if(a<2||n<2)return;let i=e3.calcMatMulShape([t[a-2],t[a-1]],[r[n-2],r[n-1]]);if(void 0===i)return;[o[s-2],o[s-1]]=i}for(let l=i?3:1;l<=s;l++){let i=a-l<0?1:t[a-l],u=n-l<0?1:r[n-l];if(i!==u&&i>1&&u>1)return;let d=Math.max(i,u);if(i&&u)o[s-l]=Math.max(i,u);else{if(d>1)return;o[s-l]=0}}return o}static isValidBroadcast(t,r){let i=t.length,a=r.length;if(i>a)return!1;for(let n=1;n<=i;n++)if(1!==t[i-n]&&t[i-n]!==r[a-n])return!1;return!0}},e8=class t{static size(r){return t.getSizeFromDimensionRange(r,0,r.length)}static convertShape(t,r=4){let i=t.length;if(0===i)return[];let a=Array(i),n=i-1;for(;n>=0;){if(t[n]%r==0){a[n]=t[n]/r;break}if(r%t[n]!=0)throw Error("cannot convert shape");a[n]=1,r/=t[n],n--}for(n--;n>=0;n--)a[n]=t[n];return a}static sizeFromDimension(r,i){if(i<0||i>r.length)throw Error(`invalid dimension of ${i} for sizeFromDimension as Tensor has ${r.length} dimensions.`);return t.getSizeFromDimensionRange(r,i,r.length)}static sizeToDimension(r,i){if(i<0||i>r.length)throw Error(`invalid dimension of ${i} for sizeToDimension as Tensor has ${r.length} dimensions.`);return t.getSizeFromDimensionRange(r,0,i)}static getSizeFromDimensionRange(t,r,i){let a=1;for(let n=r;n<i;n++){if(t[n]<0)throw Error("cannot get valid size from specified dimension range. Most likely the range contains 
9negative values in them.");a*=Number(t[n])}return a}static computeStrides(t){let r=t.length;if(0===r)return[];if(1===r)return[1];let i=Array(r);i[r-1]=1,i[r-2]=t[r-1];for(let a=r-3;a>=0;--a)i[a]=i[a+1]*t[a+1];return i}static normalizeAxis(t,r){if(t<-r&&t>=r)throw Error("unsupported axis for this operation.");return t<0?t+r:t}static normalizeAxes(t,r){return t.map(i=>this.normalizeAxis(i,r??t.length))}static sortBasedOnPerm(t,r){return r?r.map(r=>t[r]):t.slice().reverse()}static padShape(t,r){let i=t.length;return t.map((t,a)=>t+r[a]+r[a+i])}static areEqual(t,r){return t.length===r.length&&t.every((t,i)=>t===r[i])}},e7=class t{static adjustPoolAttributes(t,r,i,a,n,s){if(!t&&i.length!==r.length-2)throw Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(t)for(let t=0;t<r.length-2;t++)t>=i.length?i.push(r[t+2]):i[t]=r[t+2];for(let t=0;t<i.length;t++)if(t<a.length){if(a[t]<0)throw Error("strides should be greater than or equal to 1")}else a.push(1);for(let t=0;t<i.length;t++)if(t<n.length){if(n[t]<0)throw Error("dilations should be greater than or equal to 1")}else n.push(1);for(let t=0;t<2*i.length;t++)if(t<s.length){if(s[t]<0)throw Error("pad should be greater than or equal to 1")}else s.push(0);for(let t=0;t<i.length;t++){if(i[t]<=0)throw Error("kernel shapes need to be greater than 0");if(s[t]>=i[t]||s[t+i.length]>=i[t])throw Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(r,i,a,n,s,o,l){if(l){if(s.length!==2*(r.length-2))throw Error("length of pads should be twice the length of data dimensions");if(i.length!==r.length-2)throw Error("length of strides should be the length of data dimensions");if(n.length!==r.length-2)throw Error("length of kernel shapes should be the length of data dimensions");for(let u=0;u<r.length-2;u++)t.adjustPadAndReturnShape(r[u+(o?1:2)],i[u],a[u],n[u],s,u,u+r.length-2,l)}}static computePoolOutputShape(r,i,a,n,s,o,l){if(i.length<=0)throw Error("input shape must be of size greater than 0");let u=[i[0],i[1]];return t.computeShapeHelper(r,i,u,a,n,s,o,l),u}static computeConvOutputShape(r,i,a,n,s,o,l){if(r.length<=0||i.length<=0)throw Error("invalid input tensor dims or invalid filter tensor dims");let u=[r[0],i[0]];return t.computeShapeHelper(!1,r,u,a,n,s,o,l),u}static computeShapeHelper(r,i,a,n,s,o,l,u){if(r)for(let t=0;t<i.length-2;t++)a.push(1);else for(let r=0;r<i.length-2;r++)a.push(t.adjustPadAndReturnShape(i[r+2],n[r],s[r],o[r],l,r,r+i.length-2,u))}static adjustPadAndReturnShape(t,r,i,a,n,s,o,l){let u=i*(a-1)+1;if(!l||"NOTSET"===l)return Math.floor((t+n[s]+n[o]-u)/r+1);switch(l){case"VALID":return n[s]=0,n[o]=0,Math.floor((t-u)/r+1);case"SAME_LOWER":case"SAME_UPPER":if(1!==i)throw Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let i=((t+r-1)/r-1)*r+a-t;return n[s]=Math.floor("SAME_LOWER"===l?(i+1)/2:i/2),n[o]=i-n[s],Math.floor((t+i-a)/r+1)}default:throw Error("Unsupported AutoPad type")}}},e6=class{static getShapeOfGemmResult(t,r,i,a,n){let s,o,l;if(2!==t.length||2!==i.length)throw Error("shape need to be of size 2");r?(s=t[1],o=t[0]):(s=t[0],o=t[1]);let u=-1;if(a?(l=i[0],u=1):(l=i[1],u=0),i[u]!==o)throw Error("dimension mismatch");if(s<=0||l<=0||o<=0)throw Error("invalid shape specified");if(n&&!e4.isValidBroadcast(n,[s,l]))throw Error("gemm: invalid bias shape for broadcast");return[s,l,o]}},e5=-34028234663852886e22,e9=34028234663852886e22}),n_=q(()=>{ng(),te=(t,r)=>new(eH(r))(t)}),nw=q(()=>{ng(),ny(),tt=new Map([["float32",32],["float16",16],["int32",32],["uint32",32],["int64",64],["uint64",64],["int8",8],["uint8",8],["int4",4],["uint4",4]]),tr=(t,r)=>{if("int32"===r)return t;let i=tt.get(r);if(!i)throw Error(`WebNN backend does not support data type: ${r}`);let a=i/8;if(t.byteLength%a!=0)throw Error(`Invalid Uint8Array length - must be a multiple of ${a}.`);let n=t.byteLength/a,s=new(eH(r))(t.buffer,t.byteOffset,n);switch(r){case"int64":case"uint64":{let t=new Int32Array(n);for(let r=0;r<n;r++){let i=s[r];if(i>2147483647n||i<-2147483648n)throw Error("Can not convert int64 data to int32 - value out of range.");t[r]=Number(i)}return new Uint8Array(t.buffer)}case"int8":case"uint8":case"uint32":if("uint32"===r&&s.some(t=>t>0x7fffffff))throw Error("Can not convert uint32 data to int32 - value out of range.");return new Uint8Array(Int32Array.from(s,Number).buffer);default:throw Error(`Unsupported data conversion from ${r} to 'int32'`)}},ti=(t,r)=>{if("int32"===r)return t;if(t.byteLength%4!=0)throw Error("Invalid Uint8Array length - must be a multiple of 4 (int32).");let i=t.byteLength/4,a=new Int32Array(t.buffer,t.byteOffset,i);switch(r){case"int64":return new Uint8Array(BigInt64Array.from(a,BigInt).buffer);case"uint64":if(a.some(t=>t<0))throw Error("Can not convert int32 data to uin64 - negative value found.");return new Uint8Array(BigUint64Array.from(a,BigInt).buffer);case"int8":if(a.some(t=>t<-128||t>127))throw Error("Can not convert int32 data to int8 - value out of range.");return new Uint8Array(Int8Array.from(a,Number).buffer);case"uint8":if(a.some(t=>t<0||t>255))throw Error("Can not convert int32 data to uint8 - value out of range.");return Uint8Array.from(a,Number);case"uint32":if(a.some(t=>t<0))throw Error("Can not convert int32 data to uint32 - negative value found.");return new Uint8Array(Uint32Array.from(a,Number).buffer);default:throw Error(`Unsupported data conversion from 'int32' to ${r}`)}},ta=1,tn=()=>ta++,ts=new Map([["int8","int32"],["uint8","int32"],["uint32","int32"],["int64","int32"]]),to=(t,r)=>{let i=tt.get(t);if(!i)throw Error(`WebNN backend does not support data type: ${t}`);return r.length>0?Math.ceil(r.reduce((t,r)=>t*r)*i/8):0},tl=class{constructor(t){this.isDataConverted=!1;let{sessionId:r,context:i,tensor:a,dataType:n,shape:s,fallbackDataType:o}=t;this.sessionId=r,this.mlContext=i,this.mlTensor=a,this.dataType=n,this.tensorShape=s,this.fallbackDataType=o}get tensor(){return this.mlTensor}get type(){return this.dataType}get fallbackType(){return this.fallbackDataType}get shape(){return this.tensorShape}get byteLength(){return to(this.dataType,this.tensorShape)}destroy(){e2("verbose",()=>"[WebNN] TensorWrapper.destroy"),this.mlTensor.destroy()}write(t){this.mlContext.writeTensor(this.mlTensor,t)}async read(t){if(!this.fallbackDataType)return t?this.mlContext.readTensor(this.mlTensor,t):this.mlContext.readTensor(this.mlTensor);{let r=ti(new Uint8Array(await this.mlContext.readTensor(this.mlTensor)),this.dataType);return t?void(t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)).set(r):r.buffer}}canReuseTensor(t,r,i){return this.mlContext===t&&this.dataType===r&&this.tensorShape.length===i.length&&this.tensorShape.every((t,r)=>t===i[r])}setIsDataConverted(t){this.isDataConverted=t}},tu=class{constructor(t,r){this.tensorManager=t,this.wrapper=r}get tensorWrapper(){return this.wrapper}releaseTensor(){this.tensorWrapper&&(this.tensorManager.releaseTensor(this.tensorWrapper),this.wrapper=void 0)}async ensureTensor(t,r,i,a){let n=this.tensorManager.getMLContext(t),s;if(!n.opSupportLimits().input.dataTypes.includes(r)){if(!(s=ts.get(r))||!n.opSupportLimits().input.dataTypes.includes(s))throw Error(`WebNN backend does not support data type: ${r}`);e2("verbose",()=>`[WebNN] TensorIdTracker.ensureTensor: fallback dataType from ${r} to ${s}`)}if(this.wrapper){if(this.wrapper.canReuseTensor(n,r,i))return this.wrapper.tensor;if(a){if(this.wrapper.byteLength!==to(r,i))throw Error("Unable to copy data to tensor with different size.");this.activeUpload=new Uint8Array(await this.wrapper.read())}this.tensorManager.releaseTensor(this.wrapper)}let o=typeof MLTensorUsage>"u"?void 0:MLTensorUsage.READ|MLTensorUsage.WRITE;return this.wrapper=await this.tensorManager.getCachedTensor(t,r,i,o,!0,!0,s),a&&this.activeUpload&&(this.wrapper.write(this.activeUpload),this.activeUpload=void 0),this.wrapper.tensor}upload(t){let r=t;if(this.wrapper){if(this.wrapper.fallbackType)if("int32"===this.wrapper.fallbackType)r=tr(t,this.wrapper.type),this.wrapper.setIsDataConverted(!0);else throw Error(`Unsupported fallback data type: ${this.wrapper.fallbackType}`);if(t.byteLength===this.wrapper.byteLength)return void this.wrapper.write(r);e2("verbose",()=>"Data size does not match tensor size. Releasing tensor."),this.releaseTensor()}this.activeUpload?this.activeUpload.set(r):this.activeUpload=new Uint8Array(r)}async download(t){if(this.activeUpload){let r=this.wrapper?.isDataConverted?ti(this.activeUpload,this.wrapper?.type):this.activeUpload;return t?void(t instanceof ArrayBuffer?new Uint8Array(t).set(r):new Uint8Array(t.buffer,t.byteOffset,t.byteLength).set(r)):r.buffer}if(!this.wrapper)throw Error("Tensor has not been created.");return t?this.wrapper.read(t):this.wrapper.read()}},td=class{constructor(t){this.backend=t,this.tensorTrackersById=new Map,this.freeTensors=[],this.externalTensors=new Set}getMLContext(t){let r=this.backend.getMLContext(t);if(!r)throw Error("MLContext not found for session.");return r}reserveTensorId(){let t=tn();return this.tensorTrackersById.set(t,new tu(this)),t}releaseTensorId(t){let r=this.tensorTrackersById.get(t);r&&(this.tensorTrackersById.delete(t),r.tensorWrapper&&this.releaseTensor(r.tensorWrapper))}async ensureTensor(t,r,i,a,n){e2("verbose",()=>`[WebNN] TensorManager.ensureTensor {tensorId: ${r}, dataType: ${i}, shape: ${a}, copyOld: ${n}}`);let s=this.tensorTrackersById.get(r);if(!s)throw Error("Tensor not found.");return s.ensureTensor(t,i,a,n)}upload(t,r){let i=this.tensorTrackersById.get(t);if(!i)throw Error("Tensor not found.");i.upload(r)}async download(t,r){e2("verbose",()=>`[WebNN] TensorManager.download {tensorId: ${t}, dstBuffer: ${r?.byteLength}}`);let i=this.tensorTrackersById.get(t);if(!i)throw Error("Tensor not found.");return i.download(r)}releaseTensorsForSession(t){for(let r of this.freeTensors)r.sessionId===t&&r.destroy();this.freeTensors=this.freeTensors.filter(r=>r.sessionId!==t)}registerTensor(t,r,i,a){let n=this.getMLContext(t),s=tn(),o=new tl
9({sessionId:t,context:n,tensor:r,dataType:i,shape:a});return this.tensorTrackersById.set(s,new tu(this,o)),this.externalTensors.add(o),s}async getCachedTensor(t,r,i,a,n,s,o){let l=this.getMLContext(t);for(let[a,n]of this.freeTensors.entries())if(n.canReuseTensor(l,r,i)){e2("verbose",()=>`[WebNN] Reusing tensor {dataType: ${r}, ${o?`fallbackDataType: ${o},`:""} shape: ${i}`);let n=this.freeTensors.splice(a,1)[0];return n.sessionId=t,n}e2("verbose",()=>`[WebNN] MLContext.createTensor {dataType: ${r}, ${o?`fallbackDataType: ${o},`:""} shape: ${i}}`);let u=await l.createTensor({dataType:o??r,shape:i,dimensions:i,usage:a,writable:n,readable:s});return new tl({sessionId:t,context:l,tensor:u,dataType:r,shape:i,fallbackDataType:o})}releaseTensor(t){this.externalTensors.has(t)&&this.externalTensors.delete(t),this.freeTensors.push(t)}},tc=(...t)=>new td(...t)}),nx=q(()=>{ng(),nh(),n_(),nw(),ny(),th=new Map([[1,"float32"],[10,"float16"],[6,"int32"],[12,"uint32"],[7,"int64"],[13,"uint64"],[22,"int4"],[21,"uint4"],[3,"int8"],[2,"uint8"],[9,"uint8"]]),tf=class{constructor(t){this.tensorManager=tc(this),this.mlContextBySessionId=new Map,this.sessionIdsByMLContext=new Map,this.mlContextCache=[],this.sessionGraphInputs=new Map,this.sessionGraphOutputs=new Map,this.temporaryGraphInputs=[],this.temporaryGraphOutputs=[],this.temporarySessionTensorIds=new Map,e0(t.logLevel,!!t.debug)}get currentSessionId(){if(void 0===this.activeSessionId)throw Error("No active session");return this.activeSessionId}onRunStart(t){e2("verbose",()=>`[WebNN] onRunStart {sessionId: ${t}}`),this.activeSessionId=t}onRunEnd(t){e2("verbose",()=>`[WebNN] onRunEnd {sessionId: ${t}}`);let r=this.temporarySessionTensorIds.get(t);if(r){for(let t of r)e2("verbose",()=>`[WebNN] releasing temporary tensor {tensorId: ${t}}`),this.tensorManager.releaseTensorId(t);this.temporarySessionTensorIds.delete(t),this.activeSessionId=void 0}}async createMLContext(t){if(t instanceof GPUDevice){let r=this.mlContextCache.findIndex(r=>r.gpuDevice===t);if(-1!==r)return this.mlContextCache[r].mlContext;{let r=await navigator.ml.createContext(t);return this.mlContextCache.push({gpuDevice:t,mlContext:r}),r}}if(void 0===t){let t=this.mlContextCache.findIndex(t=>void 0===t.options&&void 0===t.gpuDevice);if(-1!==t)return this.mlContextCache[t].mlContext;{let t=await navigator.ml.createContext();return this.mlContextCache.push({mlContext:t}),t}}let r=this.mlContextCache.findIndex(r=>((t,r)=>{if(t===r)return!0;if(void 0===t||void 0===r)return!1;let i=Object.keys(t).sort(),a=Object.keys(r).sort();return i.length===a.length&&i.every((i,n)=>i===a[n]&&t[i]===r[i])})(r.options,t));if(-1!==r)return this.mlContextCache[r].mlContext;{let r=await navigator.ml.createContext(t);return this.mlContextCache.push({options:t,mlContext:r}),r}}registerMLContext(t,r){this.mlContextBySessionId.set(t,r);let i=this.sessionIdsByMLContext.get(r);i||(i=new Set,this.sessionIdsByMLContext.set(r,i)),i.add(t),this.temporaryGraphInputs.length>0&&(this.sessionGraphInputs.set(t,this.temporaryGraphInputs),this.temporaryGraphInputs=[]),this.temporaryGraphOutputs.length>0&&(this.sessionGraphOutputs.set(t,this.temporaryGraphOutputs),this.temporaryGraphOutputs=[])}onReleaseSession(t){this.sessionGraphInputs.delete(t),this.sessionGraphOutputs.delete(t);let r=this.mlContextBySessionId.get(t);if(!r)return;this.tensorManager.releaseTensorsForSession(t),this.mlContextBySessionId.delete(t);let i=this.sessionIdsByMLContext.get(r);if(i.delete(t),0===i.size){this.sessionIdsByMLContext.delete(r);let t=this.mlContextCache.findIndex(t=>t.mlContext===r);-1!==t&&this.mlContextCache.splice(t,1)}}getMLContext(t){return this.mlContextBySessionId.get(t)}reserveTensorId(){return this.tensorManager.reserveTensorId()}releaseTensorId(t){e2("verbose",()=>`[WebNN] releaseTensorId {tensorId: ${t}}`),this.tensorManager.releaseTensorId(t)}async ensureTensor(t,r,i,a,n){let s=th.get(i);if(!s)throw Error(`Unsupported ONNX data type: ${i}`);return this.tensorManager.ensureTensor(t??this.currentSessionId,r,s,a,n)}async createTemporaryTensor(t,r,i){e2("verbose",()=>`[WebNN] createTemporaryTensor {onnxDataType: ${r}, shape: ${i}}`);let a=th.get(r);if(!a)throw Error(`Unsupported ONNX data type: ${r}`);let n=this.tensorManager.reserveTensorId();await this.tensorManager.ensureTensor(t,n,a,i,!1);let s=this.temporarySessionTensorIds.get(t);return s?s.push(n):this.temporarySessionTensorIds.set(t,[n]),n}uploadTensor(t,r){if(!eR().shouldTransferToMLTensor)throw Error("Trying to upload to a MLTensor while shouldTransferToMLTensor is false");e2("verbose",()=>`[WebNN] uploadTensor {tensorId: ${t}, data: ${r.byteLength}}`),this.tensorManager.upload(t,r)}async downloadTensor(t,r){return this.tensorManager.download(t,r)}createMLTensorDownloader(t,r){return async()=>{let i=await this.tensorManager.download(t);return te(i,r)}}registerMLTensor(t,r,i,a){let n=th.get(i);if(!n)throw Error(`Unsupported ONNX data type: ${i}`);let s=this.tensorManager.registerTensor(t,r,n,a);return e2("verbose",()=>`[WebNN] registerMLTensor {tensor: ${r}, dataType: ${n}, dimensions: ${a}} -> {tensorId: ${s}}`),s}registerMLConstant(t,r,i,a,n,s,o=!1){if(!s)throw Error("External mounted files are not available.");let l=t;t.startsWith("./")&&(l=t.substring(2));let u=s.get(l);if(!u)throw Error(`File with name ${l} not found in preloaded files.`);if(r+i>u.byteLength)throw Error("Out of bounds: data offset and length exceed the external file data size.");let d=u.slice(r,r+i).buffer,c;switch(n.dataType){case"float32":c=new Float32Array(d);break;case"float16":c="u">typeof Float16Array&&Float16Array.from?new Float16Array(d):new Uint16Array(d);break;case"int32":c=new Int32Array(d);break;case"uint32":c=new Uint32Array(d);break;case"int64":o?(c=new Int32Array(tr(new Uint8Array(d),"int64").buffer),n.dataType="int32"):c=new BigInt64Array(d);break;case"uint64":c=new BigUint64Array(d);break;case"int8":c=new Int8Array(d);break;case"int4":case"uint4":case"uint8":c=new Uint8Array(d);break;default:throw Error(`Unsupported data type: ${n.dataType} in creating WebNN Constant from external data.`)}return e2("verbose",()=>`[WebNN] registerMLConstant {dataType: ${n.dataType}, shape: ${n.shape}}} ${o?"(Note: it was int64 data type and registered to int32 as workaround)":""}`),a.constant(n,c)}registerGraphInput(t){this.temporaryGraphInputs.push(t)}registerGraphOutput(t){this.temporaryGraphOutputs.push(t)}isGraphInput(t,r){let i=this.sessionGraphInputs.get(t);return!!i&&i.includes(r)}isGraphOutput(t,r){let i=this.sessionGraphOutputs.get(t);return!!i&&i.includes(r)}isGraphInputOutputTypeSupported(t,r,i=!0){let a=this.mlContextBySessionId.get(t),n=th.get(eq(r));return!(typeof n>"u")&&(i?!!a?.opSupportLimits().input.dataTypes.includes(n):!!a?.opSupportLimits().output.dataTypes.includes(n))}flush(){}}}),n$=q(()=>{}),nS=q(()=>{ny(),n$(),tp=new Map([[64,250],[128,200],[256,200],[512,200],[2048,230],[4096,200
9],[8192,50],[16384,50],[32768,50],[65536,50],[131072,50],[262144,50],[524288,50],[1048576,50],[2097152,30],[4194304,20],[8388608,10],[0xc00000,10],[0x1000000,10],[0x1900000,15],[0x2000000,22],[0x2a30000,2],[0x3840000,6],[0x4000000,6],[0x8000000,6],[0xa000000,6]]),tm=[],tg=t=>16*Math.ceil(Number(t)/16),tb=1,ty=()=>tb++,tv=async(t,r,i,a)=>{let n=tg(i),s=t.device.createBuffer({size:n,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});try{let o=t.getCommandEncoder();t.endComputePass(),o.copyBufferToBuffer(r,0,s,0,n),t.flush(),await s.mapAsync(GPUMapMode.READ);let l=s.getMappedRange();if(!a)return new Uint8Array(l.slice(0,i));{let t=a();return t.set(new Uint8Array(l,0,i)),t}}finally{s.destroy()}},t_=class{constructor(t){for(let[r]of(this.backend=t,this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.buffersPending=[],this.capturedPendingBuffers=new Map,tp))tm.push(r),this.freeBuffers.set(r,[]),this.freeUniformBuffers.set(r,[]);this.sessionCount=0}upload(t,r){let i=r.buffer,a=r.byteOffset,n=r.byteLength,s=tg(n),o=this.storageCache.get(t);if(!o)throw Error("gpu data for uploading does not exist");if(Number(o.originalSize)!==n)throw Error(`inconsistent data size. gpu data size=${o.originalSize}, data size=${n}`);let l=this.backend.device.createBuffer({mappedAtCreation:!0,size:s,usage:GPUBufferUsage.MAP_WRITE|GPUBufferUsage.COPY_SRC});new Uint8Array(l.getMappedRange()).set(new Uint8Array(i,a,n)),l.unmap();let u=this.backend.device.createCommandEncoder();u.copyBufferToBuffer(l,0,o.gpuData.buffer,0,s),this.backend.device.queue.submit([u.finish()]),l.destroy(),e2("verbose",()=>`[WebGPU] GpuDataManager.upload(id=${t})`)}memcpy(t,r){let i=this.storageCache.get(t);if(!i)throw Error("source gpu data for memcpy does not exist");let a=this.storageCache.get(r);if(!a)throw Error("destination gpu data for memcpy does not exist");if(i.originalSize!==a.originalSize)throw Error("inconsistent source and destination gpu data size");let n=tg(i.originalSize),s=this.backend.getCommandEncoder();this.backend.endComputePass(),s.copyBufferToBuffer(i.gpuData.buffer,0,a.gpuData.buffer,0,n)}registerExternalBuffer(t,r,i){let a;if(i){if(a=i[0],t===i[1])return e2("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${a}, buffer is the same, skip.`),a;if(this.backend.capturedCommandList.has(this.backend.currentSessionId))throw Error(`Registering a different external buffer under graph capture mode is not supported yet.
10             Please use the previous external buffer!`)}else a=ty();return this.storageCache.set(a,{gpuData:{id:a,type:0,buffer:t},originalSize:r}),e2("verbose",()=>`[WebGPU] GpuDataManager.registerExternalBuffer(size=${r}) => id=${a}, registered.`),a}unregisterExternalBuffer(t){void 0!==t&&(this.storageCache.delete(t),e2("verbose",()=>`[WebGPU] GpuDataManager.unregisterExternalBuffer() => id=${t}`))}create(t,r=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST){let i=(t=>{for(let r=0;r<tm.length;r++){let i=tm[r];if(t<=i)return i}return 16*Math.ceil(t/16)})(t),a,n=(r&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE,s=(r&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM;if(n||s){let t=(n?this.freeBuffers:this.freeUniformBuffers).get(i);a=t&&t.length>0?t.pop():this.backend.device.createBuffer({size:i,usage:r})}else a=this.backend.device.createBuffer({size:i,usage:r});let o={id:ty(),type:0,buffer:a};return this.storageCache.set(o.id,{gpuData:o,originalSize:Number(t)}),e2("verbose",()=>`[WebGPU] GpuDataManager.create(size=${t}) => id=${o.id}`),o}get(t){return this.storageCache.get(t)?.gpuData}release(t){let r="bigint"==typeof t?Number(t):t,i=this.storageCache.get(r);if(!i){if(0===this.storageCache.size)return 0;throw Error("releasing data does not exist")}return e2("verbose",()=>`[WebGPU] GpuDataManager.release(id=${r}), gpuDataId=${i.gpuData.id}`),this.storageCache.delete(r),this.buffersPending.push(i.gpuData.buffer),i.originalSize}async download(t,r){let i=this.storageCache.get(Number(t));if(!i)throw Error("data does not exist");await tv(this.backend,i.gpuData.buffer,i.originalSize,r)}refreshPendingBuffers(){if(0!==this.buffersPending.length)if("default"===this.backend.sessionStatus){for(let t of this.buffersPending){let r=tp.get(t.size);if((t.usage&GPUBufferUsage.STORAGE)===GPUBufferUsage.STORAGE){let i=this.freeBuffers.get(t.size)||[];void 0===r||i.length>=r?t.destroy():i.push(t)}
10else if((t.usage&GPUBufferUsage.UNIFORM)===GPUBufferUsage.UNIFORM){let i=this.freeUniformBuffers.get(t.size)||[];void 0===r||i.length>=r?t.destroy():i.push(t)}else t.destroy()}this.buffersPending=[]}else{let t=this.capturedPendingBuffers.get(this.backend.currentSessionId);for(let r of(t||(t=[],this.capturedPendingBuffers.set(this.backend.currentSessionId,t)),this.buffersPending))t.push(r);this.buffersPending=[]}}dispose(){this.freeBuffers.forEach(t=>{t.forEach(t=>{t.destroy()})}),this.freeUniformBuffers.forEach(t=>{t.forEach(t=>{t.destroy()})}),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.capturedPendingBuffers.forEach(t=>{t.forEach(t=>{t.destroy()})}),this.storageCache=new Map,this.freeBuffers=new Map,this.freeUniformBuffers=new Map,this.capturedPendingBuffers=new Map}onCreateSession(){this.sessionCount+=1}onReleaseSession(t){let r=this.capturedPendingBuffers.get(t);r&&(r.forEach(t=>{t.destroy()}),this.capturedPendingBuffers.delete(t)),this.sessionCount-=1,0===this.sessionCount&&(e2("warning",()=>"[WebGPU] Clearing webgpu buffer cache"),this.storageCache.forEach(t=>{t.gpuData.buffer.destroy()}),this.storageCache=new Map)}},tw=(...t)=>new t_(...t)}),nk=q(()=>{tx=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},t$=t=>new tx(t)}),nC=q(()=>{ng(),nv(),tS=64,tk=(t,r)=>{if(3===r)throw Error("vec3 has same alignment as vec4, use vec4 instead");switch(Number(t)){case 10:return r>1?`vec${r}<f16>`:"f16";case 1:return r>1?`vec${r}<f32>`:"f32";case 6:return r>1?`vec${r}<i32>`:"i32";case 12:return r>1?`vec${r}<u32>`:"u32";case 7:if(r>1)throw Error("currently not supported vecX of uint64 yet");return["vec2<u32>","i32"];case 13:if(r>1)throw Error("currently not supported vecX of uint64 yet");return["vec2<u32>","u32"];case 9:if(4!==r)throw Error("bool must be vec4");return["u32","vec4<bool>"];case 22:return"i32";case 21:return"u32";default:throw Error(`Unknown data type: ${t}`)}},tC=(t,r=1)=>{let i=tk(t,r);return"string"==typeof i?i:i[0]},tE=(t,r=1)=>{let i=tk(t,r);return"string"==typeof i?i:i[1]},tT=(...t)=>{let r=[];return t.forEach(t=>{0!==t.length&&r.push({type:12,data:t},{type:12,data:e8.computeStrides(t)})}),r},tI=t=>t%4==0?4:t%2==0?2:1,tA=(t="f32",r,i="0")=>r&&1!==r?`vec${r}<${t}>(${i})`:`${t}(${i})`,tN=(t,r,i)=>"f32"===t?i:1===r?`f32(${i})`:`vec${r}<f32>(${i})`,tO=(t,r)=>4===r?`(${t}.x + ${t}.y + ${t}.z + ${t}.w)`:2===r?`(${t}.x + ${t}.y)`:3===r?`(${t}.x + ${t}.y + ${t}.z)`:t,tM=(t,r,i,a)=>t.startsWith("uniforms.")&&i>4?"string"==typeof r?"f16"===a?`${t}[(${r}) / 8][(${r}) % 8 / 4][(${r}) % 8 % 4]`:`${t}[(${r}) / 4][(${r}) % 4]`:"f16"===a?`${t}[${Math.floor(r/8)}][${Math.floor(r%8/4)}][${r%8%4}]`:`${t}[${Math.floor(r/4)}][${r%4}]`:i>1?`${t}[${r}]`:t,tP=(t,r,i,a,n)=>{let s="number"==typeof i,o=s?i:i.length,l=[...Array(o).keys()],u=o<2?"u32":o<=4?`vec${o}<u32>`:`array<u32, ${o}>`,d=tk(r,n),c="string"==typeof d?d:d[1],h={indices:u,value:c,storage:"string"==typeof d?d:d[0],tensor:r},f=t=>"string"==typeof t?t:`${t}u`,p={offsetToIndices:!1,indicesToOffset:!1,broadcastedIndicesToOffset:!1,set:!1,setByIndices:!1,get:!1,getByIndices:!1},m=s?"uniforms.":"",g=`${m}${t}_shape`,b=`${m}${t}_strides`,y="";for(let t=0;t<o-1;t++)y+=`
11    let dim${t} = current / ${tM(b,t,o)};
12    let rest${t} = current % ${tM(b,t,o)};
13    indices[${t}] = dim${t};
14    current = rest${t};
15    `;y+=`indices[${o-1}] = current;`;let v=o<2?"":`
16  fn o2i_${t}(offset: u32) -> ${h.indices} {
17    var indices: ${h.indices};
18    var current = offset;
19    ${y}
20    return indices;
21  }`,_=[];if(o>=2)for(let t=o-1;t>=0;t--)_.push(`${tM(b,t,o)} * (indices[${t}])`);let w=o<2?"":`
22  fn i2o_${t}(indices: ${h.indices}) -> u32 {
23    return ${_.join("+")};
24  }`,x=(...t)=>0===o?"0u":`${h.indices}(${t.map(f).join(",")})`,$=(t,r)=>o<2?`${t}`:`${tM(t,r,o)}`,S={},k=(r,i)=>(()=>{if(h.storage===h.value)return`${t}[${r}]=${i};`;if("vec2<u32>"===h.storage&&"i32"===h.value)return`${t}[${r}]=vec2<u32>(u32(${i}), select(0u, 0xFFFFFFFFu, ${i} < 0));`;if("vec2<u32>"===h.storage&&"u32"===h.value)return`${t}[${r}]=vec2<u32>(u32(${i}), 0u);`;if("u32"===h.storage&&"vec4<bool>"===h.value)return`${t}[${r}]=dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(${i}));`;throw Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),C=r=>(()=>
24{if(h.storage===h.value)return`${t}[${r}]`;if("vec2<u32>"===h.storage&&"i32"===h.value)return`i32(${t}[${r}].x)`;if("vec2<u32>"===h.storage&&"u32"===h.value)return`u32(${t}[${r}].x)`;if("u32"===h.storage&&"vec4<bool>"===h.value)return`vec4<bool>(bool(${t}[${r}] & 0xFFu), bool(${t}[${r}] & 0xFF00u), bool(${t}[${r}] & 0xFF0000u), bool(${t}[${r}] & 0xFF000000u))`;throw Error(`not supported combination of storage type ${h.storage} and value type ${h.value} yet`)})(),E=o<2?"":`
25  fn get_${t}ByIndices(indices: ${h.indices}) -> ${c} {
26    return ${C(`i2o_${t}(indices)`)};
27  }`,T=o<2?"":(()=>{let r=l.map(t=>`d${t}: u32`).join(", "),i=l.map(t=>`d${t}`).join(", ");return`
28  fn get_${t}(${r}) -> ${c} {
29    return get_${t}ByIndices(${x(i)});
30  }`})(),I=o<2?"":`
31  fn set_${t}ByIndices(indices: ${h.indices}, value: ${c}) {
32    ${k(`i2o_${t}(indices)`,"value")}
33  }`,A=o<2?"":(()=>{let r=l.map(t=>`d${t}: u32`).join(", "),i=l.map(t=>`d${t}`).join(", ");return`
34  fn set_${t}(${r}, value: ${c}) {
35    set_${t}ByIndices(${x(i)}, value);
36  }`})();return{impl:()=>{let t=[],r=!1;return p.offsetToIndices&&(t.push(v),r=!0),p.indicesToOffset&&(t.push(w),r=!0),p.broadcastedIndicesToOffset&&(Object.values(S).forEac
36h(r=>t.push(r)),r=!0),p.set&&(t.push(A),r=!0),p.setByIndices&&(t.push(I),r=!0),p.get&&(t.push(T),r=!0),p.getByIndices&&(t.push(E),r=!0),!s&&r&&t.unshift(`const ${g} = ${h.indices}(${i.join(",")});`,`const ${b} = ${h.indices}(${e8.computeStrides(i).join(",")});`),t.join(`
37`)},type:h,offsetToIndices:r=>(p.offsetToIndices=!0,o<2?r:`o2i_${t}(${r})`),indicesToOffset:r=>(p.indicesToOffset=!0,o<2?r:`i2o_${t}(${r})`),broadcastedIndicesToOffset:(r,i)=>{p.broadcastedIndicesToOffset=!0;let a=`${i.name}broadcastedIndicesTo${t}Offset`;if(a in S)return`${a}(${r})`;let n=[];for(let t=o-1;t>=0;t--){let r=i.indicesGet("outputIndices",t+i.rank-o);n.push(`${$(b,t)} * (${r} % ${$(g,t)})`)}return S[a]=`fn ${a}(outputIndices: ${i.type.indices}) -> u32 {
38             return ${n.length>0?n.join("+"):"0u"};
39           }`,`${a}(${r})`},indices:x,indicesGet:$,indicesSet:(t,r,i)=>o<2?`${t}=${i};`:`${tM(t,r,o)}=${i};`,set:(...r)=>{if(r.length!==o+1)throw Error(`indices length must be ${o}`);let i=r[o];if("string"!=typeof i)throw Error("value must be string");let a=r.slice(0,o).map(f).join(",");return 0===o?k("0u",i):1===o?k(a[0],i):(p.set=!0,p.setByIndices=!0,p.indicesToOffset=!0,`set_${t}(${a}, ${i})`)},setByOffset:k,setByIndices:(r,i)=>o<2?k(r,i):(p.setByIndices=!0,p.indicesToOffset=!0,`set_${t}ByIndices(${r}, ${i});`),get:(...r)=>{if(r.length!==o)throw Error(`indices length must be ${o}`);let i=r.map(f).join(",");return 0===o?C("0u"):1===o?C(i[0]):(p.get=!0,p.getByIndices=!0,p.indicesToOffset=!0,`get_${t}(${i})`)},getByOffset:C,getByIndices:r=>o<2?C(r):(p.getByIndices=!0,p.indicesToOffset=!0,`get_${t}ByIndices(${r})`),usage:a,name:t,strides:b,shape:g,rank:o}},tR=(t,r,i,a=1)=>tP(t,r,i,"input",a),tj=(t,r,i,a=1)=>tP(t,r,i,"output",a),tz=(t,r,i)=>tP(t,r,i,"atomicOutput",1),tD=(t,r,i,a=1)=>tP(t,r,i,"internal",a),tB=class{constructor(t,r){this.normalizedDispatchGroup=t,this.limits=r,this.internalVariables=[],this.variables=[],this.uniforms=[],this.variableIndex=0}guardAgainstOutOfBoundsWorkgroupSizes(t){return`if (global_idx >= ${"number"==typeof t?`${t}u`:t}) { return; }`}mainStart(t=tS){let r="number"==typeof t?t:t[0],i="number"==typeof t?1:t[1],a="number"==typeof t?1:t[2];if(r>this.limits.maxComputeWorkgroupSizeX||i>this.limits.maxComputeWorkgroupSizeY||a>this.limits.maxComputeWorkgroupSizeZ)throw Error(`workgroup size [${r}, ${i}, ${a}] exceeds the maximum workgroup size [${this.limits.maxComputeWorkgroupSizeX}, ${this.limits.maxComputeWorkgroupSizeY}, ${this.limits.maxComputeWorkgroupSizeZ}].`);if(r*i*a>this.limits.maxComputeInvocationsPerWorkgroup)throw Error(`workgroup size [${r}, ${i}, ${a}] exceeds the maximum workgroup invocations ${this.limits.maxComputeInvocationsPerWorkgroup}.`);let n=1===this.normalizedDispatchGroup[1]&&1===this.normalizedDispatchGroup[2],s=n?`@builtin(global_invocation_id) global_id : vec3<u32>,
40    @builtin(workgroup_id) workgroup_id : vec3<u32>,
41    @builtin(local_invocation_index) local_idx : u32,
42    @builtin(local_invocation_id) local_id : vec3<u32>`:`@builtin(global_invocation_id) global_id : vec3<u32>,
43                                             @builtin(local_invocation_id) local_id : vec3<u32>,
44    @builtin(local_invocation_index) local_idx : u32,
45    @builtin(workgroup_id) workgroup_id : vec3<u32>,
46    @builtin(num_workgroups) num_workgroups : vec3<u32>`,o=n?`let global_idx = global_id.x;
47         let workgroup_index = workgroup_id.x;`:`let workgroup_index = workgroup_id.z * num_workgroups[0] * num_workgroups[1] +
48             workgroup_id.y * num_workgroups[0] + workgroup_id.x;
49         let global_idx = workgroup_index * ${r*i*a}u + local_idx;`;return`@compute @workgroup_size(${r}, ${i}, ${a})
50  fn main(${s}) {
51    ${o}
52  `}appendVariableUniforms(t){0!==t.rank&&(t.shape.startsWith("uniforms.")&&this.uniforms.push({name:t.shape.replace("uniforms.",""),type:"u32",length:t.rank}),t.strides.startsWith("uniforms.")&&this.uniforms.push({name:t.strides.replace("uniforms.",""),type:"u32",length:t.rank}))}declareVariable(t,r){if("internal"===t.usage)throw Error("cannot use internal variable with declareVariable(). use registerInternalVariables() instead.");this.variables.push(t),this.appendVariableUniforms(t);let i="input"===t.usage?"read":"read_write",a="atomicOutput"===t.usage?"atomic<i32>":t.type.storage;return`@group(0) @binding(${r}) var<storage, ${i}> ${t.name}: array<${a}>;`}declareVariables(...t){return t.map(t=>this.declareVariable(t,this.variableIndex++)).join(`
53`)}registerInternalVariable(t){if("internal"!==t.usage)throw Error("cannot use input or output variable with registerInternalVariable(). use declareVariables() instead.");this.internalVariables.push(t),this.appendVariableUniforms(t)}registerInternalVariables(...t){return t.forEach(t=>this.registerInternalVariable(t)),this}registerUniform(t,r,i=1){return this.uniforms.push({name:t,type:r,length:i}),this}registerUniforms(t){return this.uniforms=this.uniforms.concat(t),this}uniformDeclaration(){if(0===this.uniforms.length)return"";let t=[];for(let{name:r,type:i,length:a}of this.uniforms)if(a&&a>4)"f16"===i?t.push(`@align(16) ${r}:array<mat2x4<${i}>, ${Math.ceil(a/8)}>`):t.push(`${r}:array<vec4<${i}>, ${Math.ceil(a/4)}>`);else{let n=null==a||1===a?i:`vec${a}<${i}>`;t.push(`${r}:${n}`)}return`
54      struct Uniforms { ${t.join(", ")} };
55      @group(0) @binding(${this.variableIndex}) var<uniform> uniforms: Uniforms;`}get additionalImplementations(){return this.uniformDeclaration()+this.variables.map(t=>t.impl()).join(`
56`)+this.internalVariables.map(t=>t.impl()).join(`
57`)}get variablesInfo(){if(0!==this.uniforms.length)return this.uniforms.map(t=>[[12,10,1,6][["u32","f16","f32","i32"].indexOf(t.type)],t.length??1])}},tL=(t,r)=>new tB(t,r)}),nE=q(()=>{ng(),nv(),nk(),nC(),tU=(t,r)=>0!==r.length?r:[...Array(t).keys()].reverse(),tF=(t,r)=>{let i=t.dataType,a=t.dims.length,n=tU(a,r),s=((t,r)=>e8.sortBasedOnPerm(t,tU(t.length,r)))(t.dims,n),o=t.dims,l=s;if(a<2||((t,r)=>{let i=0;for(let a=0;a<t.length;
57++a)if(1!==r[t[a]]){if(t[a]<i)return!1;i=t[a]}return!0})(n,t.dims))return{name:"TransposeCopy",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(r/64/4)},programUniforms:[{type:12,data:Math.ceil(r/4)}]}},getShaderSource:t=>{let r=tR("input",i,o,4),a=tj("output",i,l,4);return`
58  ${t.registerUniform("output_size","u32").declareVariables(r,a)}
59  ${t.mainStart()}
60    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
61    output[global_idx] = input[global_idx];
62  }`}};let{newShape:u,newPerm:d}=((t,r)=>{let i=[],a=[];for(let n=0;n<t.length;++n)1!==t[n]&&i.push(t[n]),1!==t[r[n]]&&a.push(r[n]);return{newShape:i,newPerm:a}})(t.dims,n),c=e8.areEqual(d,[2,3,1]),h=e8.areEqual(d,[3,1,2]);return 2===u.length||c||h?(l=[(o=c?[u[0],u[1]*u[2]]:h?[u[0]*u[1],u[2]]:u)[1],o[0]],{name:"TransposeShared",shaderCache:{inputDependencies:["type"]},getRunData:()=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(l[1]/16),y:Math.ceil(l[0]/16)},programUniforms:[{type:12,data:r},...tT(o,l)]}},getShaderSource:t=>{let r=tR("a",i,o.length),a=tj("output",i,l.length);return`
63  ${t.registerUniform("output_size","u32").declareVariables(r,a)}
64  var<workgroup> tile : array<array<${a.type.value}, 17>, 16>;
65  ${t.mainStart([16,16,1])}
66    let stride = (uniforms.output_shape[1] - 1) / 16 + 1;
67    let workgroup_id_x = workgroup_index % stride;
68    let workgroup_id_y = workgroup_index / stride;
69    let input_col = workgroup_id_y * 16u + local_id.x;
70    let input_row = workgroup_id_x * 16u + local_id.y;
71    if (input_row < uniforms.a_shape[0] && input_col < uniforms.a_shape[1]) {
72      tile[local_id.y][local_id.x] = ${r.getByIndices(`${r.type.indices}(input_row, input_col)`)};
73    }
74    workgroupBarrier();
75
76    let output_col = workgroup_id_x * 16u + local_id.x;
77    let output_row = workgroup_id_y * 16u + local_id.y;
78    if (output_row < uniforms.output_shape[0] && output_col < uniforms.output_shape[1]) {
79      ${a.setByIndices(`${a.type.indices}(output_row, output_col)`,"tile[local_id.x][local_id.y]")}
80    }
81  }`}}):{name:"Transpose",shaderCache:{hint:`${r}`,inputDependencies:["rank"]},getRunData:()=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:[{type:12,data:r},...tT(o,l)]}},getShaderSource:t=>{let r=tR("a",i,o.length),s=tj("output",i,l.length);return`
82  ${t.registerUniform("output_size","u32").declareVariables(r,s)}
83
84  ${((t,r,i,a)=>{let n=`fn perm(i: ${a.type.indices}) -> ${i.type.indices} {
85    var a: ${i.type.indices};`;for(let i=0;i<r;++i)n+=`a[${t[i]}]=i[${i}];`;return n+"return a;}"})(n,a,r,s)}
86
87  ${t.mainStart()}
88    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
89
90    let indices = ${s.offsetToIndices("global_idx")};
91    let aIndices = perm(indices);
92
93    ${s.setByOffset("global_idx",r.getByIndices("aIndices"))}
94  }`}}},tq=(t,r)=>{((t,r)=>{if(!t||1!==t.length)throw Error("Transpose requires 1 input.");if(0!==r.length&&r.length!==t[0].dims.length)throw Error(`perm size ${r.length} does not match input rank ${t[0].dims.length}`)})(t.inputs,r.perm),t.compute(tF(t.inputs[0],r.perm))},tV=t=>t$({perm:t.perm})}),nT=q(()=>{ng(),nv(),nC(),nI(),nE(),tW={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate * candidate",logSumExp:"bestValue + exp(candidate)",l1:"bestValue + abs(candidate)",l2:"bestValue + candidate * candidate",logSum:"bestValue + candidate"},tH={max:"select(bestValue, candidate, candidate > bestValue)",min:"select(bestValue, candidate, candidate < bestValue)",mean:"bestValue + candidate",sum:"bestValue + candidate",prod:"bestValue * candidate",sumSquare:"bestValue + candidate",logSumExp:"bestValue + candidate",l1:"bestValue + candidate",l2:"bestValue + candidate",logSum:"bestValue + candidate"},tG={max:"_A[offset]",min:"_A[offset]",mean:"0",sum:"0",prod:"1",sumSquare:"
940",logSumExp:"0",l1:"0",l2:"0",logSum:"0"},tK={max:"bestValue",min:"bestValue",sum:"bestValue",prod:"bestValue",sumSquare:"bestValue",logSumExp:"log(bestValue)",l1:"bestValue",l2:"sqrt(bestValue)",logSum:"log(bestValue)"},tY=(t,r,i,a)=>{let n=1===t.inputs.length?i:t9(t.inputs,i),s=n.axes;0!==s.length||n.noopWithEmptyAxes||(s=t.inputs[0].dims.map((t,r)=>r));let o=e8.normalizeAxes(s,t.inputs[0].dims.length),l=o,u=t.inputs[0],d=((t,r)=>{let i=[];if(!((t,r)=>{for(let i=0;i<t.length;++i)if(t[t.length-i-1]!==r-1-i)return!1;return!0})(t,r)){for(let a=0;a<r;++a)-1===t.indexOf(a)&&i.push(a);t.forEach(t=>i.push(t))}return i})(l,t.inputs[0].dims.length);d.length>0&&(u=t.compute(tF(t.inputs[0],d),{inputs:[0],outputs:[-1]})[0],l=((t,r)=>{let i=[];for(let a=r-t;a<r;++a)i.push(a);return i})(l.length,u.dims.length));let[c,h]=((t,r)=>{let i=[],a=t.length;for(let n=0;n<a;n++)-1===r.indexOf(n)&&i.push(t[n]);return[i,r.map(r=>t[r])]})(u.dims,l),f=c;n.keepDims&&(f=((t,r)=>{let i=t.length+r.length,a=[],n=0;for(let s=0;s<i;s++)-1===r.indexOf(s)?a.push(t[n++]):a.push(1);return a})(c,o)),t.compute(((t,r,i,a,n,s,o)=>{let l=i[0].dims,u=e8.size(s),d=e8.size(o),c=tR("_A",i[0].dataType,l),h=tj("output",n,s),f=64;1===u&&(f=256);let p=`
95          var<workgroup> aBestValues : array<f32, ${f}>;
96       `;return{name:t,shaderCache:{hint:`${r};${f}`,inputDependencies:["type"]},getShaderSource:t=>`
97        ${t.registerUniform("reduceSize","u32").declareVariables(c,h)}
98        ${p}
99        fn DIV_CEIL(a : u32, b : u32) -> u32 {
100          return ((a - 1u) / b + 1u);
101         }
102         ${t.mainStart(f)}
103
104          let outputIndex = global_idx / ${f};
105          let offset = outputIndex * uniforms.reduceSize;
106
107          var bestValue = f32(${tG[a]});
108          let Length = uniforms.reduceSize;
109          for (var k = local_idx; k < Length; k = k + ${f}) {
110           let candidate = f32(${c.getByOffset("offset + k")});
111           bestValue = ${tW[a]};
112          }
113          aBestValues[local_idx] = bestValue;
114          workgroupBarrier();
115
116         var reduceSize = min(Length, ${f}u);
117         for (var currentSize = reduceSize / 2u; reduceSize > 1u;
118             currentSize = reduceSize / 2u) {
119           let interval = DIV_CEIL(reduceSize, 2u);
120           if (local_idx < currentSize) {
121            let candidate = aBestValues[local_idx + interval];
122            bestValue = ${tH[a]};
123            aBestValues[local_idx] = bestValue;
124           }
125           reduceSize = interval;
126           workgroupBarrier();
127         }
128
129         if (local_idx == 0u) {
130          ${h.setByOffset("outputIndex",`${"mean"===a?`${h.type.storage}(bestValue / f32(uniforms.reduceSize))`:`${h.type.storage}(${tK[a]})`}`)};
131         }
132        }`,getRunData:()=>({outputs:[{dims:s,dataType:n}],dispatchGroup:{x:u},programUniforms:[{type:12,data:d}]})}})(r,n.cacheKey,[u],a,t.inputs[0].dataType,f,h),{inputs:[u]})},tQ=(t,r)=>{tY(t,"ReduceMeanShared",r,"mean")},tX=(t,r)=>{tY(t,"ReduceL1Shared",r,"l1")},tZ=(t,r)=>{tY(t,"ReduceL2Shared",r,"l2")},tJ=(t,r)=>{tY(t,"ReduceLogSumExpShared",r,"logSumExp")},t1=(t,r)=>{tY(t,"ReduceMaxShared",r,"max")},t0=(t,r)=>{tY(t,"ReduceMinShared",r,"min")},t2=(t,r)=>{tY(t,"ReduceProdShared",r,"prod")},t3=(t,r)=>{tY(t,"ReduceSumShared",r,"sum")},t4=(t,r)=>{tY(t,"ReduceSumSquareShared",r,"sumSquare")},t8=(t,r)=>{tY(t,"ReduceLogSumShared",r,"logSum")}}),nI=q(()=>{ng(),nv(),nk(),nC(),nT(),t7=t=>{if(!t||0===t.length||t.length>2)throw Error("Reduce op requires 1 or 2 inputs.");if(2===t.length&&1!==t[1].dims.length)throw Error("Invalid axes input dims.")},t6=t=>["","",`var value = ${t.getByIndices("input_indices")};`,""],t5=(t,r,i,a,n,s,o=!1,l=!1)=>{let u=[],d=i[0].dims,c=d.length,h=e8.normalizeAxes(n,c),f=!l&&0===h.length;d.forEach((t,r)=>{f||h.indexOf(r)>=0?o&&u.push(1):u.push(t)});let p=u.length,m=e8.size(u);return{name:t,shaderCache:r,getShaderSource:t=>{let r=[],n=tR("_A",i[0].dataType,c),l=tj("output",s,p),u=a(n,l,h),m=u[2];for(let t=0,i=0;t<c;t++)f||h.indexOf(t)>=0?(o&&i++,m=`for(var j${t}: u32 = 0; j${t} < ${d[t]}; j${t}++) {
133                  ${u[2].includes("last_index")?`let last_index = j${t};`:""}
134                  ${n.indicesSet("input_indices",t,`j${t}`)}
135                  ${m}
136                }`):(r.push(`${n.indicesSet("input_indices",t,l.indicesGet("output_indices",
136i))};`),i++);return`
137
138        ${t.registerUniform("output_size","u32").declareVariables(n,l)}
139
140        ${t.mainStart()}
141          ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
142          var input_indices: ${n.type.indices};
143          let output_indices = ${l.offsetToIndices("global_idx")};
144
145          ${r.join(`
146`)}
147          ${u[0]}       // init ops for reduce max/min
148          ${u[1]}
149          ${m}
150          ${u[3]}
151          ${4===u.length?l.setByOffset("global_idx","value"):u.slice(4).join(`
152`)}
153        }`},getRunData:()=>({outputs:[{dims:u,dataType:s}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:[{type:12,data:m},...tT(d,u)]})}},t9=(t,r)=>{let i=[];return t[1].dims[0]>0&&t[1].getBigInt64Array().forEach(t=>i.push(Number(t))),t$({axes:i,keepDims:r.keepDims,noopWithEmptyAxes:r.noopWithEmptyAxes})},re=(t,r,i,a)=>{let n=t.inputs,s=1===n.length?i:t9(n,i);t.compute(t5(r,{hint:s.cacheKey,inputDependencies:["rank"]},[n[0]],s.noopWithEmptyAxes&&0===s.axes.length?t6:a,s.axes,n[0].dataType,s.keepDims,s.noopWithEmptyAxes),{inputs:[0]})},rt=(t,r,i)=>{if(0===r.length)return i;let a=1,n=1;for(let i=0;i<r.length;i++)-1===r.indexOf(i)?a*=t[i]:n*=t[i];return n<32&&a>1024},rr=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceMean",r,(r,i,a)=>{let n=1;for(let i=0;i<r.rank;i++)(a.indexOf(i)>=0||0===a.length)&&(n*=t.inputs[0].dims[i]);return["var sum = f32(0);","",`sum += f32(${r.getByIndices("input_indices")});`,`let value = ${i.type.value}(sum / ${n});`]})})(t,r):tQ(t,r)},ri=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceL1",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += abs(${t.getByIndices("input_indices")});`,""])})(t,r):tX(t,r)},ra=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceL2",r,(t,r)=>[`var t = ${r.type.value}(0); var value = ${r.type.value}(0);`,"",`t = ${t.getByIndices("input_indices")}; value += (t * t);`,"value = sqrt(value);"])})(t,r):tZ(t,r)},rn=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceLogSumExp",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += exp(${t.getByIndices("input_indices")});`,"value = log(value);"])})(t,r):tJ(t,r)},rs=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceMax",r,(t,r,i)=>{let a=[];for(let r=0;r<t.rank;r++)(i.indexOf(r)>=0||0===i.length)&&a.push(t.indicesSet("input_indices",r,0));return[`${a.join(`
154`)}`,`var value = ${t.getByIndices("input_indices")};`,`value = max(value, ${t.getByIndices("input_indices")});`,""]})})(t,r):t1(t,r)},ro=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceMin",r,(t,r,i)=>{let a=[];for(let r=0;r<t.rank;r++)(i.indexOf(r)>=0||0===i.length)&&a.push(`input_indices[${r}] = 0;`);return[`${a.join(`
155`)}`,`var value = ${t.getByIndices("input_indices")};`,`value = min(value, ${t.getByIndices("input_indices")});`,""]})})(t,r):t0(t,r)},rl=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceProd",r,(t,r)=>[`var value = ${r.type.storage}(1);`,"",`value *= ${t.getByIndices("input_indices")};`,""])})(t,r):t2(t,r)},ru=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceSum",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += ${t.getByIndices("input_indices")};`,""])})(t,r):t3(t,r)},rd=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceSumSquare",r,(t,r)=>[`var t = ${r.type.value}(0); var value = ${r.type.value}(0);`,"",`t = ${t.getByIndices("input_indices")}; value += t * t;`,""])})(t,r):t4(t,r)},rc=(t,r)=>{rt(t.inputs[0].dims,r.axes,r.noopWithEmptyAxes)?((t,r)=>{t7(t.inputs),re(t,"ReduceLogSum",r,(t,r)=>[`var value = ${r.type.storage}(0);`,"",`value += ${t.getByIndices("input_indices")};`,"value = log(value);"])})(t,r):t8(t,r)}}),nA=q(()=>{ng(),nk(),nI(),rh=t=>{if(!t||0===t.length||t.length>2)throw Error("ArgMinMaxOp op requires 1 or 2 inputs.");if(1!==t[0].dataType)throw Error("Invalid input type.")},rf=(t,r)=>{rh(t.inputs),t.compute(t5("ArgMin",{hint:r.cacheKey,inputDependencies:["rank"]},[t.inputs[0]],(t,i,a)=>{let n=[];for(let r=0;r<t.rank;r++)(a.indexOf(r)>=0||0===a.length)&&n.push(`input_indices[${r}] = 0;`);return[`${n.join(`
156`)}`,`var value = ${t.getByIndices("input_indices")};
157var best_index : i32 = 0;`,`if (${t.getByIndices("input_indices")} ${r.selectLastIndex>0?"<=":"<"} value) {
158         value = ${t.getByIndices("input_indices")};
159         best_index = i32(last_index);
160       }`,"",i.setByOffset("global_idx","best_index")]},[r.axis],7,r.keepDims),{inputs:[0]})},rp=(t,r)=>{rh(t.inputs),t.compute(t5("argMax",{hint:r.cacheKey,inputDependencies:["rank"]},[t.inputs[0]],(t,i,a)=>{let n=[];for(let r=0;r<t.rank;r++)(a.indexOf(r)>=0||0===a.length)&&n.push(`input_indices[${r}] = 0;`);return[`${n.join(`
161`)}`,`var value = ${t.getByIndices("input_indices")};
162var best_index : i32 = 0;`,`if (${t.getByIndices("input_indices")} ${r.selectLastIndex>0?">=":">"} value) {
163         value = ${t.getByIndices("input_indices")};
164         best_index = i32(last_index);
165       }`,"",i.setByOffset("global_idx","best_index")]},[r.axis],7,r.keepDims),{inputs:[0]})},rm=t=>t$(t)}),nN=q(()=>{ng(),nv(),n$(),nC(),rg=(t,r,i)=>r&&t?`
166      let total_sequence_length_input = u32(${r.getByOffset("0")});
167      let present_sequence_length = max(total_sequence_length_input, uniforms.past_sequence_length);
168      let is_subsequent_prompt: bool = sequence_length > 1 && sequence_length != total_sequence_length_input;
169      let is_first_prompt: bool = is_subsequent_prompt == false && sequence_length == total_sequence_length_input;
170      total_sequence_length = u32(${t?.getByOffset("batchIdx")}) + 1;
171      var past_sequence_length: u32 = 0;
172      if (is_first_prompt == false) {
173        past_sequence_length = total_sequence_length - sequence_length;
174      }
175       `:`
176    ${i?"let past_sequence_length = uniforms.past_sequence_length":""};
177    let present_sequence_length = total_sequence_length;
178    `,rb=(t,r,i,a,n,s,o,l,u,d,c,h)=>{let f=Math.min(t.outputCount,1+ +!!o+ +!!l),p=f>1?d.pastSequenceLength:0,m=p+d.kvSequenceLength,g=u&&e8.size(u.dims)>0?u:void 0,b=[r,i];f>1&&o&&e8.size(o.dims)>0&&b.push(o),g&&b.push(g),c&&b.push(c),h&&b.push(h);let y=t.compute(((t,r,i,a,n,s,o,l,u)=>
vendor: 5,313 bytes, lines 178-235
178{let d=o+s.kvSequenceLength,c=[s.batchSize,s.numHeads,s.sequenceLength,d],h=t>1&&a,f=s.kvNumHeads?s.kvNumHeads:s.numHeads,p=h?[s.batchSize,f,d,s.headSize]:void 0,m=s.nReps?s.nReps:1,g=0===s.scale?1/Math.sqrt(s.headSize):s.scale,b=tI(s.headSize),y=s.headSize/b,v={x:Math.ceil(d/12),y:Math.ceil(s.sequenceLength/12),z:s.batchSize*s.numHeads},_=[{type:12,data:s.sequenceLength},{type:12,data:y},{type:12,data:d},{type:12,data:s.numHeads},{type:12,data:s.headSize},{type:1,data:g},{type:12,data:o},{type:12,data:s.kvSequenceLength},{type:12,data:m}],w=h&&a&&e8.size(a.dims)>0,x=["type","type"];w&&x.push("type"),n&&x.push("type"),l&&x.push("type"),u&&x.push("type");let $=[{dims:c,dataType:r.dataType,gpuDataType:0}];return h&&$.push({dims:p,dataType:r.dataType,gpuDataType:0}),{name:"AttentionProbs",shaderCache:{hint:`${b};${void 0!==n};${void 0!==a};${t}`,inputDependencies:x},getRunData:()=>({outputs:$,dispatchGroup:v,programUniforms:_}),getShaderSource:t=>{let s=tR("q",r.dataType,r.dims,b),o=[s,tR("key",i.dataType,i.dims,b)];if(w){let t=tR("past_key",a.dataType,a.dims,b);o.push(t)}n&&o.push(tR("attention_bias",n.dataType,n.dims));let d=l?tR("seq_lens",l.dataType,l.dims):void 0;d&&o.push(d);let f=u?tR("total_sequence_length_input",u.dataType,u.dims):void 0;f&&o.push(f);let g=tj("output",r.dataType,c),y=[g];h&&y.push(tj("present_key",r.dataType,p,b));let v=tE(1,b);return`
179  const TILE_SIZE = 12u;
180
181  var<workgroup> tileQ: array<${s.type.storage}, 144>;
182  var<workgroup> tileK: array<${s.type.storage}, 144>;
183  ${t.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"alpha",type:"f32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}]).declareVariables(...o,...y)}
184  ${t.mainStart([12,12,1])}
185    // x holds the N and y holds the M
186    let headIdx = workgroup_id.z % uniforms.num_heads;
187    let kvHeadIdx = ${1===m?"headIdx":"headIdx / uniforms.n_reps"};
188    let kv_num_heads = ${1===m?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"};
189    let batchIdx = workgroup_id.z / uniforms.num_heads;
190    let m = workgroup_id.y * TILE_SIZE;
191    let n = workgroup_id.x * TILE_SIZE;
192    let sequence_length = uniforms.M;
193    var total_sequence_length = uniforms.N;
194    ${rg(d,f,!0)}
195    let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx;
196    let qOffset = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;
197    ${w&&h?"let pastKeyOffset = absKvHeadIdx * uniforms.past_sequence_length * uniforms.K;":""};
198    let kOffset = absKvHeadIdx * uniforms.kv_sequence_length * uniforms.K;
199    ${h?"let presentKeyOffset = absKvHeadIdx * uniforms.N * uniforms.K;":""}
200    var value = ${v}(0);
201    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
202      if (global_id.y < uniforms.M && w + local_id.x < uniforms.K) {
203        tileQ[TILE_SIZE * local_id.y + local_id.x] = q[qOffset + local_id.y * uniforms.K + w + local_id.x];
204      }
205      if (n + local_id.y < uniforms.N && w + local_id.x < uniforms.K) {
206        var idx = TILE_SIZE * local_id.y + local_id.x;
207      ${w&&h?`
208              if (n + local_id.y < past_sequence_length) {
209                tileK[idx] = past_key[pastKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x];
210              } else if (n + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {
211                tileK[idx] = key[kOffset + (n + local_id.y - past_sequence_length) * uniforms.K + w + local_id.x];
212              }`:`
213          if (n + local_id.y < uniforms.kv_sequence_length) {
214            tileK[idx] = key[kOffset + (n + local_id.y) * uniforms.K + w + local_id.x];
215          }`}
216      ${h?`if (n + local_id.y < present_sequence_length) {
217        present_key[presentKeyOffset + (n + local_id.y) * uniforms.K + w + local_id.x] = tileK[idx];
218      }`:""}
219      }
220      workgroupBarrier();
221
222      for (var k: u32 = 0u; k < TILE_SIZE && w+k < uniforms.K; k++) {
223          value += ${v}(tileQ[TILE_SIZE * local_id.y + k] * tileK[TILE_SIZE * local_id.x + k]);
224      }
225
226      workgroupBarrier();
227    }
228
229    if (global_id.y < uniforms.M && global_id.x < total_sequence_length) {
230      let headOffset = workgroup_id.z * uniforms.M * uniforms.N;
231      let outputIdx = headOffset + global_id.y * uniforms.N + global_id.x;
232      var sum: f32 = ${(()=>{switch(b){case 1:return"value";case 2:return"value.x + value.y";case 4:return"value.x + value.y + value.z + value.w";default:throw Error(`Unsupported components: ${b}`)}})()};
233        output[outputIdx] = ${g.type.value} (sum * uniforms.alpha) + ${n?"attention_bias[outputIdx]":"0.0"};
234    }
235  }`}}})(f,r,i,o,g,d,p,c,h),{inputs:b,outputs:f>1?[-1,1]:[-1]})[0];t.compute(((t,r,i,a,n,s,o,l)=>{let u=tI(o?1:s),d=64,c=s/u;c<64&&(d=32);let h=[{type:12,data:r},{type:12,data:i},{type:12,data:a},{type:12,data:n},{type:12,data:c},{type:12,data:Math.ceil(s/u/d)}],f=tC(t.dataType,u),p=tE(1,u),m=["type"];return o&&m.push("type"),l&&m.push("type"),{name:"AttentionProbsSoftmax",shaderCache:{hint:`${d};${f};${u}`,inputDependencies:m},getShaderSource:r=>{let i=tj("x",t.dataType,t.dims,u),a=[i],n=o?tR("seq_lens",o.dataType,o.dims):void 0;n&&a.push(n);let s=l?tR("total_sequence_length_input",l.dataType,l.dims):void 0;s&&a.push(s);let c=tE(t.dataType);return`
236  var<workgroup> thread_max: array<f32, ${d}>;
237  var<workgroup> thread_sum: array<f32, ${d}>;
238  ${r.registerUniforms([{name:"batch_size",type:"u32"},{name:"num_heads",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"sequence_length",type:"u32"},{name:"total_sequence_length",type:"u32"},{name:"elements_per_thread",type:"u32"}]).declareVariables(...a)}
239  ${r.mainStart([d,1,1])}
240    let batchIdx = workgroup_id.z / uniforms.num_heads;
241    let headIdx = workgroup_id.z % uniforms.num_heads;
242    let sequence_length = uniforms.sequence_length;
243    var total_sequence_length = uniforms.total_sequence_length;
244    ${rg(n,s,!1)}
245    let local_offset = local_idx * uniforms.elements_per_thread;
246    let offset = (global_idx / ${d}) * uniforms.total_sequence_length + local_offset;
247    let seq_causal_length = ${o?"u32(past_sequence_length + workgroup_id.y + 1)":"total_sequence_length"};
248    var thread_max_vector = ${p}(-3.402823e+38f);
249    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
250      thread_max_vector = max(${p}(x[offset + i]), thread_max_vector);
251    }
252    thread_max[local_idx] = ${(()=>{switch(u){case 1:return"thread_max_vector";case 2:return"max(thread_max_vector.x, thread_max_vector.y)";case 4:return"max(max(thread_max_vector.x, thread_max_vector.y), max(thread_max_vector.z, thread_max_vector.w))";default:throw Error(`Unsupported components: ${u}`)}})()};
253    workgroupBarrier();
254
255    var max_value =  f32(-3.402823e+38f);
256    for (var i = 0u; i < ${d}; i++) {
257      max_value = max(thread_max[i], max_value);
258    }
259
260    var sum_vector = ${p}(0);
261    for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
262      sum_vector += exp(${p}(x[offset + i]) - max_value);
263    }
264    thread_sum[local_idx] = ${(()=>{switch(u){case 1:return"sum_vector";case 2:return"sum_vector.x + sum_vector.y";case 4:return"sum_vector.x + sum_vector.y + sum_vector.z + sum_vector.w";default:throw Error(`Unsupported components: ${u}`)}})()};
265    workgroupBarrier();
266
267    var sum: f32 = 0;
268    for (var i = 0u; i < ${d}; i++) {
269      sum += thread_sum[i];
270    }
271
272    if (sum == 0) {
273      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
274        x[offset + i] = ${i.type.value}(${c}(1.0) / ${c}(seq_causal_length));
275      }
276    } else {
277      for (var i: u32 = 0; i < uniforms.elements_per_thread && i + local_offset < seq_causal_length; i++) {
278        var f32input = ${p}(x[offset + i]);
279        x[offset + i] = ${i.type.value}(exp(f32input - max_value) / sum);
280      }
281    }
282      ${o?`
283        for (var total_seq_id: u32 = seq_causal_length; total_seq_id + local_offset < uniforms.total_sequence_length; total_seq_id++) {
284          x[offset + total_seq_id] = ${i.type.value}(${c}(0));
285        }`:""};
286  }`},getRunData:()=>({outputs:[],dispatchGroup:{x:1,y:n,z:r*i},programUniforms:h})}})(y,d.batchSize,d.numHeads,p,d.sequenceLength,m,c,h),{inputs:c&&h?[y,c,h]:[y],outputs:[]});let v=[y,a];f>1&&l&&e8.size(l.dims)>0&&v.push(l),c&&v.push(c),h&&v.push(h),t.compute(((t,r,i,a,n,s,o,l)=>{let u=s+n.kvSequenceLength,d=n.nReps?n.nReps:1,c=n.vHiddenSize*d,h=t>1&&a,f=n.kvNumHeads?n.kvNumHeads:n.numHeads,p=h?[n.batchSize,f,u,n.headSize]:void 0,m=[n.batchSize,n.sequenceLength,c],g={x:Math.ceil(n.vHeadSize/12),y:Math.ceil(n.sequenceLength/12),z:n.batchSize*n.numHeads},b=[{type:12,data:n.sequenceLength},{type:12,data:u},{type:12,data:n.vHeadSize},{type:12,data:n.numHeads},{type:12,data:n.headSize},{type:12,data:c},{type:12,data:s},{type:12,data:n.kvSequenceLength},{type:12,data:d}],y=h&&a&&e8.size(a.dims)>0,v=["type","type"];y&&v.push("type"),o&&v.push("type"),l&&v.push("type");let _=[{dims:m,dataType:r.dataType,gpuDataType:0}];return h&&_.push({dims:p,dataType:r.dataType,gpuDataType:0}),{name:"AttentionScore",shaderCache:{hint:`${void 0!==a};${t}`,inputDependencies:v},getRunData:()=>({outputs:_,dispatchGroup:g,programUniforms:b}),getShaderSource:t=>{let n=tR("probs",r.dataType,r.dims),s=[n,tR("v",i.dataType,i.dims)];y&&s.push(tR("past_value",a.dataType,a.dims));let u=o?tR("seq_lens",o.dataType,o.dims):void 0;o&&s.push(u);let c=l?tR("total_sequence_length_input",l.dataType,l.dims):void 0;l&&s.push(c);let f=[tj("output",r.dataType,m)];return h&&f.push(tj("present_value",r.dataType,p)),`
287  const TILE_SIZE = 12u;
288  var<workgroup> tileQ: array<${n.type.value}, 144>;
289  var<workgroup> tileV: array<${n.type.value}, 144>;
290  ${t.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"v_hidden_size",type:"u32"},{name:"past_sequence_length",type:"u32"},{name:"kv_sequence_length",type:"u32"},{name:"n_reps",type:"u32"}]).declareVariables(...s,...f)}
291  ${t.mainStart([12,12,1])}
292   let headIdx = workgroup_id.z % uniforms.num_heads;
293   let batchIdx = workgroup_id.z / uniforms.num_heads;
294   let kvHeadIdx = ${1===d?"headIdx":"headIdx / uniforms.n_reps"};
295   let kv_num_heads = ${1===d?"uniforms.num_heads":"uniforms.num_heads / uniforms.n_reps"};
296   let m = global_id.y;
297   let n = global_id.x;
298   let sequence_length = uniforms.M;
299   var total_sequence_length = uniforms.K;
300   ${rg(u,c,!0)}
301   let offsetA = workgroup_id.z * uniforms.M * uniforms.K + m * uniforms.K;
302   let absKvHeadIdx = batchIdx * kv_num_heads + kvHeadIdx; // kvHeadIdx is relative to the batch
303   ${y&&h?"let pastValueOffset = absKvHeadIdx * uniforms.N * uniforms.past_sequence_length + n;":""};
304   let vOffset = absKvHeadIdx * uniforms.N * uniforms.kv_sequence_length + n;
305   ${h?"let presentValueOffset = absKvHeadIdx * uniforms.N * uniforms.K + n;":""}
306   var value = ${n.type.storage}(0);
307   for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
308      if (m < uniforms.M && w + local_id.x < uniforms.K) {
309        tileQ[TILE_SIZE * local_id.y + local_id.x] = probs[offsetA + w + local_id.x];
310      }
311      if (n < uniforms.N && w + local_id.y < uniforms.K) {
312        var idx = TILE_SIZE * local_id.y + local_id.x;
313        ${y&&h?`
314        if (w + local_id.y < past_sequence_length) {
315          tileV[idx] = past_value[pastValueOffset + (w + local_id.y) * uniforms.N];
316        } else if (w + local_id.y - past_sequence_length < uniforms.kv_sequence_length) {
317          tileV[idx] = v[vOffset + (w + local_id.y - past_sequence_length) * uniforms.N];
318        }
319      `:`
320            if (w + local_id.y < uniforms.kv_sequence_length) {
321              tileV[idx] = v[vOffset + (w + local_id.y) * uniforms.N];
322            }`}
323        ${h?`
324            if (w + local_id.y < present_sequence_length) {
325          present_value[presentValueOffset + (w + local_id.y) * uniforms.N] = tileV[idx];
326        }`:""}
327      }
328     workgroupBarrier();
329     for (var k: u32 = 0u; k < TILE_SIZE && w+k < total_sequence_length; k++) {
330       value += tileQ[TILE_SIZE * local_id.y + k] * tileV[TILE_SIZE * k + local_id.x];
331     }
332     workgroupBarrier();
333   }
334
335   // we need to transpose output from BNSH_v to BSND_v
336   if (m < uniforms.M && n < uniforms.N) {
337     let outputIdx = batchIdx * uniforms.M * uniforms.v_hidden_size + m * uniforms.v_hidden_size
338       + headIdx * uniforms.N + n;
339     output[outputIdx] = value;
340   }
341  }`}}})(f,y,a,l,d,p,c,h),{inputs:v,outputs:f>1?[0,2]:[0]})},ry=(t,r)=>{let i=((t,r)=>{let i=t[0],a=t[1],n=t[2],s=t[3],o=t[4],l=t[5];if(o&&l)throw Error("Attention cannot have both past and attention_bias");if(3!==i.dims.length)throw Error('Input "input" must have 3 dimensions');
341let u=i.dims[0],d=i.dims[1],c=i.dims[2];if(1!==n.dims.length)throw Error('Input "bias" is expected to have 1 dimensions');if(2!==a.dims.length)throw Error('Input "weights" is expected to have 2 dimensions');if(a.dims[0]!==c)throw Error("Input 1 dimension 0 should have same length as dimension 2 of input 0");if(n.dims[0]!==a.dims[1])throw Error('Input "bias" dimension 0 should have same length as dimension 1 of input "weights"');let h=n.dims[0]/3,f=h,p=f;if(r.qkvHiddenSizes.length>0){if(3!==r.qkvHiddenSizes.length)throw Error("qkv_hidden_sizes attribute should have 3 elements");for(let t of r.qkvHiddenSizes)if(t%r.numHeads!=0)throw Error("qkv_hidden_sizes should be divisible by num_heads");h=r.qkvHiddenSizes[0],f=r.qkvHiddenSizes[1],p=r.qkvHiddenSizes[2]}if(h!==f)throw Error("qkv_hidden_sizes first element should be same as the second");if(n.dims[0]!==h+f+p)throw Error('Input "bias" dimension 0 should have same length as sum of Q/K/V hidden sizes');let m=0;if(o){if(f!==p)throw Error('Input "past" expect k_hidden_size == v_hidden_size');if(5!==o.dims.length)throw Error('Input "past" must have 5 dimensions');if(2!==o.dims[0])throw Error('Input "past" first dimension must be 2');if(o.dims[1]!==u)throw Error('Input "past" second dimension must be batch_size');if(o.dims[2]!==r.numHeads)throw Error('Input "past" third dimension must be num_heads');if(o.dims[4]!==f/r.numHeads)throw Error('Input "past" fifth dimension must be k_hidden_size / num_heads');r.pastPresentShareBuffer||(m=o.dims[3])}let g=d+m;if(s)throw Error("Mask not supported");if(o)throw Error("past is not supported");if(l){if(4!==l.dims.length)throw Error('Input "attention_bias" must have 4 dimensions');if(l.dims[0]!==u||l.dims[1]!==r.numHeads||l.dims[2]!==d||l.dims[3]!==g)throw Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:u,sequenceLength:d,pastSequenceLength:m,kvSequenceLength:d,totalSequenceLength:g,maxSequenceLength:-1,inputHiddenSize:c,hiddenSize:h,vHiddenSize:p,headSize:Math.floor(h/r.numHeads),vHeadSize:Math.floor(p/r.numHeads),numHeads:r.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:r.maskFilterValue,maskType:0,scale:r.scale,broadcastResPosBias:!1,passPastInKv:!1,qkvFormat:1}})(t.inputs,r),[a,n,s]=((t,r)=>{let i=[r.batchSize,r.numHeads,r.sequenceLength,r.headSize],a=r.sequenceLength,n=r.inputHiddenSize,s=r.headSize,o={x:Math.ceil(r.headSize/12),y:Math.ceil(r.sequenceLength/12),z:r.batchSize*r.numHeads},l=[t.inputs[0],t.inputs[1],t.inputs[2]],u=[{type:12,data:a},{type:12,data:n},{type:12,data:s},{type:12,data:r.numHeads},{type:12,data:r.headSize},{type:12,data:r.hiddenSize},{type:12,data:r.hiddenSize+r.hiddenSize+r.vHiddenSize}];return t.compute({name:"AttentionPrepare",shaderCache:{inputDependencies:["type","type","type"]},getRunData:()=>({outputs:[{dims:i,dataType:t.inputs[0].dataType,gpuDataType:0},{dims:i,dataType:t.inputs[0].dataType,gpuDataType:0},{dims:i,dataType:t.inputs[0].dataType,gpuDataType:0}],dispatchGroup:o,programUniforms:u}),getShaderSource:t=>{let r=tj("output_q",l[0].dataType,i),a=tj("output_k",l[0].dataType,i),n=tj("output_v",l[0].dataType,i),s=tR("input",l[0].dataType,l[0].dims),o=tR("weight",l[1].dataType,l[1].dims),u=tR("bias",l[2].dataType,l[2].dims),d=s.type.storage;return`
342  const TILE_SIZE = 12u;
343  var<workgroup> tileInput: array<${d}, 144>;
344  var<workgroup> tileWeightQ: array<${d}, 144>;
345  var<workgroup> tileWeightK: array<${d}, 144>;
346  var<workgroup> tileWeightV: array<${d}, 144>;
347  ${t.registerUniforms([{name:"M",type:"u32"},{name:"K",type:"u32"},{name:"N",type:"u32"},{name:"num_heads",type:"u32"},{name:"head_size",type:"u32"},{name:"hidden_size",type:"u32"},{name:"ldb",type:"u32"}]).declareVariables(s,o,u,r,a,n)}
348  ${t.mainStart([12,12,1])}
349    let batchIndex = workgroup_id.z / uniforms.num_heads;
350    let headNumber = workgroup_id.z % uniforms.num_heads;
351    let m = global_id.y;
352    let n = global_id.x;
353
354    let inputOffset = batchIndex * (uniforms.M * uniforms.K) + m * uniforms.K;
355    let biasOffsetQ = headNumber * uniforms.head_size;
356    let biasOffsetK = uniforms.hidden_size + biasOffsetQ;
357    let biasOffsetV = uniforms.hidden_size + biasOffsetK;
358
359    var valueQ = ${d}(0);
360    var valueK = ${d}(0);
361    var valueV = ${d}(0);
362    for (var w: u32 = 0u; w < uniforms.K; w += TILE_SIZE) {
363      if (m < uniforms.M && w + local_id.x < uniforms.K) {
364        tileInput[TILE_SIZE * local_id.y + local_id.x] = input[inputOffset + w + local_id.x];
365      }
366      if (n < uniforms.N && w + local_id.y < uniforms.K) {
367        let offset = n + (w + local_id.y) * uniforms.ldb;
368        tileWeightQ[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetQ + offset];
369        tileWeightK[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetK + offset];
370        tileWeightV[TILE_SIZE * local_id.y + local_id.x] = weight[biasOffsetV + offset];
371      }
372      workgroupBarrier();
373      for (var k: u32 = 0u; k<TILE_SIZE && w+k < uniforms.K; k++) {
374        let inputTileOffset = TILE_SIZE * local_id.y + k;
375        let weightTileOffset = TILE_SIZE * k + local_id.x;
376        valueQ += tileInput[inputTileOffset] * tileWeightQ[weightTileOffset];
377        valueK += tileInput[inputTileOffset] * tileWeightK[weightTileOffset];
378        valueV += tileInput[inputTileOffset] * tileWeightV[weightTileOffset];
379      }
380
381      workgroupBarrier();
382    }
383
384    let headOffset = (m * uniforms.N + n) % uniforms.head_size;
385    valueQ += bias[headOffset + biasOffsetQ];
386    valueK += bias[headOffset + biasOffsetK];
387    valueV += bias[headOffset + biasOffsetV];
388
389    let offset = workgroup_id.z * uniforms.M * uniforms.N;
390    if (m < uniforms.M && n < uniforms.N) {
391      let outputIdx = offset + m * uniforms.N + n;
392      output_q[outputIdx] = valueQ;
393      output_k[outputIdx] = valueK;
394      output_v[outputIdx] = valueV;
395    }
396  }`}},{inputs:l,outputs:[-1,-1,-1]})})(t,i);return rb(t,a,n,s,t.inputs[4],void 0,void 0,void 0,t.inputs[5],i)}}),nO=q(()=>{ed(),ng(),nv(),nk(),nC(),rv=(t,r)=>{let i,{inputs:a,outputCount:n}=t,s=(i={...r,outputCount:n},t$(i));if(h.webgpu.validateInputContent&&((t,r)=>{if(!t||5!==t.length)throw Error("BatchNormalization requires 5 inputs");let i=(t,r,i)=>{let a=r.length;if(a!==t.length)throw Error(`${i}: num dimensions != ${a}`);r.forEach((r,a)=>{if(r!==t[a])throw Error(`${i}: dim[${a}] do not match`)})};if(t[0].dims.length>1){let a="NHWC"===r.format?r.spatial?t[0].dims.slice(-1):t[0].dims.slice(-1).concat(t[0].dims.slice(1,t[0].dims.length-1)):t[0].dims.slice(1,r.spatial?2:void 0);i(t[1].dims,a,"Invalid input scale"),i(t[2].dims,a,"Invalid input B"),i(t[3].dims,a,"Invalid input mean"),i(t[4].dims,a,"Invalid input var")}else i(t[1].dims,[1],"Invalid input scale"),i(t[2].dims,[1],"Invalid input B"),i(t[3].dims,[1],"Invalid input mean"),i(t[4].dims,[1],"Invalid input var")})(a,s),r.trainingMode)throw Error("BatchNormalization trainingMode is not supported yet.");t.compute(((t,r)=>{let{epsilon:i,spatial:a,format:n}=r,s=t[0].dims,o=a?tI(s[s.length-1]):1,l="NHWC"===n&&s.length>1?o:1,u=e8.size(s)/o,d=a?s.length:s,c=tR("x",t[0].dataType,t[0].dims,o),h=tR("scale",t[1].dataType,t[1].dims,l),f=tR("bias",t[2].dataType,t[2].dims,l),p=tR("inputMean",t[3].dataType,t[3].dims,l),m=tR("inputVar",t[4].dataType,t[4].dims,l),g=tj("y",t[0].dataType,d,o);return{name:"BatchNormalization",shaderCache:{hint:`${r.epsilon}_${r.format}_${a}_${o}`,inputDependencies:a?["rank","type","type","type","type"]:void 0},getShaderSource:t=>`
397  const epsilon = ${i};
398  ${t.registerUniform("outputSize","u32").declareVariables(c,h,f,p,m,g)}
399  ${t.mainStart()}
400  ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
401    var outputIndices = ${g.offsetToIndices(`global_idx * ${o}`)};
402    ${(()=>{let t="";if(a)t=`let cOffset = ${1===s.length?"0u":"NHWC"===n?`outputIndices[${s.length-1}] / ${o}`:"outputIndices[1]"};`;else if("NCHW"===n)t=`
403            ${g.indicesSet("outputIndices","0","0")}
404            let cOffset = ${g.indicesToOffset("outputIndices")};`;else{t=`var cIndices = ${h.type.indices}(0);
405                       cIndices[0] = outputIndices[${s.length-1}];`;for(let r=1;r<h.rank;r++)t+=`cIndices[${r}] = outputIndices[${r}];`;t+=`let cOffset = ${h.indicesToOffset("cIndices")};`}return t})()}
406    let scale = ${h.getByOffset("cOffset")};
407    let bias = ${f.getByOffset("cOffset")};
408    let inputMean = ${p.getByOffset("cOffset")};
409    let inputVar = ${m.getByOffset("cOffset")};
410    let x = ${c.getByOffset("global_idx")};
411    let value = (x - inputMean) * inverseSqrt(inputVar + epsilon) * scale + bias;
412    ${g.setByOffset("global_idx","value")}
413  }`,getRunData:()=>({outputs:[{dims:t[0].dims,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:a?[{type:12,data:u},...tT(s)]:[{type:12,data:u}]})}})(a,s))}}),nM=q(()=>{nv(),nC(),r_=t=>{(t=>{if(3!==t[0].dims.length)throw Error("input should have 3 dimensions");if(![320,640,1280].includes(t[0].dims[2]))throw Error("number of channels should be 320, 640 or 1280");if(1!==t[1].dims.length)throw Error("bias is expected to have 1 dimensions");if(t[0].dims[2]!==t[1].dims[0])throw Error("last dimension of input and bias are not the same")}
413)(t.inputs),t.compute((t=>{let r=t[0].dims,i=t[0].dims[2],a=e8.size(r)/4,n=t[0].dataType,s=tR("input",n,r,4),o=tR("bias",n,[i],4),l=tR("residual",n,r,4),u=tj("output",n,r,4);return{name:"BiasAdd",getRunData:()=>({outputs:[{dims:r,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(a/64)}}),getShaderSource:t=>`
414  const channels = ${i}u / 4;
415  ${t.declareVariables(s,o,l,u)}
416
417  ${t.mainStart()}
418    ${t.guardAgainstOutOfBoundsWorkgroupSizes(a)}
419    let value = ${s.getByOffset("global_idx")}
420      + ${o.getByOffset("global_idx % channels")} + ${l.getByOffset("global_idx")};
421    ${u.setByOffset("global_idx","value")}
422  }`}})(t.inputs))}}),nP=q(()=>{ng(),nv(),nk(),nC(),rw=(t,r,i,a,n,s=t.dataType,o,l)=>{let u=[{type:12,data:Math.ceil(e8.size(t.dims)/4)}];return o&&u.push(...o),{name:r,shaderCache:{hint:n,inputDependencies:["type"]},getShaderSource:r=>((t,r,i,a,n,s,o)=>{let l=Math.ceil(r/4),u="";u="string"==typeof n?`${n}(a)`:n("a");let d=tR("inputData",i,[l],4),c=tj("outputData",a,[l],4),h=[{name:"vec_size",type:"u32"}];return o&&h.push(...o),`
423      ${t.registerUniforms(h).declareVariables(d,c)}
424
425  ${s??""}
426
427  ${t.mainStart()}
428    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
429
430    let a = ${d.getByOffset("global_idx")};
431    ${c.setByOffset("global_idx",u)}
432  }`})(r,e8.size(t.dims),t.dataType,s,i,a,l),getRunData:r=>({outputs:[{dims:t.dims,dataType:s}],dispatchGroup:{x:Math.ceil(e8.size(r[0].dims)/64/4)},programUniforms:u})}},rx=t=>{t.compute(rw(t.inputs[0],"Abs","abs"))},r$=t=>{t.compute(rw(t.inputs[0],"Acos","acos"))},rS=t=>{t.compute(rw(t.inputs[0],"Acosh","acosh"))},rk=t=>{t.compute(rw(t.inputs[0],"Asin","asin"))},rC=t=>{t.compute(rw(t.inputs[0],"Asinh","asinh"))},rE=t=>{t.compute(rw(t.inputs[0],"Atan","atan"))},rT=t=>{t.compute(rw(t.inputs[0],"Atanh","atanh"))},rI=t=>t$(t),rA=(t,r)=>{let i;switch(r.to){case 10:i="vec4<f16>";break;case 1:i="vec4<f32>";break;case 12:i="vec4<u32>";break;case 6:i="vec4<i32>";break;case 9:i="vec4<bool>";break;default:throw RangeError(`not supported type (specified in attribute 'to' from 'Cast' operator): ${r.to}`)}t.compute(rw(t.inputs[0],"Cast",i,void 0,r.cacheKey,r.to))},rN=(t,r)=>{let i=r||(t=>{let r,i,a=t.length>=2&&0!==t[1].data,n=t.length>=3&&0!==t[2].data;switch(t[0].dataType){case 1:r=a?t[1].getFloat32Array()[0]:-34028234663852886e22,i=n?t[2].getFloat32Array()[0]:34028234663852886e22;break;case 10:r=a?t[1].getUint16Array()[0]:64511,i=n?t[2].getUint16Array()[0]:31743;break;default:throw Error("Unsupport data type")}return t$({min:r,max:i})})(t.inputs),a=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Clip",t=>`clamp(${t}, vec4<${a}>(uniforms.min), vec4<${a}>(uniforms.max))`,void 0,i.cacheKey,void 0,[{type:t.inputs[0].dataType,data:i.min},{type:t.inputs[0].dataType,data:i.max}],[{name:"min",type:a},{name:"max",type:a}]),{inputs:[0]})},rO=t=>{t.compute(rw(t.inputs[0],"Ceil","ceil"))},rM=t=>{t.compute(rw(t.inputs[0],"Cos","cos"))},rP=t=>{t.compute(rw(t.inputs[0],"Cosh","cosh"))},rR=t=>t$(t),rj=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Elu",t=>`elu_vf32(${t})`,`
433  const elu_alpha_ = ${i}(${r.alpha});
434
435  fn elu_f32(a: ${i}) -> ${i} {
436  return select((exp(a) - 1.0) * elu_alpha_, a, a >= 0.0);
437  }
438
439  fn elu_vf32(v: vec4<${i}>) -> vec4<${i}> {
440  return vec4(elu_f32(v.x), elu_f32(v.y), elu_f32(v.z), elu_f32(v.w));
441  }`,r.cacheKey))},rz=(t="f32")=>`
442const r0: ${t} = 0.3275911;
443const r1: ${t} = 0.254829592;
444const r2: ${t} = -0.284496736;
445const r3: ${t} = 1.421413741;
446const r4: ${t} = -1.453152027;
447const r5: ${t} = 1.061405429;
448
449fn erf_vf32(v: vec4<${t}>) -> vec4<${t}> {
450  let absv = abs(v);
451  let x = 1.0 / (1.0 + r0 * absv);
452  return sign(v) * (1.0 - ((((r5 * x + r4) * x + r3) * x + r2) * x + r1) * x * exp(-absv * absv));
453}`,rD=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Erf",t=>`erf_vf32(${t})`,rz(r)))},rB=t=>{t.compute(rw(t.inputs[0],"Exp","exp"))},rL=t=>{t.compute(rw(t.inputs[0],"Floor","floor"))},rU=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Gelu",t=>`0.5 * ${t} * (1.0 + erf_vf32(${t} * 0.7071067811865475))`,rz(r)))},rF=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"LeakyRelu",t=>
vendor: 1,657 bytes, lines 453-461
453`select(leaky_relu_alpha_ * ${t}, ${t}, ${t} >= vec4<${i}>(0.0))`,`const leaky_relu_alpha_ = ${i}(${r.alpha});`,r.cacheKey))},rq=t=>{t.compute(rw(t.inputs[0],"Not",t=>`!${t}`))},rV=t=>{t.compute(rw(t.inputs[0],"Neg",t=>`-${t}`))},rW=t=>{t.compute(rw(t.inputs[0],"Reciprocal",t=>`1.0/${t}`))},rH=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"Relu",t=>`select(vec4<${r}>(0.0), ${t}, ${t} > vec4<${r}>(0.0))`))},rG=t=>{t.compute(rw(t.inputs[0],"Sigmoid",t=>`(1.0 / (1.0 + exp(-${t})))`))},rK=t=>t$(t),rY=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"HardSigmoid",t=>`max(vec4<${i}>(0.0), min(vec4<${i}>(1.0), ${r.alpha} * ${t} + vec4<${i}>(${r.beta})))`,void 0,r.cacheKey))},rQ=t=>{t.compute(rw(t.inputs[0],"Sin","sin"))},rX=t=>{t.compute(rw(t.inputs[0],"Sinh","sinh"))},rZ=t=>{t.compute(rw(t.inputs[0],"Sqrt","sqrt"))},rJ=t=>{t.compute(rw(t.inputs[0],"Tan","tan"))},r1=t=>`sign(${t}) * (1 - exp(-2 * abs(${t}))) / (1 + exp(-2 * abs(${t})))`,r0=t=>{t.compute(rw(t.inputs[0],"Tanh",r1))},r2=(t="f32")=>`
454const fast_gelu_a: ${t} = 0.5;
455const fast_gelu_b: ${t} = 0.7978845608028654;
456const fast_gelu_c: ${t} = 0.035677408136300125;
457
458fn tanh_v(v: vec4<${t}>) -> vec4<${t}> {
459  return ${r1("v")};
460}
461`,r3=t=>`(fast_gelu_a + fast_gelu_a * tanh_v(${t} * (fast_gelu_c * ${t} * ${t} + fast_gelu_b))) * ${t}`,r4=t=>{let r=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"FastGelu",r3,r2(r),void 0,t.inputs[0].dataType))},r8=(t,r)=>{let i=tE(t.inputs[0].dataType);return t.compute(rw(t.inputs[0],"ThresholdedRelu",t=>`select(vec4<${i}>(0.0), ${t}, ${t} > thresholded_relu_alpha_)`,`const thresholded_relu_alpha_ = vec4<${i}>(${r.alpha});
461`,r.cacheKey)),0},r7=t=>{t.compute(rw(t.inputs[0],"Log","log"))},r6=t=>`quick_gelu_impl(${t})`,r5=(t,r)=>{let i=tE(t.inputs[0].dataType);t.compute(rw(t.inputs[0],"QuickGelu",r6,((t,r)=>`
462const alpha = vec4<${t}>(${r});
463const one = ${t}(1.0);
464const zero = ${t}(0.0);
465
466fn quick_gelu_impl(x: vec4<${t}>) -> vec4<${t}> {
467  let v = x *alpha;
468  var x1 : vec4<${t}>;
469  for (var i = 0; i < 4; i = i + 1) {
470    if (v[i] >= zero) {
471      x1[i] = one / (one + exp(-v[i]));
472    } else {
473      x1[i] = one - one / (one + exp(v[i]));
474    }
475  }
476  return x * x1;
477}
478`)(i,r.alpha),r.cacheKey,t.inputs[0].dataType))}}),nR=q(()=>{nv(),nC(),nP(),r9=t=>{(t=>{if(3!==t[0].dims.length)throw Error("input should have 3 dimensions");if(![2560,5120,10240].includes(t[0].dims[2]))throw Error("hidden state should be 2560, 5120 or 10240");if(1!==t[1].dims.length)throw Error("bias is expected to have 1 dimensions");if(t[0].dims[2]!==t[1].dims[0])throw Error("last dimension of input and bias are not the same")})(t.inputs),t.compute((t=>{let r=t[0].dims.slice();r[2]=r[2]/2;let i=tR("input",t[0].dataType,t[0].dims,4),a=tR("bias",t[0].dataType,[t[0].dims[2]],4),n=tj("output",t[0].dataType,r,4),s=e8.size(r)/4,o=tC(t[0].dataType);return{name:"BiasSplitGelu",getRunData:()=>({outputs:[{dims:r,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)}}),getShaderSource:r=>`
479  const M_SQRT2 = sqrt(2.0);
480  const halfChannels = ${t[0].dims[2]/4/2}u;
481
482  ${r.declareVariables(i,a,n)}
483
484  ${rz(o)}
485
486  ${r.mainStart()}
487    ${r.guardAgainstOutOfBoundsWorkgroupSizes(s)}
488    let biasIdx = global_idx % halfChannels;
489    let batchIndex = global_idx / halfChannels;
490    let inputOffset = biasIdx + batchIndex * halfChannels * 2;
491    let valueLeft = input[inputOffset] + bias[biasIdx];
492    let valueRight = input[inputOffset + halfChannels] + bias[biasIdx + halfChannels];
493    let geluRight = valueRight * 0.5 * (erf_vf32(valueRight / M_SQRT2) + 1);
494
495    ${n.setByOffset("global_idx","valueLeft * geluRight")}
496  }`}})(t.inputs))}}),nj=q(()=>{ng(),nv(),nC(),ie=(t,r,i,a,n,s)=>{t.compute(((t,r,i,a,n,s,o=i.dataType)=>{let l=i.dims.map(t=>Number(t)??1),u=a.dims.map(t=>Number(t)??1),d=!e8.areEqual(l,u),c=l,h=e8.size(l),f=!1,p=!1,m=[d];if(d){let t=e4.calcShape(l,u,!1);if(!t)throw Error("Can't perform binary op on the given tensors");c=t.slice(),h=e8.size(c);let r=1===e8.size(l),i=1===e8.size(u),a=l.length>0&&l[l.length-1]%4==0,n=u.length>0&&u[u.length-1]%4==0;m.push(r),m.push(i),m.push(a),m.push(n);let s=1;for(let t=1;t<c.length;t++){let r=l[l.length-t];if(r===u[u.length-t])s*=r;else break}s%4==0?(p=!0,f=!0):(r||i||a||n)&&(f=!0)}else f=!0;return m.push(f),{name:t,shaderCache:{hint:r+m.map(t=>t.toString()).join("_"),inputDependencies:["rank","rank"]},getShaderSource:t=>((t,r,i,a,n,s,o,l,u,d,c,h)=>{let f,p;"string"==typeof l?f=p=(t,r)=>`${l}((${t}),(${r}))`:"function"==typeof l?f=p=l:(f=l.scalar,p=l.vector);let m=tj("outputData",c,a.length,4),g=tR("aData",u,r.length,4),b=tR("bData",d,i.length,4),y;if(n)if(s){let t=1===e8.size(r),a=1===e8.size(i),n=r.length>0&&r[r.length-1]%4==0,s=i.length>0&&i[i.length-1]%4==0;y=t||a?m.setByOffset("global_idx",p(t?`${g.type.value}(${g.getByOffset("0")}.x)`:g.getByOffset("global_idx"),a?`${b.type.value}(${b.getByOffset("0")}.x)`:b.getByOffset("global_idx"))):`
497            let outputIndices = ${m.offsetToIndices("global_idx * 4u")};
498            let offsetA = ${g.broadcastedIndicesToOffset("outputIndices",m)};
499            let offsetB = ${b.broadcastedIndicesToOffset("outputIndices",m)};
500            ${m.setByOffset("global_idx",p(o||n?g.getByOffset("offsetA / 4u"):`${g.type.value}(${g.getByOffset("offsetA / 4u")}[offsetA % 4u])`,o||s?b.getByOffset("offsetB / 4u"):`${b.type.value}(${b.getByOffset("offsetB / 4u")}[offsetB % 4u])`))}
501          `}else y=m.setByOffset("global_idx",p(g.getByOffset("global_idx"),b.getByOffset("global_idx")));else{if(!s)throw Error("no necessary to use scalar implementation for element-wise binary op implementation.");let t=(t,r,i="")=>{let a=`aData[indexA${r}][componentA${r}]`,n=`bData[indexB${r}][componentB${r}]`;return`
502            let outputIndices${r} = ${m.offsetToIndices(`global_idx * 4u + ${r}u`)};
503            let offsetA${r} = ${g.broadcastedIndicesToOffset(`outputIndices${r}`,m)};
504            let offsetB${r} = ${b.broadcastedIndicesToOffset(`outputIndices${r}`,m)};
505            let indexA${r} = offsetA${r} / 4u;
506            let indexB${r} = offsetB${r} / 4u;
507            let componentA${r} = offsetA${r} % 4u;
508            let componentB${r} = offsetB${r} % 4u;
509            ${t}[${r}] = ${i}(${f(a,n)});
510          `};y=9===c?`
511            var data = vec4<u32>(0);
512            ${t("data",0,"u32")}
513            ${t("data",1,"u32")}
514            ${t("data",2,"u32")}
515            ${t("data",3,"u32")}
516            outputData[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:`
517            ${t("outputData[global_idx]",0)}
518            ${t("outputData[global_idx]",1)}
519            ${t("outputData[global_idx]",2)}
520            ${t("outputData[global_idx]",3)}
521          `}return`
522        ${t.registerUniform("vec_size","u32").declareVariables(g,b,m)}
523
524        ${h??""}
525
526        ${t.mainStart()}
527        ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
528        ${y}
529      }`})(t,l,u,c,f,d,p,n,i.dataType,a.dataType,o,s),getRunData:()=>({outputs:[{dims:c,dataType:o}],dispatchGroup:{x:Math.ceil(h/64/4)},programUniforms:[{type:12,data:Math.ceil(e8.size(c)/4)},...tT(l,u,c)]})}})(r,n??"",t.inputs[0],t.inputs[1],i,a,s))},it=t=>{ie(t,"Add",(t,r)=>`${t}+${r}`)},ir=t=>{ie(t,"Div",(t,r)=>`${t}/${r}`)},ii=t=>{ie(t,"Equal",{scalar:(t,r)=>`u32(${t}==${r})`,vector:(t,r)=>`vec4<u32>(${t}==${r})`},void 0,void 0,9)},ia=t=>{ie(t,"Mul",(t,r)=>`${t}*${r}`)},is=t=>{let r=tR("input",t.inputs[0].dataType,t.inputs[0].dims).type.value;ie(t,"Pow",{scalar:(t,r)=>`pow_custom(${t},${r})`,vector:(t,r)=>`pow_vector_custom(${t},${r})`},`
530    fn pow_custom(a : ${r}, b : ${r}) -> ${r} {
531      if (b == ${r}(0.0)) {
532        return ${r}(1.0);
533      } else if (a < ${r}(0.0) && f32(b) != floor(f32(b))) {
534        return ${r}(pow(f32(a), f32(b))); // NaN
535      }
536      return select(sign(a), ${r}(1.0), round(f32(abs(b) % ${r}(2.0))) != 1.0) * ${r}(${"i32"===r?"round":""}(pow(f32(abs(a)), f32(b))));
537    }
538    fn pow_vector_custom(a : vec4<${r}>, b : vec4<${r}>) -> vec4<${r}> {
539      // TODO: implement vectorized pow
540      return vec4<${r}>(pow_custom(a.x, b.x), pow_custom(a.y, b.y), pow_custom(a.z, b.z), pow_custom(a.w, b.w));
541    }
542      `)},io=t=>{ie(t,"Sub",(t,r)=>`${t}-${r}`)},il=t=>{ie(t,"Greater",{scalar:(t,r)=>`u32(${t}>${r})`,vector:(t,r)=>`vec4<u32>(${t}>${r})`},void 0,void 0,9)},iu=t=>{ie(t,"Less",{scalar:(t,r)=>`u32(${t}<${r})`,vector:(t,r)=>`vec4<u32>(${t}<${r})`},void 0,void 0,9)},id=t=>{ie(t,"GreaterOrEqual",{scalar:(t,r)=>`u32(${t}>=${r})`,vector:(t,r)=>`vec4<u32>(${t}>=${r})`},void 0,void 0,9)},ic=t=>{ie(t,"LessOrEqual",{scalar:(t,r)=>`u32(${t}<=${r})`,vector:(t,r)=>`vec4<u32>(${t}<=${r})`},void 0,void 0,9)}}),nz=q(()=>{ng(),nv(),nk(),nC(),ih=(t,r)=>{let i=t.inputs,a=i[0].dims,n=e8.normalizeAxis(r.axis,a.length);((t,r)=>{if(!t||t.length<1)throw Error("too few inputs");let i=t[0],a=i.dataType,n=i.dims.length;t.forEach((t,s)=>{if(0!==s){if(t.dataType!==a)throw Error("input tensors should be one type");if(t.dims.length!==n)throw Error("input tensors should have the same shape");t.dims.forEach((t,a)=>{if(a!==r&&t!==i.dims[a])throw Error("non concat dimensions must match")})}})})(i,n);let s=a.slice();s[n]=i.reduce((t,r)=>t+(r.dims.length>n?r.dims[n]:0),0);let o=i.filter(t=>e8.size(t.dims)>0);t.compute(((t,r,i,a)=>{let n=e8.size(i),s=Array(t.length),o=Array(t.length),l=0,u=[],d=[],c=[{type:12,data:n}];for(let i=0;i<t.length;++i)l+=t[i].dims[r],s[i]=l,d.push(t[i].dims.length),o[i]=tR(`input${i}`,a,d[i]),u.push("rank"),c.push({type:12,data:s[i]});for(let r=0;r<t.length;++r)c.push(...tT(t[r].dims));c.push(...tT(i));let h=tj("output",a,i.length),f=h.indicesGet("indices",r),p=Array.from(Array(s.length).keys()).map(t=>`uniforms.sizeInConcatAxis${t}`).join(",");return{name:"Concat",shaderCache:{hint:`${r}`,inputDependencies:u},getRunData:()=>({outputs:[{dims:i,dataType:a}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:c}),getShaderSource:r=>`
543
544  ${(()=>{r.registerUniform("outputSize","u32");for(let i=0;i<t.length;i++)r.registerUniform(`sizeInConcatAxis${i}`,"u32");return r.declareVariables(...o,h)})()}
545
546  ${((t,r)=>`
547  fn calculateInputIndex(index: u32) -> u32 {
548    let sizeInConcatAxis = array<u32, ${t}u>(${r});
549    for (var i: u32 = 0u; i < ${t}; i += 1u ) {
550      if (index < sizeInConcatAxis[i]) {
551        return i;
552      }
553    }
554    return ${t}u;
555  }`)(s.length,p)}
556
557  ${r.mainStart()}
558    ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
559
560    var indices = ${h.offsetToIndices("global_idx")};
561
562    let inputIndex = calculateInputIndex(${f});
563    if (inputIndex != 0u) {
564      let sizeInConcatAxis = array<u32, ${s.length}u>(${p});
565      ${f} -= sizeInConcatAxis[inputIndex - 1u];
566    }
567
568    ${((t,r)=>{let i=t.length,a=[];for(let n=0;n<i;++n){let s=r.setByOffset("global_idx",t[n].getByIndices("indices"));1===i?a.push(s):0===n?a.push(`if (inputIndex == ${n}u) { ${s} }`):n===i-1?a.push(`else { ${s} }`):a.push(`else if (inputIndex == ${n}) { ${s} }`)}return a.join(`
569`)})(o,h)}
570  }`}})(o,n,s,i[0].dataType),{inputs:o})},ip=t=>t$({axis:t.axis})}),nD=q(()=>{ng(),nv(),im=(t,r,i="f32")=>{switch(t.activation){case"Relu":return`value = max(value, ${r}(0.0));`;case"Sigmoid":return`value = (${r}(1.0) / (${r}(1.0) + exp(-value)));`;case"Clip":return`value = clamp(value, ${r}(${i}(uniforms.clip_min)), ${r}(${i}(uniforms.clip_max)));`;case"HardSigmoid":return`value = max(${r}(0.0), min(${r}(1.0), ${i}(uniforms.alpha) * value + ${i}(uniforms.beta)));`;case"LeakyRelu":return`value = select(${i}(uniforms.alpha) * value, value, value >= ${r}(0.0));`;case"Tanh":return`let e2x = exp(-2.0 * abs(value));
571              value = sign(value) * (1.0 - e2x) / (1.0 + e2x);
572        `;case"":return"";default:throw Error(`Unsupported activation ${t.activation}`)}},ig=(t,r)=>{"Clip"===t.activation?r.push({type:1,data:t.clipMax},{type:1,data:t.clipMin}):"HardSigmoid"===t.activation?r.push({type:1,data:t.alpha},{type:1,data:t.beta}):"LeakyRelu"===t.activation&&r.push({type:1,data:t.alpha})},ib=(t,r)=>{"Clip"===t.activation?r.push({name:"clip_max",type:"f32"},{name:"clip_min",type:"f32"}):"HardSigmoid"===t.activation?r.push({name:"alpha",type:"f32"},{name:"beta",type:"f32"}):"LeakyRelu"===t.activation&&r.push({name:"alpha",type:"f32"})},iy=t=>{let r=t?.activation||"";if("HardSigmoid"===r){let[i,a]=t?.activation_params||[.2,.5];return{activation:r,alpha:i,beta:a}}if("Clip"===r){let[i,a]=t?.activation_params||[e5,e9];return{activation:r,clipMax:a,clipMin:i}}if("LeakyRelu"===r){let[i]=t?.activation_params||[.01];return{activation:r,alpha:i}}return{activation:r}}}),nB=q(()=>{iv=(t,r)=>{switch(t){case 1:return r;case 2:return`vec2<${r}>`;case 3:return`vec3<${r}>`;case 4:return`vec4<${r}>`;default:throw Error(`${t}-component is not supported.`)}},i_=t=>`
573      ${t?"value = value + getBiasByOutputCoords(coords);":""}
574      `}),nL=q(()=>{iw=t=>`
575fn getIndexFromCoords4D(coords : vec4<i32>, shape : vec4<i32>) -> i32 {
576  return dot(coords, vec4<i32>(
577      shape.y * shape.z * shape.w, shape.z * shape.w, shape.w, 1));
578}
579fn getOutputIndexFromCoords(coords : vec4<i32>) -> i32 {
580  return dot(coords, vec4<i32>(
581    i32(${t}.x), i32(${t}.y), i32(${t}.z), 1));
582}
583`}),nU=q(()=>{ng(),nv(),nC(),nD(),ix=(t,r,i,a,n)=>{let s=a-i;return`
584      ${Array.from({length:i}).map((i,o)=>`
585      if (${tM(r.shape,o,r.rank)} != 1) {
586        ${r.indicesSet(t,o,tM(n,o+s,a))}
587      } else {
588        ${r.indicesSet(t,o,0)}
589      }`).join("")}
590`},i$=(t,r,i,a,n=!1,s)=>{let o=t[0].dims,l=t[1].dims,u=o[o.length-2],d=l[l.length-1],c=o[o.length-1],h=tI(d),f=tI(c),p=tI(u),m=e8.size(i)/h/p,g=t.length>2,b=a?a.slice(0,-2):i.slice(0,-2),y=[e8.size(b),u,d],v=[{type:12,data:m},{type:12,data:u},{type:12,data:d}
vendor: 11,710 bytes, lines 590-834
590,{type:12,data:c}];return ig(r,v),v.push(...tT(b,o,l)),g&&v.push(...tT(t[2].dims)),v.push(...tT(y)),{name:"MatMulNaive",shaderCache:{hint:`${r.activation};${h};${f};${p};${n}`,inputDependencies:g?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:s?s(i):i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(m/64)},programUniforms:v}),getShaderSource:a=>{let s=tD("batch_dims",t[0].dataType,b.length),u=tR("a",t[0].dataType,o.length,f),d=tR("b",t[1].dataType,l.length,h),c=tj("output",t[0].dataType,y.length,h),m=tC(c.type.tensor),v=im(r,c.type.value,m),_=[u,d],w="";if(g){let r=n?h:1;_.push(tR("bias",t[2].dataType,t[2].dims.length,r)),w=`${n?`value += bias[col / ${r}];`:`value += ${c.type.value}(bias[row + i]);`}`}let x=[{name:"output_size",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"}];return ib(r,x),`
591  ${a.registerUniforms(x).registerInternalVariables(s).declareVariables(..._,c)}
592  ${a.mainStart()}
593    ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
594    let col = (global_idx % (uniforms.N / ${h})) * ${h};
595    var index1 = global_idx / (uniforms.N / ${h});
596    let stride1 = uniforms.M / ${p};
597    let row = (index1 % stride1) * ${p};
598    let batch = index1 / stride1;
599
600    ${2===i.length?"":`let batch_indices = ${s.offsetToIndices("batch")};`}
601
602    var a_indices: ${u.type.indices};
603    ${ix("a_indices",u,u.rank-2,s.rank,"batch_indices")}
604    ${u.indicesSet("a_indices",u.rank-2,0)}
605    ${u.indicesSet("a_indices",u.rank-1,0)}
606    let a_offset = ${u.indicesToOffset("a_indices")};
607
608    var b_indices: ${d.type.indices};
609    ${ix("b_indices",d,d.rank-2,s.rank,"batch_indices")}
610    ${d.indicesSet("b_indices",d.rank-2,0)}
611    ${d.indicesSet("b_indices",d.rank-1,0)}
612    let b_offset = ${d.indicesToOffset("b_indices")};
613    var values: array<${c.type.value}, ${p}>;
614    for (var k: u32 = 0u; k < uniforms.K; k = k + ${f}) {
615      ${(()=>{let t=`var a_data: ${u.type.value};`;for(let r=0;r<f;r++)t+=`
616              let b_data${r} = b[(b_offset + (k + ${r}) * uniforms.N + col) / ${h}];`;for(let r=0;r<p;r++){t+=`a_data = a[(a_offset + (row + ${r}) * uniforms.K + k) / ${f}];`;for(let i=0;i<f;i++)t+=`
617            values[${r}] = fma(${d.type.value}(a_data${1===f?"":`[${i}]`}), b_data${i}, values[${r}]);
618`}return t})()}
619    }
620    for (var i = 0u; i < ${p}u; i++) {
621      var value = values[i];
622      ${w}
623      ${v}
624      let cur_indices = ${c.type.indices}(batch, row + i, col);
625      let offset = ${c.indicesToOffset("cur_indices")};
626      ${c.setByOffset(`offset / ${h}`,"value")};
627    }
628  }
629  `}}}}),nF=q(()=>{ng(),nv(),nC(),nD(),nU(),nB(),iS=(t,r,i="f32",a,n=!1,s=32,o=!1,l=32)=>{let u=r[1]*t[1],d=r[0]*t[0],c=n?u:s,h=n?s:u,f=c/r[0],p=s/r[1];if(!((n&&4===f&&4===t[1]||!n&&(3===f||4===f))&&c%r[0]==0&&s%r[1]==0&&4===t[0]))throw Error(`If transposeA ${n} is true, innerElementSize ${f} and workPerThread[1] ${t[1]} must be 4.
630      Otherwise, innerElementSize ${f} must be 3 or 4.
631  tileAWidth ${c} must be divisible by workgroupSize[0]${r[0]}. tileInner ${s} must be divisible by workgroupSize[1] ${r[1]}. colPerThread ${t[0]} must be 4.`);return`
632var<workgroup> mm_Asub: array<array<vec${f}<${i}>, ${c/f}>, ${h}>;
633var<workgroup> mm_Bsub: array<array<vec4<${i}>, ${d/t[0]}>, ${s}>;
634
635const rowPerThread = ${t[1]};
636const colPerThread = ${t[0]};
637const innerElementSize = ${f};
638const tileInner = ${s};
639
640@compute @workgroup_size(${r[0]}, ${r[1]}, ${r[2]})
641fn main(@builtin(local_invocation_id) localId : vec3<u32>,
642        @builtin(global_invocation_id) globalId : vec3<u32>,
643        @builtin(workgroup_id) workgroupId : vec3<u32>) {
644  let localRow = i32(localId.y);
645  let tileRow = localRow * rowPerThread;
646  let tileCol = i32(localId.x);
647
648  let globalRow =i32(globalId.y) * rowPerThread;
649  let globalCol = i32(globalId.x);
650  let batch = ${o?"0":"i32(globalId.z)"};
651  ${a?`let batchIndices = ${a.offsetToIndices("u32(batch)")};`:""}
652  let globalRowStart = i32(workgroupId.y) * ${u};
653
654  let num_tiles = ${o?`${Math.ceil(l/s)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};
655  var kStart = ${o?`i32(globalId.z) * ${l}`:"0"};
656
657  var acc: array<vec4<${i}>, rowPerThread>;
658
659  // Loop over shared dimension.
660  let tileRowB = localRow * ${p};
661  for (var t = 0; t < num_tiles; t = t + 1) {
662      // Load one tile of A into local memory.
663      for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
664          let inputRow = tileRow + innerRow;
665          let inputCol = tileCol;
666          ${((t,r)=>t?`
667        mm_Asub[inputRow][inputCol] = mm_readA(batch,
668          kStart + inputRow,
669          globalRowStart / innerElementSize + inputCol${r?", batchIndices":""});
670        `:`
671        mm_Asub[inputRow][inputCol] = mm_readA(batch,
672          globalRow + innerRow,
673          kStart / innerElementSize + inputCol${r?", batchIndices":""});
674        `)(n,a)}
675      }
676
677      // Load one tile of B into local memory.
678      for (var innerRow = 0; innerRow < ${p}; innerRow = innerRow + 1) {
679          let inputRow = tileRowB + innerRow;
680          let inputCol = tileCol;
681          mm_Bsub[inputRow][inputCol] = mm_readB(batch, kStart + inputRow, globalCol${a?", batchIndices":""});
682      }
683      kStart = kStart + tileInner;
684      workgroupBarrier();
685
686      // Compute acc values for a single thread.
687      for (var k = 0; k < tileInner / innerElementSize; k = k + 1) {
688          let BCached0 = mm_Bsub[k * innerElementSize][tileCol];
689          let BCached1 = mm_Bsub[k * innerElementSize + 1][tileCol];
690          let BCached2 = mm_Bsub[k * innerElementSize + 2][tileCol];
691          ${3===f?"":"let BCached3 = mm_Bsub[k * innerElementSize + 3][tileCol];"}
692
693          ${((t,r)=>t?`
694        let ACached0 = mm_Asub[k * innerElementSize][localRow];
695        let ACached1 = mm_Asub[k * innerElementSize + 1][localRow];
696        let ACached2 = mm_Asub[k * innerElementSize + 2][localRow];
697        ${3===r?"":"let ACached3 = mm_Asub[k * innerElementSize + 3][localRow];"}
698        for (var i = 0; i < rowPerThread; i = i + 1) {
699          acc[i] = BCached0 * ACached0[i] + acc[i];
700          acc[i] = BCached1 * ACached1[i] + acc[i];
701          acc[i] = BCached2 * ACached2[i] + acc[i];
702          ${3===r?"":"acc[i] = BCached3 * ACached3[i] + acc[i];"}
703        }`:`
704        for (var i = 0; i < rowPerThread; i = i + 1) {
705          let ACached = mm_Asub[tileRow + i][k];
706          acc[i] = BCached0 * ACached.x + acc[i];
707          acc[i] = BCached1 * ACached.y + acc[i];
708          acc[i] = BCached2 * ACached.z + acc[i];
709          ${3===r?"":"acc[i] = BCached3 * ACached.w + acc[i];"}
710        }`)(n,f)}
711      }
712
713      workgroupBarrier();
714  }
715
716  for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
717      mm_write(batch, globalRow + innerRow, globalCol, acc[innerRow]);
718  }
719}`},ik=(t,r)=>t?`
720            mm_Asub[inputRow][inputCol] = mm_readA(batch,
721              kStart + inputRow,
722              globalRowStart + inputCol${r?", batchIndices":""});
723            `:`
724            mm_Asub[inputRow][inputCol] = mm_readA(batch,
725              globalRowStart + inputRow,
726              kStart + inputCol${r?", batchIndices":""});
727            `,iC=(t,r,i="f32",a,n=!1,s=32,o=!1,l=32,u=!1)=>{let d=t[1]*r[1],c=t[0]*r[0],h=n?d:s,f=n?s:d;if(f%r[1]!=0||h%r[0]!=0||s%r[1]!=0)throw Error(`tileAHight ${f} must be divisible by workgroupSize[1]${r[1]}, tileAWidth ${h} must be divisible by workgroupSize[0]${r[0]}, tileInner ${s} must be divisible by workgroupSize[1]${r[1]}`);let p=f/r[1],m=h/r[0],g=s/r[1],b=u?`
728    let localRow = i32(localId.y);
729    let localCol = i32(localId.x);
730    let globalRowStart = i32(workgroupId.y) * ${d};
731    let globalColStart = i32(workgroupId.x) * ${c};
732
733    // Loop over shared dimension.
734    for (var t = 0; t < num_tiles; t = t + 1) {
735      // Load one tile of A into local memory.
736      for (var inputRow = localRow; inputRow < ${f}; inputRow = inputRow + ${r[1]}) {
737        for (var inputCol = localCol; inputCol < ${h}; inputCol = inputCol + ${r[0]}) {
738          ${ik(n,a)}
739        }
740      }
741      // Load one tile of B into local memory.
742      for (var inputRow = localRow; inputRow < ${s}; inputRow = inputRow + ${r[1]}) {
743            for (var inputCol = localCol; inputCol < ${c}; inputCol = inputCol + ${r[0]}) {
744          mm_Bsub[inputRow][inputCol] = mm_readB(batch,
745            kStart + inputRow,
746            globalColStart + inputCol${a?", batchIndices":""});
747        }
748      }
749      kStart = kStart + tileInner;
750      workgroupBarrier();
751
752      // Compute acc values for a single thread.
753      var BCached : array<${i}, colPerThread>;
754      for (var k = 0; k < tileInner; k = k + 1) {
755        for (var inner = 0; inner < colPerThread; inner = inner + 1) {
756          BCached[inner] = mm_Bsub[k][localCol + inner * ${r[0]}];
757        }
758        for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
759          let ACached = ${n?`mm_Asub[k][localRow + innerRow * ${r[1]}];`:`mm_Asub[localRow + innerRow * ${r[1]}][k];`}
760          for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
761            acc[innerRow][innerCol] = acc[innerRow][innerCol] +
762                ACached * BCached[innerCol];
763          }
764        }
765      }
766      workgroupBarrier();
767    }
768    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
769      let gRow = globalRowStart + localRow + innerRow * ${r[1]};
770      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
771        let gCol = globalColStart + localCol + innerCol * ${r[0]};
772        mm_write(batch, gRow, gCol, acc[innerRow][innerCol]);
773      }
774    }
775    `:`
776let tileRow = i32(localId.y) * rowPerThread;
777let tileCol = i32(localId.x) * colPerThread;
778
779let globalRow = i32(globalId.y) * rowPerThread;
780let globalCol = i32(globalId.x) * colPerThread;
781let globalRowStart = i32(workgroupId.y) * ${d};
782
783let tileRowA = i32(localId.y) * ${p};
784let tileColA = i32(localId.x) * ${m};
785let tileRowB = i32(localId.y) * ${g};
786// Loop over shared dimension.
787for (var t = 0; t < num_tiles; t = t + 1) {
788  // Load one tile of A into local memory.
789  for (var innerRow = 0; innerRow < ${p}; innerRow = innerRow + 1) {
790    for (var innerCol = 0; innerCol < ${m}; innerCol = innerCol + 1) {
791      let inputRow = tileRowA + innerRow;
792      let inputCol = tileColA + innerCol;
793      ${ik(n,a)}
794    }
795  }
796
797  // Load one tile of B into local memory.
798  for (var innerRow = 0; innerRow < ${g}; innerRow = innerRow + 1) {
799    for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
800      let inputRow = tileRowB + innerRow;
801      let inputCol = tileCol + innerCol;
802      mm_Bsub[inputRow][inputCol] = mm_readB(batch,
803        kStart + inputRow,
804        globalCol + innerCol${a?", batchIndices":""});
805    }
806  }
807  kStart = kStart + tileInner;
808  workgroupBarrier();
809
810  // Compute acc values for a single thread.
811  var BCached : array<${i}, colPerThread>;
812  for (var k = 0; k < tileInner; k = k + 1) {
813    for (var inner = 0; inner < colPerThread; inner = inner + 1) {
814      BCached[inner] = mm_Bsub[k][tileCol + inner];
815    }
816
817    for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
818      ${n?"let ACached = mm_Asub[k][tileRow + innerRow];":"let ACached = mm_Asub[tileRow + innerRow][k];"}
819      for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
820        acc[innerRow][innerCol] = acc[innerRow][innerCol] + ACached * BCached[innerCol];
821      }
822    }
823  }
824
825  workgroupBarrier();
826}
827
828for (var innerRow = 0; innerRow < rowPerThread; innerRow = innerRow + 1) {
829  for (var innerCol = 0; innerCol < colPerThread; innerCol = innerCol + 1) {
830    mm_write(batch, globalRow + innerRow, globalCol + innerCol,
831        acc[innerRow][innerCol]);
832  }
833}
834`;return`
835  var<workgroup> mm_Asub : array<array<${i}, ${h}>, ${f}>;
836  var<workgroup> mm_Bsub : array<array<${i}, ${c}>, ${s}>;
837  const rowPerThread = ${t[1]};
838  const colPerThread = ${t[0]};
839  const tileInner = ${s};
840
841@compute @workgroup_size(${r[0]}, ${r[1]}, ${r[2]})
842fn main(@builtin(local_invocation_id) localId : vec3<u32>,
843        @builtin(global_invocation_id) globalId : vec3<u32>,
844        @builtin(workgroup_id) workgroupId : vec3<u32>) {
845    let batch = ${o?"0":"i32(globalId.z)"};
846    ${a?`let batchIndices = ${a.offsetToIndices("u32(batch)")};`:""}
847    let num_tiles = ${o?`${Math.ceil(l/s)}`:"(uniforms.dim_inner - 1) / tileInner + 1"};
848    var kStart = ${o?`i32(globalId.z) * ${l}`:"0"};
849
850    var acc : array<array<${i}, colPerThread>, rowPerThread>;
851    ${b}
852  }
853`},iE=(t,r,i,a,n=!1,s)=>{let o=t[0].dims,l=t[1].dims,u=o.slice(0,-2),d=l.slice(0,-2),c=a?a.slice(0,-2):i.slice(0,-2),h=e8.size(c),f=o[o.length-2],p=o[o.length-1],m=l[l.length-1],g=p%4==0&&m%4==0,b=f<=8?[4,1,1]:[4,4,1],y=[8,8,1],v=[Math.ceil(m/y[0]/b[0]),Math.ceil(f/y[1]/b[1]),Math.ceil(h/y[2]/b[2])],_=g?4:1,w=[...u,f,p/_],x=w.length,$=[...d,p,m/_],S=$.length,k=[h,f,m/_],C=[{type:6,data:f},{type:6,data:m},{type:6,data:p}];ig(r,C),C.push(...tT(c,w,$));let E=["rank","rank"],T=t.length>2;return T&&(C.push(...tT(t[2].dims)),E.push("rank")),C.push(...tT(k)),{name:"MatMul",shaderCache:{hint:`${b};${r.activation};${g};${n}`,inputDependencies:E},getRunData:()=>({outputs:[{dims:s?s(i):i,dataType:t[0].dataType}],dispatchGroup:{x:v[0],y:v[1],z:v[2]},programUniforms:C}),getShaderSource:i=>{let a=c.length,s=tD("batchDims",t[0].dataType,a,1),o=tC(t[0].dataType),l=tR("a",t[0].dataType,x,_),u=tR("b",t[1].dataType,S,_),d=tj("result",t[0].dataType,k.length,_),h=[l,u];if(T){let r=n?_:1;h.push(tR("bias",t[2].dataType,t[2].dims.length,r))}let f=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"}];ib(r,f);let p=tC(d.type.tensor),m=((t,r,i,a,n=!1)=>{let[s,o,l,u]=a,d=tC(a[0].type.tensor);return`
854    fn mm_readA(batch: i32, row: i32, colIn: i32, batchIndices: ${s.type.indices}) -> ${iv(t,d)} {
855      var value = ${iv(t,d)}(0.0);
856      let col = colIn * ${t};
857      if(row < uniforms.dim_a_outer && col < uniforms.dim_inner)
858      {
859        var aIndices: ${o.type.indices};
860        ${ix("aIndices",o,o.rank-2,s.rank,"batchIndices")}
861        ${o.indicesSet("aIndices",o.rank-2,"u32(row)")}
862        ${o.indicesSet("aIndices",o.rank-1,"u32(colIn)")}
863        value = ${o.getByIndices("aIndices")};
864      }
865      return value;
866    }
867
868    fn mm_readB(batch: i32, row: i32, colIn: i32, batchIndices: ${s.type.indices}) -> ${iv(t,d)} {
869      var value = ${iv(t,d)}(0.0);
870      let col = colIn * ${t};
871      if(row < uniforms.dim_inner && col < uniforms.dim_b_outer)
872      {
873        var bIndices: ${l.type.indices};
874        ${ix("bIndices",l,l.rank-2,s.rank,"batchIndices")}
875        ${l.indicesSet("bIndices",l.rank-2,"u32(row)")}
876        ${l.indicesSet("bIndices",l.rank-1,"u32(colIn)")}
877        value = ${l.getByIndices("bIndices")};
878      }
879      return value;
880    }
881
882    fn mm_write(batch: i32, row: i32, colIn: i32, valueIn: ${iv(t,d)}) {
883      let col = colIn * ${t};
884      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer) {
885        var value = valueIn;
886        let coords = vec3<i32>(batch, row, colIn);
887        ${r?`value = value + ${n?"bias[colIn]":`${iv(t,d)}(bias[row])`};`:""}
888        ${i}
889        ${u.setByIndices("vec3<u32>(coords)","value")}
890      }
891    }
892    `})(_,T,im(r,d.type.value,p),[s,l,u,d],n);return`
893  ${i.registerUniforms(f).registerInternalVariables(s).declareVariables(...h,d)}
894  ${m}
895  ${g?iS(b,y,o,s):iC(b,y,o,s)}
896                   `}}}}),nq=q(()=>{ng(),ny(),nC(),nD(),nB(),nL(),nF(),iT=(t,r,i,a,n,s,o,l,u)=>{let d="NHWC"===r.format,c=d?t[0].dims[3]:t[0].dims[1],h=i[0],f=d?i[2]:i[3],p=d?i[1]:i[2],m=d?i[3]:i[1],g=d&&(c%4==0||c%3==0)&&m%4==0,b=d?m:f*p,y=d?f*p:m,v=[8,8,1],_=a<=8?[4,1,1]:[4,4,1],w=[Math.ceil(b/v[0]/_[0]),Math.ceil(y/v[1]/_[1]),Math.ceil(h/v[2]/_[2])];e2("verbose",()=>`[conv2d_mm_webgpu] dispatch = ${w}`);let x=g?d&&c%4!=0?3:4:1,$=v[1]*_[1],S=v[0]*_[0],k=Math.max(v[0]*x,v[1]),C=a%$==0,E=n%S==0,T=s%k==0,I=g?[x,4,4]:[1,1,1],A=[{type:6,data:a},{type:6,data:n},{type:6,data:s},{type:6,data:[r.pads[0],r.pads[1]]},{type:6,data:r.strides},{type:6,data:r.dilations}];ig(r,A),A.push(...tT(t[0].dims,t[1].dims));let N=["rank","rank"];
vendor: 4,112 bytes, lines 896-967
896return o&&(A.push(...tT(t[2].dims)),N.push("rank")),A.push(...tT(i)),{name:"Conv2DMatMul",shaderCache:{hint:`${r.cacheKey};${x};${g};${C};${E};${T};${$};${S};${k}`,inputDependencies:N},getRunData:()=>({outputs:[{dims:u?u(i):i,dataType:t[0].dataType}],dispatchGroup:{x:w[0],y:w[1],z:w[2]},programUniforms:A}),getShaderSource:a=>{let n=[{name:"dim_a_outer",type:"i32"},{name:"dim_b_outer",type:"i32"},{name:"dim_inner",type:"i32"},{name:"pad",type:"i32",length:2},{name:"stride",type:"i32",length:2},{name:"dilation",type:"i32",length:2}];ib(r,n);let s=g?4:1,u=tC(t[0].dataType),c=`
897      fn setOutputAtIndex(flatIndex : i32, value : ${g?`vec4<${u}>`:u}) {
898        result[flatIndex] = ${g?`vec4<${u}>`:u}(value);
899      }
900      fn setOutputAtCoords(d0 : i32, d1 : i32, d2 : i32, d3 : i32, value : ${g?`vec4<${u}>`:u}) {
901        let flatIndex = getOutputIndexFromCoords(vec4<i32>(d0, d1, d2, d3));
902        setOutputAtIndex(flatIndex ${g?"/ 4":""}, value);
903      }`,h=[tR("x",t[0].dataType,t[0].dims.length,3===x?1:x),tR("w",t[1].dataType,t[1].dims.length,s)],f=tj("result",t[0].dataType,i.length,s);if(o){let r=tR("bias",t[2].dataType,t[2].dims.length,s);h.push(r),c+=`
904        fn getBiasByOutputCoords(coords : vec4<i32>) -> ${g?`vec4<${u}>`:u} {
905          return bias[coords.${d?"w":"y"}${g?"/ 4":""}];
906        }`}return`
907        ${iw("uniforms.result_strides")}
908        //struct Uniforms { xShape : vec4<i32>, wShape : vec4<i32>, outShape : vec4<i32>,
909        //  outShapeStrides: vec3<i32>, filterDims : vec2<i32>, pad : vec2<i32>, stride : vec2<i32>,
910        //  dilation : vec2<i32>, dimAOuter : i32, dimBOuter : i32, dimInner : i32 };
911        ${a.registerUniforms(n).declareVariables(...h,f)}
912        ${c}
913        ${((t,r,i,a,n=!1,s,o=4,l=4,u=4,d="f32")=>{let c=t=>{switch(t){case 1:return"return w[row * i32(uniforms.w_shape[3]) + colIn];";case 4:return"return w[row * i32(uniforms.w_shape[3]) / 4 + colIn];";default:throw Error(`innerElementSize ${t} is not supported.`)}},h=t?`
914    let coord = vec4<i32>(batch, xRow, xCol, xCh);
915    `:`
916    let coord = vec4<i32>(batch, xCh, xRow, xCol);
917    `,f=t?`
918    let coords = vec4<i32>(
919      batch,
920      row / outWidth,
921      row % outWidth,
922      col);
923    `:`
924    let coords = vec4<i32>(
925      batch,
926      row,
927      col / outWidth,
928      col % outWidth);
929    `,p=t?"row":"col",m=t?"col":"row",g=`
930    let inChannels = i32(uniforms.w_shape[2]);
931    let outWidth = ${t?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};
932    let outRow = ${p} / outWidth;
933    let outCol = ${p} % outWidth;
934
935    let WRow = ${m} / (i32(uniforms.w_shape[1]) * inChannels);
936    let WCol = ${m} / inChannels % i32(uniforms.w_shape[1]);
937    let xRow = outRow * uniforms.stride[0] + uniforms.dilation[0] * WRow - uniforms.pad[0];
938    let xCol = outCol * uniforms.stride[1] + uniforms.dilation[1] * WCol - uniforms.pad[1];
939    let xCh = ${m} % inChannels;
940    var resData = ${iv(o,d)}(0.0);
941    // The bounds checking is always needed since we use it to pad zero for
942    // the 'same' padding type.
943    if (xRow >= 0 && xRow < ${t?"i32(uniforms.x_shape[1])":"i32(uniforms.x_shape[2])"} && xCol >= 0 && xCol < ${t?"i32(uniforms.x_shape[2])":"i32(uniforms.x_shape[3])"}) {
944      ${h}
945      let xIndex = getIndexFromCoords4D(coord, vec4<i32>(uniforms.x_shape));
946      ${(t=>{switch(t){case 1:return"resData = x[xIndex];";case 3:return`resData = vec3<${d}>(x[xIndex], x[xIndex + 1], x[xIndex + 2]);`;case 4:return"resData = x[xIndex / 4];";default:throw Error(`innerElementSize ${t} is not supported.`)}})(o)}
947    }
948    return resData;`,b=t?r&&a?`
949    let col = colIn * ${o};
950    ${g}`:`
951    let col = colIn * ${o};
952    if (row < uniforms.dim_a_outer && col < uniforms.dim_inner) {
953      ${g}
954    }
955    return ${iv(o,d)}(0.0);`:a&&i?`
956    let col = colIn * ${o};
957    ${g}`:`
958    let col = colIn * ${o};
959    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {
960      ${g}
961    }
962    return ${iv(o,d)}(0.0);`,y=t?a&&i?c(l):`
963    let col = colIn * ${l};
964    if (row < uniforms.dim_inner && col < uniforms.dim_b_outer) {
965      ${c(l)}
966    }
967    return ${iv(l,d)}(0.0);`:`
968    let col = colIn * ${l};
969    if (row < uniforms.dim_inner && col < uniforms.dim_a_outer) {
970      ${c(l)}
971    }
972    return ${iv(l,d)}(0.0);`,v=iv(u,d),_=t?iv(o,d):iv(l,d),w=t?iv(l,d):iv(o,d),x=im(s,v,d);return`
973    fn mm_readA(batch: i32, row : i32, colIn : i32) -> ${_} {
974      ${t?b:y}
975    }
976
977    fn mm_readB(batch: i32, row : i32, colIn : i32) -> ${w} {
978      ${t?y:b}
979    }
980
981    fn mm_write(batch: i32, row : i32, colIn : i32, valueIn : ${v}) {
982      let col = colIn * ${u};
983      if (row < uniforms.dim_a_outer && col < uniforms.dim_b_outer)
984      {
985      var value = valueIn;
986      let outWidth = ${t?"i32(uniforms.result_shape[2])":"i32(uniforms.result_shape[3])"};
987      ${f}
988      ${i_(n)}
989      ${x}
990      setOutputAtCoords(coords[0], coords[1], coords[2], coords[3], value);
991      }
992    }`})(d,C,E,T,o,r,I[0],I[1],I[2],u)}
993        ${g?iS(_,v,u,void 0,!d,k):iC(_,v,u,void 0,!d,k,!1,void 0,l)}`}}}}),nV=q(()=>{ng(),ny(),nv(),nC(),nD(),nB(),iI=t=>"number"==typeof t?[t,t,t]:t,iA=(t,r)=>r<=1?t:t+(t-1)*(r-1),iN=(t,r,i,a,n)=>{null==n&&(n=((t,r,i,a=1)=>{let n=iA(r,a);return Math.floor((t[0]*(i-1)-i+n)/2)})(t,r[0],a[0]));let s=[0,0,0,i];for(let i=0;i<3;i++)t[i]+2*n>=r[i]&&(s[i]=Math.trunc((t[i]-r[i]+2*n)/a[i]+1));return s},iO=(t,r,i,a,n,s=!1,o="channelsLast")=>{let l,u,d,c,h;if("channelsLast"===o)[l,u,d,c,h]=t;else if("channelsFirst"===o)[l,h,u,d,c]=t;else throw Error(`Unknown dataFormat ${o}`);let[f,,p,m,g]=r,[b,y,v]=iI(i),[_,w,x]=iI(a),$=iA(p,_),S=iA(m,w),k=iA(g,x),{padInfo:C,outDepth:E,outHeight:T,outWidth:I}=((t,r,i,a,n,s,o,l,u,d)=>{let c,h,f,p;if("VALID"===t&&(t=0),"number"==typeof t){c={top:t,bottom:t,left:t,right:t,front:t,back:t};let m=iN([r,i,a,1],[l,u,d],1,[n,s,o],t);h=m[0],f=m[1],p=m[2]}else if(Array.isArray(t)){if(!t.every((t,r,i)=>t===i[0]))throw Error(`Unsupported padding parameter: ${t}`);c={top:t[0],bottom:t[1],left:t[2],right:t[3],front:t[4],back:t[5]};let m=iN([r,i,a,1],[l,u,d],1,[n,s,o],t[0]);h=m[0],f=m[1],p=m[2]}else if("SAME_UPPER"===t){h=Math.ceil(r/n),f=Math.ceil(i/s),p=Math.ceil(a/o);let t=(h-1)*n+l-r,m=(f-1)*s+u-i,g=(p-1)*o+d-a,b=Math.floor(t/2),y=Math.floor(m/2),v=Math.floor(g/2);c={top:y,bottom:m-y,left:v,right:g-v,front:b,back:t-b}}else throw Error(`Unknown padding parameter: ${t}`);return{padInfo:c,outDepth:h,outHeight:f,outWidth:p}})(n,u,d,c,b,y,v,$,S,k),A=s?f*h:f,N=[0,0,0,0,0];return"channelsFirst"===o?N=[l,A,E,T,I]:"channelsLast"===o&&(N=[l,E,T,I,A]),{batchSize:l,dataFormat:o,inDepth:u,inHeight:d,inWidth:c,inChannels:h,outDepth:E,outHeight:T,outWidth:I,outChannels:A,padInfo:C,strideDepth:b,strideHeight:y,strideWidth:v,filterDepth:p,filterHeight:m,filterWidth:g,effectiveFilterDepth:$,effectiveFilterHeight:S,effectiveFilterWidth:k,dilationDepth:_,dilationHeight:w,dilationWidth:x,inShape:t,outShape:N,filterShape:r}},iM=(t,r,i,a,n,s)=>{let o="channelsLast"===s,l=(o?t[0].dims[3]:t[0].dims[1],[Math.ceil((t=>{let r=1;for(let i=0;i<t.length;i++)r*=t[i];return r})(({x:i.map((t,r)=>r)}).x.map(t=>i[t]))/64),1,1]);e2("verbose",()=>`[conv3d_naive_webgpu] dispatch = ${l}`);let u=[{type:12,data:e8.size(i)},{type:12,data:a},{type:12,data:n},{type:12,data:r.strides},{type:12,data:r.dilations}];ig(r,u),u.push(...tT(t[0].dims,t[1].dims));let d=["rank","rank"],c=3===t.length;return c&&(u.push(...tT(t[2].dims)),d.push("rank")),u.push(...tT(i)),{name:"Conv3DNaive",shaderCache:{hint:`${r.cacheKey};${o};1;${c}`,inputDependencies:d},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:l[0],y:l[1],z:l[2]},programUniforms:u}),getShaderSource:s=>{let l=[{name:"output_size",type:"u32"},{name:"filter_dims",type:"u32",length:a.length},{name:"pads",type:"u32",length:n.length},{name:"strides",type:"u32",length:r.strides.length},{name:"dilations",type:"u32",length:r.dilations.length}];ib(r,l);let u=tC(t[0].dataType),d=tR("x",t[0].dataType,t[0].dims.length,1),h=tR("W",t[1].dataType,t[1].dims.length,1),f=[d,h],p=tj("result",t[0].dataType,i.length,1),m="";if(c){let r=tR("bias",t[2].dataType,t[2].dims.length,1);f.push(r),m+=`
994        fn getBiasByOutputCoords(coords : array<u32, 5>) -> ${u} {
995          return bias[${o?tM("coords",4,5):tM("coords",1,5)}];
996        }`}let g=iv(1,u),b=im(r,g,u);return`
997            ${m}
998            fn getX(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {
999              let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);
1000              return ${d.getByIndices("aIndices")};
1001            }
1002            fn getW(d0 : u32, d1 : u32, d2 : u32, d3 : u32, d4 : u32) -> f32 {
1003              let aIndices = array<u32, 5>(d0, d1, d2, d3, d4);
1004              return ${h.getByIndices("aIndices")};
1005            }
1006          ${s.registerUniforms(l).declareVariables(...f,p)}
1007          ${s.mainStart()}
1008          ${s.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1009              let coords = ${p.offsetToIndices("global_idx")};
1010              let batch = ${tM("coords",0,d.rank)};
1011              let d2 = ${o?tM("coords",d.rank-1,d.rank):tM("coords",1,d.rank)};
1012              let xFRCCorner = vec3<u32>(${o?tM("coords",1,d.rank):tM("coords",2,d.rank)},
1013              ${o?tM("coords",2,d.rank):tM("coords",3,d.rank)},
1014              ${o?tM("coords",3,d.rank):tM("coords",4,d.rank)}) * uniforms.strides - uniforms.pads;
1015              let xFCorner = xFRCCorner.x;
1016              let xRCorner = xFRCCorner.y;
1017              let xCCorner = xFRCCorner.z;
1018              let xShapeY = ${o?tM("uniforms.x_shape",1,d.rank):tM("uniforms.x_shape",2,d.rank)};
1019              let xShapeZ = ${o?tM("uniforms.x_shape",2,d.rank):tM("uniforms.x_shape",3,d.rank)};
1020              let xShapeW = ${o?tM("uniforms.x_shape",3,d.rank):tM("uniforms.x_shape",4,d.rank)};
1021              let xShapeU = ${o?tM("uniforms.x_shape",4,d.rank):tM("uniforms.x_shape",1,d.rank)};
1022              let inputDepthNearestVec4 = (xShapeU / 4) * 4;
1023              let inputDepthVec4Remainder = xShapeU % 4;
1024
1025              var value = 0.0;
1026              for (var wF = 0u; wF < uniforms.filter_dims[0]; wF++) {
1027                let xF = xFCorner + wF * uniforms.dilations[0];
1028                if (xF < 0 || xF >= xShapeY) {
1029                  continue;
1030                }
1031
1032                for (var wR = 0u; wR < uniforms.filter_dims[1]; wR++) {
1033                  let xR = xRCorner + wR * uniforms.dilations[1];
1034                  if (xR < 0 || xR >= xShapeZ) {
1035                    continue;
1036                  }
1037
1038                  for (var wC = 0u; wC < uniforms.filter_dims[2]; wC++) {
1039                    let xC = xCCorner + wC * uniforms.dilations[2];
1040                    if (xC < 0 || xC >= xShapeW) {
1041                      continue;
1042                    }
1043
1044                    for (var d1 = 0u; d1 < inputDepthNearestVec4; d1 += 4) {
1045                      ${o?`let xValues = vec4<f32>(
1046                               getX(batch, xF, xR, xC, d1),
1047                               getX(batch, xF, xR, xC, d1 + 1),
1048                               getX(batch, xF, xR, xC, d1 + 2),
1049                               getX(batch, xF, xR, xC, d1 + 3));
1050                            `:`let xValues = vec4<f32>(
1051                               getX(batch, d1, xF, xR, xC),
1052                               getX(batch, d1 + 1, xF, xR, xC),
1053                               getX(batch, d1 + 2, xF, xR, xC),
1054                               getX(batch, d1 + 3, xF, xR, xC));
1055                            `}
1056                            let wValues = vec4<f32>(
1057                              getW(d2, d1, wF, wR, wC),
1058                              getW(d2, d1 + 1, wF, wR, wC),
1059                              getW(d2, d1 + 2, wF, wR, wC),
1060                              getW(d2, d1 + 3, wF, wR, wC));
1061                      value += dot(xValues, wValues);
1062                    }
1063                    if (inputDepthVec4Remainder == 1) {
1064                        ${o?`value += getX(batch, xF, xR, xC, inputDepthNearestVec4)
1065                          * getW(d2, inputDepthNearestVec4, wF, wR, wC);`:`value += getX(batch, inputDepthNearestVec4, xF, xR, xC)
1066                          * getW(d2, inputDepthNearestVec4, wF, wR, wC);`}
1067                    } else if (inputDepthVec4Remainder == 2) {
1068                      ${o?`let xValues = vec2<f32>(
1069                        getX(batch, xF, xR, xC, inputDepthNearestVec4),
1070                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1));
1071                      `:`let xValues = vec2<f32>(
1072                        getX(batch, inputDepthNearestVec4, xF, xR, xC),
1073                        getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC));
1074                    `}
1075                    let wValues = vec2<f32>(
1076                      getW(d2, inputDepthNearestVec4, wF, wR, wC),
1077                      getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC));
1078                      value += dot(xValues, wValues);
1079                    } else if (inputDepthVec4Remainder == 3) {
1080                      ${o?`let xValues = vec3<f32>(
1081                        getX(batch, xF, xR, xC, inputDepthNearestVec4),
1082                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 1),
1083                        getX(batch, xF, xR, xC, inputDepthNearestVec4 + 2));
1084                      `:`let xValues = vec3<f32>(
1085                        getX(batch, inputDepthNearestVec4, xF, xR, xC),
1086                        getX(batch, inputDepthNearestVec4 + 1, xF, xR, xC),
1087                        getX(batch, inputDepthNearestVec4 + 2, xF, xR, xC));
1088                    `}
1089                    let wValues = vec3<f32>(
1090                      getW(d2, inputDepthNearestVec4, wF, wR, wC),
1091                      getW(d2, inputDepthNearestVec4 + 1, wF, wR, wC),
1092                      getW(d2, inputDepthNearestVec4 + 2, wF, wR, wC));
1093                      value += dot(xValues, wValues);
1094                    }
1095                  }
1096                }
1097              }
1098              ${c?"value = value + getBiasByOutputCoords(coords)":""};
1099              ${b}
1100              result[global_idx] = f32(value);
1101          }`}}}}),nW=q(()=>{ng(),nv(),nC(),nD(),iP=(t,r,i,a)=>{let n=t.length>2,s=n?"value += b[output_channel];":"",o=t[0].dims,l=t[1].dims,u="NHWC"===r.format,d=u?i[3]:i[1],c=d/r.group,h=u&&c>=4?tI(d):1,f=e8.size(i)/h,p=[{type:12,data:f},{type:12,data:r.dilations},{type:12,data:[r.strides[0],r.strides[1]]},{type:12,data:[r.pads[0],r.pads[1]]},{type:12,data:c}];return ig(r,p),p.push(...tT(o,[l[0],l[1],l[2],l[3]/h])),p.push(...tT([i[0],i[1],i[2],i[3]/h])),{name:"GroupedConv",shaderCache:{hint:`${r.cacheKey}_${h}`,inputDependencies:n?["rank","rank","rank"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(i):i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:p}),getShaderSource:a=>{let d=tj("output",t[0].dataType,i.length,h),c=tC(d.type.tensor),f=im(r,d.t
vendor: 4,167 bytes, lines 1101-1170
1101ype.value,c),p=tR("x",t[0].dataType,o.length),m=tR("w",t[1].dataType,l.length,h),g=[p,m];n&&g.push(tR("b",t[2].dataType,t[2].dims,h));let b=[{name:"output_size",type:"u32"},{name:"dilations",type:"u32",length:r.dilations.length},{name:"strides",type:"u32",length:2},{name:"pads",type:"u32",length:2},{name:"output_channels_per_group",type:"u32"}];ib(r,b);let y=u?`
1102      for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[0]; wHeight++) {
1103        let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];
1104
1105        if (xHeight < 0u || xHeight >= uniforms.x_shape[1]) {
1106          continue;
1107        }
1108
1109        for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[1]; wWidth++) {
1110          let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];
1111          if (xWidth < 0u || xWidth >= uniforms.x_shape[2]) {
1112            continue;
1113          }
1114
1115          for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[2]; wInChannel++) {
1116            let input_channel = in_channel_offset + wInChannel;
1117            let xVal = ${p.get("batch","xHeight","xWidth","input_channel")};
1118            let wVal = ${m.get("wHeight","wWidth","wInChannel","output_channel")};
1119            value += xVal * wVal;
1120          }
1121        }
1122      }
1123      `:`
1124      for (var wInChannel: u32 = 0u; wInChannel < uniforms.w_shape[1]; wInChannel++) {
1125        let input_channel = in_channel_offset + wInChannel;
1126        for (var wHeight: u32 = 0u; wHeight < uniforms.w_shape[2]; wHeight++) {
1127          let xHeight = xRCCorner.x + wHeight * uniforms.dilations[0];
1128
1129          if (xHeight < 0u || xHeight >= uniforms.x_shape[2]) {
1130            continue;
1131          }
1132
1133          for (var wWidth: u32 = 0u; wWidth < uniforms.w_shape[3]; wWidth++) {
1134            let xWidth = xRCCorner.y + wWidth * uniforms.dilations[1];
1135            if (xWidth < 0u || xWidth >= uniforms.x_shape[3]) {
1136              continue;
1137            }
1138
1139            let xVal = ${p.get("batch","input_channel","xHeight","xWidth")};
1140            let wVal = ${m.get("output_channel","wInChannel","wHeight","wWidth")};
1141            value += xVal * wVal;
1142          }
1143        }
1144      }
1145      `;return`
1146  ${a.registerUniforms(b).declareVariables(...g,d)}
1147
1148  ${a.mainStart()}
1149    ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1150
1151    let outputIndices = ${d.offsetToIndices("global_idx")};
1152    let batch: u32 = outputIndices[0];
1153    let output_channel: u32 = outputIndices[${u?3:1}];
1154    let xRCCorner: vec2<u32> = vec2<u32>(outputIndices[${u?1:2}], outputIndices[${u?2:3}]) * uniforms.strides - uniforms.pads;
1155    let group_id: u32 = output_channel * ${h} / uniforms.output_channels_per_group;
1156    var in_channel_offset = group_id * uniforms.w_shape[${u?2:1}];
1157
1158    var value: ${d.type.value} = ${d.type.value}(0);
1159    ${y}
1160    ${s}
1161    ${f}
1162    ${d.setByOffset("global_idx","value")}
1163  }`}}},iR=(t,r,i,a)=>{let n=t.length>2,s=tI(i[3]),o=tI(i[2]),l=e8.size(i)/s/o,u=[t[0].dims[0],t[0].dims[1],t[0].dims[2],t[0].dims[3]/s],d=[t[1].dims[0],t[1].dims[1],t[1].dims[2],t[1].dims[3]/s],c=[i[0],i[1],i[2],i[3]/s],h=[{type:12,data:l},{type:6,data:[r.strides[0],r.strides[1]]},{type:6,data:[r.pads[0],r.pads[1]]}];ig(r,h),h.push(...tT(u,d,c));let f=(o-1)*r.strides[1]+d[1];return{name:"GroupedConv-Vectorize",shaderCache:{hint:`${r.cacheKey};${s};${o};${f};${d[0]};${d[1]}`,inputDependencies:n?["rank","rank","type"]:["rank","rank"]},getRunData:()=>({outputs:[{dims:a?a(i):i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:h}),getShaderSource:i=>{let a=tj("output",t[0].dataType,c.length,s),l=tC(a.type.tensor),h=im(r,a.type.value,l),p=tR("x",t[0].dataType,u.length,s),m=tR("w",t[1].dataType,d.length,s),g=[p,m];n&&g.push(tR("b",t[2].dataType,t[2].dims,s));let b=[{name:"output_size",type:"u32"},{name:"strides",type:"i32",length:2},{name:"pads",type:"i32",length:2}];return ib(r,b),`
1164  ${i.registerUniforms(b).declareVariables(...g,a)}
1165  ${i.mainStart()}
1166    ${i.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1167    let width0 = uniforms.output_shape[3];
1168    let output_channel = global_idx % width0;
1169    var index1 = global_idx / width0;
1170    let width1 = uniforms.output_shape[2] / ${o}u;
1171    let col = (index1 % width1) * ${o}u;
1172    index1 = index1 / width1;
1173    let row = index1 % uniforms.output_shape[1];
1174    let batch = index1 / uniforms.output_shape[1];
1175
1176    let x_corner = vec2<i32>(i32(row), i32(col)) * uniforms.strides - uniforms.pads;
1177
1178    var x_vals: array<${p.type.value}, ${f}>;
1179    var values: array<${a.type.value}, ${o}>;
1180    let input_channel = output_channel;
1181    // Use constant instead of uniform can give better performance for w's height/width.
1182    for (var w_height: u32 = 0u; w_height < ${d[0]}; w_height++) {
1183      let x_height = x_corner.x + i32(w_height);
1184      if (x_height >= 0 && u32(x_height) < uniforms.x_shape[1]) {
1185        for (var i = 0; i < ${f}; i++) {
1186          let x_width = x_corner.y + i;
1187          if (x_width >= 0 && u32(x_width) < uniforms.x_shape[2]) {
1188            x_vals[i] = ${p.get("batch","u32(x_height)","u32(x_width)","input_channel")};
1189          } else {
1190            x_vals[i] = ${p.type.value}(0);
1191          }
1192        }
1193        for (var w_width: u32 = 0u; w_width < ${d[1]}; w_width++) {
1194          let w_val = ${m.get("w_height","w_width","0","output_channel")};
1195          for (var i = 0u; i < ${o}u; i++) {
1196            values[i] = fma(x_vals[i * u32(uniforms.strides[1]) + w_width], w_val, values[i]);
1197          }
1198        }
1199      }
1200    }
1201
1202    for (var i = 0u; i < ${o}u; i++) {
1203      var value = values[i];
1204      ${n?"value += b[output_channel];":""}
1205      ${h}
1206      ${a.set("batch","row","col + i","output_channel","value")};
1207    }
1208  }`}}}}),nH=q(()=>{nv(),nq(),nV(),nF(),nW(),nD(),nU(),nE(),ij=[2,3,1,0],iz=(t,r)=>{let i=t.kernelShape.slice();i.length<r[1].dims.length-2&&i.push(...Array(r[1].dims.length-2-i.length).fill(0));for(let t=2;t<r[1].dims.length;++t)0===i[t-2]&&(i[t-2]=r[1].dims[t]);let a=t.pads.slice();e7.adjustPadsBasedOnAutoPad(r[0].dims,t.strides,t.dilations,i,a,"NHWC"===t.format,t.autoPad);let n=Object.assign({},t);return Object.assign(n,{kernelShape:i,pads:a}),n},iD=t=>{let r=iy(t),i=t.format;return{autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][t.auto_pad],format:i,dilations:t.dilations,group:t.group,kernelShape:t.kernel_shape,pads:t.pads,strides:t.strides,wIsConst:t.w_is_const(),...r,cacheKey:`${t.format};${r.activation};`}},iB=(t,r,i,a)=>{let n="NHWC"===i.format,s=((t,r,i,a,n,s)=>{let o=t[0],l=t.slice(s?1:2,s?3:4),u=l.length,d=r[0],c=r.slice(2).map((t,r)=>t+(t-1)*(i[r]-1)),h=l.map((t,r)=>t+a[r]+a[r+u]).map((t,r)=>Math.floor((t-c[r]+n[r])/n[r]));return h.splice(0,0,o),h.splice(s?3:1,0,d),h})(r[0].dims,r[1].dims,i.dilations,i.pads,i.strides,n);if(1!==i.group){let o=[r[0]];if(n){let a=t.kernelCustomData.wT??t.compute(tF(r[1],ij),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=a),o.push(a)}else o.push(r[1]);3===r.length&&o.push(r[2]),!t.adapterInfo.isArchitecture("ampere")&&n&&r[1].dims[0]===i.group&&1===r[1].dims[1]&&1===i.dilations[0]&&1===i.dilations[1]?t.compute(iR(o,i,s,a),{inputs:o}):t.compute(iP(o,i,s,a),{inputs:o});return}let o=3===r.length,l=r[0].dims[n?1:2],u=r[0].dims[n?2:3],d=r[0].dims[n?3:1],c=r[1].dims[2],h=r[1].dims[3],f=s[n?1:2],p=s[n?2:3],m=s[n?3:1],g=n&&c===l&&h===u&&0===i.pads[0]&&0===i.pads[1];if(g||1===c&&1===h&&1===i.dilations[0]&&1===i.dilations[1]&&1===i.strides[0]&&1===i.strides[1]&&0===i.pads[0]&&0===i.pads[1]){let c=s[0],h,b,y,v=[];if(n){let a=t.kernelCustomData.wT??t.compute(tF(r[1],ij),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];if(i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=a),g){let t=l*u*d;h=r[0].reshape([1,c,t]),b=a.reshape([1,t,m]),y=[1,c,m]}else h=r[0].reshape([c,l*u,d]),b=a.reshape([1,d,m]),y=[c,f*p,m];v.push(h),v.push(b)}else h=r[0].reshape([c,d,l*u]),b=r[1].reshape([1,m,d]),y=[c,m,f*p],v.push(b),v.push(h);o&&v.push(r[2]);let _=y[2],w=v[0].dims[v[0].dims.length-1];_<8&&w<8?t.compute(i$(v,i,s,y,n,a),{inputs:v}):t.compute(iE(v,i,s,y,n,a),{inputs:v});return}let b=t.kernelCustomData.wT??t.compute(tF(r[1],ij),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=b);let y=[r[0],b];o&&y.push(r[2]);let v=n?f*p:m,_=n?m:f*p,w=c*h*d;t.compute(iT(y,i,s,v,_,w,o,!0,a),{inputs:y})},iL=(t,r)=>{if(((t,r)=>{if(!t||2!==t.length&&3!==t.length)throw Error("Conv requires 2 or 3 inputs");if(t[0].dims.length>5)throw Error("greater than 5D is not supported");if(t[0].dims.length!==t[1].dims.length)throw Error("filter does not have same dimension as input");if(t[0].dims["NHWC"===r.format?t[0].dims.length-1:1]!==t[1].dims[1]*r.group)throw Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(3===t.length&&(1!==t[2].dims.length||t[1].dims[0]!==t[2].dims[
12080]))throw Error("invalid bias");let i=t[0].dims.length-2;if(r.dilations.length!==i)throw Error(`dilations should be ${i}D`);if(r.strides.length!==i)throw Error(`strides should be ${i}D`);if(r.pads.length!==2*i)throw Error(`pads should be ${2*i}D`);if(0!==r.kernelShape.length&&r.kernelShape.length!==t[1].dims.length-2)throw Error("invalid kernel shape")})(t.inputs,r),3===t.inputs[0].dims.length)((t,r)=>{let i="NHWC"===r.format,a=[t.inputs[0].reshape(i?[t.inputs[0].dims[0],1,t.inputs[0].dims[1],t.inputs[0].dims[2]]:[t.inputs[0].dims[0],t.inputs[0].dims[1],1,t.inputs[0].dims[2]]),t.inputs[1].reshape([t.inputs[1].dims[0],t.inputs[1].dims[1],1,t.inputs[1].dims[2]])];3===t.inputs.length&&a.push(t.inputs[2]);let n=[0,r.pads[0],0,r.pads[1]],s=[1].concat(r.strides),o=[1].concat(r.dilations),l=[1].concat(r.kernelShape),u=iz({...r,pads:n,strides:s,dilations:o,kernelShape:l},a);iB(t,a,u,t=>i?[t[0],t[2],t[3]]:[t[0],t[1],t[3]])})(t,r);else if(5===t.inputs[0].dims.length)((t,r,i)=>{let a="NHWC"===i.format?"channelsLast":"channelsFirst",n=iz(i,r),s="NOTSET"===i.autoPad?i.pads:i.autoPad,o=iO(r[0].dims,r[1].dims,i.strides,i.dilations,s,!1,a);t.compute(iM(r,n,o.outShape,[o.filterDepth,o.filterHeight,o.filterWidth],[o.padInfo.front,o.padInfo.top,o.padInfo.left],a))})(t,t.inputs,r);else{let i=iz(r,t.inputs);iB(t,t.inputs,i)}}}),nG=q(()=>{ng(),ny(),nv(),nC(),iU=(t,r,i)=>{let a=t.length>2,n=r.outputShape,s="NHWC"===r.format,o=r.group,l=t[1].dims,u=l[2]/o,d=l[3],c=s?tI(u):1,h=s&&1===d&&u>=4,f=h?4*Math.floor(u/4):Math.floor(u/c)*c,p=u-f,m=s?tI(d):1,g=s?1===d?c:m:1,b=e8.size(n)/m,y=[Math.ceil(b/64),1,1];e2("verbose",()=>`[conv2d_backprop_webgpu] dispatch = ${y}`);let v=["rank","rank"],_=[r.strides[0],r.strides[1]],w=[r.kernelShape[s?1:2],r.kernelShape[s?2:3]],x=[r.dilations[0],r.dilations[1]],$=[w[0]+(r.dilations[0]<=1?0:(r.kernelShape[s?1:2]-1)*(r.dilations[0]-1)),w[1]+(r.dilations[1]<=1?0:(r.kernelShape[s?2:3]-1)*(r.dilations[1]-1))],S=[$[0]-1-Math.floor((r.pads[0]+r.pads[2])/2),$[1]-1-Math.floor((r.pads[1]+r.pads[3])/2)],k=[{type:12,data:b},{type:12,data:_},{type:12,data:w},{type:12,data:x},{type:12,data:$},{type:6,data:S},{type:12,data:f},{type:12,data:u},{type:12,data:d},...tT(t[0].dims,t[1].dims)];return a&&(k.push(...tT(t[2].dims)),v.push("rank")),k.push(...tT(n)),{name:"ConvTranspose2D",shaderCache:{hint:`${r.cacheKey};${c}${g}${m}${h}${p}`,inputDependencies:v},getRunData:()=>({dispatchGroup:{x:y[0],y:y[1],z:y[2]},outputs:[{dims:i?i(n):n,dataType:t[0].dataType}],programUniforms:k}),getShaderSource:r=>{let i=[{name:"output_size",type:"u32"},{name:"strides",type:"u32",length:_.length},{name:"filter_dims",type:"u32",length:w.length},{name:"dilations",type:"u32",length:w.length},{name:"effective_filter_dims",type:"u32",length:$.length},{name:"pads",type:"i32",length:S.length},{name:"input_channels_per_group_int",type:"u32"},{name:"input_channels_per_group",type:"u32"},{name:"output_channels_per_group",type:"u32"}],o=tC(t[0].dataType),l=s?1:2,u=s?2:3,d=s?3:1,f=tR("W",t[1].dataType,t[1].dims.length,g),b=tR("Dy",t[0].dataType,t[0].dims.length,c),y=[b,f];a&&y.push(tR("bias",t[2].dataType,[n[d]].length,m));let v=tj("result",t[0].dataType,n.length,m),x=`
1209            let outputIndices = ${v.offsetToIndices(`global_idx * ${m}`)};
1210            let batch = ${v.indicesGet("outputIndices",0)};
1211            let d1 = ${v.indicesGet("outputIndices",d)};
1212            let r = ${v.indicesGet("outputIndices",l)};
1213            let c = ${v.indicesGet("outputIndices",u)};
1214            let dyCorner = vec2<i32>(i32(r), i32(c)) - uniforms.pads;
1215            let dyRCorner = dyCorner.x;
1216            let dyCCorner = dyCorner.y;
1217            let groupId = d1 / uniforms.output_channels_per_group;
1218            let wOutChannel = d1 - groupId * uniforms.output_channels_per_group;
1219            // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).
1220            // ? = to be determined. : = across all values in that axis.
1221            var dotProd = ${v.type.value}(0.0);
1222            var wR: u32 = 0;
1223            if (uniforms.dilations.x == 1) {
1224              // Minimum wR >= 0 that satisfies (dyRCorner + wR) % (uniforms.strides.x) == 0
1225              wR = u32(((dyRCorner + i32(uniforms.strides.x) - 1) / i32(uniforms.strides.x)) * i32(uniforms.strides.x) - dyRCorner);
1226            }
1227            for (; wR < uniforms.effective_filter_dims.x; wR = wR + 1) {
1228              if (wR % uniforms.dilations.x != 0) {
1229                continue;
1230              }
1231              let dyR = (${o}(dyRCorner) + ${o}(wR)) / ${o}(uniforms.strides[0]);
1232              let wRPerm = uniforms.filter_dims.x - 1 - wR / uniforms.dilations.x;
1233              if (dyR < 0.0 || dyR >= ${o}(uniforms.Dy_shape[${l}
1233]) || fract(dyR) > 0.0 ||
1234                  wRPerm < 0) {
1235                continue;
1236              }
1237              let idyR: u32 = u32(dyR);
1238              var wC: u32 = 0;
1239              if (uniforms.dilations.y == 1) {
1240                // Minimum wC >= 0 that satisfies (dyCCorner + wC) % (uniforms.strides.y) == 0
1241                wC = u32(((dyCCorner + i32(uniforms.strides.y) - 1) / i32(uniforms.strides.y)) * i32(uniforms.strides.y) - dyCCorner);
1242              }
1243              for (; wC < uniforms.effective_filter_dims.y; wC = wC + 1) {
1244                if (wC % uniforms.dilations.y != 0) {
1245                  continue;
1246                }
1247                let dyC = (${o}(dyCCorner) + ${o}(wC)) / ${o}(uniforms.strides.y);
1248                let wCPerm = uniforms.filter_dims.y - 1 - wC / uniforms.dilations.y;
1249                if (dyC < 0.0 || dyC >= ${o}(uniforms.Dy_shape[${u}]) ||
1250                    fract(dyC) > 0.0 || wCPerm < 0) {
1251                  continue;
1252                }
1253                let idyC: u32 = u32(dyC);
1254                var inputChannel = groupId * uniforms.input_channels_per_group;
1255                ${h?`
1256                var x_offset = ${b.indicesToOffset(`${b.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${c};
1257                var w_offset = ${f.indicesToOffset(`${f.type.indices}(wRPerm, wCPerm, inputChannel, wOutChannel)`)} / ${g};
1258                  `:""}
1259                for (var d2: u32 = 0; d2 < uniforms.input_channels_per_group_int; d2 = d2 + ${h?4:c}) {
1260                  ${(()=>{let t="";if(h)4===c?t+=`
1261        let xValue = ${b.getByOffset("x_offset")};
1262        let wValue = ${f.getByOffset("w_offset")};
1263        dotProd = dotProd + dot(xValue, wValue);
1264        x_offset += 1u;
1265        w_offset += 1u;`:2===c?t+=`
1266          dotProd = dotProd + dot(vec4<${o}>(${b.getByOffset("x_offset")}, ${b.getByOffset("x_offset + 1u")}), vec4<${o}>(${f.getByOffset("w_offset")}, ${f.getByOffset("w_offset + 1u")}));
1267          x_offset += 2u;
1268          w_offset += 2u;`:1===c&&(t+=`
1269          dotProd = dotProd + dot(vec4<${o}>(${b.getByOffset("x_offset")}, ${b.getByOffset("x_offset + 1u")}, ${b.getByOffset("x_offset + 2u")}, ${b.getByOffset("x_offset + 3u")}), vec4<${o}>(${f.getByOffset("w_offset")}, ${f.getByOffset("w_offset + 1u")}, ${f.getByOffset("w_offset + 2u")}, ${f.getByOffset("w_offset + 3u")}));
1270          x_offset += 4u;
1271          w_offset += 4u;`);else if(t+=`
1272                  let xValue = ${s?b.getByOffset(`${b.indicesToOffset(`${b.type.indices}(batch, idyR, idyC, inputChannel)`)} / ${c}`):b.get("batch","inputChannel","idyR","idyC")};
1273        `,1===c)t+=`
1274          let w_offset = ${f.indicesToOffset(`${f.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel, wOutChannel)`)};
1275          let wValue = ${f.getByOffset(`w_offset / ${g}`)};
1276          dotProd = dotProd + xValue * wValue;`;else for(let r=0;r<c;r++)t+=`
1277            let wValue${r} = ${f.getByOffset(`${f.indicesToOffset(`${f.type.indices}(u32(wRPerm), u32(wCPerm), inputChannel + ${r}, wOutChannel)`)} / ${g}`)};
1278            dotProd = dotProd + xValue[${r}] * wValue${r};`;return t})()}
1279                  inputChannel = inputChannel + ${h?4:c};
1280                }
1281                ${(()=>{if(0===p)return"";if(!h)throw Error(`packInputAs4 ${h} is not true.`);let t="";if(1===c){t+="dotProd = dotProd";for(let r=0;r<p;r++)t+=`
1282            + ${b.getByOffset(`x_offset + ${r}`)} * ${f.getByOffset(`w_offset + ${r}`)}`;t+=";"}else if(2===c){if(2!==p)throw Error(`Invalid inputChannelsRemainder ${p}.`);t+=`
1283          let xValue = ${b.getByOffset("x_offset")};
1284          let wValue = ${f.getByOffset("w_offset")};
1285          dotProd = dotProd + dot(xValue, wValue);`}return t})()}
1286                wC = wC + uniforms.strides.y - 1;
1287              }
1288              wR = wR + uniforms.strides[0] - 1;
1289            }
1290            let value = dotProd${a?` + bias[d1 / ${m}]`:""};
1291            ${v.setByOffset("global_idx","value")};
1292          `;return`
1293    ${r.registerUniforms(i).declareVariables(...y,v)}
1294      ${r.mainStart()}
1295      ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")};
1296    ${x}}`}}}}),nK=q(()=>{nG(),nD(),nE(),iF=(t,r,i,a,n,s)=>(t-1)*r+i+(a-1)*n+1-s,iq=(t,r,i,a,n)=>{let s=Math.floor(t/2);"SAME_UPPER"===r?(i[a]=s,i[n]=t-s):"SAME_LOWER"===r&&(i[a]=t-s,i[n]=s)},iV=(t,r)=>{let i=t.kernelShape.slice();if(0===t.kernelShape.length||0===t.kernelShape.reduce((t,r)=>t*r,1)){i.length=0;for(let t=2;t<r[1].dims.length;++t)i.push(r[1].dims[t])}let a="NHWC"===t.format;i.splice(0,0,r[1].dims[0]),i.splice(a?3:1,0,r[1].dims[1]);let n=t.pads.slice(),s=t.outputShape.slice(),o=t.outputPadding.slice(),l=r[0].dims,u=t.dilations.slice();0===u.reduce((t,r)=>t+r,0)&&(u=Array(r[0].dims.length-2).fill(1));let d=t.strides.slice();0===d.reduce((t,r)=>t+r,0)&&(d=Array(r[0].dims.length-2).fill(1)),((t,r,i,a,n,s,o,l,u,d)=>{let c=t.length-2,h=0===d.length;u.length<c&&u.push(...Array(c-u.length).fill(0));let f=t[0],p=r[l?3:1]*n;for(let n=0,f=t.length-c-!!l;n<c;++n,++f){let l=t[f],p=h?l*o[n]:d[n];iq(iF(l,o[n],s[n],r[f],i[n],p),a,s,n,n+c),h&&d.push(o[n]*(l-1)+u[n]+(r[f]-1)*i[n]+1-s[n]-s[n+c])}d.splice(0,0,f),d.splice(l?3:1,0,p)})(l,i,u,t.autoPad,t.group,n,d,a,o,s);let c=Object.assign({},t);return Object.assign(c,{kernelShape:i,pads:n,outputPadding:o,outputShape:s,dilations:u,strides:d}),c},iW=t=>{let r=iy(t),i=t.format,a=["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][typeof t.autoPad>"u"?0:t.autoPad],n=t.dilations,s=t.group,o=t.kernelShape,l=t.pads,u=t.strides,d=t.wIsConst(
1296);return{autoPad:a,format:i,dilations:n,group:s,kernelShape:o,outputPadding:t.outputPadding,outputShape:t.outputShape,pads:l,strides:u,wIsConst:d,...r,cacheKey:`${t.format};${r.activation};`}},iH=(t,r,i,a)=>{let n=t.kernelCustomData.wT??t.compute(tF(r[1],[2,3,0,1]),{inputs:[1],outputs:[i.wIsConst?-2:-1]})[0];i.wIsConst&&!t.kernelCustomData.wT&&(t.kernelCustomData.wT=n);let s=[r[0],n];3===r.length&&s.push(r[2]),t.compute(iU(s,i,a),{inputs:s})},iG=(t,r)=>{if(((t,r)=>{if(!t||2!==t.length&&3!==t.length)throw Error("Conv requires 2 or 3 inputs");if(4!==t[0].dims.length&&3!==t[0].dims.length)throw Error("currently only support 2-dimensional conv");if(t[0].dims.length!==t[1].dims.length)throw Error("filter does not have same dimension as input");if(t[0].dims["NHWC"===r.format?t[0].dims.length-1:1]!==t[1].dims[0])throw Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let i=t[1].dims[1]*r.group;if(3===t.length&&(1!==t[2].dims.length||t[2].dims[0]!==i))throw Error("invalid bias");let a=t[0].dims.length-2;if(r.dilations.reduce((t,r)=>t+r,0)>0&&r.dilations.length!==a)throw Error(`dilations should be ${a}D`);if(r.strides.reduce((t,r)=>t+r,0)>0&&r.strides.length!==a)throw Error(`strides should be ${a}D`);if(r.pads.reduce((t,r)=>t+r,0)>0&&r.pads.length!==2*a)throw Error(`pads should be ${2*a}D`);if(r.outputPadding.length!==a&&0!==r.outputPadding.length)throw Error(`output_padding should be ${a}D`);if(r.kernelShape.reduce((t,r)=>t+r,0)>0&&0!==r.kernelShape.length&&r.kernelShape.length!==t[1].dims.length-2)throw Error("invalid kernel shape");if(0!==r.outputShape.length&&r.outputShape.length!==t[0].dims.length-2)throw Error("invalid output shape")})(t.inputs,r),3===t.inputs[0].dims.length)((t,r)=>{let i="NHWC"===r.format,a=[t.inputs[0].reshape(i?[t.inputs[0].dims[0],1,t.inputs[0].dims[1],t.inputs[0].dims[2]]:[t.inputs[0].dims[0],t.inputs[0].dims[1],1,t.inputs[0].dims[2]]),t.inputs[1].reshape([t.inputs[1].dims[0],t.inputs[1].dims[1],1,t.inputs[1].dims[2]])];3===t.inputs.length&&a.push(t.inputs[2]);let n=r.kernelShape;(0===n.length||0===n[0])&&(n=[t.inputs[1].dims[2]]);let s=r.dilations;(0===s.length||0===s[0])&&(s=[1]);let o=r.strides;(0===o.length||0===o[0])&&(o=[1]);let l=r.pads;0===l.length&&(l=[0,0]),l=[0,l[0],0,l[1]],o=[1].concat(o),s=[1].concat(s),n=[1].concat(n);let u=r.outputPadding;u=[0].concat(u);let d=iV({...r,pads:l,strides:o,dilations:s,kernelShape:n,outputPadding:u},a);iH(t,a,d,t=>i?[t[0],t[2],t[3]]:[t[0],t[1],t[3]])})(t,r);else{let i=iV(r,t.inputs);iH(t,t.inputs,i)}}}),nY=q(()=>{ng(),nv(),nk(),nC(),iK=(t,r)=>{let i=t.inputs[0].dims,a=t.inputs[0].dataType,n=t.inputs[1];t.compute(((t,r,i,a)=>{let n=e8.size(r),s=r.length,o=tR("input",t,s),l=tj("output",t,s),u=6===i.dataType?i.getInt32Array()[0]:Number(i.getBigInt64Array()[0]),d=e8.normalizeAxis(u,s);return{name:"CumSum",shaderCache:{hint:a.cacheKey,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:r,dataType:t}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:[{type:12,data:n},{type:12,data:d},...tT(r,r)]}),getShaderSource:t=>{let r=` i32(${o.indicesGet("inputIndices","uniforms.axis")}) `,i=tM("uniforms.input_shape","uniforms.axis",s),n=a.reverse?r+(a.exclusive?" + 1":""):"0",u=a.reverse?i:r+(a.exclusive?"":" + 1");return`
1297                ${t.registerUniform("outputSize","u32").registerUniform("axis","u32").declareVariables(o,l)}
1298                ${t.mainStart()}
1299                  ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1300                  var inputIndices = ${l.offsetToIndices("global_idx")};
1301                  var sum = ${l.type.value}(0);
1302                  let first : i32 = ${n};
1303                  let last : i32 = ${u};
1304                  for (var i : i32 = first; i < last; i++) {
1305                    ${o.indicesSet("inputIndices","uniforms.axis","u32(i)")};
1306                    sum = sum + ${o.getByIndices("inputIndices")};
1307                  }
1308                  ${l.setByOffset("global_idx","sum")};
1309                }`}}})(a,i,n,r),{inputs:[0]})},iY=t=>{let r=1===t.exclusive,i=1===t.reverse;return t$({exclusive:r,reverse:i})}}),nQ=q(()=>{ng(),nv(),nk(),nC(),iQ=(t,r)=>{(t=>{if(!t||1!==t.length)throw Error("DepthToSpace requires 1 input.");if(4!==t[0].dims.length)throw Error("DepthToSpace requires 4D input.")})(t.inputs),t.compute(((t,r)=>{let i,a,n,s,o,l,u="NHWC"===r.format,d=r.blocksize,c="DCR"===r.mode;u?([i,a,n,s]=t.dims,o=c?[i,a,n,d,d,s/d**2]:[i,a,n,s/d**2,d,d],l=c?[0,1,3,2,4,5]:[0,1,4,2,5,3]):([i,a,n,s]=[t.dims[0],t.dims[2],t.dims[3],t.dims[1]],o=c?[i,d,d,s/d**2,a,n]:[i,s/d**2,d,d,a,n],l=c?[0,3,4,1,5,2]:[0,1,4,2,5,3]);let h=t.reshape(o),f=h.dims.length,p=t.dataType,m=tR("a",p,f),g=tj("output",p,f);return{name:"DepthToSpace",shaderCache:{hint:`${t.dims};${r.blocksize};${r.mode}`,inputDependencies:["rank"]},getRunData:t=>{let r=u?[i,a*d,n*d,s/d**2]:[i,s/d**2,a*d,n*d],o=e8.size(r),c=h.dims,f=e8.sortBasedOnPerm(c,l);return{outputs:[{dims:r,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(o/64)},programUniforms:[{type:12,data:o},...tT(c,f)]}},getShaderSource:t=>`
1310  ${t.registerUniform("output_size","u32").declareVariables(m,g)}
1311
1312  ${((t,r,i,a)=>{let n=[];
1312n.push(`fn perm(i: ${a.type.indices}) -> ${i.type.indices} {
1313    var a: ${i.type.indices};`);for(let a=0;a<r;++a)n.push(i.indicesSet("a",t[a],`i[${a}]`));return n.push("return a;}"),n.join(`
1314`)})(l,f,m,g)}
1315
1316  ${t.mainStart()}
1317    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1318
1319    let indices = ${g.offsetToIndices("global_idx")};
1320    let aIndices = perm(indices);
1321
1322    ${g.setByOffset("global_idx",m.getByIndices("aIndices"))}
1323  }`}})(t.inputs[0],r))},iX=t=>t$({blocksize:t.blocksize,mode:t.mode,format:t.format})}),nX=q(()=>{ng(),nv(),nk(),nC(),i1="^"+(iJ="("+(iZ="[a-zA-Z]|\\.\\.\\.")+")+")+"$",i0="^"+("("+iJ+",)*")+iJ+"$",i2=class{constructor(t=-1){this.symbolToIndices=new Map,this.inputIndex=t}addSymbol(t,r){let i=this.symbolToIndices.get(t);void 0===i?i=[r]:i.push(r),this.symbolToIndices.set(t,i)}},i3=class{constructor(t,r){this.equation=r,this.hasEllipsis=!1,this.symbolToInfo=new Map,this.lhs=[],this.outputDims=[];let[i,a]=r.includes("->")?r.split("->",2):[r,""];if(!i.match(RegExp(i0)))throw Error("Invalid LHS term");if(i.split(",").forEach((r,i)=>{let a=t[i].dims.slice();if(!r.match(RegExp(i1)))throw Error("Invalid LHS term");let n=this.processTerm(r,!0,a,i);this.lhs.push(n)}),""===a)a+=[...this.symbolToInfo.entries()].filter(([t,r])=>1===r.count||"..."===t).map(([t])=>t).join("");else if(!a.match(RegExp(iJ)))throw Error("Invalid RHS");a.match(RegExp(iZ,"g"))?.forEach(t=>{if("..."===t)this.outputDims=this.outputDims.concat(this.ellipsisDims);else{let r=this.symbolToInfo.get(t);if(void 0===r)throw Error("Invalid RHS symbol");this.outputDims.push(r.dimValue)}}),this.rhs=this.processTerm(a,!1,this.outputDims)}addSymbol(t,r,i){let a=this.symbolToInfo.get(t);if(void 0!==a){if(a.dimValue!==r&&1!==a.count)throw Error("Dimension mismatch");a.count++,a.inputIndices.push(i)}else a={count:1,dimValue:r,inputIndices:[i]};this.symbolToInfo.set(t,a)}processTerm(t,r,i,a=-1){let n=i.length,s=!1,o=[],l=0;if(!t.match(RegExp(i1))&&!r&&""!==t)throw Error("Invalid LHS term");let u=t.match(RegExp(iZ,"g")),d=new i2(a);return u?.forEach((t,c)=>{if("..."===t){if(s)throw Error("Only one ellipsis is allowed per input term");s=!0;let t=n-u.length+1;if(t<0)throw Error("Ellipsis out of bounds");if(o=i.slice(l,l+t),this.hasEllipsis){if(this.ellipsisDims.length!==o.length||this.ellipsisDims.toString()!==o.toString())throw Error("Ellipsis dimensions mismatch")}else if(r)this.hasEllipsis=!0,this.ellipsisDims=o;else throw Error("Ellipsis must be specified in the LHS");for(let t=0;t<o.length;t++){let r=String.fromCharCode(48+t);d.addSymbol(r,c+t),this.addSymbol(r,i[l++],a)}}else d.addSymbol(t,c+(this.hasEllipsis?this.ellipsisDims.length-1:0)),this.addSymbol(t,i[l++],a)}),d}},i4=(t,r)=>{let i=new i3(t.inputs,r.equation),a=i.outputDims,n=t.inputs.map((t,r)=>t.dims);t.compute(((t,r,i,a)=>{let n=t.map(t=>t.length).map((t,i)=>tR(`input${i}`,r,t)),s=e8.size(a),o=tj("output",r,a.length),l=[...i.symbolToInfo.keys()].filter(t=>!i.rhs.symbolToIndices.has(t));return{name:"Einsum",shaderCache:{hint:i.equation,inputDependencies:t.map(()=>"rank")},getRunData:()=>{let n=l.filter(t=>i.symbolToInfo.has(t)).map(t=>({type:12,data:i.symbolToInfo.get(t)?.dimValue||0}));n.push({type:12,data:s});let o=t.map((t,r)=>[...tT(t)]).reduce((t,r)=>t.concat(r),n);return o.push(...tT(a)),{outputs:[{dims:a,dataType:r}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:o}},getShaderSource:t=>{let r=[],a=[],s=[],u=[],d=[],c=i.symbolToInfo.size===i.rhs.symbolToIndices.size;i.symbolToInfo.forEach((t,l)=>{if(i.rhs.symbolToIndices.has(l)){let a=i.rhs.symbolToIndices.get(l)?.[0];void 0!==a&&i.lhs.forEach((i,s)=>{if(t.inputIndices.includes(s)){let t=i.symbolToIndices.get(l);if(void 0===t)throw Error("Invalid symbol error");t.forEach(t=>{r.push(`${n[s].indicesSet(`input${s}Indices`,t,o.indicesGet("outputIndices",a))}`)})}})}else i.lhs.forEach((r,i)=>{if(t.inputIndices.includes(i)){let t=r.symbolToIndices.get(l);if(void 0===t)throw Error("Invalid symbol error");t.forEach(t=>{a.push(`${n[i].indicesSet(`input${i}Indices`,t,`${l}`)}`)}),d.push(`prod *= ${n[i].getByIndices(`input${i}Indices`)};`)}}),s.push(`for(var ${l}: u32 = 0; ${l} < uniforms.${(t=>t+"_max")(l)}; ${l}++) {`),u.push("}")});let h=c?[...r,`let sum = ${n.map((t,r)=>t.getByIndices(`input${r}Indices`)).join(" * ")};`]:[...r,"var sum = 0.0;",...s,...a,"var prod = 1.0;",...d,"sum += prod;",...u];return`
1324            ${t.registerUniforms(l.map(t=>({name:`${(t=>t+"_max")(t)}`,type:"u32"}))).registerUniform("outputSize","u32").declareVariables(...n,o)}
1325
1326            ${t.mainStart()}
1327            ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1328            var outputIndices = ${o.offsetToIndices("global_idx")};
1329            ${n.map((t,r)=>`var input${r}Indices: ${n[r].type.indices};`).join(`
1330`)}
1331            ${h.join(`
1332`)};
1333            ${o.setByOffset("global_idx","sum")};
1334          }`}}}
1334)(n,t.inputs[0].dataType,i,a))},i8=t=>{let r=t.equation.replace(/\s+/g,"");return t$({equation:r})}}),nZ=q(()=>{ng(),nv(),nC(),i7=(t,r)=>{let i=t.length-r.length,a=[];for(let r=0;r<i;++r)a.push(t[r]);for(let n=0;n<r.length;++n)a.push(1===r[n]?t[n+i]:r[n]);return a},i6=t=>{(t=>{if(!t||2!==t.length)throw Error("Expand requires 2 input.");let r=t[0].dims,i=Array.from(t[1].getBigInt64Array(),Number),a=i.length<r.length?0:i.length-r.length,n=r.length<i.length?0:r.length-i.length;for(;a<i.length&&n<r.length;++a,++n)if(i[a]!==r[n]&&1!==i[a]&&1!==r[n])throw Error("Expand requires shape to be broadcastable to input")})(t.inputs),t.compute((t=>{let r=t[0].dims,i=((t,r)=>t.length>r.length?i7(t,r):i7(r,t))(r,Array.from(t[1].getBigInt64Array(),Number)),a=t[0].dataType,n=9===a||1===e8.size(r),s=9===a||r.length>0&&r[r.length-1]%4==0?4:1,o=n||i.length>0&&i[i.length-1]%4==0?4:1,l=Math.ceil(e8.size(i)/o),u=[{type:12,data:l},...tT(r,i)];return{name:"Expand",shaderCache:{hint:`${i.length};${s}${o}`,inputDependencies:["rank"]},getShaderSource:t=>{let n=tR("input",a,r.length,s),l=tj("output",a,i.length,o),u;if(9===a){let t=(t,r,i="")=>`
1335          let outputIndices${r} = ${l.offsetToIndices(`outputOffset + ${r}u`)};
1336          let offset${r} = ${n.broadcastedIndicesToOffset(`outputIndices${r}`,l)};
1337          let index${r} = offset${r} / 4u;
1338          let component${r} = offset${r} % 4u;
1339          ${t}[${r}] = ${i}(${n.getByOffset(`index${r}`)}[component${r}]);
1340        `;u=`
1341        let outputOffset = global_idx * ${o};
1342        var data = vec4<u32>(0);
1343        ${t("data",0,"u32")}
1344        ${t("data",1,"u32")}
1345        ${t("data",2,"u32")}
1346        ${t("data",3,"u32")}
1347        ${l.setByOffset("global_idx","data")}
1348      }`}else u=`
1349        let outputIndices = ${l.offsetToIndices(`global_idx * ${o}`)};
1350        let inputOffset = ${n.broadcastedIndicesToOffset("outputIndices",l)};
1351        let data = ${l.type.value}(${n.getByOffset(`inputOffset / ${s}`)});
1352        ${l.setByOffset("global_idx","data")}
1353      }`;return`
1354    ${t.registerUniform("vec_size","u32").declareVariables(n,l)}
1355    ${t.mainStart()}
1356    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
1357    ${u}`},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(l/64)},programUniforms:u})}})(t.inputs),{inputs:[0]})}}),nJ=q(()=>{ng(),nv(),nC(),nP(),i5=t=>{t.inputs.length<2||0===e8.size(t.inputs[1].dims)?r4(t):t.compute((t=>{let r=t[0].dataType,i=e8.size(t[0].dims),a=e8.size(t[1].dims),n=a%4==0;return{name:"FastGeluWithBias",shaderCache:{hint:`${n}`,inputDependencies:["type","type"]},getShaderSource:t=>{let i=tR("x",r,[1],4),a=tR("bias",r,[1],4),s=tj("y",r,[1],4),o=t=>`
1358      let bias${t}_offset: u32 = (global_idx * 4 + ${t}) % uniforms.bias_size;
1359      let bias${t} = ${a.getByOffset(`bias${t}_offset / 4`)}[bias${t}_offset % 4];`,l=n?`
1360      let bias = ${a.getByOffset("global_idx % (uniforms.bias_size / 4)")};`:`${o(0)}${o(1)}${o(2)}${o(3)}
1361      let bias = ${i.type.value}(bias0, bias1, bias2, bias3);`;return`${t.registerUniforms([{name:"output_vec_size",type:"u32"},{name:"bias_size",type:"u32"}]).declareVariables(i,a,s)}
1362
1363    ${r2(tE(r))}
1364
1365    ${t.mainStart(tS)}
1366      ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_vec_size")}
1367
1368      let x = ${i.getByOffset("global_idx")};
1369      ${l}
1370      let x_in = x + bias;
1371      ${s.setByOffset("global_idx",r3("x_in"))}
1372    }`},getRunData:t=>({outputs:[{dims:t[0].dims,dataType:t[0].dataType}],programUniforms:[{type:12,data:Math.ceil(i/4)},{type:12,data:a}],dispatchGroup:{x:Math.ceil(i/tS/4)}})}})(t.inputs))}}),n1=q(()=>{ng(),nv(),nk(),nC(),i9=t=>t$({axis:t.axis}),ae=(t,r)=>{(t=>{if(!t||2!==t.length)throw Error("Gather requires 2 inputs.")})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims,a=t[1].dims,n=i.length,s=e8.normalizeAxis(r.axis,n),o=i.slice(0);o.splice(s,1,...a);let l=i[s],u=9===t[0].dataType?4:1,d=Math.ceil(e8.size(o)/u),c=[{type:12,data:d},{type:6,data:l},{type:12,data:s},...tT(t[0].dims,t[1].dims,o)];return{name:"Gather",shaderCache:{hint:r.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:o,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(d/64)},programUniforms:c}),getShaderSource:r=>{let i=tR("data",t[0].dataType,t[0].dims.length,u),l=tR("inputIndices",t[1].dataType,t[1].dims.length),d=tj("output",t[0].dataType,o.length,u),c=t=>{let r=a.length,u=`var indicesIndices${t}  = ${l.type.indices}(0);`;for(let i=0;i<r;i++)u+=`${r>1?`indicesIndices${t}[${i}]`:`indicesIndices${t}`} = ${o.length>1?`outputIndices${t}[uniforms.axis + ${i}]`:`outputIndices${t}`};`;u+=`
1373          var idx${t} = ${l.getByIndices(`indicesIndices${t}`)};
1374          if (idx${t} < 0) {
1375            idx${t} = idx${t} + uniforms.axisDimLimit;
1376          }
1377          var dataIndices${t} : ${i.type.indices};
1378        `;
1378for(let i=0,a=0;i<n;i++)i===s?(u+=`${n>1?`dataIndices${t}[${i}]`:`dataIndices${t}`} = u32(idx${t});`,a+=r):(u+=`${n>1?`dataIndices${t}[${i}]`:`dataIndices${t}`} = ${o.length>1?`outputIndices${t}[${a}]`:`outputIndices${t}`};`,a++);return u},h;if(9===t[0].dataType){let t=(t,r,a="")=>`
1379          let outputIndices${r} = ${d.offsetToIndices(`outputOffset + ${r}u`)};
1380          ${c(r)};
1381          let offset${r} = ${i.indicesToOffset(`dataIndices${r}`)};
1382          let index${r} = offset${r} / 4u;
1383          let component${r} = offset${r} % 4u;
1384          ${t}[${r}] = ${a}(${i.getByOffset(`index${r}`)}[component${r}]);
1385        `;h=`
1386        let outputOffset = global_idx * ${u};
1387        var value = vec4<u32>(0);
1388        ${t("value",0,"u32")}
1389        ${t("value",1,"u32")}
1390        ${t("value",2,"u32")}
1391        ${t("value",3,"u32")}
1392        ${d.setByOffset("global_idx","value")}
1393      `}else h=`
1394      let outputIndices = ${d.offsetToIndices("global_idx")};
1395      ${c("")};
1396      let value = ${i.getByIndices("dataIndices")};
1397      ${d.setByOffset("global_idx","value")};
1398      `;return`
1399      ${r.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(i,l,d)}
1400      ${r.mainStart()}
1401        ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1402        ${h}
1403      }`}}})(t.inputs,r))}}),n0=q(()=>{ng(),nv(),nC(),at=(t,r)=>{let i=t.inputs,a=i[0].dims,n=i[0].dataType,s=i[1].dims,o=s[s.length-1],l=e8.sizeToDimension(s,s.length-1),u=e8.sizeFromDimension(a,r.batchDims+o),d=e8.sizeToDimension(a,r.batchDims),c=e8.sizeFromDimension(a,r.batchDims),h=Array(o),f=u;for(let t=0;t<o;++t)h[o-1-t]=f,f*=a[r.batchDims+o-1-t];let p=((t,r,i,a,n,s,o,l,u)=>{let d=[{type:12,data:s},{type:12,data:a},{type:12,data:n},{type:12,data:i},{type:12,data:o},{type:12,data:l},{type:12,data:u}],c=[s];return d.push(...tT(r.dims,c)),t.compute({name:"computeSliceOffsets",shaderCache:{hint:`${n.length}_${i.length}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:c,dataType:t.inputs[1].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:d}),getShaderSource:t=>{let a=tR("indices_data",r.dataType,r.dims.length),s=tj("input_slice_offsets_data",12,1,1),o=[{name:"output_size",type:"u32"},{name:"batch_dims",type:"u32"},{name:"input_dims",type:"u32",length:n.length},{name:"sizes_from_slice_dims_data",type:"u32",length:i.length},{name:"num_slices_per_batch",type:"u32"},{name:"input_batch_stride",type:"u32"},{name:"num_slice_dims",type:"u32"}];return`
1404  ${t.registerUniforms(o).declareVariables(a,s)}
1405  ${t.mainStart()}
1406    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1407    let batch_idx = global_idx / uniforms.num_slices_per_batch;
1408    let base_offset = batch_idx * uniforms.input_batch_stride;
1409
1410    let slice_indices_base_offset = global_idx * uniforms.num_slice_dims;
1411    var relative_slice_offset = 0;
1412    for (var dim_idx = 0u; dim_idx < uniforms.num_slice_dims; dim_idx ++) {
1413      var index = i32(indices_data[dim_idx + slice_indices_base_offset].x);
1414      let input_dim_idx = uniforms.batch_dims + dim_idx;
1415      if (index < 0) {
1416        ${1===n.length?"index += i32(uniforms.input_dims);":"index += i32(uniforms.input_dims[input_dim_idx]);"}
1417      }
1418      ${1===i.length?"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data);":"relative_slice_offset += index * i32(uniforms.sizes_from_slice_dims_data[dim_idx]);"}
1419    }
1420
1421    input_slice_offsets_data[global_idx] =  base_offset + u32(relative_slice_offset);
1422  }`}},{inputs:[r],outputs:[-1]})[0]})(t,i[1],h,r.batchDims,a,l,l/d,c,o),m=r.batchDims+o;if(m>a.length)throw Error("last dimension of indices must not be larger than rank of input tensor");let g=s.slice(0,-1).concat(a.slice(m)),b=e8.size(g),y=[{type:12,data:b},{type:12,data:u},...tT(i[0].dims,p.dims,g)];t.compute({name:"GatherND",shaderCache:{hint:r.cacheKey,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:g,dataType:n}],dispatchGroup:{x:Math.ceil(b/64)},programUniforms:y}),getShaderSource:t=>{let r=tR("data",i[0].dataType,i[0].dims.length),a=tR("slice_offsets",12,p.dims.length),n=tj("output",i[0].dataType,g.length);return`
1423          ${t.registerUniform("output_size","u32").registerUniform("slice_size","u32").declareVariables(r,a,n)}
1424            ${t.mainStart()}
1425            ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1426          let slice_offset = slice_offsets[global_idx / uniforms.slice_size];
1427          output[global_idx] = data[u32(slice_offset) + global_idx % uniforms.slice_size];
1428        }`}},{inputs:[i[0],p]})},ar=t=>({batchDims:t.batch_dims,cacheKey:""})}),n2=q(()=>{ng(),nv(),nk(),nC(),ai=(t,r)=>{((t,r)=>{if(t.length<3||t.length>4)throw Error("GatherBlockQuantized requires 3 or 4 inputs.");let i=e8.normalizeAxis(r.quantizeAxis,t[0].dims.length),a=r.blockSize,n=t[0],s=t[2],o=4===t.length?t[3]:void 0;if(s.dims.length!==n.dims.length||!n.dims.map((t,r)=>r===i?Math.ceil(t/a)===s.dims[r]:t===s.dims[r]).reduce((t,r)=>t&&r,!0))throw Error("Scales must have the same rank as the input tensor and the dims should match except on gatherAxis.");if(o){if(o.dataType!==n.dataType)throw Error("Zero point must have the same data type as the input tensor.");if(o.dims.length!==s.dims.length||!o.dims.map((t,r)=>t===s.dims[r]).reduce((t,r)=>t&&r,!0))throw Error("Zero point must have the same rank as the input tensor and the dims should match except on quantizeAxis.")}})(t.inputs,r),t.compute(((t,r)=>{let i=t[0].dims,a=t[1].dims,n=i.length,s=e8.normalizeAxis(r.gatherAxis,n),o=e8.normalizeAxis(r.quantizeAxis,n),l=i.slice(0);l.splice(s,1,...a);let u=e8.size(l),d=t[2].dataType,c=22===t[0].dataType,h=[{type:12,data:u},{type:12,data:o},{type:12,data:s},{type:12,data:r.blockSize},...tT(...t.map((t,r)=>t.dims),l)];return{name:"GatherBlockQuantized",shaderCache:{hint:`${r.cacheKey};${t.filter((t,r)=>1!==r).map(t=>t.dims.join("_")).join(";")}`,inputDependencies:Array.from({length:t.length},(t,r)=>"rank")},getRunData:()=>({outputs:[{dims:l,dataType:d}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:h}),getShaderSource:r=>{let n=tR("data",t[0].dataType,t[0].dims.length),o=tR("inputIndices",t[1].dataType,t[1].dims.length),u=tR("scales",t[2].dataType,t[2].dims.length),h=t.length>3?tR("zeroPoint",t[3].dataType,t[3].dims.length):void 0,f=tj("output",d,l.length),p=[n,o,u];return h&&p.push(h),`
1429        ${r.registerUniforms([{name:"output_size",type:"u32"},{name:"quantize_axis",type:"u32"},{name:"gather_axis",type:"u32"},{name:"block_size",type:"u32"}]).declareVariables(...p,f)}
1430        ${r.mainStart()}
1431        let output_indices = ${f.offsetToIndices("global_idx")};
1432        var indices_indices = ${o.type.indices}(0);
1433        ${a.length>1?`
1434          for (var i: u32 = 0; i < ${a.length}; i++) {
1435            let index = ${f.indicesGet("output_indices","uniforms.gather_axis + i")};
1436            ${o.indicesSet("indices_indices","i","index")};
1437          }`:`indices_indices = ${f.indicesGet("output_indices","uniforms.gather_axis")};`};
1438        var data_indices = ${n.type.indices}(0);
1439        for (var i: u32 = 0; i < uniforms.gather_axis; i++) {
1440          let index = ${f.indicesGet("output_indices","i")};
1441          ${n.indicesSet("data_indices","i","index")};
1442        }
1443        var index_from_indices = ${o.getByIndices("indices_indices")};
1444        if (index_from_indices < 0) {
1445          index_from_indices += ${i[s]};
1446        }
1447        ${n.indicesSet("data_indices","uniforms.gather_axis","u32(index_from_indices)")};
1448        for (var i = uniforms.gather_axis + 1; i < ${l.length}; i++) {
1449          let index = ${f.indicesGet("output_indices",`i + ${a.length} - 1`)};
1450          ${n.indicesSet("data_indices","i","index")};
1451        }
1452        let data_offset = ${n.indicesToOffset("data_indices")};
1453        let data_index = data_offset % 8;
1454        // Convert 4-bit packed data to 8-bit packed data.
1455        let packed_4bit_quantized_data = ${n.getByOffset("data_offset / 8")};
1456        let packed_8bit_quantized_data = (packed_4bit_quantized_data >> (4 * (data_index % 2))) & 0x0f0f0f0f;
1457        let quantized_data_vec = ${c?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_quantized_data));
1458        let quantized_data = quantized_data_vec[data_index / 2];
1459        var scale_indices = data_indices;
1460        let quantize_axis_index = ${u.indicesGet("data_indices","uniforms.quantize_axis")} / uniforms.block_size;
1461        ${u.indicesSet("scale_indices","uniforms.quantize_axis","quantize_axis_index")};
1462        var scale = ${u.getByIndices("scale_indices")};
1463        ${h?`
1464              let zero_point_indices = scale_indices;
1465              let zero_point_offset = ${h.indicesToOffset("zero_point_indices")};
1466              let zero_point_index = zero_point_offset % 8;
1467              let packed_4bit_zero_points = ${h.getByOffset("zero_point_offset / 8")};
1468              let packed_8bit_zero_points = (packed_4bit_zero_points >> (4 * (zero_point_index % 2))) & 0x0f0f0f0f;
1469              let zero_point_vec = ${c?"unpack4xI8":"unpack4xU8"}(u32(packed_8bit_zero_points));
1470              let zero_point = zero_point_vec[zero_point_index / 2];`:"var zero_point = 0"};
1471        let dequantized_data = ${tE(d)}(quantized_data - zero_point) * scale;
1472        ${f.setByOffset("global_idx","dequantized_data")};
1473    }`}}})(t.inputs,r))},aa=t=>t$({blockSize:t.blockSize,gatherAxis:t.gatherAxis,quantizeAxis:t.quantizeAxis})}),n3=q(()=>{ng(),nv(),nk(),nC(),an=t=>t$({axis:t.axis}),as=(t,r)=>{(t=>{if(!t||2!==t.length)throw Error("GatherElements requires 2 inputs.");if(t[0].dims.length<1)throw Error("GatherElements requires that the data input be rank >= 1.");if(t[0].dims.length!==t[1].dims.length)throw Error(`GatherElements requires that the data input and
1474                     indices input tensors be of same rank.`)})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims,a=t[0].dataType,n=i.length,s=t[1].dims,o=t[1].dataType,l=e8.normalizeAxis(r.axis,n),u=i[l],d=s.slice(0),c=e8.size(d),h=tR("input",a,n),f=tR("indicesInput",o,s.length),p=tj("output",a,d.length),m=[{type:12,data:c},{type:6,data:u},{type:12,data:l}];return m.push(...tT(i,s,d)),{name:"GatherElements",shaderCache:{inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:d,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(c/64)},programUniforms:m}),getShaderSource:t=>`
1475      ${t.registerUniform("outputSize","u32").registerUniform("axisDimLimit","i32").registerUniform("axis","u32").declareVariables(h,f,p)}
1476      ${t.mainStart()}
1477      ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
1478
1479      let outputIndices = ${p.offsetToIndices("global_idx")};
1480
1481      var idx = ${f.getByOffset("global_idx")};
1482      if (idx < 0) {
1483        idx = idx + uniforms.axisDimLimit;
1484      }
1485      var inputIndices = ${h.type.indices}(outputIndices);
1486      ${h.indicesSet("inputIndices","uniforms.axis","u32(idx)")};
1487      let value = ${h.getByIndices("inputIndices")};
1488
1489      ${p.setByOffset("global_idx","value")};
1490  }`}})(t.inputs,r))}}),n4=q(()=>{ng(),nv(),nC(),ao=t=>({transA:t.transA,transB:t.transB,alpha:t.alpha,beta:t.beta,cacheKey:`${t.transA};${t.transB};${1===t.alpha}`}),al=(t,r)=>{(t=>{if(!t)throw Error("Input is missing");if(t.length<2||t.length>3)throw Error("Invaid input number.");if(3===t.length&&t[2].dims.length>2)throw Error("Invalid input shape of C");if(t[0].dataType!==t[1].dataType||3===t.length&&t[0].dataType!==t[2].dataType)throw Error("Input types are mismatched")})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims.slice(),a=t[1].dims.slice(),[n,s,o]=e6.getShapeOfGemmResult(i,r.transA,a,r.transB,3===t.length?t[2].dims:void 0),l=[n,s];if(!l)throw Error("Can't use gemm on the given tensors");let u=Math.ceil(s/16),d=Math.ceil(n/16),c=(e8.size(l),[{type:12,data:u},{type:12,data:n},{type:12,data:s},{type:12,data:o},{type:1,data:r.alpha},{type:1,data:r.beta}]),h=["type","type"];return 3===t.length&&(c.push(...tT(t[2].dims)),h.push("rank")),c.push(...tT(l)),{name:"GemmShared",shaderCache:{hint:`${r.cacheKey}`,inputDependencies:h},getRunData:()=>({outputs:[{dims:l,dataType:t[0].dataType}],dispatchGroup:{x:u*d},programUniforms:c}),getShaderSource:i=>{let a=tR("a",t[0].dataType,t[0].dims),n=tR("b",t[1].dataType,t[1].dims),s=null,o=[a,n];3===t.length&&(s=tR("c",t[2].dataType,t[2].dims.length),o.push(s));let u=tj("output",t[0].dataType,l.length);o.push(u);let d="",c="";r.transA&&r.transB?(c=`
1491      var col = tile_row_start + local_id.x;
1492      var row = k_start + local_id.y;
1493      if (col < uniforms.M && row < uniforms.K) {
1494        tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];
1495      } else {
1496        tile_a[local_id.y][local_id.x] = ${a.type.value}(0);
1497      }
1498
1499      col = k_start + local_id.x;
1500      row = tile_col_start + local_id.y;
1501      if (col < uniforms.K && row < uniforms.N) {
1502        tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];
1503      } else {
1504        tile_b[local_id.y][local_id.x] = ${n.type.value}(0);
1505      }
1506      `,d="value += tile_a[k][local_id.y] * tile_b[local_id.x][k];"):r.transA&&!r.transB?(c=`
1507      var col = tile_row_start + local_id.x;
1508      var row = k_start + local_id.y;
1509      if (col < uniforms.M && row < uniforms.K) {
1510        tile_a[local_id.y][local_id.x] = a[row * uniforms.M + col];
1511      } else {
1512        tile_a[local_id.y][local_id.x] = ${a.type.value}(0);
1513      }
1514
1515      col = tile_col_start + local_id.x;
1516      row = k_start + local_id.y;
1517      if (col < uniforms.N && row < uniforms.K) {
1518        tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];
1519      } else {
1520        tile_b[local_id.y][local_id.x] = ${n.type.value}(0);
1521      }
1522      `,d="value += tile_a[k][local_id.y] * tile_b[k][local_id.x];"):!r.transA&&r.transB?(c=`
1523      var col = k_start + local_id.x;
1524      var row = tile_row_start + local_id.y;
1525      if (col < uniforms.K && row < uniforms.M) {
1526        tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];
1527      } else {
1528        tile_a[local_id.y][local_id.x] = ${a.type.value}(0);
1529      }
1530
1531      col = k_start + local_id.x;
1532      row = tile_col_start + local_id.y;
1533      if (col < uniforms.K && row < uniforms.N) {
1534        tile_b[local_id.y][local_id.x] = b[row * uniforms.K + col];
1535      } else {
1536        tile_b[local_id.y][local_id.x] = ${n.type.value}(0);
1537      }
1538      `,d="value += tile_a[local_id.y][k] * tile_b[local_id.x][k];"):r.transA||r.transB||(c=`
1539      var col = k_start + local_id.x;
1540      var row = tile_row_start + local_id.y;
1541      if (col < uniforms.K && row < uniforms.M) {
1542        tile_a[local_id.y][local_id.x] = a[row * uniforms.K + col];
1543      } else {
1544        tile_a[local_id.y][local_id.x] = ${a.type.value}(0);
1545      }
1546
1547      col = tile_col_start + local_id.x;
1548      row = k_start + local_id.y;
1549      if (col < uniforms.N && row < uniforms.K) {
1550        tile_b[local_id.y][local_id.x] = b[row * uniforms.N + col];
1551      } else {
1552        tile_b[local_id.y][local_id.x] = ${n.type.value}(0);
1553      }
1554      `,d="value += tile_a[local_id.y][k] * tile_b[k][local_id.x];");let h=1===r.alpha?"":"value *= uniforms.alpha;";return`
1555  ${i.registerUniforms([{name:"num_tile_n",type:"u32"},{name:"M",type:"u32"},{name:"N",type:"u32"},{name:"K",type:"u32"},{name:"alpha",type:"f32"},{name:"beta",type:"f32"}]).declareVariables(...o)}
1556  var<workgroup> tile_a: array<array<${a.type.storage}, 16>, 16>;
1557  var<workgroup> tile_b: array<array<${n.type.storage}, 16>, 16>;
1558  ${i.mainStart([16,16,1])}
1559    let tile_col_start = (workgroup_index % uniforms.num_tile_n) * 16;
1560    let tile_row_start = (workgroup_index / uniforms.num_tile_n) * 16;
1561    let num_tiles = (uniforms.K - 1) / 16 + 1;
1562    var k_start = 0u;
1563    var value = ${u.type.value}(0);
1564    for (var t: u32 = 0u; t < num_tiles; t++) {
1565      ${c}
1566      k_start = k_start + 16;
1567      workgroupBarrier();
1568
1569      for (var k: u32 = 0u; k < 16; k++) {
1570        ${d}
1571      }
1572      workgroupBarrier();
1573    }
1574
1575    ${h}
1576    let m = tile_row_start + local_id.y;
1577    let n = tile_col_start + local_id.x;
1578    ${null!=s?`let cOffset = ${s.broadcastedIndicesToOffset("vec2(m, n)",u)}; value += ${u.type.value}(uniforms.beta) * ${s.getByOffset("cOffset")};`:""}
1579    if (m < uniforms.M && n < uniforms.N) {
1580      output[m * uniforms.N + n] = value;
1581    }
1582  }`}}})(t.inputs,r))}}),n8=q(()=>{ng(),nv(),nk(),nC(),[au,ad,ac,ah]=[0,1,2,3],af=`
1583  fn gs_get_cubic_coeffs(x: f32) -> vec4<f32> {
1584    let cubic_alpha = -0.75f;
1585    let x_abs = abs(x);
1586    var coeffs: vec4<f32>;
1587    coeffs[0] = (((cubic_alpha * (x_abs + 1) - 5 * cubic_alpha) * (x_abs + 1) + 8 * cubic_alpha) * (x_abs + 1) - 4 * cubic_alpha);
1588    coeffs[1] = (((cubic_alpha + 2) * x_abs - (cubic_alpha + 3)) * x_abs * x_abs + 1);
1589    coeffs[2] = (((cubic_alpha + 2) * (1 - x_abs) - (cubic_alpha + 3)) * (1 - x_abs) * (1 - x_abs) + 1);
1590    coeffs[3] = (((cubic_alpha * (2 - x_abs) - 5 * cubic_alpha) * (2 - x_abs) + 8 * cubic_alpha) * (2 - x_abs) - 4 * cubic_alpha);
1591    return coeffs;
1592  }
1593`,ap=(t,r)=>{(t=>{if(4!==t[0].dims.length)throw Error("only 4-D tensor is supported.");if(t[0].dims.length!==t[1].dims.length)throw Error("input dimensions must be equal to grid dimensions");if(t[0].dims.length-2!==t[1].dims[t[1].dims.length-1])throw Error(`last dimension of grid must be equal to ${t[0].dims.length-2}`);if(t[0].dims[0]!==t[1].dims[0])throw Error("grid batch size must match input batch size")})(t.inputs),t.compute(((t,r)=>{let i=tR("x",t[0].dataType,t[0].dims.length),a=[t[1].dims[0],t[1].dims[1],t[1].dims[2]],n=tR("grid",t[1].dataType,a.length,2),s=[t[0].dims[0],t[0].dims[1],t[1].dims[1],t[1].dims[2]];"NHWC"===r.format&&(s=[t[0].dims[0],t[1].dims[1],t[1].dims[2],t[0].dims[3]],[au,ad,ac,ah]=[0,3,1,2]);let o=tj("output",t[0].dataType,s.length),l=i.type.value,u=[{type:12,data:e8.size(s)},...tT(t[0].dims,a,s)];return{name:"GridSample",shaderCache:{hint:`${r.cacheKey}`,inputDependencies:["type","type"]},getRunData:t=>{let r=e8.size(s);return{outputs:[{dims:s,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(r/64)},programUniforms:u}},getShaderSource:t=>{let a,s;return`
1594  ${t.registerUniform("output_size","u32").declareVariables(i,n,o)}
1595  ${af}
1596  ${(t=>`
1597  fn gs_bicubic_interpolate(p: mat4x4<${t}>, x: f32, y: f32) -> ${t} {
1598    var v: vec4<f32>;
1599    var coeffs = gs_get_cubic_coeffs(x);
1600    for (var i = 0; i < 4; i++) {
1601      v[i] = coeffs[0] * p[i][0] + coeffs[1] * p[i][1] + coeffs[2] * p[i][2] + coeffs[3] * p[i][3];
1602    }
1603    coeffs = gs_get_cubic_coeffs(y);
1604    let pixel = ${t}(coeffs[0] * v[0] + coeffs[1] * v[1] + coeffs[2] * v[2] + coeffs[3] * v[3]);
1605    return pixel;
1606  }
1607`)(l)}
1608  ${a=r,`
1609  fn gs_denormalize(n: f32, length: i32) -> f32 {
1610    ${0===a.alignCorners?`
1611    // alignCorners: false => [-1, 1] to [-0.5, length - 0.5]
1612    return ((n + 1.0) * f32(length) - 1.0) / 2.0;
1613    `:`
1614    // alignCorners: true => [-1, 1] to [0, length - 1]
1615    return (n + 1.0) / 2.0 * (f32(length - 1));
1616    `}
1617  }
1618`}
1619  ${s=r,`
1620  ${"reflection"===s.paddingMode?`
1621      fn gs_reflect(x: i32, x_min: f32, x_max: f32) -> u32 {
1622        var dx = 0.0;
1623        var fx = f32(x);
1624        let range = x_max - x_min;
1625        if (fx < x_min) {
1626          dx = x_min - fx;
1627          let n = u32(dx / range);
1628          let r = dx - f32(n) * range;
1629          if (n % 2 == 0) {
1630            fx = x_min + r;
1631          } else {
1632            fx = x_max - r;
1633          }
1634        } else if (fx > x_max) {
1635          dx = fx - x_max;
1636          let n = u32(dx / range);
1637          let r = dx - f32(n) * range;
1638          if (n % 2 == 0) {
1639            fx = x_max - r;
1640          } else {
1641            fx = x_min + r;
1642          }
1643        }
1644        return u32(fx);
1645      }`:""}
1646`}
1647  ${((t,r,i)=>`
1648  fn pixel_at_grid(r: i32, c: i32, H: i32, W: i32, batch: u32, channel: u32, border: vec4<f32>) -> ${r} {
1649     var pixel = ${r}(0);
1650     var indices = vec4<u32>(0);
1651     indices[${au}] = batch;
1652     indices[${ad}] = channel;`+(()=>{switch(i.paddingMode){case"zeros":return`
1653          if (r >= 0 && r < H && c >=0 && c < W) {
1654            indices[${ac}] = u32(r);
1655            indices[${ah}] = u32(c);
1656          } else {
1657            return ${r}(0);
1658          }
1659        `;case"border":return`
1660          indices[${ac}] = u32(clamp(r, 0, H - 1));
1661          indices[${ah}] = u32(clamp(c, 0, W - 1));
1662        `;case"reflection":return`
1663          indices[${ac}] = gs_reflect(r, border[1], border[3]);
1664          indices[${ah}] = gs_reflect(c, border[0], border[2]);
1665        `;default:throw Error(`padding mode ${i.paddingMode} is not supported`)}})()+`
1666    return ${t.getByIndices("indices")};
1667  }
1668`)(i,l,r)}
1669
1670  ${t.mainStart()}
1671    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1672      let H_in = i32(uniforms.x_shape[${ac}]);
1673      let W_in = i32(uniforms.x_shape[${ah}]);
1674
1675      ${0===r.alignCorners?`
1676      let x_min = -0.5;
1677      let x_max = f32(W_in) - 0.5;
1678      let y_min = -0.5;
1679      let y_max = f32(H_in) - 0.5;
1680      `:`
1681      let x_min = 0.0;
1682      let x_max = f32(W_in) - 1.0;
1683      let y_min = 0.0;
1684      let y_max = f32(H_in) - 1.0;
1685      `};
1686      let border = vec4<f32>(x_min, y_min, x_max, y_max);
1687
1688      let indices = ${o.offsetToIndices("global_idx")};
1689      var grid_indices = vec3<u32>(indices[${au}], indices[${ac}], indices[${ah}]);
1690      let nxy = ${n.getByIndices("grid_indices")};
1691      var x = gs_denormalize(f32(nxy[0]), W_in);
1692      var y = gs_denormalize(f32(nxy[1]), H_in);
1693
1694      ${((t,r,i)=>(()=>{switch(i.mode){case"nearest":return`
1695          let result = pixel_at_grid(i32(round(y)), i32(round(x)), H_in, W_in, indices[${au}], indices[${ad}], border);
1696        `;case"bilinear":return`
1697          let x1 = i32(floor(x));
1698          let y1 = i32(floor(y));
1699          let x2 = x1 + 1;
1700          let y2 = y1 + 1;
1701
1702          let p11 = pixel_at_grid(y1, x1, H_in, W_in, indices[${au}], indices[${ad}], border);
1703          let p12 = pixel_at_grid(y1, x2, H_in, W_in, indices[${au}], indices[${ad}], border);
1704          let p21 = pixel_at_grid(y2, x1, H_in, W_in, indices[${au}], indices[${ad}], border);
1705          let p22 = pixel_at_grid(y2, x2, H_in, W_in, indices[${au}], indices[${ad}], border);
1706
1707          let dx2 = ${r}(f32(x2) - x);
1708          let dx1 = ${r}(x - f32(x1));
1709          let dy2 = ${r}(f32(y2) - y);
1710          let dy1 = ${r}(y - f32(y1));
1711          let result = dy2 * (dx2 * p11 + dx1 * p12) + dy1 * (dx2 * p21 + dx1 * p22);
1712        `;case"bicubic":return`
1713          let x0 = i32(floor(x)) - 1;
1714          let y0 = i32(floor(y)) - 1;
1715          var p: mat4x4<${r}>;
1716          for (var h = 0; h < 4; h++) {
1717            for (var w = 0; w < 4; w++) {
1718              p[h][w] = pixel_at_grid(h + y0, w + x0, H_in, W_in, indices[${au}], indices[${ad}], border);
1719            }
1720          }
1721
1722          let dx = x - f32(x0 + 1);
1723          let dy = y - f32(y0 + 1);
1724          let result = gs_bicubic_interpolate(p, dx, dy);
1725        `;default:throw Error(`mode ${i.mode} is not supported`)}})()+`${t.setByOffset("global_idx","result")}`)(o,l,r)}
1726  }`}}})(t.inputs,r))},am=t=>t$({alignCorners:t.align_corners,mode:t.mode,paddingMode:t.padding_mode,format:t.format})}),n7=q(()=>{ng(),nv(),nk(),n$(),nN(),nC(),nE(),ag=(t,r)=>t.length>r&&t[r].dims.length>0?t[r]:void 0,ab=t=>t$({...t}),ay=t$({perm:[0,2,1,3]}),av=(t,r,i,a,n,s,o,l)=>{let u=s;if(!(o&&e8.size(o.dims)>0))return 3===s.dims.length&&(u=s.reshape([r,a,i,n])),1===i||1===a?u:t.compute(tF(u,ay.perm),{inputs:[u],outputs:[-1]})[0];if(1===a)throw Error("AddBiasReshape is not implemented. Please export your model with packed QKV or KV");return u=(u=((t,r,i,a,n,s,o)=>{let l=[a,n,s],u=e8.size(l),d=[{type:12,data:u},{type:12,data:o},{type:12,data:s}];return t.compute({name:"MultiHeadAttentionAddBias",shaderCache:{inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:l,dataType:r.dataType,gpuDataType:0}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:d}),getShaderSource:t=>{let a=tj("qkv_with_bias",r.dataType,l),n=tR("qkv",r.dataType,l),s=tR("bias",i.dataType,l);return`
1727  ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"bias_offset",type:"u32"},{name:"hidden_size",type:"u32"}]).declareVariables(n,s,a)}
1728  ${t.mainStart()}
1729    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1730    let bias_offset_idx = (global_idx % uniforms.hidden_size) + uniforms.bias_offset;
1731
1732    qkv_with_bias[global_idx] = qkv[global_idx] + bias[bias_offset_idx];
1733  }`}},{inputs:[r,i],outputs:[-1]})[0]})(t,s,o,r,a,i*n,l)).reshape([r,a,i,n]),1===i||1===a?u:t.compute(tF(u,ay.perm),{inputs:[u],outputs:[-1]})[0]},a_=(t,r)=>{let i=((t,r)=>{let i,a=t[0],n=ag(t,1),s=ag(t,2),o=ag(t,3),l=ag(t,4),u=ag(t,5),d=ag(t,6),c=ag(t,7);if(3!==a.dims.length&&5!==a.dims.length)throw Error("Input query is expected to have 3 or 5 dimensions");let h=a.dims[0],f=a.dims[1],p=3===a.dims.length?a.dims[2]:r.numHeads*a.dims[4],m=f,g=0,b=0,y=Math.floor(p/r.numHeads);if(d&&c&&e8.size(d.dims)&&e8.size(c.dims)){if(4!==d.dims.length)throw Error('Input "past_key" is expected to have 4 dimensions');if(d.dims[0]!==h||d.dims[1]!==r.numHeads||d.dims[3]!==y)throw Error('Input "past_key" shape (batch_size, num_heads, past_sequence_length, head_size)');if(c.dims[0]!==h||c.dims[1]!==r.numHeads||c.dims[3]!==y)throw Error('Input "past_value" shape (batch_size, num_heads, past_sequence_length, head_size)');if(d.dims[2]!==c.dims[2])throw Error('Input "past_key" and "past_value" shall have same dim 2 (past_sequence_length)');if(4!==c.dims.length)throw Error('Input "past_value" is expected to have 4 dimensions');g=d.dims[2],b=d.dims[2]}else if(d&&e8.size(d.dims)||c&&e8.size(c.dims))throw Error('Input "past_key" and "past_value" shall be both present or both absent');if(n&&e8.size(n.dims)>0){if(3!==a.dims.length)throw Error('Input "query" is expected to have 3 dimensions when key is given');if(n.dims.length<3||n.dims.length>5)throw Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(a.dims[0]!==n.dims[0])throw Error('Input "query" and "key" shall have same dim 0 (batch size)');if(3===n.dims.length){if(n.dims[2]!==a.dims[2])throw Error('Input "query" and "key" shall have same dim 2 (hidden_size)');i=2,m=n.dims[1]}else if(5===n.dims.length){if(n.dims[2]!==r.numHeads||2!==n.dims[3]||n.dims[4]!==y)throw Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(s)throw Error('Expect "value" be none when "key" has packed kv format.');i=5,m=n.dims[1]}else{if(n.dims[1]!==r.numHeads||n.dims[3]!==y)throw Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');i=0,m=n.dims[2]}}else{if(5!==a.dims.length)throw Error('Input "query" is expected to have 5 dimensions when key is empty');if(a.dims[2]!==r.numHeads||3!==a.dims[3])throw Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');i=3}if(o&&e8.size(o.dims)>0){if(1!==o.dims.length)throw Error('Input "bias" is expected to have 1 dimension');
1733if(n&&5===n.dims.length&&2===n.dims[3])throw Error("bias is not allowed for packed kv.")}let v=g+m,_=0;if(l&&e8.size(l.dims)>0){_=8;let t=l.dims;throw 1===t.length?t[0]===h?_=1:t[0]===3*h+2&&(_=3):2===t.length&&t[0]===h&&t[1]===v&&(_=5),8===_?Error('Input "key_padding_mask" shape shall be (batch_size) or (batch_size, total_sequence_length)'):Error("Mask not supported")}let w=!1,x=p;if(s&&e8.size(s.dims)>0){if(3!==s.dims.length&&4!==s.dims.length)throw Error('Input "value" is expected to have 3 or 4 dimensions');if(a.dims[0]!==s.dims[0])throw Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(3===s.dims.length){if(m!==s.dims[1])throw Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');x=s.dims[2]}else{if(m!==s.dims[2])throw Error('Input "key" and "value" shall have the same dim 2 (kv_sequence_length)');x=s.dims[1]*s.dims[3],w=!0}}if(l&&e8.size(l.dims)>0)throw Error("Key padding mask is not supported");if(u&&e8.size(u.dims)>0){if(4!==u.dims.length)throw Error('Input "attention_bias" is expected to have 4 dimensions');if(u.dims[0]!==h||u.dims[1]!==r.numHeads||u.dims[2]!==f||u.dims[3]!==v)throw Error('Expect "attention_bias" shape (batch_size, num_heads, sequence_length, total_sequence_length)')}return{batchSize:h,sequenceLength:f,pastSequenceLength:g,kvSequenceLength:m,totalSequenceLength:v,maxSequenceLength:b,inputHiddenSize:0,hiddenSize:p,vHiddenSize:x,headSize:y,vHeadSize:Math.floor(x/r.numHeads),numHeads:r.numHeads,isUnidirectional:!1,pastPresentShareBuffer:!1,maskFilterValue:r.maskFilterValue,maskType:_,scale:r.scale,broadcastResPosBias:!1,passPastInKv:w,qkvFormat:i}})(t.inputs,r),a=t.inputs[0],n=ag(t.inputs,1),s=ag(t.inputs,2),o=ag(t.inputs,3),l=ag(t.inputs,4),u=ag(t.inputs,5),d=ag(t.inputs,6),c=ag(t.inputs,7);if(5===a.dims.length)throw Error("Packed QKV is not implemented");if(n?.dims.length===5)throw Error("Packed KV is not implemented");let h=n&&s&&4===n.dims.length&&4===s.dims.length,f=av(t,i.batchSize,i.numHeads,i.sequenceLength,i.headSize,a,o,0);if(h)return rb(t,f,n,s,l,void 0,d,c,u,i);if(!n||!s)throw Error("key and value must be provided");let p=av(t,i.batchSize,i.numHeads,i.kvSequenceLength,i.headSize,n,o,i.hiddenSize),m=av(t,i.batchSize,i.numHeads,i.kvSequenceLength,i.vHeadSize,s,o,2*i.hiddenSize);rb(t,f,p,m,l,void 0,d,c,u,i)}}),n6=q(()=>{ng(),nv(),nk(),nC(),aw=(t,r)=>{let i=t[0].dims,a=e8.size(i),n=t[0].dataType,s=e8.normalizeAxis(r.axis,i.length),o=Array(r.numOutputs),l=tR("input",n,i.length),u=Array(r.numOutputs),d=[],c=[],h=0,f=[{type:12,data:a}];for(let a=0;a<r.numOutputs;a++){h+=r.splitSizes[a],u[a]=h;let l=i.slice();l[s]=r.splitSizes[a],c.push(l),o[a]=tj(`output${a}`,n,l.length),d.push({dims:c[a],dataType:t[0].dataType})}return f.push({type:12,data:u},...tT(i,...c)),{name:"Split",shaderCache:{hint:r.cacheKey,inputDependencies:["rank"]},getShaderSource:t=>`
1734  ${t.registerUniform("input_size","u32").registerUniform("size_in_split_axis","u32",u.length).declareVariables(l,...o)}
1735  ${(t=>`
1736fn calculateOutputIndex(index: u32) -> u32 {
1737    for (var i: u32 = 0u; i < ${t}u; i += 1u ) {
1738    if (index < ${tM("uniforms.size_in_split_axis","i",t)}) {
1739        return i;
1740    }
1741    }
1742    return ${t}u;
1743}`)(u.length)}
1744  ${(t=>{let r=t.length,i=[];for(let a=0;a<r;++a){let n=t[a].setByIndices("indices","input[global_idx]");1===r?i.push(n):0===a?i.push(`if (output_number == ${a}u) { ${n} }`):a===r-1?i.push(`else { ${n} }`):i.push(`else if (output_number == ${a}) { ${n} }`)}return`
1745      fn writeBufferData(output_number: u32, indices: ${t[0].type.indices}, global_idx: u32) {
1746        ${i.join(`
1747`)}
1748      }`})(o)}
1749
1750  ${t.mainStart()}
1751    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.input_size")}
1752
1753    var indices = ${l.offsetToIndices("global_idx")};
1754    var index = ${l.indicesGet("indices",s)};
1755    let output_number = calculateOutputIndex(index);
1756    if (output_number != 0) {
1757      index -= ${tM("uniforms.size_in_split_axis","output_number - 1u",u.length)};
1758      ${l.indicesSet("indices",s,"index")};
1759    }
1760    writeBufferData(output_number, indices, global_idx);
1761  }`,getRunData:()=>({outputs:d,dispatchGroup:{x:Math.ceil(a/64)},programUniforms:f})}},ax=(t,r)=>{(t=>{if(!t||t.length<1)throw Error("too few inputs")})(t.inputs);let i=1===t.inputs.length?r:((t,r)=>{let i=[],a=r.numOutputs;return t[1].dims[0]>
17610&&(t[1].getBigInt64Array().forEach(t=>i.push(Number(t))),a=i.length),t$({numOutputs:a,axis:r.axis,splitSizes:i})})(t.inputs,r);t.compute(aw(t.inputs,i),{inputs:[0]})},a$=t=>{let r=t.axis,i=t.splitSizes,a=t.numOutputs<0?i.length:t.numOutputs;if(a!==i.length)throw Error("numOutputs and splitSizes length must be equal");return t$({axis:r,numOutputs:a,splitSizes:i})}}),n5=q(()=>{ng(),nv(),nk(),nC(),aS=(t,r)=>{let{interleaved:i,numHeads:a,rotaryEmbeddingDim:n,scale:s}=r,o=t[0].dims[0],l=e8.sizeFromDimension(t[0].dims,1),u=t[0].dims[t[0].dims.length-2],d=l/u,c=t[2].dims[1],h=0===n?2*c:d/a,f=[o,u,d/h,h-c],p=e8.computeStrides(f),m=[{type:1,data:s},{type:12,data:f},{type:12,data:p},...3===t[0].dims.length?Array({type:12,data:[l,d,h,1]}):[],...4===t[0].dims.length?Array({type:12,data:[l,h,u*h,1]}):[],...tT(t[0].dims,t[1].dims,t[2].dims,t[3].dims,t[0].dims)];return{name:"RotaryEmbedding",shaderCache:{hint:t$({interleaved:i}).cacheKey,inputDependencies:["rank","rank","rank","rank"]},getShaderSource:r=>{let a=tR("input",t[0].dataType,t[0].dims.length),n=tR("position_ids",t[1].dataType,t[1].dims.length),s=tR("cos_cache",t[2].dataType,t[2].dims.length),o=tR("sin_cache",t[3].dataType,t[3].dims.length),l=tj("output",t[0].dataType,t[0].dims.length);return r.registerUniforms([{name:"scale",type:"f32"},{name:"global_shape",type:"u32",length:f.length},{name:"global_strides",type:"u32",length:p.length},{name:"input_output_strides",type:"u32",length:p.length}]),`
1762        ${r.declareVariables(a,n,s,o,l)}
1763
1764        ${r.mainStart(tS)}
1765          let half_rotary_emb_dim = uniforms.${s.name}_shape[1];
1766          let bsnh = global_idx / uniforms.global_strides % uniforms.global_shape;
1767          let size = uniforms.global_shape[0] * uniforms.global_strides[0];
1768          ${r.guardAgainstOutOfBoundsWorkgroupSizes("size")}
1769
1770          if (bsnh[3] < half_rotary_emb_dim) {
1771            let position_ids_idx =
1772                ${n.broadcastedIndicesToOffset("bsnh.xy",tj("",n.type.tensor,2))};
1773            let position_id =
1774                u32(${n.getByOffset("position_ids_idx")}) + select(0, bsnh[1], position_ids_idx == 0);
1775            let i = dot(bsnh, uniforms.input_output_strides) + select(0, bsnh[3], ${i});
1776            let j = i + select(half_rotary_emb_dim, 1, ${i});
1777            let re = ${a.getByOffset("i")} * ${s.get("position_id","bsnh[3]")} -
1778                ${a.getByOffset("j")} * ${o.get("position_id","bsnh[3]")};
1779            ${l.setByOffset("i","re")}
1780            let im = ${a.getByOffset("i")} * ${o.get("position_id","bsnh[3]")} +
1781                ${a.getByOffset("j")} * ${s.get("position_id","bsnh[3]")};
1782            ${l.setByOffset("j","im")}
1783          } else {
1784            let k = dot(bsnh, uniforms.input_output_strides) + half_rotary_emb_dim;
1785            ${l.setByOffset("k",a.getByOffset("k"))}
1786          }
1787        }`},getRunData:()=>({outputs:[{dims:t[0].dims,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(e8.size(f)/tS)},programUniforms:m})}},ak=(t,r)=>{((t,r)=>{let[i,a,n,s]=t,{numHeads:o,rotaryEmbeddingDim:l}=r;if(3!==i.dims.length&&4!==i.dims.length)throw Error(`Input 'x' is expected to have 3 or 4 dimensions, got ${i.dims.length}`);if(!e8.areEqual(a.dims,[])&&!e8.areEqual(a.dims,[1])&&2!==a.dims.length)throw Error(`Input 'position_ids' is expected to have 0, 1, or 2 dimensions, got ${a.dims.length}`);if(2!==n.dims.length)throw Error(`Input 'cos_cache' is expected to have 2 dimensions, got ${n.dims.length}`);if(2!==s.dims.length)throw Error(`Input 'sin_cache' is expected to have 2 dimensions, got ${s.dims.length}`);if(!e8.areEqual(n.dims,s.dims))throw Error("Inputs 'cos_cache' and 'sin_cache' are expected to have the same shape");if(l>0&&0===o)throw Error("num_heads must be provided if rotary_embedding_dim is specified");let u=i.dims[0],d=i.dims[i.dims.length-2],c=n.dims[0],h=e8.sizeFromDimension(i.dims,1)/d,f=0===l?2*n.dims[1]:h/o;if(l>f)throw Error("rotary_embedding_dim must be less than or equal to head_size");if(2===a.dims.length){if(u!==a.dims[0])throw Error(`Input 'position_ids' dimension 0 should be of size batch_size, got ${a.dims[0]}`);if(d!==a.dims[1])throw Error(`Input 'position_ids' dimension 1 should be of size sequence_length, got ${a.dims[1]}`)}if(f/2!==n.dims[1]&&l/2!==n.dims[1])throw Error(`Input 'cos_cache' dimension 1 should be same as head_size / 2 or rotary_embedding_dim / 2, got ${n.dims[1]}`);if(d>c)throw Error("Updating cos_cache and sin_cache in RotaryEmbedding is not currently supported")})(t.inputs,r),t.compute(aS(t.inputs,r))}}),n9=q(()=>{nk(),ng(),nN(),n7(),n6(),nE(),n5(),nC(),aC=t$({perm:[0,2,1,3]}),aE=(t,r,i)=>{let a=r,n=i.kvNumHeads;return 3===r.dims.length&&0!==i.kvSequenceLength&&(a=r.reshape([i.batchSize,i.kvSequenceLength,n,i.headSize]),a=t.compute(tF(a,aC.perm),{inputs:[a],outputs:[-1]})[0]),a},aT=(t,r)=>{let i=((t,r)=>{if(r.doRotary&&t.length<=7)throw Error("cos_cache and sin_cache inputs are required if do_rotary is specified");let i=t[0],a=t[1],n=t[2],s=t[3],o=t[4];if(0!==r.doRotary&&t.length<=7)throw Error("cos_cast and sin_cache are expected if do_rotary attribute is non-zero");if(-1!==r.localWindowSize)throw Error("Local attention is not supported");if(0!==r.softcap)throw Error("Softcap is not supported");if(0!==r.rotaryInterleaved)throw Error("Rotary interleaved is not supported");if(r.smoothSoftmax)throw Error("Smooth softmax is not supported");if(3!==i.dims.length&&5!==i.dims.length)throw Error("Input query is expected to have 3 or 5 dimensions");
1787let l=i.dims[0],u=i.dims[1],d=3===i.dims.length?i.dims[2]:r.numHeads*i.dims[4],c=u,h=0,f=!a||0===a.dims.length,p=Math.floor(f?d/(r.numHeads+2*r.kvNumHeads):d/r.numHeads);f&&(d=p*r.numHeads);let m=s&&0!==s.dims.length,g=o&&0!==o.dims.length;if(m&&4===s.dims.length&&s.dims[0]===l&&s.dims[1]!==r.kvNumHeads&&s.dims[2]===r.kvNumHeads&&s.dims[3]===p)throw Error("BSNH pastKey/pastValue is not supported");if(m&&g){if(4!==s.dims.length)throw Error('Input "past_key" is expected to have 4 dimensions');if(4!==o.dims.length)throw Error('Input "past_value" is expected to have 4 dimensions');h=s.dims[2]}else if(m||g)throw Error('Input "past_key" and "past_value" shall be both present or both absent');let b=1;if(a&&a.dims.length>0){if(3!==i.dims.length)throw Error('Input "query" is expected to have 3 dimensions when key is given');if(a.dims.length<3||a.dims.length>5)throw Error('Input "key" is expected to have 3, 4, or 5 dimensions');if(i.dims[0]!==a.dims[0])throw Error('Input "query" and "key" shall have same dim 0 (batch size)');if(3===a.dims.length){if(i.dims[2]%a.dims[2]!=0)throw Error('Dimension 2 of "query" should be a multiple of "key"');c=a.dims[1]}else if(5===a.dims.length){if(a.dims[2]!==r.numHeads||2!==a.dims[3]||a.dims[4]!==p)throw Error('Expect "key" shape (batch_size, kv_sequence_length, num_heads, 2, head_size) for packed kv');if(n)throw Error('Expect "value" be none when "key" has packed kv format.');c=a.dims[1]}else{if(a.dims[1]!==r.numHeads||a.dims[3]!==p)throw Error('Expect "key" shape (batch_size, num_heads, kv_sequence_length, head_size) for past_key');c=a.dims[2]}}else{if(3!==i.dims.length&&5!==i.dims.length)throw Error('Input "query" is expected to have 3 or 5 dimensions when key is empty');if(5===i.dims.length&&(i.dims[2]!==r.numHeads||3!==i.dims[3]))throw Error('Expect "query" shape (batch_size, kv_sequence_length, num_heads, 3, head_size) for packed kv');b=3}let y=!1,v=r.kvNumHeads?p*r.kvNumHeads:d;if(n&&n.dims.length>0){if(3!==n.dims.length&&4!==n.dims.length)throw Error('Input "value" is expected to have 3 or 4 dimensions');if(i.dims[0]!==n.dims[0])throw Error('Input "query" and "value" shall have same dim 0 (batch_size)');if(3===n.dims.length){if(c!==n.dims[1])throw Error('Input "key" and "value" shall have the same dim 1 (kv_sequence_length)');v=n.dims[2]}else{if(c!==n.dims[2])throw Error('Input "past_key" and "past_value" shall have the same dim 2 (kv_sequence_length)');v=n.dims[1]*n.dims[3],y=!0}}let _=t.length>4?t[5]:void 0;if(_&&1!==_.dims.length&&_.dims[0]!==l)throw Error('Input "seqlens" is expected to have 1 dimension and the same dim 0 as batch_size');return{batchSize:l,sequenceLength:u,pastSequenceLength:h,kvSequenceLength:c,totalSequenceLength:-1,maxSequenceLength:-1,inputHiddenSize:0,hiddenSize:d,vHiddenSize:v,headSize:p,vHeadSize:Math.floor(v/r.kvNumHeads),numHeads:r.numHeads,kvNumHeads:r.kvNumHeads,nReps:r.numHeads/r.kvNumHeads,pastPresentShareBuffer:!1,maskType:0,scale:r.scale,broadcastResPosBias:!1,passPastInKv:y,qkvFormat:b}})(t.inputs,r);if(5===t.inputs[0].dims.length)throw Error("Packed QKV is not implemented");if(t.inputs[1]?.dims.length===5)throw Error("Packed KV is not implemented");let a=t.inputs[0],n=t.inputs[1]&&t.inputs[1].dims.length>
vendor: 4,882 bytes, lines 1787-1852
17870?t.inputs[1]:void 0,s=t.inputs[2]&&t.inputs[2].dims.length>0?t.inputs[2]:void 0,o=t.inputs[3]&&0!==t.inputs[3].dims.length?t.inputs[3]:void 0,l=t.inputs[4]&&0!==t.inputs[4].dims.length?t.inputs[4]:void 0,u=t.inputs.length>4?t.inputs[5]:void 0,d=t.inputs.length>5?t.inputs[6]:void 0,c=i.kvNumHeads?i.kvNumHeads:i.numHeads,h=t$({axis:2,numOutputs:3,splitSizes:[i.numHeads*i.headSize,c*i.headSize,c*i.headSize]}),[f,p,m]=n||s?[a,n,s]:t.compute(aw([a],h),{inputs:[a],outputs:[-1,-1,-1]}),g,b;if(r.doRotary){let a=t.compute(((t,r,i,a)=>{let n=[t*r],s=t*r,o=[{type:12,data:s},{type:12,data:r},{type:12,data:t}];return{name:"GeneratePositionIds",shaderCache:{hint:`${t};${r}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:n,dataType:7}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:o}),getShaderSource:t=>{let r=tR("seq_lens",i.dataType,i.dims),s=tR("total_seq_lens",a.dataType,a.dims),o=tj("pos_ids",7,n);return`
1788  ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"sequence_length",type:"u32"},{name:"batch_size",type:"u32"}]).declareVariables(r,s,o)}
1789  ${t.mainStart()}
1790    ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1791    let total_sequence_length = u32(${s.getByOffset("0")});
1792    let is_subsequent_prompt = uniforms.sequence_length > 1 && uniforms.sequence_length != total_sequence_length;
1793    let is_first_prompt = !is_subsequent_prompt && uniforms.sequence_length == total_sequence_length;
1794    let batch_idx = global_idx / uniforms.sequence_length;
1795    let sequence_idx = i32(global_idx % uniforms.sequence_length);
1796    var pos_id: i32 = 0;
1797    let seqlen = ${r.getByOffset("batch_idx")};
1798    let total_seqlen = seqlen + 1;
1799    if (is_first_prompt) {
1800      if (sequence_idx < total_seqlen) {
1801        pos_id = sequence_idx;
1802      } else {
1803        pos_id = 1;
1804      }
1805      ${o.setByOffset("global_idx","pos_id")}
1806    } else if (is_subsequent_prompt) {
1807      let past_seqlen = total_seqlen - i32(uniforms.sequence_length);
1808      if (past_seqlen + sequence_idx < total_seqlen) {
1809        pos_id = past_seqlen + sequence_idx;
1810      } else {
1811        pos_id = 1;
1812      }
1813      ${o.setByOffset("global_idx","pos_id")}
1814    } else if (global_idx < uniforms.batch_size) {
1815      ${o.setByOffset("global_idx","seqlen")}
1816    };
1817  }
1818  `}}})(i.batchSize,i.sequenceLength,u,d),{inputs:[u,d],outputs:[-1]})[0],n=t.inputs[7],s=t.inputs[8],o=t$({interleaved:0!==r.rotaryInterleaved,numHeads:i.numHeads,rotaryEmbeddingDim:0,scale:r.scale}),l=[f,a,n,s],c=[-1];g=t.compute(aS(l,o),{inputs:l,outputs:c})[0],l.splice(0,1,p);let h=t$({interleaved:0!==r.rotaryInterleaved,numHeads:i.kvNumHeads,rotaryEmbeddingDim:0,scale:r.scale});b=t.compute(aS(l,h),{inputs:l,outputs:c})[0]}let y=av(t,i.batchSize,i.numHeads,i.sequenceLength,i.headSize,r.doRotary?g:f,void 0,0),v=aE(t,r.doRotary?b:p,i),_=aE(t,m,i);rb(t,y,v,_,void 0,void 0,o,l,void 0,i,u,d)}}),se=q(()=>{ng(),nv(),nE(),nC(),aI=(t,r,i,a,n,s,o,l)=>{let u=tI(s),d=1===u?"f32":`vec${u}f`,c=1===u?"vec2f":`mat2x${u}f`,h=n*o,f=64;1===h&&(f=256);let p=[n,o,s/u],m=[n,o,2],g=[];return g.push(...tT(p,m)),t.compute({name:"InstanceNormComputeChannelScaleShift",shaderCache:{hint:`${u};${l};${f}`,inputDependencies:["rank","type","type"]},getRunData:()=>({outputs:[{dims:m,dataType:1}],dispatchGroup:{x:h},programUniforms:g}),getShaderSource:t=>{let n=tR("x",r.dataType,3,u),s=[n,tR("scale",i.dataType,i.dims),tR("bias",a.dataType,a.dims),tj("output",1,3,2)];return`
1819  var<workgroup> workgroup_shared : array<${c}, ${f}>;
1820  const workgroup_size = ${f}u;
1821  ${t.declareVariables(...s)}
1822  ${t.mainStart(f)}
1823    let batch = workgroup_index / uniforms.x_shape[1];
1824    let channel = workgroup_index % uniforms.x_shape[1];
1825    let hight = uniforms.x_shape[2];
1826    // initialize workgroup memory
1827    var sum = ${d}(0);
1828    var squared_sum = ${d}(0);
1829    for (var h = local_idx; h < hight; h += workgroup_size) {
1830      let value = ${d}(${n.get("batch","channel","h")});
1831      sum += value;
1832      squared_sum += value * value;
1833    }
1834    workgroup_shared[local_idx] = ${c}(sum, squared_sum);
1835    workgroupBarrier();
1836
1837    for (var currSize = workgroup_size >> 1;  currSize > 0; currSize = currSize >> 1) {
1838      if (local_idx < currSize) {
1839        workgroup_shared[local_idx] = workgroup_shared[local_idx] + workgroup_shared[local_idx + currSize];
1840      }
1841      workgroupBarrier();
1842    }
1843    if (local_idx == 0) {
1844      let sum_final = ${tO("workgroup_shared[0][0]",u)} / f32(hight * ${u});
1845      let squared_sum_final = ${tO("workgroup_shared[0][1]",u)} / f32(hight * ${u});
1846
1847      let inv_std_dev = inverseSqrt(squared_sum_final - sum_final * sum_final + f32(${l}));
1848      let channel_scale = inv_std_dev * f32(scale[channel]);
1849      let channel_shift = f32(bias[channel]) - sum_final * channel_scale;
1850      output[workgroup_index] = vec2f(channel_scale, channel_shift);
1851    }
1852  }`}},{inputs:[r,i,a],outputs:[-1]})[0]}
1852,aA=(t,r)=>{"NHWC"===r.format?((t,r,i)=>{let a=r[0].dims,n=a[0],s=a[a.length-1],o=e8.sizeFromDimension(a,1)/s,l=tI(s),u=e8.size(a)/l,d=[{type:12,data:o},{type:12,data:Math.floor(s/l)}],c=!1,h=[0,a.length-1];for(let t=0;t<a.length-2;t++)c=c||1!==a[t+1],h.push(t+1);let f=(c=c&&1!==a[a.length-1])?t.compute(tF(t.inputs[0],h),{inputs:[t.inputs[0]],outputs:[-1]})[0]:t.inputs[0].reshape(Array.from({length:a.length},(t,r)=>a[h[r]])),p=aI(t,f,r[1],r[2],n,o,s,i.epsilon);t.compute({name:"InstanceNormalizationNHWC",shaderCache:{hint:`${l}`,inputDependencies:["type","type"]},getRunData:()=>({outputs:[{dims:a,dataType:r[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:d}),getShaderSource:t=>{let i=tC(r[0].dataType),n=1===l?"vec2f":`mat${l}x2f`,s=t=>{let r=0===t?"x":"y",a=1===l?"f32":`vec${l}f`;switch(l){case 1:return`${i}(${a}(scale.${r}))`;case 2:return`vec2<${i}>(${a}(scale[0].${r}, scale[1].${r}))`;case 4:return`vec4<${i}>(${a}(scale[0].${r}, scale[1].${r}, scale[2].${r}, scale[3].${r}))`;default:throw Error(`Not supported compoents ${l}`)}},o=tR("input",r[0].dataType,r[0].dims,l),u=tj("output",r[0].dataType,a,l);return`
1853  @group(0) @binding(0) var<storage, read> input : array<${o.type.storage}>;
1854  @group(0) @binding(1) var<storage, read> scale_input : array<${n}>;
1855  @group(0) @binding(2) var<storage, read_write> output : array<${u.type.storage}>;
1856  struct Uniforms {H: u32, C : u32};
1857  @group(0) @binding(3) var<uniform> uniforms: Uniforms;
1858
1859  ${t.mainStart()}
1860    let current_image_number = global_idx / (uniforms.C * uniforms.H);
1861    let current_channel_number = global_idx % uniforms.C;
1862
1863    let scale_offset = current_image_number * uniforms.C + current_channel_number;
1864    let scale = scale_input[scale_offset];
1865    output[global_idx] = fma(input[global_idx], ${s(0)}, ${s(1)});
1866  }`}},{inputs:[r[0],p]})})(t,t.inputs,r):((t,r,i)=>{let a=r[0].dims,n=a[0],s=a[1],o=e8.sizeFromDimension(a,2),l=tI(o),u=e8.size(a)/l,d=aI(t,r[0],r[1],r[2],n,o,s,i.epsilon),c=[n,s,o/l],h=[n,s];t.compute({name:"InstanceNormalization",shaderCache:{hint:`${l}`,inputDependencies:["type","none"]},getRunData:()=>({outputs:[{dims:a,dataType:r[0].dataType}],dispatchGroup:{x:Math.ceil(u/64)},programUniforms:[{type:12,data:u},...tT(c,h,c)]}),getShaderSource:t=>{let i=tR("x",r[0].dataType,c.length,l),a=tR("scale_shift",1,h.length,2),n=tj("output",r[0].dataType,c.length,l),s=[i,a,n];return`
1867  ${t.registerUniform("output_size","u32").declareVariables(...s)}
1868  ${t.mainStart()}
1869  ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
1870      let outputIndices = ${n.offsetToIndices("global_idx")};
1871      let batch = outputIndices[0];
1872      let channel = outputIndices[1];
1873      let scale_shift = ${a.getByIndices("vec2<u32>(batch, channel)")};
1874      let value = ${i.getByOffset("global_idx")} * ${n.type.value}(scale_shift.x) + ${n.type.value}(scale_shift.y);
1875      ${n.setByOffset("global_idx","value")};
1876  }`}},{inputs:[r[0],d]})})(t,t.inputs,r)}}),st=q(()=>{ng(),nv(),nC(),aN=(t,r)=>{(t=>{if(!t||t.length<2)throw Error("layerNorm requires at least 2 inputs.")})(t.inputs),t.compute(((t,r,i)=>{let a=r.simplified,n=t[0].dims,s=t[1],o=!a&&t[2],l=e8.normalizeAxis(r.axis,n.length),u=e8.sizeToDimension(n,l),d=e8.sizeFromDimension(n,l),c=e8.size(s.dims),h=o?e8.size(o.dims):0;if(c!==d||o&&h!==d)throw Error(`Size of X.shape()[axis:] == ${d}.
1877       Size of scale and bias (if provided) must match this.
1878       Got scale size of ${c} and bias size of ${h}`);let f=[];for(let t=0;t<n.length;++t)t<l?f.push(n[t]):f.push(1);let p=tI(d),m=["type","type"],g=[{type:12,data:u},{type:1,data:d},{type:12,data:Math.floor(d/p)},{type:1,data:r.epsilon}];o&&m.push("type");let b=i>1,y=i>2,v=[{dims:n,dataType:t[0].dataType}];return b&&v.push({dims:f,dataType:1}),y&&v.push({dims:f,dataType:1}),{name:"LayerNormalization",shaderCache:{hint:`${p};${i};${a}`,inputDependencies:m},getRunData:()=>({outputs:v,dispatchGroup:{x:Math.ceil(u/64)},programUniforms:g}),getShaderSource:r=>{let i=tC(t[0].dataType),l=[tR("x",t[0].dataType,t[0].dims,p),tR("scale",s.dataType,s.dims,p)];return o&&l.push(tR("bias",o.dataType,o.dims,p)),l.push(tj("output",t[0].dataType,n,p)),b&&l.push(tj("mean_data_output",1,f)),y&&l.push(tj("inv_std_output",1,f)),`
1879  ${r.registerUniforms([{name:"norm_count",type:"u32"},{name:"norm_size",type:"f32"},{name:"norm_size_vectorized",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...l)}
1880  ${r.mainStart()}
1881    ${r.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.norm_count")}
1882    let offset = global_idx * uniforms.norm_size_vectorized;
1883    var mean_vector = ${tA("f32",p)};
1884    var mean_square_vector = ${tA("f32",p)};
1885
1886    for (var h: u32 = 0u; h < uniforms.norm_size_vectorized; h++) {
1887      let value = ${tN(i,p,"x[h + offset]")};
1888      mean_vector += value;
1889      mean_square_vector += value * value;
1890    }
1891    let mean = ${tO("mean_vector",p)} / uniforms.norm_size;
1892    let inv_std_dev = inverseSqrt(${tO("mean_square_vector",p)} / uniforms.norm_size ${a?"":"- mean * mean"} + uniforms.epsilon);
1893
1894    for (var j: u32 = 0; j < uniforms.norm_size_vectorized; j++) {
1895      let f32input = ${tN(i,p,"x[j + offset]")};
1896      let f32scale = ${tN(i,p,"scale[j]")};
1897      output[j + offset] = ${l[0].type.value}((f32input ${a?"":"- mean"}) * inv_std_dev * f32scale
1898        ${o?`+ ${tN(i,p,"bias[j]")}`:""}
1899      );
1900    }
1901
1902    ${b?"mean_data_output[global_idx] = mean":""};
1903    ${y?"inv_std_output[global_idx] = inv_std_dev":""};
1904  }`}}})(t.inputs,r,t.outputCount))}}),sr=q(()=>{nv(),nU(),nF(),aO=t=>{(t=>{if(!t||2!==t.length)throw Error("MatMul requires 2 inputs.");if(t[0].dims[t[0].dims.length-1]!==t[1].dims[t[1].dims.length-2])throw Error("shared dimension does not match.")})(t.inputs);
1904let r=e4.calcShape(t.inputs[0].dims,t.inputs[1].dims,!0);if(!r)throw Error("Can't use matmul on the given tensors");let i=r[r.length-1],a=t.inputs[0].dims[t.inputs[0].dims.length-1];if(i<8&&a<8)t.compute(i$(t.inputs,{activation:""},r));else{let n=r[r.length-2],s=e8.size(t.inputs[0].dims.slice(0,-2)),o=e8.size(t.inputs[1].dims.slice(0,-2));if(1!==s&&1===n&&1===o){let n=t.inputs[0].reshape([1,s,a]),o=t.inputs[1].reshape([1,a,i]),l=[1,s,i],u=[n,o];t.compute(iE(u,{activation:""},r,l),{inputs:u})}else t.compute(iE(t.inputs,{activation:""},r))}}}),si=q(()=>{ng(),nv(),nk(),nC(),aM=(t,r)=>{((t,r)=>{if(t.length<3||t.length>4)throw Error("MatMulNBits requires 3 or 4 inputs");let i=t[0],a=i.dims.length;if(i.dims[a-1]!==r.k)throw Error("The last dim of input shape does not match the k value");let n=Math.floor((r.k+r.blockSize-1)/r.blockSize),s=r.blockSize/8*r.bits,o=t[1];if(!e8.areEqual(o.dims,[r.n,n,s]))throw Error("The second inputs must be 3D tensor with shape N X nBlocksPerCol X blobSize");let l=t[2].dims;if(e8.size(l)!==r.n*n)throw Error("scales input size error.");if(4===t.length){let i=t[3].dims,a=r.n*(8===r.bits?n:Math.floor((n*r.bits+7)/8));if(e8.size(i)!==a)throw Error("zeroPoints input size error.")}})(t.inputs,r),32===r.blockSize&&t.adapterInfo.isVendor("intel")&&t.adapterInfo.isArchitecture("gen-12lp")?t.compute(((t,r)=>{let i=t[0].dims,a=i.length,n=i[a-2],s=r.k,o=r.n,l=i.slice(0,a-2),u=e8.size(l),d=t[1].dims[2]/4,c=t[0].dataType,h=tI(r.k),f=tI(d),p=l.concat([n,o]),m=o%8==0?8:o%4==0?4:1,g=128/m,b=g*f*8,y=b/h,v=b/r.blockSize,_=e8.size(p)/m,w=[],x=[u,n,s/h],$=e8.convertShape(t[1].dims).slice();$.splice(-1,1,d/f),w.push(...tT(x)),w.push(...tT($)),w.push(...tT(t[2].dims)),4===t.length&&w.push(...tT(e8.convertShape(t[3].dims)));let S=[u,n,o];return w.push(...tT(S)),{name:"BlockwiseMatMulNBits32",shaderCache:{hint:`${r.blockSize};${h};${f};${g};${m}`,inputDependencies:Array(t.length).fill("rank")},getRunData:()=>({outputs:[{dims:p,dataType:c}],dispatchGroup:{x:_},programUniforms:w}),getShaderSource:i=>{let a=x.length,n=tR("a",t[0].dataType,a,h),s=tR("b",12,$.length,f),o=tR("scales",t[2].dataType,t[2].dims.length),l=[n,s,o],u=4===t.length?tR("zero_points",12,t[3].dims.length):void 0;u&&l.push(u);let d=S.length,c=tj("output",t[0].dataType,d),p=tC(t[0].dataType);return`
1905        var<workgroup> sub_a: array<${n.type.value}, ${y}>;
1906        var<workgroup> inter_results: array<array<${c.type.value}, ${g}>, ${m}>;
1907        ${i.declareVariables(...l,c)}
1908        ${i.mainStart([g,m,1])}
1909          let output_indices = ${c.offsetToIndices(`workgroup_index * ${m}`)};
1910          let col = output_indices[2];
1911          let row = output_indices[1];
1912          let batch = output_indices[0];
1913          let n_blocks_per_col = uniforms.b_shape[1];
1914          let num_tiles =  (n_blocks_per_col - 1) / ${v} + 1;
1915
1916          // Loop over shared dimension.
1917          for (var tile: u32 = 0; tile < num_tiles; tile += 1) {
1918            let a_col_start = tile * ${y};
1919            // load one tile A data into shared memory.
1920            for (var a_offset = local_idx; a_offset < ${y}; a_offset += 128)
1921            {
1922              let a_col = a_col_start + a_offset;
1923              if (a_col < uniforms.a_shape[2])
1924              {
1925                sub_a[a_offset] = ${n.getByIndices(`${n.type.indices}(batch, row, a_col)`)};
1926              } else {
1927                sub_a[a_offset] = ${n.type.value}(0);
1928              }
1929            }
1930            workgroupBarrier();
1931
1932            // each thread process one block
1933            let b_row = col + local_id.y;
1934            let block = tile * ${v} + local_id.x;
1935            ${u?`
1936            let zero_point_bytes_per_col = (n_blocks_per_col + 1) / 2;
1937            let zero_point_byte_count = b_row * zero_point_bytes_per_col + (block >> 0x1u);
1938            let zero_point_word_index = zero_point_byte_count >> 0x2u;
1939            let zero_point_byte_offset = zero_point_byte_count & 0x3u;
1940            let zero_point_nibble_offset: u32 = block & 0x1u;
1941            let zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);
1942            let zero_point_word = ${u.getByOffset("zero_point_word_index")} >> zero_point_bits_offset;
1943            let zero_point = ${p}((zero_point_word) & 0xFu);`:`
1944            // The default zero point is 8 for unsigned 4-bit quantization.
1945            let zero_point = ${p}(8);`}
1946            let scale = ${o.getByOffset("b_row * n_blocks_per_col + block")};
1947            let b_data = ${s.getByIndices(`${s.type.indices}(b_row, block, 0)`)};
1948            var word_offset = local_id.x * ${r.blockSize/h};
1949            for (var i: u32 = 0; i < ${f}; i++) {
1950              ${(()=>{switch(h){case 1:return`
1951          let a_data0 = vec4<${p}>(sub_a[word_offset], sub_a[word_offset + 1], sub_a[word_offset + 2], sub_a[word_offset + 3]);
1952          let a_data1 = vec4<${p}>(sub_a[word_offset + 4], sub_a[word_offset + 5], sub_a[word_offset + 6], sub_a[word_offset + 7]);`;case 2:return`
1953          let a_data0 = vec4<${p}>(sub_a[word_offset], sub_a[word_offset + 1]);
1954          let a_data1 = vec4<${p}>(sub_a[word_offset + 2], sub_a[word_offset + 3]);`;case 4:return`
1955          let a_data0 = sub_a[word_offset];
1956          let a_data1 = sub_a[word_offset + 1];`;default:throw Error(`${h}-component is not supported.`)}})()}
1957              let b_value = ${1===f?"b_data":"b_data[i]"};
1958              let b_value_lower = unpack4xU8(b_value & 0x0F0F0F0Fu);
1959              let b_value_upper = unpack4xU8((b_value >> 4) & 0x0F0F0F0Fu);
1960              let b_quantized_values = mat2x4<${p}>(${Array.from({length:4},(t,r)=>`${p}(b_value_lower[${r}]), ${p}(b_value_upper[${r}])`).join(", ")});
1961              let b_dequantized_values = (b_quantized_values - mat2x4<${p}>(${Array(8).fill("zero_point").join(",")})) * scale;
1962              inter_results[local_id.y][local_id.x] += ${Array.from({length:2},(t,r)=>`dot(a_data${r}, b_dequantized_values[${r}])`).join(" + ")};
1963              word_offset += ${8/h};
1964            }
1965            workgroupBarrier();
1966          }
1967
1968          if (local_idx < ${m}) {
1969            var output_value: ${c.type.value} = ${c.type.value}(0);
1970            for (var b = 0u; b < ${g}; b++) {
1971              output_value += inter_results[local_idx][b];
1972            }
1973            if (col + local_idx < uniforms.output_shape[2])
1974            {
1975              ${c.setByIndices(`${c.type.indices}
vendor: 4,449 bytes, lines 1975-2037
1975(batch, row, col + local_idx)`,"output_value")}
1976            }
1977          }
1978        }`}}})(t.inputs,r)):t.compute(((t,r)=>{let i=t[0].dims,a=i.length,n=i[a-2],s=r.k,o=r.n,l=i.slice(0,a-2),u=e8.size(l),d=t[1].dims[2]/4,c=t[0].dataType,h=tI(r.k),f=tI(d),p=tI(o),m=l.concat([n,o]),g=n>1&&o/p%2==0?2:1,b=e8.size(m)/p/g,y=[],v=[u,n,s/h],_=e8.convertShape(t[1].dims).slice();_.splice(-1,1,d/f),y.push(...tT(v)),y.push(...tT(_)),y.push(...tT(t[2].dims)),4===t.length&&y.push(...tT(e8.convertShape(t[3].dims)));let w=[u,n,o/p];return y.push(...tT(w)),{name:"MatMulNBits",shaderCache:{hint:`${r.blockSize};${r.bits};${h};${f};${p};${g};64`,inputDependencies:Array(t.length).fill("rank")},getRunData:()=>({outputs:[{dims:m,dataType:c}],dispatchGroup:{x:b},programUniforms:y}),getShaderSource:i=>{let a=v.length,n=tR("a",t[0].dataType,a,h),s=tR("b",12,_.length,f),o=tR("scales",t[2].dataType,t[2].dims.length),l=[n,s,o],u=4===t.length?tR("zero_points",12,t[3].dims.length):void 0;u&&l.push(u);let c=w.length,m=tj("output",t[0].dataType,c,p),b=tC(t[0].dataType),y=(()=>{switch(h){case 1:return`array<${b}, 8>`;case 2:return`mat4x2<${b}>`;case 4:return`mat2x4<${b}>`;default:throw Error(`${h}-component is not supported.`)}})();return`
1979        var<workgroup> workgroup_shared: array<${m.type.value}, ${64*g}>;
1980        ${i.declareVariables(...l,m)}
1981        ${i.mainStart([64,1,1])}
1982          let output_indices = ${m.offsetToIndices(`(global_idx / 64) * ${g}`)};
1983          let col = output_indices[2];
1984          let row = output_indices[1];
1985          let batch = output_indices[0];
1986          let nBlocksPerCol = uniforms.b_shape[1];
1987
1988          for (var block = local_id.x; block < nBlocksPerCol; block += 64) {
1989            //process one block
1990            var word_offset: u32 = block * ${r.blockSize/h};
1991            ${(()=>{let t=`
1992            var col_index = col * ${p};
1993            ${u?`
1994            let zero_point_bytes_per_col = (nBlocksPerCol + 1) / 2;
1995            var zero_point_byte_count: u32;
1996            var zero_point_word_index: u32;
1997            var zero_point_byte_offset: u32;
1998            let zero_point_nibble_offset: u32 = block & 0x1u;
1999            var zero_point_bits_offset: u32;
2000            var zero_point_word: u32;`:`
2001            // The default zero point is 8 for unsigned 4-bit quantization.
2002            let zero_point = ${b}(8);`}
2003            `;for(let r=0;r<p*g;r++)t+=`
2004            let scale${r} = ${o.getByOffset("col_index * nBlocksPerCol + block")};
2005            ${u?`
2006            zero_point_byte_count = col_index * zero_point_bytes_per_col + (block >> 0x1u);
2007            zero_point_word_index = zero_point_byte_count >> 0x2u;
2008            zero_point_byte_offset = zero_point_byte_count & 0x3u;
2009            zero_point_bits_offset = (zero_point_byte_offset << 3) + (zero_point_nibble_offset << 2);
2010            zero_point_word = ${u.getByOffset("zero_point_word_index")} >> zero_point_bits_offset;
2011            let zero_point${r} = ${b}((zero_point_word) & 0xFu);`:""}
2012            col_index += 1;`;return t})()}
2013            for (var word: u32 = 0; word < ${d}; word += ${f}) {
2014              ${(()=>{let t=`col_index = col * ${p};`;for(let r=0;r<p*g;r++)t+=`
2015            let b${r}_data = ${s.getByIndices(`${s.type.indices}(col_index, block, word)`)};
2016            col_index += 1;`;return t+`
2017            var b_value: u32;
2018            let b_mask: u32 = 0x0F0F0F0Fu;
2019            var b_value_lower: vec4<u32>;
2020            var b_value_upper: vec4<u32>;
2021            var b_quantized_values: ${y};
2022            var b_dequantized_values: ${y};`})()}
2023              for (var i: u32 = 0; i < ${f}; i++) {
2024                ${(()=>{let t=`
2025          // reuse a data
2026            var input_offset = ${n.indicesToOffset(`${n.type.indices}(batch, row, word_offset)`)};
2027            var a_data: ${y};
2028            for (var j: u32 = 0; j < ${8/h}; j++) {
2029              a_data[j] = ${n.getByOffset("input_offset")};
2030              input_offset++;
2031            }
2032          `;for(let r=0;r<p*g;r++)t+=`
2033            b_value = ${1===f?`b${r}_data`:`b${r}_data[i]`};
2034            b_value_lower = unpack4xU8(b_value & b_mask);
2035            b_value_upper = unpack4xU8((b_value >> 4) & b_mask);
2036            b_quantized_values = ${y}(${Array.from({length:4},(t,r)=>`${b}(b_value_lower[${r}]), ${b}(b_value_upper[${r}])`).join(", ")});
2037            b_dequantized_values = ${1===h?`${y}(${Array.from({length:8},(t,i)=>`(b_quantized_values[${i}] - ${u?`zero_point${r}`:"zero_point"}
2037) * scale${r}`).join(", ")});`:`(b_quantized_values - ${y}(${Array(8).fill(`${u?`zero_point${r}`:"zero_point"}`).join(",")})) * scale${r};`};
2038            workgroup_shared[local_id.x * ${g} + ${Math.floor(r/p)}]${p>1?`[${r%p}]`:""} += ${Array.from({length:8/h},(t,r)=>`${1===h?`a_data[${r}] * b_dequantized_values[${r}]`:`dot(a_data[${r}], b_dequantized_values[${r}])`}`).join(" + ")};
2039          `;return t})()}
2040                word_offset += ${8/h};
2041              }
2042            }
2043          }
2044          workgroupBarrier();
2045
2046          if (local_id.x < ${g}) {
2047            var output_value: ${m.type.value} = ${m.type.value}(0);
2048            var workgroup_shared_offset: u32 = local_id.x;
2049            for (var b: u32 = 0u; b < 64u; b++) {
2050              output_value += workgroup_shared[workgroup_shared_offset];
2051              workgroup_shared_offset += ${g};
2052            }
2053            ${m.setByIndices(`${m.type.indices}(batch, row, col + local_id.x)`,"output_value")};
2054          }
2055        }`}}})(t.inputs,r))},aP=t=>t$(t)}),sa=q(()=>{ng(),nv(),nC(),aR=(t,r)=>{(t=>{if(!t||t.length<1)throw Error("Too few inputs");if(1!==t[0].dataType&&10!==t[0].dataType)throw Error("Input type must be float or float16.");if(t.length>=2){let r=2*t[0].dims.length===t[1].dims[0];if(4===t.length&&(r=2*t[3].dims[0]===t[1].dims[0]),!r)throw Error("The pads should be a 1D tensor of shape [2 * input_rank] or [2 * num_axes].")}})(t.inputs);let i=((t,r)=>{if(!(t.length>1))return r;{let i=t[1].getBigInt64Array(),a=t.length>=3&&t[2].data?10===t[2].dataType?t[2].getUint16Array()[0]:t[2].getFloat32Array()[0]:0,n=t[0].dims.length,s=new Int32Array(2*n).fill(0);if(t.length>=4){let r=t[3].getBigInt64Array();for(let t=0;t<r.length;t++)s[Number(r[t])]=Number(i[t]),s[Number(r[t])+n]=Number(i[t+r.length])}else i.forEach((t,r)=>s[Number(r)]=Number(t));let o=[];return s.forEach(t=>o.push(t)),{mode:r.mode,value:a,pads:o}}})(t.inputs,r);t.compute(((t,r)=>{let i=e8.padShape(t[0].dims.slice(),r.pads),a=t[0].dims,n=[{type:12,data:e8.size(i)},{type:6,data:r.pads}],s=t.length>=3&&t[2].data;return 0===r.mode&&n.push({type:s?t[2].dataType:1,data:r.value}),n.push(...tT(t[0].dims,i)),{name:"Pad",shaderCache:{hint:`${r.mode}${s}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(e8.size(i)/64)},programUniforms:n}),getShaderSource:n=>{let o=tj("output",t[0].dataType,i.length),l=tR("x",t[0].dataType,a.length),u=l.type.value,d=((t,r,i)=>{switch(i.mode){case 0:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=`
2056            k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)};
2057            if (k < 0) {
2058              break;
2059            }
2060            if (k >= i32(${tM("uniforms.x_shape",n,r)})) {
2061              break;
2062            }
2063            offset += k * i32(${tM("uniforms.x_strides",n,r)});
2064        `;return`
2065          value = ${t.type.value}(uniforms.constant_value);
2066          for (var i = 0; i < 1; i++) {
2067            var offset = 0;
2068            var k = 0;
2069            ${a}
2070            value = x[offset];
2071          }
2072      `})(t,r,i.pads.length);case 1:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=`
2073                k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)};
2074                if (k < 0) {
2075                  k = -k;
2076                }
2077                {
2078                  let _2n_1 = 2 * (i32(${tM("uniforms.x_shape",n,r)}) - 1);
2079                  k = k % _2n_1;
2080                  if(k >= i32(${tM("uniforms.x_shape",n,r)})) {
2081                    k = _2n_1 - k;
2082                  }
2083                }
2084                offset += k * i32(${tM("uniforms.x_strides",n,r)});
2085            `;return`
2086              var offset = 0;
2087              var k = 0;
2088              ${a}
2089              value = x[offset];
2090          `})(t,r,i.pads.length);case 2:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=`
2091                k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)};
2092                if (k < 0) {
2093                  k = 0;
2094                }
2095                if (k >= i32(${tM("uniforms.x_shape",n,r)})) {
2096                  k = i32(${tM("uniforms.x_shape",n,r)}) - 1;
2097                }
2098                offset += k * i32(${tM("uniforms.x_strides",n,r)});
2099            `;return`
2100              var offset = 0;
2101              var k = 0;
2102              ${a}
2103              value = x[offset];
2104          `})(t,r,i.pads.length);case 3:return((t,r,i)=>{let a="";for(let n=r-1;n>=0;--n)a+=`
2105                k = i32(${t.indicesGet("indices",n)}) - ${tM("uniforms.pads",n,i)};
2106                if (k < 0)  {
2107                  k += i32(${tM("uniforms.x_shape",n,r)}]);
2108                }
2109                if (k >= i32(${tM("uniforms.x_shape",n,r)})) {
2110                  k -= i32(${tM("uniforms.x_shape",n,r)});
2111                }
2112                offset += k * i32(${tM("uniforms.x_strides",n,r)});
2113            `;return`
2114              var offset = 0;
2115              var k = 0;
2116              ${a}
2117              value = x[offset];
2118          `})(t,r,i.pads.length);default:throw Error("Invalid mode")}})(o,a.length,r),c=[{name:"output_size",type:"u32"},{name:"pads",type:"i32",length:r.pads.length}];return 0===r.mode&&c.push({name:"constant_value",type:s?u:"f32"}),`
2119            ${n.registerUniforms(c).declareVariables(l,o)}
2120            ${n.mainStart()}
2121            ${n.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2122
2123            let indices = ${o.offsetToIndices("global_idx")};
2124
2125            var value = ${u}(0);
2126            ${d}
2127            output[global_idx] = value;
2128        }`}}})(t.inputs,i),{inputs:[0]})}}),sn=q(()=>{ed(),ng(),nv(),nC(),aj=t=>{if(h.webgpu.validateInputContent&&(!t||1!==t.length))throw Error("Pool ops requires 1 input.")},az=(t,r,i)=>{let a="NHWC"===r.format,n=t.dims.slice();a&&n.splice(1,0,n.pop());let s=Object.hasOwnProperty.call(r,"dilations"),o=r.kernelShape.slice(),l=r.strides.slice(),u=s?r.dilations.slice():[],d=r.pads.slice();e7.adjustPoolAttributes(i,n,o,l,u,d);let c=e7.computePoolOutputShape(i,n,l,u,o,d,r.autoPad),h=Object.assign({},r);s?Object.assign(h,{kernelShape:o,strides:l,pads:d,dilations:u,cacheKey:r.cacheKey}):Object.assign(h,{kernelShape:o,strides:l,pads:d,cacheKey:r.cacheKey});let f=c.slice();return f.push(f.splice(1,1)[0]),[h,a?f:c]},aD=(t,r)=>{let i="NHWC"===r.format,a=[{type:12,data:e8.size(t)}
vendor: 4,242 bytes, lines 2128-2198
2128,{type:12,data:e8.size(r.kernelShape)}],n=[{name:"outputSize",type:"u32"},{name:"kernelSize",type:"u32"}];if(r.kernelShape.length<=2){let t=r.kernelShape[r.kernelShape.length-1],i=r.strides[r.strides.length-1],s=r.pads[r.pads.length/2-1],o=r.pads[r.pads.length-1],l=!!(s+o);a.push({type:12,data:t},{type:12,data:i},{type:12,data:s},{type:12,data:o}),n.push({name:"kw",type:"u32"},{name:"sw",type:"u32"},{name:"pwStart",type:"u32"},{name:"pwEnd",type:"u32"});let u=!1;if(2===r.kernelShape.length){let t=r.kernelShape[r.kernelShape.length-2],i=r.strides[r.strides.length-2],s=r.pads[r.pads.length/2-2],o=r.pads[r.pads.length-2];u=!!(s+o),a.push({type:12,data:t},{type:12,data:i},{type:12,data:s},{type:12,data:o}),n.push({name:"kh",type:"u32"},{name:"sh",type:"u32"},{name:"phStart",type:"u32"},{name:"phEnd",type:"u32"})}return[a,n,!0,l,u]}{if(i)throw Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let t=e8.computeStrides(r.kernelShape);return a.push({type:12,data:t},{type:12,data:r.pads},{type:12,data:r.strides}),n.push({name:"kernelStrides",type:"u32",length:t.length},{name:"pads",type:"u32",length:r.pads.length},{name:"strides",type:"u32",length:r.strides.length}),[a,n,!!r.pads.reduce((t,r)=>t+r),!1,!1]}},aB=(t,r,i,a,n,s,o,l,u,d,c,h)=>{let f="NHWC"===n.format,p=r.type.value,m=tj("output",r.type.tensor,a);if(n.kernelShape.length<=2){let a="",d="",g="",b=i-(f?2:1);if(a=c?`
2129                for (var i: u32 = 0u; i < uniforms.kw; i++) {
2130                  xIndices[${b}] = indices[${b}] * uniforms.sw - uniforms.pwStart + i;
2131                  if (xIndices[${b}] < 0 || xIndices[${b}]
2132                      >= uniforms.x_shape[${b}]) {
2133                    pad++;
2134                    continue;
2135                  }
2136                  let x_val = x[${r.indicesToOffset("xIndices")}];
2137                  ${s}
2138                }`:`
2139                for (var i: u32 = 0u; i < uniforms.kw; i++) {
2140                  xIndices[${b}] = indices[${b}] * uniforms.sw - uniforms.pwStart + i;
2141                  let x_val = x[${r.indicesToOffset("xIndices")}];
2142                  ${s}
2143                }`,2===n.kernelShape.length){let t=i-(f?3:2);d=h?`
2144                for (var j: u32 = 0u; j < uniforms.kh; j++) {
2145                  xIndices[${t}] = indices[${t}] * uniforms.sh - uniforms.phStart + j;
2146                  if (xIndices[${t}] < 0 || xIndices[${t}] >= uniforms.x_shape[${t}]) {
2147                    pad += i32(uniforms.kw);
2148                    continue;
2149                  }
2150              `:`
2151                for (var j: u32 = 0u; j < uniforms.kh; j++) {
2152                  xIndices[${t}] = indices[${t}] * uniforms.sh - uniforms.phStart + j;
2153                `,g=`
2154              }
2155            `}return`
2156            ${t.registerUniforms(u).declareVariables(r,m)}
2157
2158            ${t.mainStart()}
2159              ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2160
2161              let indices = ${m.offsetToIndices("global_idx")};
2162              var xIndices = ${m.offsetToIndices("global_idx")};
2163
2164              var value = ${p}(${l});
2165              var pad = 0;
2166              ${d}
2167              ${a}
2168              ${g}
2169              ${o}
2170
2171              output[global_idx] = value;
2172            }`}{if(f)throw Error("Pooling with kernelShape.length > 2 is not supported for NHWC format.");let a=n.kernelShape.length,c=n.pads.length,h="";return h=d?`
2173                if (xIndices[j] >= uniforms.x_shape[j]) {
2174                  pad++;
2175                  isPad = true;
2176                  break;
2177                }
2178              }
2179              if (!isPad) {
2180                let x_val = x[${r.indicesToOffset("xIndices")}];
2181                ${s}
2182              }`:`
2183              }
2184              let x_val = x[${r.indicesToOffset("xIndices")}];
2185              ${s}
2186            `,`
2187            ${t.registerUniforms(u).declareVariables(r,m)}
2188
2189            ${t.mainStart()}
2190              ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2191              let indices = ${m.offsetToIndices("global_idx")};
2192              var xIndices = ${m.offsetToIndices("global_idx")};
2193
2194              var offsets: array<u32, ${a}>;
2195
2196              var value = ${p}(${l});
2197              var pad = 0;
2198              var isPad = false;
2199
2200              for (var i: u32 = 0u; i < uniforms.kernelSize; i++) {
2201                var offset = i;
2202                for (var j = 0u; j < ${a-1}u; j++) {
2203                  offsets[j] = offset / ${tM("uniforms.kernelStrides","j",a)};
2204                  offset -= offsets[j] * ${tM("uniforms.kernelStrides","j",a)};
2205                }
2206                offsets[${a-1}] = offset;
2207
2208                isPad = false;
2209                for (var j = ${i-a}u; j < ${i}u; j++) {
2210                  xIndices[j] = indices[j] * ${tM("uniforms.strides",`j - ${i-a}u`,a)}
2211                    + offsets[j - ${i-a}u] - ${tM("uniforms.pads","j - 2u",c)};
2212                  ${h}
2213              }
2214              ${o}
2215
2216              output[global_idx] = value;
2217            }`}},aL=t=>`${t.format};${t.ceilMode};${t.autoPad};${t.kernelShape.length}`,aU=t=>({format:t.format,autoPad:["NOTSET","VALID","SAME_UPPER","SAME_LOWER"][t.auto_pad],ceilMode:t.ceil_mode,kernelShape:t.kernel_shape,strides:t.strides,pads:t.pads}),aF=(t,r,i,a)=>{let[n,s]=az(r,a,i),o=tR("x",r.dataType,r.dims.length),l=o.type.value,u="";n.countIncludePad?u+=`value /= ${l}(uniforms.kernelSize);`:u+=`value /= ${l}(i32(uniforms.kernelSize) - pad);`;let[d,c,h,f,p]=aD(s,n);return d.push(...tT(r.dims,s)),{name:t,shaderCache:{hint:`${a.cacheKey};${h};${f};${p}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:r.dataType}],dispatchGroup:{x:Math.ceil(e8.size(s)/64)},programUniforms:d}),getShaderSource:t=>aB(t,o,r.dims.length,s.length,n,"value += x_val;",u,0,c,h,f,p)}},aq=t=>{let r=0!==t.count_include_pad,i=aU(t);if(0!==i.ceilMode)throw Error("using ceil() in shape computation is not yet supported for AveragePool");let a={countIncludePad:r,...i,cacheKey:""};return{...a,cacheKey:(t=>`${aL(t)};${t.countIncludePad}`)(a)}},aV=(t,r)=>{aj(t.inputs),t.compute(aF("AveragePool",t.inputs[0],!1,r))},aW={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[]},aH=t=>{let r=t.format;return{format:r,...aW,cacheKey:r}},aG=(t,r)=>{aj(t.inputs),t.compute(aF("GlobalAveragePool",t.inputs[0],!0,r))},aK=(t,r,i,a)=>{let[n,s]=az(r,a,i),o=`
2218      value = max(x_val, value);
2219    `,l=tR("x",r.dataType,r.dims.length),[u,d,c,h,f]=aD(s,n);return u.push(...tT(r.dims,s)),{name:t,shaderCache:{hint:`${a.cacheKey};${c};${h};${f}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:s,dataType:r.dataType}],dispatchGroup:{x:Math.ceil(e8.size(s)/64)},programUniforms:u}),getShaderSource:t=>aB(t,l,r.dims.length,s.length,n,o,"",10===r.dataType?-65504:-1e5,d,c,h,f)}},aY=(t,r)=>{aj(t.inputs),t.compute(aK("MaxPool",t.inputs[0],!1,r))},aQ=t=>{let r=t.storage_order,i=t.dilations,a=aU(t);
2219if(0!==r)throw Error("column major storage order is not yet supported for MaxPool");if(0!==a.ceilMode)throw Error("using ceil() in shape computation is not yet supported for MaxPool");let n={storageOrder:r,dilations:i,...a,cacheKey:""};return{...n,cacheKey:(t=>`${aL(t)};${t.storageOrder};${t.dilations}`)(n)}},aX=t=>{let r=t.format;return{format:r,...aW,cacheKey:r}},aZ=(t,r)=>{aj(t.inputs),t.compute(aK("GlobalMaxPool",t.inputs[0],!0,r))}}),ss=q(()=>{ng(),nv(),nk(),nC(),aJ=(t,r)=>{((t,r)=>{if(t.length<2||t.length>3)throw Error("DequantizeLinear requires 2 or 3 inputs.");if(3===t.length&&t[1].dims===t[2].dims)throw Error("x-scale and x-zero-point must have the same shape.");if(3===t.length&&t[0].dataType!==t[2].dataType)throw Error("x and x-zero-point must have the same data type.");if(6===t[0].dataType&&t.length>2)throw Error("In the case of dequantizing int32 there is no zero point.");if(0!==t[1].dims.length&&1!==t[1].dims.length&&t[1].dims.length!==t[0].dims.length)throw Error("scale input must be a scalar, a 1D tensor, or have the same rank as the input tensor.");if(t.length>2){if(t[0].dataType!==t[2].dataType)throw Error("x and x-zero-point must have the same data type.");if(t[1].dims.length!==t[2].dims.length)throw Error("scale and zero-point inputs must have the same rank.");if(!t[1].dims.map((r,i)=>r===t[2].dims[i]).reduce((t,r)=>t&&r,!0))throw Error("scale and zero-point inputs must have the same shape.")}if(r.blockSize>0){if(0===t[1].dims.length||1===t[1].dims.length&&1===t[1].dims[0])throw Error("blockSize must be set only for block quantization.");if(!t[1].dims.map((i,a)=>a===r.axis||i===t[0].dims[a]).reduce((t,r)=>t&&r,!0))throw Error("For block qunatization, scale input shape to match the input shape except for the axis");if(t[1].dims.length!==t[0].dims.length)throw Error("For block qunatization the scale input rank must be the same as the x rank.");let i=t[0].dims[r.axis],a=t[1].dims[r.axis];if(r.blockSize<Math.ceil(i/a)||r.blockSize>Math.ceil(i/(a-1)-1))throw Error("blockSize must be with in the range [ceil(dI / Si), ceil(dI / (Si - 1) - 1)].")}})(t.inputs,r),t.compute(((t,r)=>{let i=e8.normalizeAxis(r.axis,t[0].dims.length),a=t[0].dataType,n=3===a,s=t[0].dims,o=t[1].dataType,l=e8.size(s),u=3===a||2===a,d=u?[Math.ceil(e8.size(t[0].dims)/4)]:t[0].dims,c=t[1].dims,h=t.length>2?t[2]:void 0,f=h?u?[Math.ceil(e8.size(h.dims)/4)]:h.dims:void 0,p=0===c.length||1===c.length&&1===c[0],m=!1===p&&1===c.length,g=tI(l),b=p&&(!u||4===g),y=b?g:1,v=tR("input",u?12:a,d.length,b&&!u?g:1),_=tR("scale",o,c.length),w=h?tR("zero_point",u?12:a,f.length):void 0,x=tj("output",o,s.length,y),$=[v,_];w&&$.push(w);let S=[d,c];h&&S.push(f);let k=[{type:12,data:l/y},{type:12,data:i},{type:12,data:r.blockSize},...tT(...S,s)];return{name:"DequantizeLinear",shaderCache:{hint:r.cacheKey,inputDependencies:w?["rank","rank","rank"]:["rank","rank"]},getShaderSource:t=>`
2220      ${t.registerUniforms([{name:"output_size",type:"u32"},{name:"axis",type:"u32"},{name:"block_size",type:"u32"}]).declareVariables(...$,x)}
2221      ${t.mainStart()}
2222          ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2223          let output_indices = ${x.offsetToIndices("global_idx")};
2224
2225          // Set input x
2226          ${u?`
2227            let input = ${v.getByOffset("global_idx / 4")};
2228            let x_vec = ${n?"unpack4xI8(input)":"unpack4xU8(input)"};
2229            let x_value = ${1===y?"x_vec[global_idx % 4]":"x_vec"};`:`let x_value = ${v.getByOffset("global_idx")};`};
2230
2231          // Set scale input
2232          ${p?`let scale_value= ${_.getByOffset("0")}`:m?`
2233            let scale_index = ${x.indicesGet("output_indices","uniforms.axis")};
2234            let scale_value= ${_.getByOffset("scale_index")};`:`
2235            var scale_indices: ${_.type.indices} = output_indices;
2236            let index = ${_.indicesGet("scale_indices","uniforms.axis")} / uniforms.block_size;
2237            ${_.indicesSet("scale_indices","uniforms.axis","index")};
2238            let scale_value= ${_.getByIndices("scale_indices")};`};
2239
2240          // Set zero-point input
2241          ${w?p?u?`
2242                let zero_point_input = ${w.getByOffset("0")};
2243                let zero_point_vec =  ${n?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
2244                let zero_point_value= zero_point_vec[0]`:`let zero_point_value = ${w.getByOffset("0")}`:m?u?`
2245                let zero_point_index = ${x.indicesGet("output_indices","uniforms.axis")};
2246                let zero_point_input = ${w.getByOffset("zero_point_index / 4")};
2247                let zero_point_vec =  ${n?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
2248                let zero_point_value = zero_point_vec[zero_point_index % 4]`:`
2249                let zero_point_index = ${x.indicesGet("output_indices","uniforms.axis")};
2250                let zero_point_value = ${w.getByOffset("zero_point_index")};`:u?`
2251                let zero_point_offset = ${_.indicesToOffset("scale_indices")};
2252                let zero_point_input = ${w.getByOffset("zero_point_offset / 4")};
2253                let zero_point_vec = ${n?"unpack4xI8(zero_point_input)":"unpack4xU8(zero_point_input)"};
2254                let zero_point_value = zero_point_vec[zero_point_offset % 4];`:`let zero_point_value = ${w.getByIndices("scale_indices")};`:`let zero_point_value = ${u?n?"i32":"u32":v.type.value}(0);`};
2255      // Compute and write output
2256      ${x.setByOffset("global_idx",`${x.type.value}(x_value - zero_point_value) * scale_value`)};
2257      }`,getRunData:()=>({outputs:[{dims:s,dataType:o}],dispatchGroup:{x:Math.ceil(l/y/64),y:1,z:1},programUniforms:k})}})(t.inputs,r))},a1=t=>t$({axis:t.axis,blockSize:t.blockSize})}),so=q(()=>{ed(),ng(),nC(),a0=t=>{let r=0,i=0,a=0;6===t.inputs[0].dataType?(r=t.inputs[0].getInt32Array()[0],i=t.inputs[1].getInt32Array()[0],a=t.inputs[2].getInt32Array()[0]):1===t.inputs[0].dataType&&(r=t.inputs[0].getFloat32Array()[0],i=t.inputs[1].getFloat32Array()[0],a=t.inputs[2].getFloat32Array()[0]),h.webgpu.validateInputContent&&((t,r,i)=>{if(t===r||t<r&&i<0||t>r&&i>0)throw Error("Range these inputs' contents are invalid.")})(r,i,a),t.compute(((t,r,i,a)=>{let n=Math.abs(Math.ceil((r-t)/i)),s=[n],o=[{type:12,data:n},{type:a,data:t},{type:a,data:i},...tT(s)];return{name:"Range",shaderCache:{hint:`${a}`}
2257,getShaderSource:t=>{let r=tj("output",a,s.length),i=r.type.value;return`
2258        ${t.registerUniforms([{name:"outputSize",type:"u32"},{name:"start",type:i},{name:"delta",type:i}]).declareVariables(r)}
2259        ${t.mainStart()}
2260        ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2261        output[global_idx] = uniforms.start + ${i}(global_idx) * uniforms.delta;
2262      }`},getRunData:()=>({outputs:[{dims:s,dataType:a}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:o})}})(r,i,a,t.inputs[0].dataType),{inputs:[]})}}),sl=q(()=>{ng(),nv(),nk(),nC(),a2=t=>t$({reduction:t.reduction}),a3=(t,r)=>{t.compute(((t,r)=>{let i=t[0].dims,a=t[1].dims,n=Math.ceil(e8.sizeToDimension(a,a.length-1)/1),s=a[a.length-1],o=e8.sizeFromDimension(i,s),l=[{type:12,data:n},{type:12,data:s},{type:12,data:o},...tT(t[1].dims,t[2].dims,i)];return{name:"ScatterND",shaderCache:{hint:`${r.cacheKey}_${r.reduction}`,inputDependencies:["rank","rank"]},getRunData:()=>({outputs:[{dims:i,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(n/64)},programUniforms:l}),getShaderSource:a=>{let n=tR("indices",t[1].dataType,t[1].dims.length),s=tR("updates",t[2].dataType,t[2].dims.length,1),o="none"!==r.reduction&&""!==r.reduction?tz("output",t[0].dataType,i.length):tj("output",t[0].dataType,i.length,1);return`
2263      ${a.registerUniform("output_size","u32").registerUniform("last_index_dimension","u32").registerUniform("num_updates_elements","u32").declareVariables(n,s,o)}
2264      ${a.mainStart()}
2265        ${a.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2266  var data_offset = 0u;
2267  let indices_start = uniforms.last_index_dimension * global_idx;
2268  let indices_end = indices_start + uniforms.last_index_dimension;
2269  for (var i = indices_start; i < indices_end; i++) {
2270    var index = i32(indices[i].x);
2271    ${1===t[0].dims.length?`
2272    let element_count_dim = uniforms.output_strides;
2273    let dim_value = uniforms.output_shape;`:`
2274    let element_count_dim = uniforms.output_strides[i - indices_start];
2275    let dim_value = uniforms.output_shape[i - indices_start];`}
2276    if (index >= 0) {
2277      if (index >= i32(dim_value)) {
2278        index = i32(dim_value - 1);
2279      }
2280    } else {
2281      if (index < -i32(dim_value)) {
2282        index = 0;
2283      } else {
2284        index += i32(dim_value);
2285      }
2286    }
2287    data_offset += u32((u32(index) * element_count_dim));
2288  }
2289
2290  for (var i = 0u; i < uniforms.num_updates_elements; i++) {
2291    let value = updates[uniforms.num_updates_elements * global_idx + i];
2292    ${((t,r,i,a)=>{if("none"!==t&&"i32"!==a&&"u32"!==a&&"f32"!==a)throw Error(`Input ${a} is not supported with reduction ${t}.`);let n=`{
2293                var oldValue = 0;
2294                loop {
2295                  let newValueF32 =`,s=`;
2296                  let newValue = bitcast<i32>(newValueF32);
2297                  let res = atomicCompareExchangeWeak(&${r}, oldValue, newValue);
2298                  if res.exchanged {
2299                    break;
2300                  }
2301                  oldValue = res.old_value;
2302                }
2303              }`;switch(t){case"none":return`${r}=${i};`;case"add":return"i32"===a||"u32"===a?`atomicAdd(&${r}, bitcast<${a}>(${i}));`:`
2304              ${n}bitcast<${a}>(oldValue) + (${i})${s}`;case"max":return"i32"===a||"u32"===a?`atomicMax(&${r}, bitcast<${a}>(${i}));`:`
2305                ${n}max(bitcast<f32>(oldValue), (${i}))${s}`;case"min":return"i32"===a||"u32"===a?`atomicMin(&${r}, bitcast<${a}>(${i}));`:`${n}min(bitcast<${a}>(oldValue), (${i}))${s}`;case"mul":return`${n}(bitcast<${a}>(oldValue) * (${i}))${s}`;default:throw Error(`Reduction ${t} is not supported.`)}})(r.reduction,"output[data_offset + i]","value",o.type.value)}
2306  }
2307
2308      }`}}})(t.inputs,r),{inputs:[t.inputs[1],t.inputs[2]],outputs:[]})}}),su=q(()=>{ng(),nv(),nk(),nC(),a4=(t,r,i,a)=>`
2309  // The whole part and the fractional part are calculated separately due to inaccuracy of floating
2310  // point division. As an example, f32(21) / f32(7) may evaluate to 2.99... instead of 3, causing an
2311  // offset-by-one error later in floor().
2312  let big = (${t}) * (${r});
2313  let whole = ${a}(big / (${i}));
2314  let fract = ${a}(big % (${i})) / ${a}(${i});
2315  return whole + fract;
2316`,a8=(t,r,i,a)=>t.rank>a?`
2317    ${t.indicesSet("input_indices",r,"channel")};
2318    ${t.indicesSet("input_indices",i,"batch")};
2319`:"",a7=(t,r)=>{let i=[],a=[],n=[],s=(t=>{let r=t.customDataBuffer;return new Uint32Array(r,r.byteOffset,1)[0]})(t);if(0!==r.antialias)throw Error("Only default value (0) for Antialias attribute is supported");((t,r,i,a,n,s)=>{let[o,l,u]=i>10?[1,2,3]:[-1,t.length>1?1:-1,-1],d=t[0].dims.length;if(o>0&&t.length>o&&t[o].dims.length>0)t[o].getFloat32Array().forEach(t=>s.push(t));else if("tf_crop_and_resize"===r.coordinateTransformMode)throw Error("Resize requires RoI input to be specified when coordinateTransformMode is tfCropAndResize");if(l>0&&t.length>l&&1===t[l].dims.length&&t[l].dims[0]>0){if(t[l].getFloat32Array().forEach(t=>a.push(t)),0!==a.length&&a.length!==d&&i>=18&&a.length!==r.axes.length)throw Error("Resize requires scales input size to be same as input rank or axes size for opset 18 and up");((t,r)=>{if(t.every(t=>t>0||(()=>{throw Error("Resize requires scales input values to be positive")})),t.length>0){if("linear"===r.mode){if(2!==t.length&&3!==t.length&&(4!==t.length||1!==t[0]||1!==t[1])&&(4!==t.length||1!==t[0]||1!==t[3])&&(5!==t.length||1!==t[0]||1!==t[1]))throw Error(`For linear mode, Resize requires scales to be 2D, 3D, 4D with either two outermost or one innermost and
2320            one outermost scale values equal to 1, or 5D with two outermost scale values equal to 1`)}else if("cubic"===r.mode&&2!==t.length&&(4!==t.length||1!==t[0]||1!==t[1])&&(4!==t.length||1!==t[0]||1!==t[3]))throw Error("Resize requires scales input size to be 2 or 4 for cubic mode")}})(a,r),r.axes.length>0&&((t,r,i)=>{r.every(t=>t>=0&&t<i||(()=>{throw Error("Resize requires axes input values to be positive and less than rank")}));let a=Array(i).fill(1);return r.forEach((r,i)=>a[r]=t[i]),a})(a,r.axes,d).forEach((t,r)=>a[r]=t)}if(u>0&&t.length>u&&1===t[u].dims.length&&t[u].dims[0]>0&&(t[u].getBigInt64Array().forEach(t=>n.push(Number(t))),0!==n.length&&n.length!==d&&i>=18&&n.length!==r.axes.length))throw Error("Resize requires sizes input size to be same as input rank or axes size for opset 18 and up");if(r.axes.length>0){if(0!==a.length&&a.length!==r.axes.length)throw Error('Resize requires "scales" input size to be of axes rank when axes attributes is specified');if(0!==n.length&&n.length!==r.axes.length)throw Error('Resize requires "sizes" input size to be of rank axes rank when axes attributes is specified')}if("u">typeof a&&"u">typeof n&&a.length>0&&n.length>d)throw Error("Resize requires only of scales or sizes to be specified")})(t.inputs,r,s,i,a,n),t.compute(((t,r,i,a,n,s)=>{let o=t.dims,l=((t,r,i)=>{let a=Array(i).fill(0).concat(Array(i).fill(1)),n=0===t.length?a:t.slice();return r.length>0?(r.forEach((t,s)=>{a[t]=n[s],a[s+i]=n[r.length+s]}),a):n})(s,r.axes,o.length),u=((t,r,i,a)=>{let n=[];if(i.length>0)if(a.length>0){if(t.forEach(t=>n.push(t)),Math.max(...a)>t.length)throw Error("axes is out of bound");a.forEach((t,r)=>n[t]=i[r])}else i.forEach(t=>n.push(t));else{if(0===r.length)throw Error("Resize requires either scales or sizes.");n=t.map((t,i)=>Math.round(t*r[i]))}return n})(o,a,n,r.axes),d=a.slice();0===a.length&&(d=o.map((t,r)=>0===t?1:u[r]/t),"stretch"!==r.keepAspectRatioPolicy&&(u=((t,r,i)=>{let a=(()=>{switch(i.keepAspectRatioPolicy){case"not_larger":return i.axes.length>0?Math.min(...i.axes.map(t=>r[t]),Number.MAX_VALUE):Math.min(...r,Number.MAX_VALUE);case"not_smaller":return i.axes.length>0?Math.max(...i.axes.map(t=>r[t]),5e-324):Math.max(...r,5e-324);default:throw Error(`Keep aspect ratio policy ${i.keepAspectRatioPolicy} is not supported`)}})();r.fill(1,0,r.length);let n=t.slice();return i.axes.length>0?(i.axes.forEach(t=>r[t]=a),i.axes.forEach(i=>n[i]=Math.round(t[i]*r[i]))):(r.fill(a,0,r.length),n.forEach((t,i)=>n[i]=Math.round(t*r[i]))),n})(o,d,r)));let c=tj("output",t.dataType,u.length),h=tR("input",t.dataType,o.length),f=e8.size(u),p=o.length===u.length&&o.every((t,r)=>t===u[r]),m="tf_crop_and_resize"===r.coordinateTransformMode,g=r.extrapolationValue,b=h.type.value;return{name:"Resize",shaderCache:{hint:`${r.cacheKey}|${i}|${d.length>0?"cubic"===r.mode?d:d.length:""}|${n.length>0?n:""}|${l.length>0?l:""}|${p}|${"nearest"===r.mode?o.length:o}`,inputDependencies:["rank"]},getShaderSource:t=>`
2321      ${p?"":`
2322      ${((t,r)=>`fn getOriginalCoordinateFromResizedCoordinate(xResized: u32, xScale: f32, lengthResized: u32,
2323     lengthOriginal: u32, roiStart: f32, roiEnd: f32) -> ${r} { `+(()=>{switch(t){case"asymmetric":return`
2324          if (xScale < 1.0 || floor(xScale) != xScale) {
2325            return ${r}(xResized) / ${r}(xScale);
2326          } else {
2327            ${a4("xResized","lengthOriginal","lengthResized",r)}
2328          }
2329        `;case"pytorch_half_pixel":return`if (lengthResized > 1) {
2330                    return (${r}(xResized) + 0.5) / ${r}(xScale) - 0.5;
2331                  } else {
2332                    return 0.0;
2333                  }`;case"tf_half_pixel_for_nn":return`return (${r}(xResized) + 0.5) / ${r}(xScale);`;case"align_corners":return`if (lengthResized == 1) {
2334                    return 0.0;
2335                  } else {
2336                    ${a4("xResized","lengthOriginal - 1","lengthResized - 1",r)}
2337                  }`;case"tf_crop_and_resize":return`if (lengthResized > 1) {
2338                    return ${r}(roiStart) * ${r}(lengthOriginal - 1) +
2339                        (${r}(xResized) * ${r}(roiEnd - roiStart) * ${r}(lengthOriginal - 1)) /
2340                        ${r}(lengthResized - 1);
2341                  } else {
2342                    return 0.5 * ${r}(roiStart + roiEnd) * ${r}(lengthOriginal - 1);
2343                  }`;case"half_pixel_symmetric":return`const outputWidth = ${r}xScale * ${r}(lengthResized);
2344                  const adjustment = ${r}(lengthResized) / outputWidth;
2345                  const center = ${r}(lengthOriginal) / 2;
2346                  const offset = center * (1 - adjustment);
2347                  return offset + ((${r}(xResized) + 0.5) / ${r}(xScale)) - 0.5;`;case"half_pixel":return`return ((${r}(xResized) + 0.5) / ${r}(xScale)) - 0.5;`;default:throw Error(`Coordinate transform mode ${t} is not supported`)}})()+"}")(r.coordinateTransformMode,b)};
2348      ${(()=>{switch(r.mode){case"nearest":return`
2349              ${((t,r)=>`
2350    fn checkInputIndices(input_indices: ${t.type.indices}) -> bool {
2351      for (var i:u32 = 0; i < ${r.length}; i++) {
2352        var input_index = ${t.indicesGet("input_indices","i")};
2353        if (input_index < 0 || input_index >= ${tM("uniforms.input_shape","i",r.length)}) {
2354          return false;
2355        }
2356      }
2357      return true;
2358    }`)(h,o)};
2359              ${((t,r,i)=>`fn getNearestPixelFromOriginal(xOriginal: ${i}, isDownSample: bool) -> ${i} {`+(()=>{switch(t){case"round_prefer_ceil":return"if (fract(xOriginal) == 0.5) {             return ceil(xOriginal);           } else {             return round(xOriginal);           }";case"floor":return"return floor(xOriginal);";case"ceil":return"return ceil(xOriginal);";case"round_prefer_floor":return"if (fract(xOriginal) == 0.5) {                     return floor(xOriginal);                   } else {                     return round(xOriginal);                   }";default:if(r<11)return"if (isDownSample)                     {                       return ceil(xOriginal);                     } else {                       return xOriginal;                     }";throw Error(`Nearest mode ${t} is not supported`)}})()+"}")(r.nearestMode,i,b)};
2360              ${((t,r,i,a,n,s,o)=>`
2361    fn calculateInputIndicesFromOutputIndices(output_indices: ${r.type.indices}) -> ${t.type.indices} {
2362      var input_indices: ${t.type.indices};
2363      for (var i:u32 = 0; i < ${a.length}; i++) {
2364        var output_index = ${r.indicesGet("output_indices","i")};
2365        var input_index: u32;
2366        var scale = ${tM("uniforms.scales","i",n)};
2367        if (scale == 1.0) {
2368          input_index = output_index;
2369        } else {
2370          var roi_low = ${tM("uniforms.roi","i",s)};
2371          var roi_hi = ${tM("uniforms.roi",`i + ${i.length}`,s)};
2372          var input_shape_i = ${tM("uniforms.input_shape","i",i.length)};
2373          var output_shape_i = ${tM("uniforms.output_shape","i",a.length)};
2374          var original_idx = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,
2375                                                                        input_shape_i, roi_low, roi_hi);
2376          if (!${o} || (original_idx >= 0 && original_idx < ${r.type.value}(input_shape_i))) {
2377            if (original_idx < 0) {
2378              input_index = 0;
2379            } else if (original_idx > ${r.type.value}(input_shape_i - 1)) {
2380              input_index = input_shape_i - 1;
2381            } else {
2382              input_index = u32(getNearestPixelFromOriginal(original_idx, scale < 1));
2383            }
2384          } else {
2385            input_index = u32(original_idx);
2386          }
2387        }
2388        ${t.indicesSet("input_indices","i","input_index")}
2389      }
2390      return input_indices;
2391    }`)(h,c,o,u,d.length,l.length,m)};
2392              `;case"linear":return`
2393              ${((t,r,i,a,n)=>`
2394    fn calculateOriginalIndicesFromOutputIndices(output_indices: ${t.type.indices}) -> array<${t.type.value}, ${i.length}> {
2395      var original_indices: array<${t.type.value}, ${i.length}>;
2396      for (var i:u32 = 0; i < ${i.length}; i++) {
2397        var output_index = ${t.indicesGet("output_indices","i")};
2398        var scale = ${tM("uniforms.scales","i",a)};
2399        var roi_low = ${tM("uniforms.roi","i",n)};
2400        var roi_hi = ${tM("uniforms.roi",`i + ${r.length}`,n)};
2401        if (scale == 1.0) {
2402          original_indices[i] = ${t.type.value}(output_index);
2403        } else {
2404          var input_shape_i = ${tM("uniforms.input_shape","i",r.length)};
2405          var output_shape_i = ${tM("uniforms.output_shape","i",i.length)};
2406          original_indices[i] = getOriginalCoordinateFromResizedCoordinate(output_index, scale, output_shape_i,
2407                                                                           input_shape_i, roi_low, roi_hi);
2408        }
2409      }
2410      return original_indices;
2411    }`)(c,o,u,d.length,l.length)};
2412              ${(()=>{if(2===o.length||4===o.length)return`${((t,r,i,a,n)=>{let[s,o,l,u]=2===i.length?[-1,0,1,-1]:[0,2,3,1],d=t.type.value;return`
2413    fn getInputValue(batch: u32, channel: u32, row: u32, col: u32) -> ${d} {
2414      var input_indices: ${t.type.indices};
2415      ${t.indicesSet("input_indices",o,`max(0, min(row, ${i[o]} - 1))`)};
2416      ${t.indicesSet("input_indices",l,`max(0, min(col, ${i[l]} - 1))`)};
2417      ${a8(t,u,s,2)}
2418      return ${t.getByIndices("input_indices")};
2419    }
2420
2421    fn bilinearInterpolation(output_indices: ${r.type.indices}) -> ${d} {
2422      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);
2423      var row:${d} = originalIndices[${o}];
2424      var col:${d} = originalIndices[${l}];
2425      ${a?`if (row < 0 || row > (${i[o]}
2425 - 1) || col < 0 || col > (${i[l]} - 1)) {
2426        return ${n};
2427      }`:""};
2428      row = max(0, min(row, ${i[o]} - 1));
2429      col = max(0, min(col, ${i[l]} - 1));
2430      var row1: u32 = u32(row);
2431      var col1: u32 = u32(col);
2432      var row2: u32 = u32(row + 1);
2433      var col2: u32 = u32(col + 1);
2434      var channel: u32 = ${i.length>2?`u32(originalIndices[${u}])`:"0"};
2435      var batch: u32 =  ${i.length>2?`u32(originalIndices[${s}])`:"0"};
2436      var x11: ${d} = getInputValue(batch, channel, row1, col1);
2437      var x12: ${d} = getInputValue(batch, channel, row1, col2);
2438      var x21: ${d} = getInputValue(batch, channel, row2, col1);
2439      var x22: ${d} = getInputValue(batch, channel, row2, col2);
2440      var dx1: ${d} = abs(row - ${d}(row1));
2441      var dx2: ${d} = abs(${d}(row2) - row);
2442      var dy1: ${d} = abs(col - ${d}(col1));
2443      var dy2: ${d} = abs(${d}(col2) - col);
2444      if (row1 == row2) {
2445        dx1 = 0.5;
2446        dx2 = 0.5;
2447      }
2448      if (col1 == col2) {
2449        dy1 = 0.5;
2450        dy2 = 0.5;
2451      }
2452      return (x11 * dx2 * dy2 + x12 * dx2 * dy1 + x21 * dx1 * dy2 + x22 * dx1 * dy1);
2453    }`})(h,c,o,m,g)}`;if(3===o.length||5===o.length)return`${((t,r,i,a,n)=>{let[s,o,l,u,d]=3===i.length?[-1,0,1,2,-1]:[0,2,3,4,1],c=t.type.value;return`
2454    fn getInputValue(batch: u32, channel: u32, depth:u32, height: u32, width: u32) -> ${c} {
2455      var input_indices: ${t.type.indices};
2456      ${t.indicesSet("input_indices",o,`max(0, min(depth, ${i[o]} - 1))`)};
2457      ${t.indicesSet("input_indices",l,`max(0, min(height, ${i[l]} - 1))`)};
2458      ${t.indicesSet("input_indices",u,`max(0, min(width, ${i[u]} - 1))`)};
2459      ${a8(t,d,s,3)}
2460      return ${t.getByIndices("input_indices")};
2461    }
2462
2463    fn trilinearInterpolation(output_indices: ${r.type.indices}) -> ${c} {
2464      var originalIndices = calculateOriginalIndicesFromOutputIndices(output_indices);
2465      var depth:${c} = originalIndices[${o}];
2466      var height:${c} = originalIndices[${l}];
2467      var width:${c} = originalIndices[${u}];
2468      ${a?`if (depth < 0 || depth > (${i[o]} - 1) || height < 0 || height > (${i[l]} - 1) || width < 0 || (width > ${i[u]} - 1)) {
2469      return ${n};
2470        }`:""};
2471
2472    depth = max(0, min(depth, ${i[o]} - 1));
2473      height = max(0, min(height, ${i[l]} - 1));
2474      width = max(0, min(width, ${i[u]} - 1));
2475      var depth1: u32 = u32(depth);
2476      var height1: u32 = u32(height);
2477      var width1: u32 = u32(width);
2478      var depth2: u32 = u32(depth + 1);
2479      var height2: u32 = u32(height + 1);
2480      var width2: u32 = u32(width + 1);
2481      var channel: u32 = ${i.length>3?`u32(originalIndices[${d}])`:"0"};
2482      var batch: u32 =  ${i.length>3?`u32(originalIndices[${s}])`:"0"};
2483
2484      var x111: ${c} = getInputValue(batch, channel, depth1, height1, width1);
2485      var x112: ${c} = getInputValue(batch, channel, depth1, height1, width2);
2486      var x121: ${c} = getInputValue(batch, channel, depth1, height2, width1);
2487      var x122: ${c} = getInputValue(batch, channel, depth1, height2, width2);
2488      var x211: ${c} = getInputValue(batch, channel, depth2, height1, width1);
2489      var x212: ${c} = getInputValue(batch, channel, depth2, height1, width2);
2490      var x221: ${c} = getInputValue(batch, channel, depth2, height2, width1);
2491      var x222: ${c} = getInputValue(batch, channel, depth2, height2, width2);
2492      var dx1: ${c} = abs(depth - ${c}(depth1));
2493      var dx2: ${c} = abs(${c}(depth2) - depth);
2494      var dy1: ${c} = abs(height - ${c}(height1));
2495      var dy2: ${c} = abs(${c}(height2) - height);
2496      var dz1: ${c} = abs(width - ${c}(width1));
2497      var dz2: ${c} = abs(${c}(width2) - width);
2498      if (depth1 == depth2) {
2499        dx1 = 0.5;
2500        dx2 = 0.5;
2501      }
2502      if (height1 == height2) {
2503        dy1 = 0.5;
2504        dy2 = 0.5;
2505      }
2506      if (width1 == width2) {
2507        dz1 = 0.5;
2508        dz2 = 0.5;
2509      }
2510      return (x111 * dx2 * dy2 * dz2 + x112 * dx2 * dy2 * dz1 + x121 * dx2 * dy1 *dz2 + x122 * dx2 * dy1 * dz1 +
2511              x211 * dx1 * dy2 * dz2 + x212 * dx1 * dy2 * dz1 + x221 * dx1 * dy1 *dz2 + x222 * dx1 * dy1 * dz1);
2512    }`})(h,c,o,m,g)}`;throw Error("Linear mode only supports input dims 2, 3, 4 and 5 are supported in linear mode.")})()};
2513            `;case"cubic":return`
2514            ${(()=>{if(2===o.length||4===o.length)return`${((t,r,i,a,n,s,o,l,u,d)=>{let[c,h]=2===i.length?[0,1]:[2,3],f=t.type.value,p=o=>{let h=o===c?"row":"col";return`
2515      fn ${h}CubicInterpolation(input_indices: ${t.type.indices}, output_indices: ${r.type.indices}) -> ${f} {
2516        var output_index = ${r.indicesGet("output_indices",o)};
2517        var originalIdx: ${f} = getOriginalCoordinateFromResizedCoordinate(output_index, ${n[o]},
2518        ${a[o]}, ${i[o]}, ${s[o]}, ${s[o]} + ${i.length});
2519        var fractOriginalIdx: ${f} = originalIdx - floor(originalIdx);
2520        var coefs = getCubicInterpolationCoefs(fractOriginalIdx);
2521
2522        if (${l} && (originalIdx < 0 || originalIdx > (${i[o]} - 1))) {
2523          return ${u};
2524        }
2525        var data: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0);
2526        for (var i: i32 = -1; i < 3; i++) {
2527          var ${h}: ${f} = originalIdx + ${f}(i);
2528          if (${h} < 0 || ${h} >= ${i[o]}) {
2529            ${d?`coefs[i + 1] = 0.0;
2530                        continue;`:l?`return ${u};`:`${h} = max(0, min(${h}, ${i[o]} - 1));`};
2531          }
2532        var input_indices_copy: ${t.type.indices} = input_indices;
2533          ${t.indicesSet("input_indices_copy",o,`u32(${h})`)};
2534          data[i + 1] = ${o===c?t.getByIndices("input_indices_copy"):"rowCubicInterpolation(input_indices_copy, output_indices)"};
2535        }
2536        return cubicInterpolation1D(data, coefs);
2537      }`};return`
2538    ${p(c)};
2539    ${p(h)};
2540  fn getCubicInterpolationCoefs(s: ${f}) -> array<${f}, 4> {
2541    var absS = abs(s);
2542    var coeffs: array<${f}, 4> = array<${f}, 4>(0.0, 0.0, 0.0, 0.0);
2543    var oneMinusAbsS: ${f} = 1.0 - absS;
2544    var twoMinusAbsS: ${f} = 2.0 - absS;
2545    var onePlusAbsS: ${f} = 1.0 + absS;
2546    coeffs[0] = ((${o}
2546 * onePlusAbsS - 5 * ${o}) * onePlusAbsS + 8 * ${o}) * onePlusAbsS - 4 * ${o};
2547    coeffs[1] = ((${o} + 2) * absS - (${o} + 3)) * absS * absS + 1;
2548    coeffs[2] = ((${o} + 2) * oneMinusAbsS - (${o} + 3)) * oneMinusAbsS * oneMinusAbsS + 1;
2549    coeffs[3] = ((${o} * twoMinusAbsS - 5 * ${o}) * twoMinusAbsS + 8 * ${o}) * twoMinusAbsS - 4 * ${o};
2550    return coeffs;
2551  }
2552
2553  fn cubicInterpolation1D(x: array<${f}, 4>, coefs: array<${f}, 4>) -> ${f} {
2554    var coefsSum: ${f} = coefs[0] + coefs[1] + coefs[2] + coefs[3];
2555    return (x[0] * coefs[0] + x[1] * coefs[1]+ x[2] * coefs[2]+ x[3] * coefs[3]) / coefsSum;
2556  }
2557
2558  fn bicubicInterpolation(output_indices: ${r.type.indices}) -> ${f} {
2559    var input_indices: ${t.type.indices} = output_indices;
2560    return colCubicInterpolation(input_indices, output_indices);
2561  }
2562    `})(h,c,o,u,d,l,r.cubicCoeffA,m,r.extrapolationValue,r.excludeOutside)}`;throw Error("Cubic mode only supports input dims 2 and 4 are supported in linear mode.")})()};
2563            `;default:throw Error("Invalid resize mode")}})()};
2564      `}
2565      ${t.registerUniform("output_size","u32").registerUniform("scales","f32",d.length).registerUniform("roi","f32",l.length).declareVariables(h,c)}
2566      ${t.mainStart()}
2567        ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2568        ${p?"output[global_idx] = input[global_idx];":`
2569        let output_indices = ${c.offsetToIndices("global_idx")};
2570        var input_indices: ${h.type.indices};
2571        ${(()=>{switch(r.mode){case"nearest":return`input_indices = calculateInputIndicesFromOutputIndices(output_indices);
2572                if (checkInputIndices(input_indices)) {
2573                  output[global_idx] = ${h.getByIndices("input_indices")};
2574                } else {
2575                  output[global_idx] = ${r.extrapolationValue};
2576                }`;case"linear":return`output[global_idx] = ${2===o.length||4===o.length?"bilinearInterpolation":"trilinearInterpolation"}(output_indices);`;case"cubic":return"output[global_idx] = bicubicInterpolation(output_indices);";default:throw Error(`Unsupported resize mode: ${r.mode}`)}})()};
2577`}
2578      }`,getRunData:()=>({outputs:[{dims:u,dataType:t.dataType}],dispatchGroup:{x:Math.ceil(f/64)},programUniforms:[{type:12,data:f},{type:1,data:d},{type:1,data:l},...tT(o,u)]})}})(t.inputs[0],r,s,i,a,n),{inputs:[0]})},a6=t=>{let r=t.antialias,i=t.axes,a=t.coordinateTransformMode,n=t.cubicCoeffA,s=0!==t.excludeOutside,o=t.extrapolationValue,l=t.keepAspectRatioPolicy,u=t.mode,d=""===t.nearestMode?"simple":t.nearestMode;return t$({antialias:r,axes:i,coordinateTransformMode:a,cubicCoeffA:n,excludeOutside:s,extrapolationValue:o,keepAspectRatioPolicy:l,mode:u,nearestMode:d})}}),sd=q(()=>{ng(),nv(),nC(),a5=(t,r)=>{(t=>{if(!t||t.length<3)throw Error("layerNorm requires at least 3 inputs.");let r=t[0],i=t[1],a=t[2];if(r.dataType!==i.dataType||r.dataType!==a.dataType)throw Error("All inputs must have the same data type");if(3!==r.dims.length&&2!==r.dims.length)throw Error("Input must be 2D or 3D");if(3!==i.dims.length&&2!==i.dims.length)throw Error("Skip must be 2D or 3D");let n=r.dims[r.dims.length-1],s=r.dims[r.dims.length-2];if(i.dims[i.dims.length-1]!==n)throw Error("Skip must have the same hidden size as input");if(i.dims[i.dims.length-2]!==s)throw Error("Skip must have the same sequence length as input");if(1!==a.dims.length)throw Error("Gamma must be 1D");if(a.dims[a.dims.length-1]!==n)throw Error("Gamma must have the same hidden size as input");if(t.length>3){let r=t[3];if(1!==r.dims.length)throw Error("Beta must be 1D");if(r.dims[r.dims.length-1]!==n)throw Error("Beta must have the same hidden size as input")}if(t.length>4){let r=t[4];if(1!==r.dims.length)throw Error("Bias must be 1D");if(r.dims[r.dims.length-1]!==n)throw Error("Bias must have the same hidden size as input")}})(t.inputs);let i=[0];t.outputCount>1&&i.push(-3),t.outputCount>2&&i.push(-3),t.outputCount>3&&i.push(3),t.compute(((t,r,i,a)=>{let n=r.simplified,s=t[0].dims,o=e8.size(s),l=s.slice(-1)[0],u=a?s.slice(0,-1).concat(1):[],d=!n&&t.length>3,c=t.length>4,h=a&&i>1,f=a&&i>2,p=i>3,m=tI(l),g=[{type:12,data:o},{type:12,data:m},{type:12,data:l},{type:1,data:r.epsilon}],b=[{dims:s,dataType:t[0].dataType}];return i>1&&b.push({dims:u,dataType:1}),i>2&&b.push({dims:u,dataType:1}),i>3&&b.push({dims:s,dataType:t[0].dataType}),{name:"SkipLayerNormalization",shaderCache:{hint:`${m};${h};${f};${p}`,inputDependencies:t.map((t,r)=>"type")},getShaderSource:r=>{let i=[tR("x",t[0].dataType,t[0].dims,m),tR("skip",t[1].dataType,t[1].dims,m),tR("gamma",t[2].dataType,t[2].dims,m)];d&&i.push(tR("beta",t[3].dataType,t[3].dims,m)),c&&i.push(tR("bias",t[4].dataType,t[4].dims,m)),i.push(tj("output",t[0].dataType,s,m)),h&&i.push(tj("mean_output",1,u)),f&&i.push(tj("inv_std_output",1,u)),p&&i.push(tj("input_skip_bias_sum",t[0].dataType,s,m));let a=tC(t[0].dataType),o=tC(1,m);return`
2579
2580      ${r.registerUniforms([{name:"output_size",type:"u32"},{name:"components",type:"u32"},{name:"hidden_size",type:"u32"},{name:"epsilon",type:"f32"}]).declareVariables(...i)}
2581      var<workgroup> sum_shared : array<${o}, 64>;
2582      var<workgroup> sum_squared_shared : array<${o}, 64>;
2583
2584      ${r.mainStart([64,1,1])}
2585        let ix = local_id.x;
2586        let iy = global_id.x / 64;
2587
2588        let hidden_size_vectorized: u32 = uniforms.hidden_size / uniforms.components;
2589        var stride = hidden_size_vectorized / 64;
2590        let offset = ix * stride + iy * hidden_size_vectorized;
2591        let offset1d = stride * ix;
2592        if (ix == 63) {
2593          stride = hidden_size_vectorized - stride * ix;
2594        }
2595        for (var i: u32 = 0; i < stride; i++) {
2596          let skip_value = skip[offset + i];
2597          let bias_value = ${c?"bias[offset1d + i]":a+"(0.0)"};
2598          let input_value = x[offset + i];
2599          let value = input_value + skip_value + bias_value;
2600          ${p?"input_skip_bias_sum[offset + i] = value;":""}
2601          output[offset + i] = value;
2602          let f32_value = ${tN(a,m,"value")};
2603          sum_shared[ix] += f32_value;
2604          sum_squared_shared[ix] += f32_value * f32_value;
2605        }
2606        workgroupBarrier();
2607
2608        var reduce_size : u32 = 64;
2609        for (var curr_size = reduce_size >> 1;  curr_size > 0; curr_size = reduce_size >> 1) {
2610          reduce_size = curr_size + (reduce_size & 1);
2611          if (ix < curr_size) {
2612            sum_shared[ix] += sum_shared[ix + reduce_size];
2613            sum_squared_shared[ix] += sum_squared_shared[ix + reduce_size];
2614          }
2615          workgroupBarrier();
2616        }
2617
2618        let sum = sum_shared[0];
2619        let square_sum = sum_squared_shared[0];
2620        let mean = ${tO("sum",m)} / f32(uniforms.hidden_size);
2621        let inv_std_dev = inverseSqrt(${tO("square_sum",m)} / f32(uniforms.hidden_size) ${n?"":"- mean * mean"} + uniforms.epsilon);
2622        ${h?"mean_output[global_idx] = mean;":""}
2623        ${f?"inv_std_output[global_idx] = inv_std_dev;":""}
2624
2625        for (var i: u32 = 0; i < stride; i++) {
2626          output[offset + i] = (output[offset + i] ${n?"":`- ${a}(mean)`}) *
2627            ${a}(inv_std_dev) * gamma[offset1d + i]
2628            ${d?"+ beta[offset1d + i]":""};
2629        }
2630      }`},getRunData:()=>({outputs:b,dispatchGroup:{x:Math.ceil(o/l)},programUniforms:g})}})(t.inputs,r,t.outputCount,!1),{outputs:i})}}),sc=q(()=>{ng(),nv(),nk(),nC(),a9=(t,r)=>{let i=[];if(t.length>r)if(7===t[r].dataType)t[r].getBigInt64Array().forEach(t=>i.push(Number(t)));else if(6===t[r].dataType)t[r].getInt32Array().forEach(t=>i.push(Number(t)));else throw Error(`Input ${r} must be an array of int32 or int64`);return i},ne=(t,r,i,a,n)=>{let s=t;return t<0&&(s+=i[a[r]]),n[r]<0?Math.max(0,Math.min(s,i[a[r]]-1)):Math.max(0,Math.min(s,i[a[r]]))},nt=(t,r)=>{((t,r)=>{if(!t||t.length<1)throw Error("too few inputs");if(0!==r.axes.length){if(r.axes.length!==r.starts.length||r.axes.length!==r.ends.length)throw Error("axes, starts and ends must have the same length")}else if(r.starts.length!==r.ends.length)throw Error("starts and ends must have the same length");t.slice(1).forEach((r,i)=>{if(6!==t[i+1].dataType&&7!==t[i+1].dataType)throw Error(`Input ${i} must be an array of int32 or int64`)})})(t.inputs,r);let i=((t,r)=>{if(!(t.length>1))return r;{let r=a9(t,1),i=a9(t,2),a=a9(t,3);return 0===a.length&&(a=[...Array(t[0].dims.length).keys()]),t$({starts:r,ends:i,axes:a})}})(t.inputs,r);t.compute(((t,r)=>{let i=t[0].dims,a=e8.size(i),n=r.axes.length>0?e8.normalizeAxes(r.axes,i.length):[...Array(i.length).keys()],s=a9(t,4);s.forEach(t=>0!==t||(()=>{throw Error("step cannot be 0")})),0===s.length&&(s=Array(n.length).fill(1));let o=r.starts.map((t,r)=>ne(t,r,i,n,s)),l=r.ends.map((t,r)=>ne(t,r,i,n,s));if(n.length!==o.length||n.length!==l.length)throw Error("start, ends and axes should have the same number of elements");if(n.length!==i.length)for(let t=0;t<i.length;++t)n.includes(t)||(o.splice(t,0,0),l.splice(t,0,i[t]),s.splice(t,0,1));let u=s.map(t=>Math.sign(t));s.forEach((t,r,i)=>{if(t<0){let a=(l[r]-o[r])/t,n=o[r],u=n+a*s[r];o[r]=u,l[r]=n,i[r]=-t}});let d=i.slice(0);n.forEach((t,r)=>{d[t]=Math.ceil((l[t]-o[t])/s[t])});let c={dims:d,dataType:t[0].dataType},h=tj("output",t[0].dataType,d.length),f=tR("input",t[0].dataType,t[0].dims.length),p=e8.size(d),m=[{name:"outputSize",type:"u32"},{name:"starts",type:"u32",length:o.length},{name:"signs",type:"i32",length:u.length},{name:"steps",type:"u32",length:s.length}],g=[{type:12,data:p},{type:12,data:o},{type:6,data:u},{type:12,data:s},...tT(t[0].dims,d)];return{name:"Slice",shaderCache:{hint:`${u.length}_${o.length}_${s.length}`,inputDependencies:["rank"]},getShaderSource:t=>`
2631      ${t.registerUniforms(m).declareVariables(f,h)}
2632        ${((t,r,i)=>`fn calculateInputIndices(output_indices: ${r.type.indices}) -> ${t.type.indices} {
2633          var input_indices: ${t.type.indices};
2634          var carry = 0u;
2635          for (var i = ${i.length-1}; i >= 0; i--) {
2636            let input_shape_i = ${tM("uniforms.input_shape","i",i.length)};
2637            let steps_i = ${tM("uniforms.steps","i",i.length)};
2638            let signs_i = ${tM("uniforms.signs","i",i.length)};
2639            let starts_i = ${tM("uniforms.starts","i",i.length)};
2640            var output_index = ${r.indicesGet("output_indices","i")};
2641            var input_index = output_index * steps_i + starts_i + carry;
2642            carry = input_index / input_shape_i;
2643            input_index = input_index % input_shape_i;
2644            if (signs_i < 0) {
2645              input_index = input_shape_i - input_index - 1u + starts_i;
2646            }
2647            ${t.indicesSet("input_indices","i","input_index")};
2648          }
2649          return input_indices;
2650      }`)(f,h,i)}
2651        ${t.mainStart()}
2652          ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.outputSize")}
2653          let output_indices = ${h.offsetToIndices("global_idx")};
2654          let input_indices = calculateInputIndices(output_indices);
2655          ${h.setByOffset("global_idx",f.getByIndices("input_indices"))}
2656      }`,getRunData:()=>({outputs:[c],dispatchGroup:{x:Math.ceil(a/64)},programUniforms:g})}})(t.inputs,i),{inputs:[0]})},nr=t=>{let r=t.starts,i=t.ends,a=t.axes;return t$({starts:r,ends:i,axes:a})}}),sh=q(()=>{ng(),nv(),nk(),nE(),nC(),ni=(t,r)=>{(t=>{if(!t||1!==t.length)throw Error("Softmax op requires 1 input.")})(t.inputs),((t,r)=>{let i=t.inputs[0],a=i.dims,n=e8.size(a),s=a.length,o=e8.normalizeAxis(r.axis,s),l=o<a.length-1,u,d=[];l?((d=Array.from({length:s},(t,r)=>r))[o]=s-1,d[s-1]=o,u=t.compute(tF(i,d),{inputs:[i],outputs:[-1]})[0]):u=i;let c=u.dims,h=c[s-1],f=n/h,p=tI(h),m=h/p,g=64;1===f&&(g=256);let b=tR("x",u.dataType,u.dims,p),y=tj("result",u.dataType,u.dims,p),v=b.type.value,_="f32"===tC(u.dataType)?`var threadMax = ${v}(-3.402823e+38f);`:`var threadMax = ${v}(-65504.0h);`,w=t.compute({name:"Softmax",shaderCache:{hint:`${p};${g}`,inputDependencies:["type"]},getRunData:()=>({outputs:[{dims:c,dataType:u.dataType}],dispatchGroup:{x:f},programUniforms:[{type:6,data:m}]}),getShaderSource:t=>`
2657      var<workgroup> rowMaxShared : ${v};
2658      var<workgroup> rowSumShared : ${v};
2659      var<workgroup> threadShared : array<${v}, ${g}>;
2660
2661      fn getValue(row: i32, col: i32, row_stride: i32) -> ${v} {
2662        let index = row * row_stride + col;
2663        return x[index];
2664      }
2665
2666      fn setValue(row: i32, col: i32, row_stride: i32, value: ${v}) {
2667        let index = row * row_stride + col;
2668        result[index] = value;
2669      }
2670      ${t.registerUniform("packedCols","i32").declareVariables(b,y)}
2671      ${t.mainStart(g)}
2672        let gindex = i32(global_idx);
2673        let lindex = i32(local_idx);
2674        const wg = ${g};
2675        let row = gindex / wg;
2676        let cols = uniforms.packedCols;
2677        let row_stride : i32 = uniforms.packedCols;
2678
2679        // find the rows max
2680        ${_}
2681        for (var col = lindex; col < cols; col += wg) {
2682          let value = getValue(row, col, row_stride);
2683          threadMax = max(threadMax, value);
2684        }
2685        if (lindex < cols) {
2686          threadShared[lindex] = threadMax;
2687        }
2688        workgroupBarrier();
2689
2690        var reduceSize = min(cols, wg);
2691        for (var currSize = reduceSize >> 1;  currSize > 0; currSize = reduceSize >> 1) {
2692          reduceSize = currSize + (reduceSize & 1);
2693          if (lindex < currSize) {
2694            threadShared[lindex] = max(threadShared[lindex], threadShared[lindex + reduceSize]);
2695          }
2696          workgroupBarrier();
2697        }
2698        if (lindex == 0) {
2699          rowMaxShared = ${v}(${((t,r)=>4===r?`max(max(${t}.x, ${t}.y), max(${t}.z, ${t}.w))`:2===r?`max(${t}.x, ${t}.y)`:3===r?`max(max(${t}.x, ${t}.y), ${t}.z)`:t)("threadShared[0]",p)});
2700        }
2701        workgroupBarrier();
2702
2703        // find the rows sum
2704        var threadSum = ${v}(0.0);
2705        for (var col = lindex; col < cols; col += wg) {
2706          let subExp = exp(getValue(row, col, row_stride) - rowMaxShared);
2707          threadSum += subExp;
2708        }
2709        threadShared[lindex] = threadSum;
2710        workgroupBarrier();
2711
2712        for (var currSize = wg >> 1;  currSize > 0; currSize = currSize >> 1) {
2713          if (lindex < currSize) {
2714            threadShared[lindex] = threadShared[lindex] + threadShared[lindex + currSize];
2715          }
2716          workgroupBarrier();
2717        }
2718        if (lindex == 0) {
2719          rowSumShared = ${v}(${tO("threadShared[0]",p)});
2720        }
2721        workgroupBarrier();
2722
2723        // calculate final value for each element in the row
2724        for (var col = lindex; col < cols; col += wg) {
2725          var value = exp(getValue(row, col, row_stride) - rowMaxShared) / rowSumShared;
2726          // max operation protects against NaN since all values should be >=0
2727          value = max(value, ${v}(0.0));
2728          setValue(row, col, row_stride, value);
2729        }
2730      }`},{inputs:[u],outputs:[l?-1:0]})[0];l&&t.compute(tF(w,d),{inputs:[w]})})(t,r)},na=t=>t$({axis:t.axis})}),sf=q(()=>{ng(),nv(),nC(),nn=t=>Array.from(t.getBigInt64Array(),Number),ns=t=>{(t=>{if(!t||2!==t.length)throw Error("Tile requires 2 inputs.");if(1!==t[0].dataType&&10!==t[0].dataType&&6!==t[0].dataType&&12!==t[0].dataType)throw Error("Tile only support float, float16, int32, and uint32 data types");if(7!==t[1].dataType)throw Error("Tile `repeats` input should be of int64 data type");if(1!==t[1].dims.length)throw Error("Tile `repeats` input should be 1-D");if(nn(t[1]).length!==t[0].dims.length)throw Error("Tile `repeats` input should have same number of elements as rank of input data tensor")})(t.inputs),t.compute(((t,r)=>{let i=t[0].dims,a=r??nn(t[1]),n=((t,r)=>{let i=[];for(let a=0;a<t.length;++a)i.push(t[a]*r[a]);return i})(i,a),s=e8.size(n),o=t[0].dataType,l=tR("input",o,i.length),u=tj("output",o,n.length);return{name:"Tile",shaderCache:{hint:`${a}`,inputDependencies:["rank"]},getRunData:()=>({outputs:[{dims:n,dataType:t[0].dataType}],dispatchGroup:{x:Math.ceil(s/64)},programUniforms:[{type:12,data:s},...tT(t[0].dims,n)]}),getShaderSource:t=>`
2731      const inputShape = ${l.indices(...i)};
2732      ${t.registerUniform("output_size","u32").declareVariables(l,u)}
2733      ${t.mainStart()}
2734      ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.output_size")}
2735      let output_indices = ${u.offsetToIndices("global_idx")};
2736      var input_indices: ${l.type.indices};
2737      for (var i = 0; i < ${i.length}; i++) {
2738        let input_dim_i = ${l.indicesGet("uniforms.input_shape","i")};
2739        let input_dim_value = ${u.indicesGet("output_indices","i")}  % input_dim_i;
2740
2741        ${l.indicesSet("input_indices","i","input_dim_value")}
2742      }
2743      ${u.setByOffset("global_idx",l.getByIndices("input_indices"))}
2744    }`}})(t.inputs),{inputs:[0]})}}),sp=q(()=>{ng(),nv(),nC(),no=t=>{t.compute((t=>{let r=t[1].dims,i=t[2].dims,a=t[0].dims,n=t[1].dataType,s=!(e8.areEqual(r,i)&&e8.areEqual(i,a)),o=r,l=e8.size(r);
2744if(s){let t=e4.calcShape(e4.calcShape(r,i,!1),a,!1);if(!t)throw Error("Can't perform where op on the given tensors");o=t,l=e8.size(o)}let u=Math.ceil(l/4);return{name:"Where",shaderCache:{inputDependencies:["rank","rank","rank"]},getShaderSource:r=>((t,r,i,a,n)=>{let s=tj("output_data",n,i.length,4),o=tR("a_data",r[1].dataType,r[1].dims.length,4),l=tR("b_data",r[2].dataType,r[2].dims.length,4),u=tR("c_data",r[0].dataType,r[0].dims.length,4),d,c=(t,r,i)=>`select(${r}, ${t}, ${i})`;if(a){let t=(t,r,i="")=>{let a=`a_data[index_a${r}][component_a${r}]`,n=`b_data[index_b${r}][component_b${r}]`,d=`bool(c_data[index_c${r}] & (0xffu << (component_c${r} * 8)))`;return`
2745            let output_indices${r} = ${s.offsetToIndices(`global_idx * 4u + ${r}u`)};
2746            let offset_a${r} = ${o.broadcastedIndicesToOffset(`output_indices${r}`,s)};
2747            let offset_b${r} = ${l.broadcastedIndicesToOffset(`output_indices${r}`,s)};
2748            let offset_c${r} = ${u.broadcastedIndicesToOffset(`output_indices${r}`,s)};
2749            let index_a${r} = offset_a${r} / 4u;
2750            let index_b${r} = offset_b${r} / 4u;
2751            let index_c${r} = offset_c${r} / 4u;
2752            let component_a${r} = offset_a${r} % 4u;
2753            let component_b${r} = offset_b${r} % 4u;
2754            let component_c${r} = offset_c${r} % 4u;
2755            ${t}[${r}] = ${i}(${c(a,n,d)});
2756          `};d=9===n?`
2757            var data = vec4<u32>(0);
2758            ${t("data",0,"u32")}
2759            ${t("data",1,"u32")}
2760            ${t("data",2,"u32")}
2761            ${t("data",3,"u32")}
2762            output_data[global_idx] = dot(vec4<u32>(0x1, 0x100, 0x10000, 0x1000000), vec4<u32>(data));`:`
2763            ${t("output_data[global_idx]",0)}
2764            ${t("output_data[global_idx]",1)}
2765            ${t("output_data[global_idx]",2)}
2766            ${t("output_data[global_idx]",3)}
2767          `}else d=s.setByOffset("global_idx",c(o.getByOffset("global_idx"),l.getByOffset("global_idx"),u.getByOffset("global_idx")));return`
2768        ${t.registerUniform("vec_size","u32").declareVariables(u,o,l,s)}
2769        ${t.mainStart()}
2770        ${t.guardAgainstOutOfBoundsWorkgroupSizes("uniforms.vec_size")}
2771        ${d}
2772      }`})(r,t,o,s,n),getRunData:()=>({outputs:[{dims:o,dataType:n}],dispatchGroup:{x:Math.ceil(l/64/4)},programUniforms:[{type:12,data:u},...tT(a,r,i,o)]})}})(t.inputs))}}),sm=q(()=>{nA(),nN(),nO(),nM(),nR(),nj(),nz(),nH(),nK(),nY(),nQ(),nX(),nZ(),nJ(),n1(),n0(),n2(),n3(),n4(),n8(),n9(),se(),st(),sr(),si(),n7(),sa(),sn(),ss(),so(),sl(),nI(),su(),n5(),sd(),sc(),sh(),n6(),sf(),nE(),nP(),sp(),nl=new Map([["Abs",[rx]],["Acos",[r$]],["Acosh",[rS]],["Add",[it]],["ArgMax",[rp,rm]],["ArgMin",[rf,rm]],["Asin",[rk]],["Asinh",[rC]],["Atan",[rE]],["Atanh",[rT]],["Attention",[ry]],["AveragePool",[aV,aq]],["BatchNormalization",[rv]],["BiasAdd",[r_]],["BiasSplitGelu",[r9]],["Cast",[rA,rI]],["Ceil",[rO]],["Clip",[rN]],["Concat",[ih,ip]],["Conv",[iL,iD]],["ConvTranspose",[iG,iW]],["Cos",[rM]],["Cosh",[rP]],["CumSum",[iK,iY]],["DepthToSpace",[iQ,iX]],["DequantizeLinear",[aJ,a1]],["Div",[ir]],["Einsum",[i4,i8]],["Elu",[rj,rR]],["Equal",[ii]],["Erf",[rD]],["Exp",[rB]],["Expand",[i6]],["FastGelu",[i5]],["Floor",[rL]],["FusedConv",[iL,iD]],["Gather",[ae,i9]],["GatherElements",[as,an]],["GatherBlockQuantized",[ai,aa]],["GatherND",[at,ar]],["Gelu",[rU]],["Gemm",[al,ao]],["GlobalAveragePool",[aG,aH]],["GlobalMaxPool",[aZ,aX]],["Greater",[il]],["GreaterOrEqual",[id]],["GridSample",[ap,am]],["GroupQueryAttention",[aT]],["HardSigmoid",[rY,rK]],["InstanceNormalization",[aA]],["LayerNormalization",[aN]],["LeakyRelu",[rF,rR]],["Less",[iu]],["LessOrEqual",[ic]],["Log",[r7]],["MatMul",[aO]],["MatMulNBits",[aM,aP]],["MaxPool",[aY,aQ]],["Mul",[ia]],["MultiHeadAttention",[a_,ab]],["Neg",[rV]],["Not",[rq]],["Pad",[aR]],["Pow",[is]],["QuickGelu",[r5,rR]],["Range",[a0]],["Reciprocal",[rW]],["ReduceMin",[ro]],["ReduceMean",[rr]],["ReduceMax",[rs]],["ReduceSum",[ru]],["ReduceProd",[rl]],["ReduceL1",[ri]],["ReduceL2",[ra]],["ReduceLogSum",[rc]],["ReduceLogSumExp",[rn]],["ReduceSumSquare",[rd]],["Relu",[rH]],["Resize",[a7,a6]],["RotaryEmbedding",[ak]],["ScatterND",[a3,a2]],["Sigmoid",[rG]],["Sin",[rQ]],["Sinh",[rX]],["Slice",[nt,nr]],["Ski
2772pLayerNormalization",[a5]],["Split",[ax,a$]],["Sqrt",[rZ]],["Softmax",[ni,na]],["Sub",[io]],["Tan",[rJ]],["Tanh",[r0]],["ThresholdedRelu",[r8,rR]],["Tile",[ns]],["Transpose",[tq,tV]],["Where",[no]]])}),sg=q(()=>{ed(),ny(),nC(),nu=class{constructor(t){this.backend=t,this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,r){this.repo.set(t,r)}run(t,r,i,a,n){N(t.programInfo.name);let s=this.backend.device,o=this.backend.getComputePassEncoder();this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber);let l=[];for(let t of r)l.push({binding:l.length,resource:{buffer:t.buffer}});for(let t of i)l.push({binding:l.length,resource:{buffer:t.buffer}});n&&l.push({binding:l.length,resource:n});let u=s.createBindGroup({layout:t.computePipeline.getBindGroupLayout(0),entries:l,label:t.programInfo.name});if("capturing"===this.backend.sessionStatus){let r={kernelId:this.backend.currentKernelId,computePipeline:t.computePipeline,bindGroup:u,dispatchGroup:a};this.backend.capturedCommandList.get(this.backend.currentSessionId).push(r)}o.setPipeline(t.computePipeline),o.setBindGroup(0,u),o.dispatchWorkgroups(...a),this.backend.writeTimestamp(2*this.backend.pendingDispatchNumber+1),this.backend.pendingDispatchNumber++,(this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber||"at-passes"===this.backend.queryType)&&this.backend.endComputePass(),this.backend.pendingDispatchNumber>=this.backend.maxDispatchNumber&&this.backend.flush(),O(t.programInfo.name)}dispose(){}build(t,r){N(t.name);let i=this.backend.device,a=[];[{feature:"shader-f16",extension:"f16"},{feature:"subgroups",extension:"subgroups"}].forEach(t=>{i.features.has(t.feature)&&a.push(`enable ${t.extension};`)});let n=tL(r,this.backend.device.limits),s=t.getShaderSource(n),o=`${a.join(`
2773`)}
2774${n.additionalImplementations}
2775${s}`,l=i.createShaderModule({code:o,label:t.name});e2("verbose",()=>`[WebGPU] ${t.name} shader code: ${o}`);let u=i.createComputePipeline({compute:{module:l,entryPoint:"main"},layout:"auto",label:t.name});return O(t.name),{programInfo:t,computePipeline:u,uniformVariablesInfo:n.variablesInfo}}normalizeDispatchGroupSize(t){let r="number"==typeof t?t:t.x,i="number"==typeof t?1:t.y||1,a="number"==typeof t?1:t.z||1,n=this.backend.device.limits.maxComputeWorkgroupsPerDimension;if(r<=n&&i<=n&&a<=n)return[r,i,a];let s=r*i*a,o=Math.ceil(Math.sqrt(s));if(!(o>n))return[o,o,1];if((o=Math.ceil(Math.cbrt(s)))>n)throw Error("Total dispatch size exceeds WebGPU maximum.");return[o,o,o]}}}),sb={};V(sb,{WebGpuBackend:()=>sv});var sy,sv,s_=q(()=>{ed(),ng(),ny(),n_(),nS(),sm(),sg(),sy=class{constructor(t){t&&(this.architecture=t.architecture,this.vendor=t.vendor)}isArchitecture(t){return this.architecture===t}isVendor(t){return this.vendor===t}},sv=class{constructor(){this.currentSessionId=null,this.currentKernelId=null,this.commandEncoder=null,this.computePassEncoder=null,this.maxDispatchNumber=16,this.pendingDispatchNumber=0,this.pendingKernels=[],this.pendingQueries=new Map,this.sessionStatus="default",this.capturedCommandList=new Map,this.capturedPendingKernels=new Map,this.sessionExternalDataMapping=new Map}get currentKernelCustomData(){if(null===this.currentKernelId)throw Error("currentKernelCustomData(): currentKernelId is null. (should not happen)");let t=this.kernelCustomData.get(this.currentKernelId);return t||(t={},this.kernelCustomData.set(this.currentKernelId,t)),t}async initialize(t,r){this.env=t;let i=[],a={requiredLimits:{maxComputeWorkgroupStorageSize:r.limits.maxComputeWorkgroupStorageSize,maxComputeWorkgroupsPerDimension:r.limits.maxComputeWorkgroupsPerDimension,maxStorageBufferBindingSize:r.limits.maxStorageBufferBindingSize,maxBufferSize:r.limits.maxBufferSize,maxComputeInvocationsPerWorkgroup:r.limits.maxComputeInvocationsPerWorkgroup,maxComputeWorkgroupSizeX:r.limits.maxComputeWorkgroupSizeX,maxComputeWorkgroupSizeY:r.limits.maxComputeWorkgroupSizeY,maxComputeWorkgroupSizeZ:r.limits.maxComputeWorkgroupSizeZ},requiredFeatures:i},n=t=>r.features.has(t)&&i.push(t)&&!0;n("chromium-experimental-timestamp-query-inside-passes")||n("timestamp-query"),n("shader-f16"),n("subgroups"),this.device=await r.requestDevice(a),this.adapterInfo=new sy(r.info||await r.requestAdapterInfo()),this.gpuDataManager=tw(this),this.programManager=new nu(this),this.kernels=new Map,this.kernelPersistentData=new Map,this.kernelCustomData=new Map,e0(t.logLevel,!!t.debug),this.device.onuncapturederror=t=>
2775{t.error instanceof GPUValidationError&&console.error(`An uncaught WebGPU validation error was raised: ${t.error.message}`)},Object.defineProperty(this.env.webgpu,"device",{value:this.device,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.env.webgpu,"adapter",{value:r,writable:!1,enumerable:!0,configurable:!1}),this.setQueryType()}dispose(){"u">typeof this.querySet&&this.querySet.destroy(),this.gpuDataManager.dispose()}getCommandEncoder(){return this.commandEncoder||(this.commandEncoder=this.device.createCommandEncoder()),this.commandEncoder}getComputePassEncoder(){if(!this.computePassEncoder){let t=this.getCommandEncoder(),r={};"at-passes"===this.queryType&&(r.timestampWrites={querySet:this.querySet,beginningOfPassWriteIndex:2*this.pendingDispatchNumber,endOfPassWriteIndex:2*this.pendingDispatchNumber+1}),this.computePassEncoder=t.beginComputePass(r)}return this.computePassEncoder}endComputePass(){this.computePassEncoder&&(this.computePassEncoder.end(),this.computePassEncoder=null)}flush(){let t;this.commandEncoder&&(N(),this.endComputePass(),"none"!==this.queryType&&(this.commandEncoder.resolveQuerySet(this.querySet,0,2*this.pendingDispatchNumber,this.queryResolveBuffer,0),t=this.device.createBuffer({size:2*this.pendingDispatchNumber*8,usage:GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST}),this.pendingQueries.set(t,this.pendingKernels),this.pendingKernels=[],this.commandEncoder.copyBufferToBuffer(this.queryResolveBuffer,0,t,0,2*this.pendingDispatchNumber*8)),this.device.queue.submit([this.commandEncoder.finish()]),this.gpuDataManager.refreshPendingBuffers(),this.commandEncoder=null,this.pendingDispatchNumber=0,"none"!==this.queryType&&t.mapAsync(GPUMapMode.READ).then(()=>{let r=new BigUint64Array(t.getMappedRange()),i=this.pendingQueries.get(t);for(let t=0;t<r.length/2;t++){let a=i[t],n=a.kernelId,s=this.kernels.get(n),o=s.kernelType,l=s.kernelName,u=a.programName,d=a.inputTensorViews,c=a.outputTensorViews,h=r[2*t],f=r[2*t+1];typeof this.queryTimeBase>"u"&&(this.queryTimeBase=h);let p=Number(h-this.queryTimeBase),m=Number(f-this.queryTimeBase);if(!Number.isSafeInteger(p)||!Number.isSafeInteger(m))throw RangeError("incorrect timestamp range");if(this.env.webgpu.profiling?.ondata)this.env.webgpu.profiling.ondata({version:1,inputsMetadata:d.map(t=>({dims:t.dims,dataType:eV(t.dataType)})),outputsMetadata:c.map(t=>({dims:t.dims,dataType:eV(t.dataType)})),kernelId:n,kernelType:o,kernelName:l,programName:u,startTime:p,endTime:m});else{let t="";d.forEach((r,i)=>{t+=`input[${i}]: [${r.dims}] | ${eV(r.dataType)}, `});let r="";c.forEach((t,i)=>{r+=`output[${i}]: [${t.dims}] | ${eV(t.dataType)}, `}),console.log(`[profiling] kernel "${n}|${o}|${l}|${u}" ${t}${r}start time: ${p} ns, execution time: ${m-p} ns`)}I("GPU",`${u}::${h}::${f}`)}t.unmap(),this.pendingQueries.delete(t)}),O())}run(t,r,i,a,n,s){var o,l,u;let d,c;N(t.name);let h=[];for(let t=0;t<r.length;++t){let i=r[t].data;if(0===i)continue;let a=this.gpuDataManager.get(i);
2775if(!a)throw Error(`no GPU data for input: ${i}`);h.push(a)}let{outputs:f,dispatchGroup:p,programUniforms:m}=t.getRunData(r),g=0===i.length?f.map((t,r)=>r):i;if(g.length!==f.length)throw Error(`Output size ${g.length} must be equal to ${f.length}.`);let b=[],y=[];for(let t=0;t<f.length;++t){if(!Number.isInteger(g[t])||g[t]<-3||g[t]>=s)throw Error(`Invalid output index: ${g[t]}`);if(-3===g[t])continue;let r=-1===g[t],i=-2===g[t],o=r||i?n(f[t].dataType,f[t].dims):a(g[t],f[t].dataType,f[t].dims);if(b.push(o),0===o.data)continue;let l=this.gpuDataManager.get(o.data);if(!l)throw Error(`no GPU data for output: ${o.data}`);if(r&&this.temporaryData.push(l),i){let t=this.kernelPersistentData.get(this.currentKernelId);t||(t=[],this.kernelPersistentData.set(this.currentKernelId,t)),t.push(l)}y.push(l)}if(h.length!==r.length||y.length!==b.length){if(0===y.length)return O(t.name),b;throw Error(`Program ${t.name} has zero-sized tensor(s) in inputs or outputs. This is not supported now.`)}if(m){let t=0,r=[];m.forEach(i=>{let a="number"==typeof i.data?[i.data]:i.data;if(0===a.length)return;let n=10===i.type?2:4,s,o;10===i.type?(o=a.length>4?16:a.length>2?8:a.length*n,s=a.length>4?16:n*a.length):(o=a.length<=2?a.length*n:16,s=16),t=Math.ceil(t/o)*o,r.push(t);let l=10===i.type?8:4;t+=a.length>4?Math.ceil(a.length/l)*s:a.length*n});let i=new ArrayBuffer(t=16*Math.ceil(t/16));m.forEach((t,a)=>{let n=r[a],s="number"==typeof t.data?[t.data]:t.data;if(6===t.type)new Int32Array(i,n,s.length).set(s);else if(12===t.type)new Uint32Array(i,n,s.length).set(s);else if(10===t.type)new Uint16Array(i,n,s.length).set(s);else if(1===t.type)new Float32Array(i,n,s.length).set(s);else throw Error(`Unsupported uniform type: ${eV(t.type)}`)});let a=this.gpuDataManager.create(t,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);this.device.queue.writeBuffer(a.buffer,0,i,0,t),this.gpuDataManager.release(a.id),d={offset:0,size:t,buffer:a.buffer}}let v=this.programManager.normalizeDispatchGroupSize(p),_=(o=t,l=r,u=1===v[1]&&1===v[2],c=o.name,o.shaderCache?.hint&&(c+="["+o.shaderCache.hint+"]"),c+=":"+u+`:${((t,r)=>{if(r.length!==t.length)throw Error(`inputDependencies length ${r.length} is not equal to inputTensors length ${t.length}.`);let i=[];for(let a=0;a<t.length;++a){let n=t[a].dataType;switch(r[a]){case"none":i.push("");break;case"type":i.push(`${n}`);break;case"rank":{let r=t[a].dims.length;i.push(`${n};${r}`);break}case"dims":{let r=t[a].dims.join(",");i.push(`${n};${r}`);break}default:throw Error(`unsupported input dependency: ${r[a]}`)}}return i.join("|")})(l,o.shaderCache?.inputDependencies??Array(l.length).fill("dims"))}`),w=this.programManager.getArtifact(_);if(w||(w=this.programManager.build(t,v),this.programManager.setArtifact(_,w),e2("info",()=>`[artifact] key: ${_}, programName: ${t.name}`)),m&&w.uniformVariablesInfo){if(m.length!==w.uniformVariablesInfo.length)throw Error(`Uniform variables count mismatch: expect ${w.uniformVariablesInfo.length}, got ${m.length} in program "${w.programInfo.name}".`);for(let t=0;t<m.length;t++){let r=m[t],i=r.type,a="number"==typeof r.data?1:r.data.length,[n,s]=w.uniformVariablesInfo[t];if(i!==n||a!==s)throw Error(`Uniform variable ${t} mismatch: expect type ${n} with size ${s}, got type ${i} with size ${a} in program "${w.programInfo.name}".`)}}if(e2("info",()=>`[ProgramManager] run "${t.name}" (key=${_}) with ${v[0]}x${v[1]}x${v[2]}`),"none"!==this.queryType||"capturing"===this.sessionStatus){let t={kernelId:this.currentKernelId,programName:w.programInfo.name,inputTensorViews:r,outputTensorViews:b};this.pendingKernels.push(t),"capturing"===this.sessionStatus&&this.capturedPendingKernels.get(this.currentSessionId).push(t)}return this.programManager.run(w,h,y,v,d),O(t.name),b}upload(t,r){this.gpuDataManager.upload(t,r)}memcpy(t,r){this.gpuDataManager.memcpy(t,r)}async download(t,r){await this.gpuDataManager.download(t,r)}alloc(t){return this.gpuDataManager.create(t).id}free(t){return this.gpuDataManager.release(t)}createKernel(t,r,i,a){let n=nl.get(t);if(!n)throw Error(`kernel not implemented: ${t}`);let s={kernelType:t,kernelName:a,kernelEntry:n[0],attributes:[n[1],i]};this.kernels.set(r,s)}releaseKernel(t){let r=this.kernelPersistentData.get(t);
2775if(r){for(let t of r)this.gpuDataManager.release(t.id);this.kernelPersistentData.delete(t)}this.kernelCustomData.delete(t),this.kernels.delete(t)}computeKernel(t,r,i){let a=this.kernels.get(t);if(!a)throw Error(`kernel not created: ${t}`);let n=a.kernelType,s=a.kernelName,o=a.kernelEntry,l=a.attributes;if(null!==this.currentKernelId)throw Error(`kernel "[${n}] ${s}" is not allowed to be called recursively`);this.currentKernelId=t,l[0]&&(l[1]=l[0](l[1]),l[0]=void 0),e2("info",()=>`[WebGPU] Start to run kernel "[${n}] ${s}"...`);let u=this.env.debug;this.temporaryData=[];try{return u&&this.device.pushErrorScope("validation"),o(r,l[1]),0}catch(t){return i.push(Promise.resolve(`[WebGPU] Kernel "[${n}] ${s}" failed. ${t}`)),1}finally{for(let t of(u&&i.push(this.device.popErrorScope().then(t=>t?`GPU validation error for kernel "[${n}] ${s}": ${t.message}`:null)),this.temporaryData))this.gpuDataManager.release(t.id);this.temporaryData=[],this.currentKernelId=null}}registerBuffer(t,r,i,a){let n=this.sessionExternalDataMapping.get(t);n||(n=new Map,this.sessionExternalDataMapping.set(t,n));let s=n.get(r),o=this.gpuDataManager.registerExternalBuffer(i,a,s);return n.set(r,[o,i]),o}unregisterBuffers(t){let r=this.sessionExternalDataMapping.get(t);r&&(r.forEach(t=>this.gpuDataManager.unregisterExternalBuffer(t[0])),this.sessionExternalDataMapping.delete(t))}getBuffer(t){let r=this.gpuDataManager.get(t);if(!r)throw Error(`no GPU data for buffer: ${t}`);return r.buffer}createDownloader(t,r,i){return async()=>{let a=await tv(this,t,r);return te(a.buffer,i)}}writeTimestamp(t){"inside-passes"===this.queryType&&this.computePassEncoder.writeTimestamp(this.querySet,t)}setQueryType(){this.queryType="none",(this.env.webgpu.profiling?.mode==="default"||(typeof this.env.trace>"u"?this.env.wasm.trace:this.env.trace))&&(this.device.features.has("chromium-experimental-timestamp-query-inside-passes")?this.queryType="inside-passes":this.device.features.has("timestamp-query")&&(this.queryType="at-passes"),"none"!==this.queryType&&typeof this.querySet>"u"&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:2*this.maxDispatchNumber}),this.queryResolveBuffer=this.device.createBuffer({size:2*this.maxDispatchNumber*8,usage:GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE})))}captureBegin(){e2("info","captureBegin"),this.capturedCommandList.get(this.currentSessionId)||this.capturedCommandList.set(this.currentSessionId,[]),this.capturedPendingKernels.get(this.currentSessionId)||this.capturedPendingKernels.set(this.currentSessionId,[]),this.flush(),this.sessionStatus="capturing"}captureEnd(){e2("info","captureEnd"),this.flush(),this.sessionStatus="default"}replay(){e2("info","replay"),this.sessionStatus="replaying";let t=this.capturedCommandList.get(this.currentSessionId),r=this.capturedPendingKernels.get(this.currentSessionId),i=t.length;this.pendingKernels=[];for(let a=0;a<i;a++){let i=this.getComputePassEncoder(),n=t[a];this.writeTimestamp(2*this.pendingDispatchNumber),i.setPipeline(n.computePipeline),i.setBindGroup(0,n.bindGroup),i.dispatchWorkgroups(...n.dispatchGroup),this.writeTimestamp(2*this.pendingDispatchNumber+1),this.pendingDispatchNumber++,"none"!==this.queryType&&this.pendingKernels.push(r[a]),(this.pendingDispatchNumber>=this.maxDispatchNumber||"at-passes"===this.queryType)&&this.endComputePass(),this.pendingDispatchNumber>=this.maxDispatchNumber&&this.flush()}this.flush(),this.sessionStatus="default"}onCreateSession(){this.gpuDataManager.onCreateSession()}onReleaseSession(t){this.unregisterBuffers(t),this.capturedCommandList.has(t)&&this.capturedCommandList.delete(t),this.capturedPendingKernels.has(t)&&this.capturedPendingKernels.delete(t),this.gpuDataManager.onReleaseSession(t)}onRunStart(t){this.currentSessionId=t,this.setQueryType()}}}),sw={};V(sw,{init:()=>sS});var sx,s$,sS,sk,sC,sE,sT,sI,sA,sN,sO,sM,sP,sR,sj,sz,sD,sB,sL,sU,sF,sq,sV,sW,sH,sG,sK,sY,sQ,sX,sZ,sJ,s1,s0,s2,s3=q(()=>{ng(),ny(),nv(),nx(),sx=class t{constructor(t,r,i,a){this.module=t,this.dataType=r,this.data=i,this.dims=a}getFloat32Array(){if(1!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new Float32Array:new Float32Array(this.module.HEAP8.buffer,this.data,t)}getBigInt64Array(){if(7!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new BigInt64Array:new BigInt64Array(this.module.HEAP8.buffer,this.data,t)}getInt32Array(){if(6!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new Int32Array:new Int32Array(this.module.HEAP8.buffer,this.data,t)}getUint16Array(){if(10!==this.dataType&&4!==this.dataType)throw Error("Invalid data type");let t=e8.size(this.dims);return 0===t?new Uint16Array:new Uint16Array(this.module.HEAP8.buffer,this.data,t)}reshape(r){if(e8.size(r)!==e8.size(this.dims))throw Error("Invalid new shape");return new t(this.module,this.dataType,this.data,r)}},s$=class{constructor(t,r,i){this.module=t,this.backend=r,this.customDataOffset=0,this.customDataSize=0,this.adapterInfo=r.adapterInfo;let a=t.PTR_SIZE,n=i/t.PTR_SIZE,s=4===a?"i32":"i64";this.opKernelContext=Number(t.getValue(a*n++,s));let o=Number(t.getValue(a*n++,s));this.outputCount=Number(t.getValue(a*n++,s)),this.customDataOffset=Number(t.getValue(a*n++,"*")),this.customDataSize=Number(t.getValue(a*n++,s));let l=[];for(let r=0;r<o;r++){let r=Number(t.getValue(a*n++,s)),i=Number(t.getValue(a*n++,"*")),o=Number(t.getValue(a*n++,s)),u=[];for(let r=0;r<o;r++)u.push(Number(t.getValue(a*n++,s)));l.push(new sx(t,r,i,u))}this.inputs=l}get kernelCustomData(){return this.backend.currentKernelCustomData}get customDataBuffer(){return this.module.HEAPU8.subarray(this.customDataOffset,this.customDataOffset+this.customDataSize)}compute(t,r){let i=r?.inputs?.map(t=>"number"==typeof t?this.inputs[t]:t)??this.inputs,a=r?.outputs??[],n=(t,r,i)=>new sx(this.module,r,this.output(t,i),i),s=(t,r)=>{let i=eW(t,r);
2775if(!i)throw Error(`Unsupported data type: ${t}`);let a=i>0?this.backend.gpuDataManager.create(i).id:0;return new sx(this.module,t,a,r)};return this.backend.run(t,i,a,n,s,this.outputCount)}output(t,r){let i=this.module.stackSave();try{let i=this.module.PTR_SIZE,a=4===i?"i32":"i64",n=this.module.stackAlloc((1+r.length)*i);this.module.setValue(n,r.length,a);for(let t=0;t<r.length;t++)this.module.setValue(n+i*(t+1),r[t],a);return this.module._JsepOutput(this.opKernelContext,t,n)}catch(i){throw Error(`Failed to generate kernel's output[${t}] with dims [${r}]. If you are running with pre-allocated output, please make sure the output type/dims are correct. Error: ${i}`)}finally{this.module.stackRestore(i)}}},sS=async(t,r,i,a)=>{let n=r.jsepInit;if(!n)throw Error("Failed to initialize JSEP. The WebAssembly module is not built with JSEP support.");if("webgpu"===t){let t=new(s_(),W(sb)).WebGpuBackend;await t.initialize(i,a),n("webgpu",[t,r=>t.alloc(Number(r)),r=>t.free(r),(i,a,n,s=!1)=>{if(s)e2("verbose",()=>`[WebGPU] jsepCopyGpuToGpu: src=${Number(i)}, dst=${Number(a)}, size=${Number(n)}`),t.memcpy(Number(i),Number(a));else{e2("verbose",()=>`[WebGPU] jsepCopyCpuToGpu: dataOffset=${Number(i)}, gpuDataId=${Number(a)}, size=${Number(n)}`);let s=r.HEAPU8.subarray(Number(i>>>0),Number(i>>>0)+Number(n));t.upload(Number(a),s)}},async(i,a,n)=>{e2("verbose",()=>`[WebGPU] jsepCopyGpuToCpu: gpuDataId=${i}, dataOffset=${a}, size=${n}`),await t.download(Number(i),()=>r.HEAPU8.subarray(Number(a)>>>0,Number(a+n)>>>0))},(i,a,n)=>t.createKernel(i,Number(a),n,r.UTF8ToString(r._JsepGetNodeName(Number(a)))),r=>t.releaseKernel(r),(i,a,n,s)=>{e2("verbose",()=>`[WebGPU] jsepRun: sessionHandle=${n}, kernel=${i}, contextDataOffset=${a}`);let o=new s$(r,t,Number(a));return t.computeKernel(Number(i),o,s)},()=>t.captureBegin(),()=>t.captureEnd(),()=>t.replay()])}else{let t=new tf(i);n("webnn",[t,()=>t.reserveTensorId(),r=>t.releaseTensorId(r),async(r,i,a,n,s)=>t.ensureTensor(r,i,a,n,s),(r,i)=>{t.uploadTensor(r,i)},async(r,i)=>t.downloadTensor(r,i),(r,i)=>t.registerMLContext(r,i),!!i.trace])}}}),s4=q(()=>{ed(),np(),nm(),ng(),nh(),nf(),nb(),sk=async t=>{var r,i;r=t.wasm.numThreads,i=eG(t.logLevel),0!==eR()._OrtInit(r,i)&&eD("Can't initialize onnxruntime.")},sC=async(t,r)=>{eR().asyncInit?.();let i=t.webgpu.adapter;if("webgpu"===r){if(typeof navigator>"u"||!navigator.gpu)throw Error("WebGPU is not supported in current environment");if(i){if("object"!=typeof i.limits||"object"!=typeof i.features||"function"!=typeof i.requestDevice)throw Error("Invalid GPU adapter set in `env.webgpu.adapter`. It must be a GPUAdapter object.")}else{let r=t.webgpu.powerPreference;if(void 0!==r&&"low-power"!==r&&"high-performance"!==r)throw Error(`Invalid powerPreference setting: "${r}"`);let a=t.webgpu.forceFallbackAdapter;if(void 0!==a&&"boolean"!=typeof a)throw Error(`Invalid forceFallbackAdapter setting: "${a}"`);if(!(i=await navigator.gpu.requestAdapter({powerPreference:r,forceFallbackAdapter:a})))throw Error('Failed to get GPU adapter. You may need to enable flag "--enable-unsafe-webgpu" if you are using Chrome.')}}if("webnn"===r&&(typeof navigator>"u"||!navigator.ml))throw Error("WebNN is not supported in current environment");{let a=(s3(),W(sw)).init;"webgpu"===r&&await a("webgpu",eR(),t,i),"webnn"===r&&await a("webnn",eR(),t)}},sE=new Map,sT=(t,r)=>{let i=eR(),a=i.stackSave(),n=0;try{let a=i.PTR_SIZE,s=i.stackAlloc(2*a);0!==i._OrtGetInputOutputMetadata(t,r,s,s+a)&&eD("Can't get session input/output metadata.");let o=Number(i.getValue(s,"*"));n=Number(i.getValue(s+a,"*"));let l=i.HEAP32[n/4];if(0===l)return[o,0];let u=i.HEAPU32[n/4+1],d=[];for(let t=0;t<u;t++){let r=Number(i.getValue(n+8+t*a,"*"));d.push(0!==r?i.UTF8ToString(r):Number(i.getValue(n+8+(t+u)*a,"*")))}return[o,l,d]}finally{i.stackRestore(a),0!==n&&i._OrtFree(n)}},sI=t=>{let r=eR(),i=r._malloc(t.byteLength);if(0===i)throw Error(`Can't create a session. failed to allocate a buffer of size ${t.byteLength}.`);return r.HEAPU8.set(t,i),[i,t.byteLength]},sA=async(t,r)=>{let i,a,n=eR();Array.isArray(t)?[i,a]=t:t.buffer===n.HEAPU8.buffer?[i,a]=[t.byteOffset,t.byteLength]:[i,a]=sI(t);let s=0,o=0,l=0,u=[],d=[],c=[];try{if([o,u]=await eF(r),r?.externalData&&n.mountExternalData){let t=[];for(let i of r.externalData){let r="string"==typeof i?i:i.path;t.push(eX("string"==typeof i?i:i.data).then(t=>{n.mountExternalData(r,t)}))}await Promise.all(t)}
2775for(let t of r?.executionProviders??[])if(("string"==typeof t?t:t.name)==="webnn"){if(n.shouldTransferToMLTensor=!1,"string"!=typeof t){let r=t?.context,i=t?.gpuDevice,a=t?.deviceType,s=t?.powerPreference;r?n.currentContext=r:i?n.currentContext=await n.webnnCreateMLContext(i):n.currentContext=await n.webnnCreateMLContext({deviceType:a,powerPreference:s})}else n.currentContext=await n.webnnCreateMLContext();break}s=await n._OrtCreateSession(i,a,o),n.webgpuOnCreateSession?.(s),0===s&&eD("Can't create a session."),n.jsepOnCreateSession?.(),n.currentContext&&(n.webnnRegisterMLContext(s,n.currentContext),n.currentContext=void 0,n.shouldTransferToMLTensor=!0);let[t,h]=(t=>{let r=eR(),i=r.stackSave();try{let i=r.PTR_SIZE,a=r.stackAlloc(2*i);0!==r._OrtGetInputOutputCount(t,a,a+i)&&eD("Can't get session input/output count.");let n=4===i?"i32":"i64";return[Number(r.getValue(a,n)),Number(r.getValue(a+i,n))]}finally{r.stackRestore(i)}})(s),f=!!r?.enableGraphCapture,p=[],m=[],g=[],b=[],y=[];for(let r=0;r<t;r++){let[t,i,a]=sT(s,r);0===t&&eD("Can't get an input name."),d.push(t);let o=n.UTF8ToString(t);p.push(o),g.push(0===i?{name:o,isTensor:!1}:{name:o,isTensor:!0,type:eV(i),shape:a})}for(let i=0;i<h;i++){let[a,o,l]=sT(s,i+t);0===a&&eD("Can't get an output name."),c.push(a);let u=n.UTF8ToString(a);m.push(u),b.push(0===o?{name:u,isTensor:!1}:{name:u,isTensor:!0,type:eV(o),shape:l});{if(f&&r?.preferredOutputLocation===void 0){y.push("gpu-buffer");continue}let t="string"==typeof r?.preferredOutputLocation?r.preferredOutputLocation:r?.preferredOutputLocation?.[u]??"cpu",i=n.webnnIsGraphOutput;if("cpu"===t&&i&&i(s,u)){y.push("ml-tensor-cpu-output");continue}if("cpu"!==t&&"cpu-pinned"!==t&&"gpu-buffer"!==t&&"ml-tensor"!==t)throw Error(`Not supported preferred output location: ${t}.`);if(f&&"gpu-buffer"!==t)throw Error(`Not supported preferred output location: ${t}. Only 'gpu-buffer' location is supported when enableGraphCapture is true.`);y.push(t)}}let v=null;return y.some(t=>"gpu-buffer"===t||"ml-tensor"===t||"ml-tensor-cpu-output"===t)&&(l=n._OrtCreateBinding(s),0===l&&eD("Can't create IO binding."),v={handle:l,outputPreferredLocations:y,outputPreferredLocationsEncoded:y.map(t=>"ml-tensor-cpu-output"===t?"ml-tensor":t).map(t=>eQ(t))}),sE.set(s,[s,d,c,v,f,!1]),[s,p,m,g,b]}catch(t){throw d.forEach(t=>n._OrtFree(t)),c.forEach(t=>n._OrtFree(t)),0!==l&&0!==n._OrtReleaseBinding(l)&&eD("Can't release IO binding."),0!==s&&0!==n._OrtReleaseSession(s)&&eD("Can't release session."),t}finally{n._free(i),0!==o&&0!==n._OrtReleaseSessionOptions(o)&&eD("Can't release session options."),u.forEach(t=>n._free(t)),n.unmountExternalData?.()}},sN=t=>{let r=eR(),i=sE.get(t);if(!i)throw Error(`cannot release session. invalid session id: ${t}`);let[a,n,s,o,l]=i;o&&(l&&0!==r._OrtClearBoundOutputs(o.handle)&&eD("Can't clear bound outputs."),0!==r._OrtReleaseBinding(o.handle)&&eD("Can't release IO binding.")),r.jsepOnReleaseSession?.(t),r.webnnOnReleaseSession?.(t),r.webgpuOnReleaseSession?.(t),n.forEach(t=>r._OrtFree(t)),s.forEach(t=>r._OrtFree(t)),0!==r._OrtReleaseSession(a)&&eD("Can't release session."),sE.delete(t)},sO=async(t,r,i,a,n,s,o=!1)=>{if(!t)return void r.push(0);let l=eR(),u=l.PTR_SIZE,d=t[0],c=t[1],h=t[3],f=h,p,m;if("string"===d&&("gpu-buffer"===h||"ml-tensor"===h))throw Error("String tensor is not supported on GPU.");if(o&&"gpu-buffer"!==h)throw Error(`External buffer must be provided for input/output index ${s} when enableGraphCapture is true.`);if("gpu-buffer"===h){let r=t[2].gpuBuffer;m=eW(eq(d),c);{let t=l.jsepRegisterBuffer;if(!t)throw Error('Tensor location "gpu-buffer" is not supported without using WebGPU.');p=t(a,s,r,m)}}else if("ml-tensor"===h){let r=t[2].mlTensor;m=eW(eq(d),c);let i=l.webnnRegisterMLTensor;if(!i)throw Error('Tensor location "ml-tensor" is not supported without using WebNN.');p=i(a,r,eq(d),c)}else{let r=t[2];if(Array.isArray(r)){m=u*r.length,p=l._malloc(m),i.push(p);for(let t=0;t<r.length;t++){if("string"!=typeof r[t])throw TypeError(`tensor data at index ${t} is not a string`);l.setValue(p+t*u,ej(r[t],i),"*")}}else{let t=l.webnnIsGraphInput,s=l.webnnIsGraphOutput;if("string"!==d&&t&&s){let o=l.UTF8ToString(n);if(t(a,o)||s(a,o)){let t=eq(d);m=eW(t,c),f="ml-tensor";let i=l.webnnCreateTemporaryTensor,n=l.webnnUploadTensor;if(!i||!n)throw Error('Tensor location "ml-tensor" is not supported without using WebNN.');let s=await i(a,t,c);n(s,new Uint8Array(r.buffer,r.byteOffset,r.byteLength)),p=s}else m=r.byteLength,p=l._malloc(m),i.push(p),l.HEAPU8.set(new Uint8Array(r.buffer,r.byteOffset,m),p)}else m=r.byteLength,p=l._malloc(m),i.push(p),l.HEAPU8.set(new Uint8Array(r.buffer,r.byteOffset,m),p)}}let g=l.stackSave(),b=l.stackAlloc(4*c.length);
2775try{c.forEach((t,r)=>l.setValue(b+r*u,t,4===u?"i32":"i64"));let t=l._OrtCreateTensor(eq(d),p,m,b,c.length,eQ(f));0===t&&eD(`Can't create tensor for input/output. session=${a}, index=${s}.`),r.push(t)}finally{l.stackRestore(g)}},sM=async(t,r,i,a,n,s)=>{let o=eR(),l=o.PTR_SIZE,u=sE.get(t);if(!u)throw Error(`cannot run inference. invalid session id: ${t}`);let d=u[0],c=u[1],h=u[2],f=u[3],p=u[4],m=u[5],g=r.length,b=a.length,y=0,v=[],_=[],w=[],x=[],$=o.stackSave(),S=o.stackAlloc(g*l),k=o.stackAlloc(g*l),C=o.stackAlloc(b*l),E=o.stackAlloc(b*l);try{let u;[y,v]=eB(s),M("wasm prepareInputOutputTensor");for(let a=0;a<g;a++)await sO(i[a],_,x,t,c[r[a]],r[a],p);for(let r=0;r<b;r++)await sO(n[r],w,x,t,h[a[r]],g+a[r],p);P("wasm prepareInputOutputTensor");for(let t=0;t<g;t++)o.setValue(S+t*l,_[t],"*"),o.setValue(k+t*l,c[r[t]],"*");for(let t=0;t<b;t++)o.setValue(C+t*l,w[t],"*"),o.setValue(E+t*l,h[a[t]],"*");if(f&&!m){let{handle:i,outputPreferredLocations:s,outputPreferredLocationsEncoded:l}=f;if(c.length!==g)throw Error(`input count from feeds (${g}
2775) is expected to be always equal to model's input count (${c.length}).`);M("wasm bindInputsOutputs");for(let a=0;a<g;a++){let n=r[a];await o._OrtBindInput(i,c[n],_[a])!==0&&eD(`Can't bind input[${a}] for session=${t}.`)}for(let r=0;r<b;r++){let u=a[r];n[r]?.[3]?0!==o._OrtBindOutput(i,h[u],w[r],0)&&eD(`Can't bind pre-allocated output[${r}] for session=${t}.`):0!==o._OrtBindOutput(i,h[u],0,l[u])&&eD(`Can't bind output[${r}] to ${s[r]} for session=${t}.`)}P("wasm bindInputsOutputs"),sE.set(t,[d,c,h,f,p,!0])}o.jsepOnRunStart?.(d),o.webnnOnRunStart?.(d),u=f?await o._OrtRunWithBinding(d,f.handle,b,C,y):await o._OrtRun(d,k,S,g,E,b,C,y),0!==u&&eD("failed to call OrtRun().");let $=[],T=[];M("wasm ProcessOutputTensor");for(let r=0;r<b;r++){let i=Number(o.getValue(C+r*l,"*"));if(i===w[r]){$.push(n[r]);continue}let s=o.stackSave(),u=o.stackAlloc(4*l),d=!1,c,h=0;try{0!==o._OrtGetTensorData(i,u,u+l,u+2*l,u+3*l)&&eD(`Can't access output tensor data on index ${r}.`);let n=4===l?"i32":"i64",s=Number(o.getValue(u,n));h=o.getValue(u+l,"*");let p=o.getValue(u+2*l,"*"),m=Number(o.getValue(u+3*l,n)),g=[];for(let t=0;t<m;t++)g.push(Number(o.getValue(p+t*l,n)));0!==o._OrtFree(p)&&eD("Can't free memory for tensor dims.");let b=g.reduce((t,r)=>t*r,1);c=eV(s);let y=f?.outputPreferredLocations[a[r]];if("string"===c){if("gpu-buffer"===y||"ml-tensor"===y)throw Error("String tensor is not supported on GPU.");let t=[];for(let r=0;r<b;r++){let i=o.getValue(h+r*l,"*"),a=o.getValue(h+(r+1)*l,"*"),n=r===b-1?void 0:a-i;t.push(o.UTF8ToString(i,n))}$.push([c,g,t,"cpu"])}else if("gpu-buffer"===y&&b>0){let t=o.jsepGetBuffer;if(!t)throw Error('preferredLocation "gpu-buffer" is not supported without using WebGPU.');let r=t(h),a=eW(s,b);if(void 0===a||!eK(c))throw Error(`Unsupported data type: ${c}`);d=!0,$.push([c,g,{gpuBuffer:r,download:o.jsepCreateDownloader(r,a,c),dispose:()=>{0!==o._OrtReleaseTensor(i)&&eD("Can't release tensor.")}},"gpu-buffer"])}else if("ml-tensor"===y&&b>0){let r=o.webnnEnsureTensor,a=o.webnnIsGraphInputOutputTypeSupported;if(!r||!a)throw Error('preferredLocation "ml-tensor" is not supported without using WebNN.');if(void 0===eW(s,b)||!eY(c))throw Error(`Unsupported data type: ${c}`);if(!a(t,c,!1))throw Error(`preferredLocation "ml-tensor" for ${c} output is not supported by current WebNN Context.`);let n=await r(t,h,s,g,!1);d=!0,$.push([c,g,{mlTensor:n,download:o.webnnCreateMLTensorDownloader(h,c),dispose:()=>{o.webnnReleaseTensorId(h),o._OrtReleaseTensor(i)}},"ml-tensor"])}else if("ml-tensor-cpu-output"===y&&b>0){let t=o.webnnCreateMLTensorDownloader(h,c)(),r=$.length;d=!0,T.push((async()=>{let a=[r,await t];return o.webnnReleaseTensorId(h),o._OrtReleaseTensor(i),a})()),$.push([c,g,[],"cpu"])}else{let t=new(eH(c))(b);new Uint8Array(t.buffer,t.byteOffset,t.byteLength).set(o.HEAPU8.subarray(h,h+t.byteLength)),$.push([c,g,t,"cpu"])}}finally{o.stackRestore(s),"string"===c&&h&&o._free(h),d||o._OrtReleaseTensor(i)}}for(let[r,i]of(f&&!p&&(0!==o._OrtClearBoundOutputs(f.handle)&&eD("Can't clear bound outputs."),sE.set(t,[d,c,h,f,p,!1])),await Promise.all(T)))$[r][2]=i;return P("wasm ProcessOutputTensor"),$}finally{o.webnnOnRunEnd?.(d),o.stackRestore($),_.forEach(t=>o._OrtReleaseTensor(t)),w.forEach(t=>o._OrtReleaseTensor(t)),x.forEach(t=>o._free(t)),0!==y&&o._OrtReleaseRunOptions(y),v.forEach(t=>o._free(t))}},sP=t=>{let r=eR(),i=sE.get(t);if(!i)throw Error("invalid session id");let a=i[0],n=r._OrtEndProfiling(a);0===n&&eD("Can't get an profile file name."),r._OrtFree(n)},sR=t=>{let r=[];for(let i of t){let t=i[2];!Array.isArray(t)&&"buffer"in t&&r.push(t.buffer)}return r}}),s8=q(()=>{ed(),s4(),nh(),nc(),sj=()=>!!h.wasm.proxy&&"u">typeof document,sD=!1,sB=!1,sL=!1,sq=new Map,sV=(t,r)=>{let i=sq.get(t);i?i.push(r):sq.set(t,[r])},sW=()=>{if(sD||!sB||sL||!sz)throw Error("worker not ready")},sH=t=>{switch(t.data.type){case"init-wasm":sD=!1,t.data.err?(sL=!0,sF[1](t.data.err)):(sB=!0,sF[0]()),sU&&(URL.revokeObjectURL(sU),sU=void 0);break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let r=sq.get(t.data.type);t.data.err?r.shift()[1](t.data.err):r.shift()[0](t.data.out)}}},sG=async()=>
2775{if(!sB){if(sD)throw Error("multiple calls to 'initWasm()' detected.");if(sL)throw Error("previous call to 'initWasm()' failed.");if(sD=!0,sj())return new Promise((t,r)=>{sz?.terminate(),eE().then(([a,n])=>{try{(sz=n).onerror=t=>r(t),sz.onmessage=sH,sF=[t,r];let s={type:"init-wasm",in:h};!s.in.wasm.wasmPaths&&(a||e_)&&(s.in.wasm.wasmPaths={wasm:new i.U(i(84659)).href}),sz.postMessage(s),sU=a}catch(t){r(t)}},r)});try{await eP(h.wasm),await sk(h),sB=!0}catch(t){throw sL=!0,t}finally{sD=!1}}},sK=async t=>{if(sj())return sW(),new Promise((r,i)=>{sV("init-ep",[r,i]);let a={type:"init-ep",in:{epName:t,env:h}};sz.postMessage(a)});await sC(h,t)},sY=async t=>sj()?(sW(),new Promise((r,i)=>{sV("copy-from",[r,i]),sz.postMessage({type:"copy-from",in:{buffer:t}},[t.buffer])})):sI(t),sQ=async(t,r)=>{if(!sj())return sA(t,r);if(r?.preferredOutputLocation)throw Error('session option "preferredOutputLocation" is not supported for proxy.');return sW(),new Promise((i,a)=>{sV("create",[i,a]);let n={type:"create",in:{model:t,options:{...r}}},s=[];t instanceof Uint8Array&&s.push(t.buffer),sz.postMessage(n,s)})},sX=async t=>{if(sj())return sW(),new Promise((r,i)=>{sV("release",[r,i]),sz.postMessage({type:"release",in:t})});sN(t)},sZ=async(t,r,i,a,n,s)=>{if(!sj())return sM(t,r,i,a,n,s);if(i.some(t=>"cpu"!==t[3]))throw Error("input tensor on GPU is not supported for proxy.");if(n.some(t=>t))throw Error("pre-allocated output tensor is not supported for proxy.");return sW(),new Promise((n,o)=>{sV("run",[n,o]),sz.postMessage({type:"run",in:{sessionId:t,inputIndices:r,inputs:i,outputIndices:a,options:s}},sR(i))})},sJ=async t=>{if(sj())return sW(),new Promise((r,i)=>{sV("end-profiling",[r,i]),sz.postMessage({type:"end-profiling",in:t})});sP(t)}}),s7=q(()=>{ed(),s8(),ng(),ec(),nb(),s1=(t,r)=>{switch(t.location){case"cpu":return[t.type,t.dims,t.data,"cpu"];case"gpu-buffer":return[t.type,t.dims,{gpuBuffer:t.gpuBuffer},"gpu-buffer"];case"ml-tensor":return[t.type,t.dims,{mlTensor:t.mlTensor},"ml-tensor"];default:throw Error(`invalid data location: ${t.location} for ${r()}`)}},s0=t=>{switch(t[3]){case"cpu":return new T(t[0],t[2],t[1]);case"gpu-buffer":{let r=t[0];if(!eK(r))throw Error(`not supported data type: ${r} for deserializing GPU tensor`);let{gpuBuffer:i,download:a,dispose:n}=t[2];return T.fromGpuBuffer(i,{dataType:r,dims:t[1],download:a,dispose:n})}case"ml-tensor":{let r=t[0];if(!eY(r))throw Error(`not supported data type: ${r} for deserializing MLTensor tensor`);let{mlTensor:i,download:a,dispose:n}=t[2];return T.fromMLTensor(i,{dataType:r,dims:t[1],download:a,dispose:n})}default:throw Error(`invalid data location: ${t[3]}`)}},s2=class{async fetchModelAndCopyToWasmMemory(t){return sY(await eX(t))}async loadModel(t,r){let i;N(),i="string"==typeof t?await this.fetchModelAndCopyToWasmMemory(t):t,[this.sessionId,this.inputNames,this.outputNames,this.inputMetadata,this.outputMetadata]=await sQ(i,r),O()}async dispose(){return sX(this.sessionId)}async run(t,r,i){N();let a=[],n=[];Object.entries(t).forEach(t=>{let r=t[0],i=t[1],s=this.inputNames.indexOf(r);if(-1===s)throw Error(`invalid input '${r}'`);a.push(i),n.push(s)});let s=[],o=[];Object.entries(r).forEach(t=>{let r=t[0],i=t[1],a=this.outputNames.indexOf(r);if(-1===a)throw Error(`invalid output '${r}'`);s.push(i),o.push(a)});let l=a.map((t,r)=>s1(t,()=>`input "${this.inputNames[n[r]]}"`)),u=s.map((t,r)=>t?s1(t,()=>`output "${this.outputNames[o[r]]}"`):null),d=await sZ(this.sessionId,n,l,o,u,i),c={};for(let t=0;t<d.length;t++)c[this.outputNames[o[t]]]=s[t]??s0(d[t]);return O(),c}startProfiling(){}endProfiling(){sJ(this.sessionId)}}}),s6={};V(s6,{OnnxruntimeWebAssemblyBackend:()=>s9,initializeFlags:()=>s5,wasmBackend:()=>oe});var s5,s9,oe,ot=q(()=>{ed(),s8(),s7(),s5=()=>{("number"!=typeof h.wasm.initTimeout||h.wasm.initTimeout<0)&&(h.wasm.initTimeout=0);let t=h.wasm.simd;if("boolean"!=typeof t&&void 0!==t&&"fixed"!==t&&"relaxed"!==t&&(console.warn(`Property "env.wasm.simd" is set to unknown value "${t}". Reset it to \`false\` and ignore SIMD feature checking.`),h.wasm.simd=!1),"boolean"!=typeof h.wasm.proxy&&(h.wasm.proxy=!1),"boolean"!=typeof h.wasm.trace&&(h.wasm.trace=!1),"number"!=typeof h.wasm.numThreads||!Number.isInteger(h.wasm.numThreads)||h.wasm.numThreads<=0)if("u">typeof self&&!self.crossOriginIsolated)h.wasm.numThreads=1;else{let t=typeof navigator>"u"?F("node:os").cpus().length:navigator.hardwareConcurrency;h.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},oe=new(s9=class{async init(t){s5(),await sG(),await sK(t)}async createInferenceSessionHandler(t,r){let i=new s2;return await i.loadModel(t,r),i}})});ed(),ed(),ed();{let t=(ot(),W(s6)).wasmBackend;s("webgpu",t,5),s("webnn",t,5),s("cpu",t,10),s("wasm",t,10)}Object.defineProperty(h.versions,"web",{value:"1.23.0",enumerable:!0});var or=i(32711);let oi=JSON.parse('{"a1a1":0,"a1b1":1,"a1c1":2,"a1d1":3,"a1e1":4,"a1f1":5,"a1g1":6,"a1h1":7,"a1a2":8,"a1b2":9,"a1c2":10,"a1d2":11,"a1e2":12,"a1f2":13,"a1g2":14,"a1h2":15,"a1a3":16,"a1b3":17,"a1c3":18,"a1d3":19,"a1e3":20,"a1f3":21,"a1g3":22,"a1h3":23,"a1a4":24,"a1b4":25,"a1c4":26,"a1d4":27,"a1e4":28,"a1f4":29,"a1g4":30,"a1h4":31,"a1a5":32,"a1b5":33,"a1c5":34,"a1d5":35,"a1e5":36,"a1f5":37,"a1g5":38,"a1h5":39,"a1a6":40,"a1b6":41,"a1c6":42,"a1d6":43,"a1e6":44,"a1f6":45,"a1g6":46,"a1h6":47,"a1a7":48,"a1b7":49,"a1c7":50,"a1d7":51,"a1e7":52,"a1f7":53,"a1g7":54,"a1h7":55,"a1a8":56,"a1b8":57,"a1c8":58,"a1d8":59,"a1e8":60,"a1f8":61,"a1g8":62,"a1h8":63,"b1a1":64,"b1b1":65,"b1c1":66,"b1d1":67,"b1e1":68,"b1f1":69,"b1g1":70,"b1h1":71,"b1a2":72,"b1b2":73,"b1c2":74,"b1d2":75,"b1e2":76,"b1f2":77,"b1g2":78,"b1h2":79,"b1a3":80,"b1b3":81,"b1c3":82,"b1d3":83,"b1e3":84,"b1f3":85,"b1g3":86,"b1h3":87,"b1a4":88,"b1b4":89,"b1c4":90,"b1d4":91,"b1e4":92,"b1f4":93,"b1g4":94,"b1h4":95,"b1a5":96,"b1b5":97,"b1c5":98,"b1d5":99,"b1e5":100,"b1f5":101,"b1g5":102,"b1h5":103,"b1a6":104,"b1b6":105,"b1c6":106,"b1d6":107,"b1e6":108,"b1f6":109,"b1g6":110,"b1h6":111,"b1a7":112,"b1b7":113,"b1c7":114,"b1d7":115,"b1e7":116,"b1f7":117,"b1g7":118,"b1h7":119,"b1a8":120,"b1b8":121,"b1c8":122,"b1d8":123,"b1e8":124,"b1f8":125,"b1g8":126,"b1h8":127,"c1a1":128,"c1b1":129,"c1c1":130,"c1d1":131,"c1e1":132,"c1f1":133,"c1g1":134,"c1h1":135,"c1a2":136,"c1b2":137,"c1c2":138,"c1d2":139,"c1e2":140,"c1f2":141,"c1g2":142,"c1h2":143,"c1a3":144,"c1b3":145,"c1c3":146,"c1d3":147,"c1e3":148,"c1f3":149,"c1g3":150,"c1h3":151,"c1a4":152,"c1b4":153,"c1c4":154,"c1d4":155,"c1e4":156,"c1f4":157,"c1g4":158,"c1h4":159,"c1a5":160,"c1b5":161,"c1c5":162,"c1d5":163,"c1e5":164,"c1f5":165,"c1g5":166,"c1h5":167,"c1a6":168,"c1b6":169,"c1c6":170,"c1d6":171,"c1e6":172,"c1f6":173,"c1g6":174,"c1h6":175,"c1a7":176,"c1b7":177,"c1c7":178,"c1d7":179,"c1e7":180,"c1f7":181,"c1g7":182,"c1h7":183,"c1a8":184,"c1b8":185,"c1c8":186,"c1d8":187,"c1e8":188,"c1f8":189,"c1g8":190,"c1h8":191,"d1a1":192,"d1b1":193,"d1c1":194,"d1d1":195,"d1e1":196,"d1f1":197,"d1g1":198,"d1h1":199,"d1a2":200,"d1b2":201,"d1c2":202,"d1d2":203,"d1e2":204,"d1f2":205,"d1g2":206,"d1h2":207,"d1a3":208,"d1b3":209,"d1c3":210,"d1d3":211,"d1e3":212,"d1f3":213,"d1g3":214,"d1h3":215,"d1a4":2
277516,"d1b4":217,"d1c4":218,"d1d4":219,"d1e4":220,"d1f4":221,"d1g4":222,"d1h4":223,"d1a5":224,"d1b5":225,"d1c5":226,"d1d5":227,"d1e5":228,"d1f5":229,"d1g5":230,"d1h5":231,"d1a6":232,"d1b6":233,"d1c6":234,"d1d6":235,"d1e6":236,"d1f6":237,"d1g6":238,"d1h6":239,"d1a7":240,"d1b7":241,"d1c7":242,"d1d7":243,"d1e7":244,"d1f7":245,"d1g7":246,"d1h7":247,"d1a8":248,"d1b8":249,"d1c8":250,"d1d8":251,"d1e8":252,"d1f8":253,"d1g8":254,"d1h8":255,"e1a1":256,"e1b1":257,"e1c1":258,"e1d1":259,"e1e1":260,"e1f1":261,"e1g1":262,"e1h1":263,"e1a2":264,"e1b2":265,"e1c2":266,"e1d2":267,"e1e2":268,"e1f2":269,"e1g2":270,"e1h2":271,"e1a3":272,"e1b3":273,"e1c3":274,"e1d3":275,"e1e3":276,"e1f3":277,"e1g3":278,"e1h3":279,"e1a4":280,"e1b4":281,"e1c4":282,"e1d4":283,"e1e4":284,"e1f4":285,"e1g4":286,"e1h4":287,"e1a5":288,"e1b5":289,"e1c5":290,"e1d5":291,"e1e5":292,"e1f5":293,"e1g5":294,"e1h5":295,"e1a6":296,"e1b6":297,"e1c6":298,"e1d6":299,"e1e6":300,"e1f6":301,"e1g6":302,"e1h6":303,"e1a7":304,"e1b7":305,"e1c7":306,"e1d7":307,"e1e7":308,"e1f7":309,"e1g7":310,"e1h7":311,"e1a8":312,"e1b8":313,"e1c8":314,"e1d8":315,"e1e8":316,"e1f8":317,"e1g8":318,"e1h8":319,"f1a1":320,"f1b1":321,"f1c1":322,"f1d1":323,"f1e1":324,"f1f1":325,"f1g1":326,"f1h1":327,"f1a2":328,"f1b2":329,"f1c2":330,"f1d2":331,"f1e2":332,"f1f2":333,"f1g2":334,"f1h2":335,"f1a3":336,"f1b3":337,"f1c3":338,"f1d3":339,"f1e3":340,"f1f3":341,"f1g3":342,"f1h3":343,"f1a4":344,"f1b4"
2775:345,"f1c4":346,"f1d4":347,"f1e4":348,"f1f4":349,"f1g4":350,"f1h4":351,"f1a5":352,"f1b5":353,"f1c5":354,"f1d5":355,"f1e5":356,"f1f5":357,"f1g5":358,"f1h5":359,"f1a6":360,"f1b6":361,"f1c6":362,"f1d6":363,"f1e6":364,"f1f6":365,"f1g6":366,"f1h6":367,"f1a7":368,"f1b7":369,"f1c7":370,"f1d7":371,"f1e7":372,"f1f7":373,"f1g7":374,"f1h7":375,"f1a8":376,"f1b8":377,"f1c8":378,"f1d8":379,"f1e8":380,"f1f8":381,"f1g8":382,"f1h8":383,"g1a1":384,"g1b1":385,"g1c1":386,"g1d1":387,"g1e1":388,"g1f1":389,"g1g1":390,"g1h1":391,"g1a2":392,"g1b2":393,"g1c2":394,"g1d2":395,"g1e2":396,"g1f2":397,"g1g2":398,"g1h2":399,"g1a3":400,"g1b3":401,"g1c3":402,"g1d3":403,"g1e3":404,"g1f3":405,"g1g3":406,"g1h3":407,"g1a4":408,"g1b4":409,"g1c4":410,"g1d4":411,"g1e4":412,"g1f4":413,"g1g4":414,"g1h4":415,"g1a5":416,"g1b5":417,"g1c5":418,"g1d5":419,"g1e5":420,"g1f5":421,"g1g5":422,"g1h5":423,"g1a6":424,"g1b6":425,"g1c6":426,"g1d6":427,"g1e6":428,"g1f6":429,"g1g6":430,"g1h6":431,"g1a7":432,"g1b7":433,"g1c7":434,"g1d7":435,"g1e7":436,"g1f7":437,"g1g7":438,"g1h7":439,"g1a8":440,"g1b8":441,"g1c8":442,"g1d8":443,"g1e8":444,"g1f8":445,"g1g8":446,"g1h8":447,"h1a1":448,"h1b1":449,"h1c1":450,"h1d1":451,"h1e1":452,"h1f1":453,"h1g1":454,"h1h1":455,"h1a2":456,"h1b2":457,"h1c2":458,"h1d2":459,"h1e2":460,"h1f2":461,"h1g2":462,"h1h2":463,"h1a3":464,"h1b3":465,"h1c3":466,"h1d3":467,"h1e3":468,"h1f3":469,"h1g3":470,"h1h3":471,"h1a4":472,"h1b4":473,"h1c4":474,"h1d4":475,"h1e4":476,"h1f4":477,"h1g4":478,"h1h4":479,"h1a5":480,"h1b5":481,"h1c5":482,"h1d5":483,"h1e5":484,"h1f5":485,"h1g5":486,"h1h5":487,"h1a6":488,"h1b6":489,"h1c6":490,"h1d6":491,"h1e6":492,"h1f6":493,"h1g6":494,"h1h6":495,"h1a7":496,"h1b7":497,"h1c7":498,"h1d7":499,"h1e7":500,"h1f7":501,"h1g7":502,"h1h7":503,"h1a8":504,"h1b8":505,"h1c8":506,"h1d8":507,"h1e8":508,"h1f8":509,"h1g8":510,"h1h8":511,"a2a1":512,"a2b1":513,"a2c1":514,"a2d1":515,"a2e1":516,"a2f1":517,"a2g1":518,"a2h1":519,"a2a2":520,"a2b2":521,"a2c2":522,"a2d2":523,"a2e2":524,"a2f2":525,"a2g2":526,"a2h2":527,"a2a3":528,"a2b3":529,"a2c3":530,"a2d3":531,"a2e3":532,"a2f3":533,"a2g3":534,"a2h3":535,"a2a4":536,"a2b4":537,"a2c4":538,"a2d4":539,"a2e4":540,"a2f4":541,"a2g4":542,"a2h4":543,"a2a5":544,"a2b5":545,"a2c5":546,"a2d5":547,"a2e5":548,"a2f5":549,"a2g5":550,"a2h5":551,"a2a6":552,"a2b6":553,"a2c6":554,"a2d6":555,"a2e6":556,"a2f6":557,"a2g6":558,"a2h6":559,"a2a7":560,"a2b7":561,"a2c7":562,"a2d7":563,"a2e7":564,"a2f7":565,"a2g7":566,"a2h7":567,"a2a8":568,"a2b8":569,"a2c8":570,"a2d8":571,"a2e8":572,"a2f8":573,"a2g8":574,"a2h8":575,"b2a1":576,"b2b1":577,"b2c1":578,"b2d1":579,"b2e1":580,"b2f1":581,"b2g1":582,"b2h1":583,"b2a2":584,"b2b2":585,"b2c2":586,"b2d2":587,"b2e2":588,"b2f2":589,"b2g2":590,"b2h2":591,"b2a3":592,"b2b3":593,"b2c3":594,"b2d3":595,"b2e3":596,"b2f3":597,"b2g3":598,"b2h3":599,"b2a4":600,"b2b4":601,"b2c4":602,"b2d4":603,"b2e4":604,"b2f4":605,"b2g4":606,"b2h4":607,"b2a5":608,"b2b5":609,"b2c5":610,"b2d5":611,"b2e5":612,"b2f5":613,"b2g5":614,"b2h5":615,"b2a6":616,"b2b6":617,"b2c6":618,"b2d6":619,"b2e6":620,"b2f6":621,"b2g6":622,"b2h6":623,"b2a7":624,"b2b7":625,"b2c7":626,"b2d7":627,"b2e7":628,"b2f7":629,"b2g7":630,"b2h7":631,"b2a8":632,"b2b8":633,"b2c8":634,"b2d8":635,"b2e8":636,"b2f8":637,"b2g8":638,"b2h8":639,"c2a1":640,"c2b1":641,"c2c1":642,"c2d1":643,"c2e1":644,"c2f1":645,"c2g1":646,"c2h1":647,"c2a2":648,"c2b2":649,"c2c2":650,"c2d2":651,"c2e2":652,"c2f2":653,"c2g2":654,"c2h2":655,"c2a3":656,"c2b3":657,"c2c3":658,"c2d3":659,"c2e3":660,"c2f3":661,"c2g3":662,"c2h3":663,"c2a4":664,"c2b4":665,"c2c4":666,"c2d4":667,"c2e4":668,"c2f4":669,"c2g4":670,"c2h4":671,"c2a5":672,"c2b5":673,"c2c5":674,"c2d5":675,"c2e5":676,"c2f5":677,"c2g5":678,"c2h5":679,"c2a6":680,"c2b6":681,"c2c6":682,"c2d6":683,"c2e6":684,"c2f6":685,"c2g6":686,"c2h6":687,"c2a7":688,"c2b7":689,"c2c7":690,"c2d7":691,"c2e7":692,"c2f7":693,"c2g7":694,"c2h7":695,"c2a8":696,"c2b8":697,"c2c8":698,"c2d8":699,"c2e8":700,"c2f8":701,"c2g8":702,"c2h8":703,"d2a1":704,"d2b1":705,"d2c1":706,"d2d1":707,"d2e1":708,"d2f1":709,"d2g1":710,"d2h1":711,"d2a2":712,"d2b2":713,"d2c2":714,"d2d2":715,"d2e2":716,"d2f2":717,"d2g2":718,"d2h2":719,"d2a3":720,"d2b3":721,"d2c3":722,"d2d3":723,"d2e3":724,"d2f3":725,"d2g3":726,"d2h3"
2775:727,"d2a4":728,"d2b4":729,"d2c4":730,"d2d4":731,"d2e4":732,"d2f4":733,"d2g4":734,"d2h4":735,"d2a5":736,"d2b5":737,"d2c5":738,"d2d5":739,"d2e5":740,"d2f5":741,"d2g5":742,"d2h5":743,"d2a6":744,"d2b6":745,"d2c6":746,"d2d6":747,"d2e6":748,"d2f6":749,"d2g6":750,"d2h6":751,"d2a7":752,"d2b7":753,"d2c7":754,"d2d7":755,"d2e7":756,"d2f7":757,"d2g7":758,"d2h7":759,"d2a8":760,"d2b8":761,"d2c8":762,"d2d8":763,"d2e8":764,"d2f8":765,"d2g8":766,"d2h8":767,"e2a1":768,"e2b1":769,"e2c1":770,"e2d1":771,"e2e1":772,"e2f1":773,"e2g1":774,"e2h1":775,"e2a2":776,"e2b2":777,"e2c2":778,"e2d2":779,"e2e2":780,"e2f2":781,"e2g2":782,"e2h2":783,"e2a3":784,"e2b3":785,"e2c3":786,"e2d3":787,"e2e3":788,"e2f3":789,"e2g3":790,"e2h3":791,"e2a4":792,"e2b4":793,"e2c4":794,"e2d4":795,"e2e4":796,"e2f4":797,"e2g4":798,"e2h4":799,"e2a5":800,"e2b5":801,"e2c5":802,"e2d5":803,"e2e5":804,"e2f5":805,"e2g5":806,"e2h5":807,"e2a6":808,"e2b6":809,"e2c6":810,"e2d6":811,"e2e6":812,"e2f6":813,"e2g6":814,"e2h6":815,"e2a7":816,"e2b7":817,"e2c7":818,"e2d7":819,"e2e7":820,"e2f7":821,"e2g7":822,"e2h7":823,"e2a8":824,"e2b8":825,"e2c8":826,"e2d8":827,"e2e8":828,"e2f8":829,"e2g8":830,"e2h8":831,"f2a1":832,"f2b1":833,"f2c1":834,"f2d1":835,"f2e1":836,"f2f1":837,"f2g1":838,"f2h1":839,"f2a2":840,"f2b2":841,"f2c2":842,"f2d2":843,"f2e2":844,"f2f2":845,"f2g2":846,"f2h2":847,"f2a3":848,"f2b3":849,"f2c3":850,"f2d3":851,"f2e3":852,"f2f3":853,"f2g3":854,"f2h3":855,"f2a4":856,"f2b4":857,"f2c4":858,"f2d4":859,"f2e4":860,"f2f4":861,"f2g4":862,"f2h4":863,"f2a5":864,"f2b5":865,"f2c5":866,"f2d5":867,"f2e5":868,"f2f5":869,"f2g5":870,"f2h5":871,"f2a6":872,"f2b6":873,"f2c6":874,"f2d6":875,"f2e6":876,"f2f6":877,"f2g6":878,"f2h6":879,"f2a7":880,"f2b7":881,"f2c7":882,"f2d7":883,"f2e7":884,"f2f7":885,"f2g7":886,"f2h7":887,"f2a8":888,"f2b8":889,"f2c8":890,"f2d8":891,"f2e8":892,"f2f8":893,"f2g8":894,"f2h8":895,"g2a1":896,"g2b1":897,"g2c1":898,"g2d1":899,"g2e1":900,"g2f1":901,"g2g1":902,"g2h1":903,"g2a2":904,"g2b2":905,"g2c2":906,"g2d2":907,"g2e2":908,"g2f2":909,"g2g2":910,"g2h2":911,"g2a3":912,"g2b3":913,"g2c3":914,"g2d3":915,"g2e3":916,"g2f3":917,"g2g3":918,"g2h3":919,"g2a4":920,"g2b4":921,"g2c4":922,"g2d4":923,"g2e4":924,"g2f4":925,"g2g4":926,"g2h4":927,"g2a5":928,"g2b5":929,"g2c5":930,"g2d5":931,"g2e5":932,"g2f5":933,"g2g5":934,"g2h5":935,"g2a6":936,"g2b6":937,"g2c6":938,"g2d6":939,"g2e6":940,"g2f6":941,"g2g6":942,"g2h6":943,"g2a7":944,"g2b7":945,"g2c7":946,"g2d7":947,"g2e7":948,"g2f7":949,"g2g7":950,"g2h7":951,"g2a8":952,"g2b8":953,"g2c8":954,"g2d8":955,"g2e8":956,"g2f8":957,"g2g8":958,"g2h8":959,"h2a1":960,"h2b1":961,"h2c1":962,"h2d1":963,"h2e1":964,"h2f1":965,"h2g1":966,"h2h1":967,"h2a2":968,"h2b2":969,"h2c2":970,"h2d2":971,"h2e2":972,"h2f2":973,"h2g2":974,"h2h2":975,"h2a3":976,"h2b3":977,"h2c3":978,"h2d3":979,"h2e3":980,"h2f3":981,"h2g3":982,"h2h3":983,"h2a4":984,"h2b4":985,"h2c4":986,"h2d4":987,"h2e4":988,"h2f4":989,"h2g4":990,"h2h4":991,"h2a5":992,"h2b5":993,"h2c5":994,"h2d5":995,"h2e5":996,"h2f5":997,"h2g5":998,"h2h5":999,"h2a6":1000,"h2b6":1001,"h2c6":1002,"h2d6":1003,"h2e6":1004,"h2f6":1005,"h2g6":1006,"h2h6":1007,"h2a7":1008,"h2b7":1009,"h2c7":1010,"h2d7":1011,"h2e7":1012,"h2f7":1013,"h2g7":1014,"h2h7":1015,"h2a8":1016,"h2b8":1017,"h2c8":1018,"h2d8":1019,"h2e8":1020,"h2f8":1021,"h2g8":1022,"h2h8":1023,"a3a1":1024,"a3b1":1025,"a3c1":1026,"a3d1":1027,"a3e1":1028,"a3f1":1029,"a3g1":1030,"a3h1":1031,"a3a2":1032,"a3b2":1033,"a3c2":1034,"a3d2":1035,"a3e2":1036,"a3f2":1037,"a3g2":1038,"a3h2":1039,"a3a3":1040,"a3b3":1041,"a3c3":1042,"a3d3":1043,"a3e3":1044,"a3f3":1045,"a3g3":1046,"a3h3":1047,"a3a4":1048,"a3b4":1049,"a3c4":1050,"a3d4":1051,"a3e4":1052,"a3f4":1053,"a3g4":1054,"a3h4":1055,"a3a5":1056,"a3b5":1057,"a3c5":1058,"a3d5":1059,"a3e5":1060,"a3f5":1061,"a3g5":1062,"a3h5":1063,"a3a6":1064,"a3b6":1065,"a3c6":1066,"a3d6":1067,"a3e6":1068,"a3f6":1069,"a3g6":1070,"a3h6":1071,"a3a7":1072,"a3b7":1073,"a3c7":1074,"a3d7":1075,"a3e7":1076,"a3f7":1077,"a3g7":1078,"a3h7":1079,"a3a8":1080,"a3b8":1081,"a3c8":1082,"a3d8":1083,"a3e8":1084,"a3f8":1085,"a3g8":1086,"a3h8":1087,"b3a1":1088,"b3b1":1089,"b3c1":1090,"b3d1":1091,"b3e1":1092,"b3f1":1093,"b3g1":1094,"b3h1":1095,"b3a2":1096,"b3b2":1097,"b3c2":1098,"b3d2":1099,"b3e2":1100,"b3f2":1101,"b3g2":1102,"b3h2":1103,"b3a3":1104,"b3b3":1105,"b3c3":1106,"b3d3":1107,"b3e3":1108,"b3f3":1109,"b3g3":1110,"b3h3":1111,"b3a4":1112,"b3b4":1113,"b3c4":1114,"b3d4":1115,"b3e4":1116,"b3f4":1117,"b3g4":1118,"b3h4":1119,"b3a5":1120,"b3b5":1121,"b3c5":1122,"b3d5":1123,"b3e5":1124,"b3f5":1125,"b3g5":1126,"b3h5":1127,"b3a6":1128,"b3b6":1129,"b3c6":1130,"b3d6":1131,"b3e6":1132,"b3f6":1133,"b3g6":1134,"b3h6":1135,"b3a7":1136,"b3b7":1137,"b3c7":1138,"b3d7":1139,"b3e7":1140,"b3f7":1141,"b3g7":1142,"b3h7":1143,"b3a8":1144,"b3b8":1145,"b3c8":1146,"b3d8":1147,"b3e8":1148,"b3f8":1149,"b3g8":1150,"b3h8":1151,"c3a1":1152,"c3b1":1153,"c3c1":1154,"c3d1":1155,"c3e1":1156,"c3f1":1157,"c3g1":1158,"c3h1":1159,"c3a2":1160,"c3b2":1161,"c3c2":1162,"c3d2":1163,"c3e2":1164,"c3f2":1165,"c3g2":1166,"c3h2":1167,"c3a3":1168,"c3b3":1169,"c3c3":1170,"c3d3":1171,"c3e3":1172,"c3f3":1173,"c3g3":1174,"c3h3":1175,"c3a4":1176,"c3b4":1177,"c3c4":1178,"c3d4":1179,"c3e4":1180,"c3f4":1181,"c3g4":1182,"c3h4":1183,"c3a5":1184,"c3b5":1185,"c3c5":1186,"c3d5":1187,"c3e5":1188,"c3f5":1189,"c3g5":1190,"c3h5":1191,"c3a6":1192,"c3b6":1193,"c3c6":1194,"c3d6":1195,"c3e6":1196,"c3f6":1197,"c3g6":1198,"c3h6":1199,"c3a7":1200,"c3b7":1201,"c3c7":1202,"c3d7":1203,"c3e7":1204,"c3f7":1205,"c3g7":1206,"c3h7":1207,"c3a8":1208,"c3b8":1209,"c3c8":1210,"c3d8":1211,"c3e8":1212,"c3f8":1213,"c3g8":1214,"c3h8":1215,"d3a1":1216,"d3b1":1217,"d3c1":1218,"d3d1":1219,"d3e1":1220,"d3f1":1221,"d3g1":1222,"d3h1":1223,"d3a2":1224,"d3b2":1225,"d3c2":1226,"d3d2":1227,"d3e2":1228,"d3f2":1229,"d3g2":1230,"d3h2":1231,"d3a3":1232,"d3b3":1233,"d3c3":1234,"d3d3":1235,"d3e3":1236,"d3f3":1237,"d3g3":1238,"d3h3":1239,"d3a4":1240,"d3b4":1241,"d3c4":1242,"d3d4":1243,"d3e4":1244,"d3f4":1245,"d3g4":1246,"d3h4":1247,"d3a5":1248,"d3b5":1249,"d3c5":1250,"d3d5":1251,"d3e5":1252,"d3f5":1253,"d3g5":1254,"d3h5":1255,"d3a6":1256,"d3b6":1257,"d3c6":1258,"d3d6":1259,"d3e6":1260,"d3f6":1261,"d3g6":1262,"d3h6":1263,"d3a7":1264,"d3b7":1265,"d3c7":1266,"d3d7":1267,"d3e7":1268,"d3f7":1269,"d3g7":1270,"d3h7":1271,"d3a8":1272,"d3b8":1273,"d3c8":1274,"d3d8":1275,"d3e8":1276,"d3f8":1277,"d3g8":1278,"d3h8":1279,"e3a1":1280,"e3b1":1281,"e3c1":1282,"e3d1":1283,"e3e1":1284,"e3f1":1285,"e3g1":1286,"e3h1":1287,"e3a2":1288,"e3b2":1289,"e3c2":1290,"e3d2":1291,"e3e2":1292,"e3f2":1293,"e3g2":1294,"e3h2":1295,"e3a3":1296,"e3b3":1297,"e3c3":1298,"e3d3":1299,"e3e3":1300,"e3f3":1301,"e3g3":1302,"e3h3"
2775:1303,"e3a4":1304,"e3b4":1305,"e3c4":1306,"e3d4":1307,"e3e4":1308,"e3f4":1309,"e3g4":1310,"e3h4":1311,"e3a5":1312,"e3b5":1313,"e3c5":1314,"e3d5":1315,"e3e5":1316,"e3f5":1317,"e3g5":1318,"e3h5":1319,"e3a6":1320,"e3b6":1321,"e3c6":1322,"e3d6":1323,"e3e6":1324,"e3f6":1325,"e3g6":1326,"e3h6":1327,"e3a7":1328,"e3b7":1329,"e3c7":1330,"e3d7":1331,"e3e7":1332,"e3f7":1333,"e3g7":1334,"e3h7":1335,"e3a8":1336,"e3b8":1337,"e3c8":1338,"e3d8":1339,"e3e8":1340,"e3f8":1341,"e3g8":1342,"e3h8":1343,"f3a1":1344,"f3b1":1345,"f3c1":1346,"f3d1":1347,"f3e1":1348,"f3f1":1349,"f3g1":1350,"f3h1":1351,"f3a2":1352,"f3b2":1353,"f3c2":1354,"f3d2":1355,"f3e2":1356,"f3f2":1357,"f3g2":1358,"f3h2":1359,"f3a3":1360,"f3b3":1361,"f3c3":1362,"f3d3":1363,"f3e3":1364,"f3f3":1365,"f3g3":1366,"f3h3":1367,"f3a4":1368,"f3b4":1369,"f3c4":1370,"f3d4":1371,"f3e4":1372,"f3f4":1373,"f3g4":1374,"f3h4":1375,"f3a5":1376,"f3b5":1377,"f3c5":1378,"f3d5":1379,"f3e5":1380,"f3f5":1381,"f3g5":1382,"f3h5":1383,"f3a6":1384,"f3b6":1385,"f3c6":1386,"f3d6":1387,"f3e6":1388,"f3f6":1389,"f3g6":1390,"f3h6":1391,"f3a7":1392,"f3b7":1393,"f3c7":1394,"f3d7":1395,"f3e7":1396,"f3f7":1397,"f3g7":1398,"f3h7":1399,"f3a8":1400,"f3b8":1401,"f3c8":1402,"f3d8":1403,"f3e8":1404,"f3f8":1405,"f3g8":1406,"f3h8":1407,"g3a1":1408,"g3b1":1409,"g3c1":1410,"g3d1":1411,"g3e1":1412,"g3f1":1413,"g3g1":1414,"g3h1":1415,"g3a2":1416,"g3b2":1417,"g3c2":1418,"g3d2":1419,"g3e2":1420,"g3f2":1421,"g3g2":1422,"g3h2":1423,"g3a3":1424,"g3b3":1425,"g3c3":1426,"g3d3":1427,"g3e3":1428,"g3f3":1429,"g3g3":1430,"g3h3":1431,"g3a4":1432,"g3b4":1433,"g3c4":1434,"g3d4":1435,"g3e4":1436,"g3f4":1437,"g3g4":1438,"g3h4":1439,"g3a5":1440,"g3b5":1441,"g3c5":1442,"g3d5":1443,"g3e5":1444,"g3f5":1445,"g3g5":1446,"g3h5":1447,"g3a6":1448,"g3b6":1449,"g3c6":1450,"g3d6":1451,"g3e6":1452,"g3f6":1453,"g3g6":1454,"g3h6":1455,"g3a7":1456,"g3b7":1457,"g3c7":1458,"g3d7":1459,"g3e7":1460,"g3f7":1461,"g3g7":1462,"g3h7":1463,"g3a8":1464,"g3b8":1465,"g3c8":1466,"g3d8":1467,"g3e8":1468,"g3f8":1469,"g3g8":1470,"g3h8":1471,"h3a1":1472,"h3b1":1473,"h3c1":1474,"h3d1":1475,"h3e1":1476,"h3f1":1477,"h3g1":1478,"h3h1":1479,"h3a2":1480,"h3b2":1481,"h3c2":1482,"h3d2":1483,"h3e2":1484,"h3f2":1485,"h3g2":1486,"h3h2":1487,"h3a3":1488,"h3b3":1489,"h3c3":1490,"h3d3":1491,"h3e3":1492,"h3f3":1493,"h3g3":1494,"h3h3":1495,"h3a4":1496,"h3b4":1497,"h3c4":1498,"h3d4":1499,"h3e4":1500,"h3f4":1501,"h3g4":1502,"h3h4":1503,"h3a5":1504,"h3b5":1505,"h3c5":1506,"h3d5":1507,"h3e5":1508,"h3f5":1509,"h3g5":1510,"h3h5":1511,"h3a6":1512,"h3b6":1513,"h3c6":1514,"h3d6":1515,"h3e6":1516,"h3f6":1517,"h3g6":1518,"h3h6":1519,"h3a7":1520,"h3b7":1521,"h3c7":1522,"h3d7":1523,"h3e7":1524,"h3f7":1525,"h3g7":1526,"h3h7":1527,"h3a8":1528,"h3b8":1529,"h3c8":1530,"h3d8":1531,"h3e8":1532,"h3f8":1533,"h3g8":1534,"h3h8":1535,"a4a1":1536,"a4b1":1537,"a4c1":1538,"a4d1":1539,"a4e1":1540,"a4f1":1541,"a4g1":1542,"a4h1":1543,"a4a2":1544,"a4b2":1545,"a4c2":1546,"a4d2":1547,"a4e2":1548,"a4f2":1549,"a4g2":1550,"a4h2":1551,"a4a3":1552,"a4b3":1553,"a4c3":1554,"a4d3":1555,"a4e3":1556,"a4f3":1557,"a4g3":1558,"a4h3":1559,"a4a4":1560,"a4b4":1561,"a4c4":1562,"a4d4":1563,"a4e4":1564,"a4f4":1565,"a4g4":1566,"a4h4":1567,"a4a5":1568,"a4b5":1569,"a4c5":1570,"a4d5":1571,"a4e5":1572,"a4f5":1573,"a4g5":1574,"a4h5":1575,"a4a6":1576,"a4b6":1577,"a4c6":1578,"a4d6":1579,"a4e6":1580,"a4f6":1581,"a4g6":1582,"a4h6":1583,"a4a7":1584,"a4b7":1585,"a4c7":1586,"a4d7":1587,"a4e7":1588,"a4f7":1589,"a4g7":1590,"a4h7":1591,"a4a8":1592,"a4b8":1593,"a4c8":1594,"a4d8":1595,"a4e8":1596,"a4f8":1597,"a4g8":1598,"a4h8":1599,"b4a1":1600,"b4b1":1601,"b4c1":1602,"b4d1":1603,"b4e1":1604,"b4f1":1605,"b4g1":1606,"b4h1":1607,"b4a2":1608,"b4b2":1609,"b4c2":1610,"b4d2":1611,"b4e2":1612,"b4f2":1613,"b4g2":1614,"b4h2":1615,"b4a3":1616,"b4b3":1617,"b4c3":1618,"b4d3":1619,"b4e3":1620,"b4f3":1621,"b4g3":1622,"b4h3":1623,"b4a4":1624,"b4b4":1625,"b4c4":1626,"b4d4":1627,"b4e4":1628,"b4f4":1629,"b4g4":1630,"b4h4":1631,"b4a5":1632,"b4b5":1633,"b4c5":1634,"b4d5":1635,"b4e5":1636,"b4f5":1637,"b4g5":1638,"b4h5":1639,"b4a6":1640,"b4b6":1641,"b4c6":1642,"b4d6":1643,"b4e6":1644,"b4f6":1645,"b4g6":1646,"b4h6":1647,"b4a7":1648,"b4b7":1649,"b4c7":1650,"b4d7":1651,"b4e7":1652,"b4f7":1653,"b4g7":1654,"b4h7":1655,"b4a8":1656,"b4b8":1657,"b4c8":1658,"b4d8":1659,"b4e8":1660,"b4f8":1661,"b4g8":1662,"b4h8":1663,"c4a1":1664,"c4b1":1665,"c4c1":1666,"c4d1":1667,"c4e1":1668,"c4f1":1669,"c4g1":1670,"c4h1":1671,"c4a2":1672,"c4b2":1673,"c4c2":1674,"c4d2":1675,"c4e2":1676,"c4f2":1677,"c4g2":1678,"c4h2":1679,"c4a3":1680,"c4b3":1681,"c4c3":1682,"c4d3":1683,"c4e3":1684,"c4f3":1685,"c4g3":1686,"c4h3":1687,"c4a4":1688,"c4b4":1689,"c4c4":1690,"c4d4":1691,"c4e4":1692,"c4f4":1693,"c4g4":1694,"c4h4":1695,"c4a5":1696,"c4b5":1697,"c4c5":1698,"c4d5":1699,"c4e5":1700,"c4f5":1701,"c4g5":1702,"c4h5":1703,"c4a6":1704,"c4b6":1705,"c4c6":1706,"c4d6":1707,"c4e6":1708,"c4f6":1709,"c4g6":1710,"c4h6":1711,"c4a7":1712,"c4b7":1713,"c4c7":1714,"c4d7":1715,"c4e7":1716,"c4f7":1717,"c4g7":1718,"c4h7":1719,"c4a8":1720,"c4b8":1721,"c4c8":1722,"c4d8":1723,"c4e8":1724,"c4f8":1725,"c4g8":1726,"c4h8":1727,"d4a1":1728,"d4b1":1729,"d4
2775c1":1730,"d4d1":1731,"d4e1":1732,"d4f1":1733,"d4g1":1734,"d4h1":1735,"d4a2":1736,"d4b2":1737,"d4c2":1738,"d4d2":1739,"d4e2":1740,"d4f2":1741,"d4g2":1742,"d4h2":1743,"d4a3":1744,"d4b3":1745,"d4c3":1746,"d4d3":1747,"d4e3":1748,"d4f3":1749,"d4g3":1750,"d4h3":1751,"d4a4":1752,"d4b4":1753,"d4c4":1754,"d4d4":1755,"d4e4":1756,"d4f4":1757,"d4g4":1758,"d4h4":1759,"d4a5":1760,"d4b5":1761,"d4c5":1762,"d4d5":1763,"d4e5":1764,"d4f5":1765,"d4g5":1766,"d4h5":1767,"d4a6":1768,"d4b6":1769,"d4c6":1770,"d4d6":1771,"d4e6":1772,"d4f6":1773,"d4g6":1774,"d4h6":1775,"d4a7":1776,"d4b7":1777,"d4c7":1778,"d4d7":1779,"d4e7":1780,"d4f7":1781,"d4g7":1782,"d4h7":1783,"d4a8":1784,"d4b8":1785,"d4c8":1786,"d4d8":1787,"d4e8":1788,"d4f8":1789,"d4g8":1790,"d4h8":1791,"e4a1":1792,"e4b1":1793,"e4c1":1794,"e4d1":1795,"e4e1":1796,"e4f1":1797,"e4g1":1798,"e4h1":1799,"e4a2":1800,"e4b2":1801,"e4c2":1802,"e4d2":1803,"e4e2":1804,"e4f2":1805,"e4g2":1806,"e4h2":1807,"e4a3":1808,"e4b3":1809,"e4c3":1810,"e4d3":1811,"e4e3":1812,"e4f3":1813,"e4g3":1814,"e4h3":1815,"e4a4":1816,"e4b4":1817,"e4c4":1818,"e4d4":1819,"e4e4":1820,"e4f4":1821,"e4g4":1822,"e4h4":1823,"e4a5":1824,"e4b5":1825,"e4c5":1826,"e4d5":1827,"e4e5":1828,"e4f5":1829,"e4g5":1830,"e4h5":1831,"e4a6":1832,"e4b6":1833,"e4c6":1834,"e4d6":1835,"e4e6":1836,"e4f6":1837,"e4g6":1838,"e4h6":1839,"e4a7":1840,"e4b7":1841,"e4c7":1842,"e4d7":1843,"e4e7":1844,"e4f7":1845,"e4g7":1846,"e4h7":1847,"e4a8":1848,"e4b8":1849,"e4c8":1850,"e4d8":1851,"e4e8":1852,"e4f8":1853,"e4g8":1854,"e4h8":1855,"f4a1":1856,"f4b1":1857,"f4c1":1858,"f4d1":1859,"f4e1":1860,"f4f1":1861,"f4g1":1862,"f4h1":1863,"f4a2":1864,"f4b2":1865,"f4c2":1866,"f4d2":1867,"f4e2":1868,"f4f2":1869,"f4g2":1870,"f4h2":1871,"f4a3":1872,"f4b3":1873,"f4c3":1874,"f4d3":1875,"f4e3":1876,"f4f3":1877,"f4g3":1878,"f4h3":1879,"f4a4":1880,"f4b4":1881,"f4c4":1882,"f4d4":1883,"f4e4":1884,"f4f4":1885,"f4g4":1886,"f4h4":1887,"f4a5":1888,"f4b5":1889,"f4c5":1890,"f4d5":1891,"f4e5":1892,"f4f5":1893,"f4g5":1894,"f4h5":1895,"f4a6":1896,"f4b6":1897,"f4c6":1898,"f4d6":1899,"f4e6":1900,"f4f6":1901,"f4g6":1902,"f4h6":1903,"f4a7":1904,"f4b7":1905,"f4c7":1906,"f4d7":1907,"f4e7":1908,"f4f7":1909,"f4g7":1910,"f4h7":1911,"f4a8":1912,"f4b8":1913,"f4c8":1914,"f4d8":1915,"f4e8":1916,"f4f8":1917,"f4g8":1918,"f4h8":1919,"g4a1":1920,"g4b1":1921,"g4c1":1922,"g4d1":1923,"g4e1":1924,"g4f1":1925,"g4g1":1926,"g4h1":1927,"g4a2":1928,"g4b2":1929,"g4c2":1930,"g4d2":1931,"g4e2":1932,"g4f2":1933,"g4g2":1934,"g4h2":1935,"g4a3":1936,"g4b3":1937,"g4c3":1938,"g4d3":1939,"g4e3":1940,"g4f3":1941,"g4g3":1942,"g4h3":1943,"g4a4":1944,"g4b4":1945,"g4c4":1946,"g4d4":1947,"g4e4":1948,"g4f4":1949,"g4g4":1950,"g4h4":1951,"g4a5":1952,"g4b5":1953,"g4c5":1954,"g4d5":1955,"g4e5":1956,"g4f5":1957,"g4g5":1958,"g4h5":1959,"g4a6":1960,"g4b6":1961,"g4c6":1962,"g4d6":1963,"g4e6":1964,"g4f6":1965,"g4g6":1966,"g4h6":1967,"g4a7":1968,"g4b7":1969,"g4c7":1970,"g4d7":1971,"g4e7":1972,"g4f7":1973,"g4g7":1974,"g4h7":1975,"g4a8":1976,"g4b8":1977,"g4c8":1978,"g4d8":1979,"g4e8":1980,"g4f8":1981,"g4g8":1982,"g4h8":1983,"h4a1":1984,"h4b1":1985,"h4c1":1986,"h4d1":1987,"h4e1":1988,"h4f1":1989,"h4g1":1990,"h4h1":1991,"h4a2":1992,"h4b2":1993,"h4c2":1994,"h4d2":1995,"h4e2":1996,"h4f2":1997,"h4g2":1998,"h4h2":1999,"h4a3":2000,"h4b3":2001,"h4c3":2002,"h4d3":2003,"h4e3":2004,"h4f3":2005,"h4g3":2006,"h4h3":2007,"h4a4":2008,"h4b4":2009,"h4c4":2010,"h4d4":2011,"h4e4":2012,"h4f4":2013,"h4g4":2014,"h4h4":2015,"h4a5":2016,"h4b5":2017,"h4c5":2018,"h4d5":2019,"h4e5":2020,"h4f5":2021,"h4g5":2022,"h4h5":2023,"h4a6":2024,"h4b6":2025,"h4c6":2026,"h4d6":2027,"h4e6":2028,"h4f6":2029,"h4g6":2030,"h4h6":2031,"h4a7":2032,"h4b7":2033,"h4c7":2034,"h4d7":2035,"h4e7":2036,"h4f7":2037,"h4g7":2038,"h4h7":2039,"h4a8"
2775:2040,"h4b8":2041,"h4c8":2042,"h4d8":2043,"h4e8":2044,"h4f8":2045,"h4g8":2046,"h4h8":2047,"a5a1":2048,"a5b1":2049,"a5c1":2050,"a5d1":2051,"a5e1":2052,"a5f1":2053,"a5g1":2054,"a5h1":2055,"a5a2":2056,"a5b2":2057,"a5c2":2058,"a5d2":2059,"a5e2":2060,"a5f2":2061,"a5g2":2062,"a5h2":2063,"a5a3":2064,"a5b3":2065,"a5c3":2066,"a5d3":2067,"a5e3":2068,"a5f3":2069,"a5g3":2070,"a5h3":2071,"a5a4":2072,"a5b4":2073,"a5c4":2074,"a5d4":2075,"a5e4":2076,"a5f4":2077,"a5g4":2078,"a5h4":2079,"a5a5":2080,"a5b5":2081,"a5c5":2082,"a5d5":2083,"a5e5":2084,"a5f5":2085,"a5g5":2086,"a5h5":2087,"a5a6":2088,"a5b6":2089,"a5c6":2090,"a5d6":2091,"a5e6":2092,"a5f6":2093,"a5g6":2094,"a5h6":2095,"a5a7":2096,"a5b7":2097,"a5c7":2098,"a5d7":2099,"a5e7":2100,"a5f7":2101,"a5g7":2102,"a5h7":2103,"a5a8":2104,"a5b8":2105,"a5c8":2106,"a5d8":2107,"a5e8":2108,"a5f8":2109,"a5g8":2110,"a5h8":2111,"b5a1":2112,"b5b1":2113,"b5c1":2114,"b5d1":2115,"b5e1":2116,"b5f1":2117,"b5g1":2118,"b5h1":2119,"b5a2":2120,"b5b2":2121,"b5c2":2122,"b5d2":2123,"b5e2":2124,"b5f2":2125,"b5g2":2126,"b5h2":2127,"b5a3":2128,"b5b3":2129,"b5c3":2130,"b5d3":2131,"b5e3":2132,"b5f3":2133,"b5g3":2134,"b5h3":2135,"b5a4":2136,"b5b4":2137,"b5c4":2138,"b5d4":2139,"b5e4":2140,"b5f4":2141,"b5g4":2142,"b5h4":2143,"b5a5":2144,"b5b5":2145,"b5c5":2146,"b5d5":2147,"b5e5":2148,"b5f5":2149,"b5g5":2150,"b5h5":2151,"b5a6":2152,"b5b6":2153,"b5c6":2154,"b5d6":2155,"b5e6":2156,"b5f6":2157,"b5g6":2158,"b5h6":2159,"b5a7":2160,"b5b7":2161,"b5c7":2162,"b5d7":2163,"b5e7":2164,"b5f7":2165,"b5g7":2166,"b5h7":2167,"b5a8":2168,"b5b8":2169,"b5c8":2170,"b5d8":2171,"b5e8":2172,"b5f8":2173,"b5g8":2174,"b5h8":2175,"c5a1":2176,"c5b1":2177,"c5c1":2178,"c5d1":2179,"c5e1":2180,"c5f1":2181,"c5g1":2182,"c5h1":2183,"c5a2":2184,"c5b2":2185,"c5c2":2186,"c5d2":2187,"c5e2":2188,"c5f2":2189,"c5g2":2190,"c5h2":2191,"c5a3":2192,"c5b3":2193,"c5c3":2194,"c5d3":2195,"c5e3":2196,"c5f3":2197,"c5g3":2198,"c5h3":2199,"c5a4":2200,"c5b4":2201,"c5c4":2202,"c5d4":2203,"c5e4":2204,"c5f4":2205,"c5g4":2206,"c5h4":2207,"c5a5":2208,"c5b5":2209,"c5c5":2210,"c5d5":2211,"c5e5":2212,"c5f5":2213,"c5g5":2214,"c5h5":2215,"c5a6":2216,"c5b6":2217,"c5c6":2218,"c5d6":2219,"c5e6":2220,"c5f6":2221,"c5g6":2222,"c5h6":2223,"c5a7":2224,"c5b7":2225,"c5c7":2226,"c5d7":2227,"c5e7":2228,"c5f7":2229,"c5g7":2230,"c5h7":2231,"c5a8":2232,"c5b8":2233,"c5c8":2234,"c5d8":2235,"c5e8":2236,"c5f8":2237,"c5g8":2238,"c5h8":2239,"d5a1":2240,"d5b1":2241,"d5c1":2242,"d5d1":2243,"d5e1":2244,"d5f1":2245,"d5g1":2246,"d5h1":2247,"d5a2":2248,"d5b2":2249,"d5c2":2250,"d5d2":2251,"d5e2":2252,"d5f2":2253,"d5g2":2254,"d5h2":2255,"d5a3":2256,"d5b3":2257,"d5c3":2258,"d5d3":2259,"d5e3":2260,"d5f3":2261,"d5g3":2262,"d5h3":2263,"d5a4":2264,"d5b4":2265,"d5c4":2266,"d5d4":2267,"d5e4":2268,"d5f4":2269,"d5g4":2270,"d5h4":2271,"d5a5":2272,"d5b5":2273,"d5c5":2274,"d5d5":2275,"d5e5":2276,"d5f5":2277,"d5g5":2278,"d5h5":2279,"d5a6":2280,"d5b6":2281,"d5c6":2282,"d5d6":2283,"d5e6":2284,"d5f6":2285,"d5g6":2286,"d5h6":2287,"d5a7":2288,"d5b7":2289,"d5c7":2290,"d5d7":2291,"d5e7":2292,"d5f7":2293,"d5g7":2294,"d5h7":2295,"d5a8":2296,"d5b8":2297,"d5c8":2298,"d5d8":2299,"d5e8":2300,"d5f8":2301,"d5g8":2302,"d5h8":2303,"e5a1":2304,"e5b1":2305,"e5c1":2306,"e5d1":2307,"e5e1":2308,"e5f1":2309,"e5g1":2310,"e5h1":2311,"e5a2":2312,"e5b2":2313,"e5c2":2314,"e5d2":2315,"e5e2":2316,"e5f2":2317,"e5g2":2318,"e5h2":2319,"e5a3":2320,"e5b3":2321,"e5c3":2322,"e5d3":2323,"e5e3":2324,"e5f3":2325,"e5g3":2326,"e5h3":2327,"e5a4":2328,"e5b4":2329,"e5c4":2330,"e5d4":2331,"e5e4":2332,"e5f4":2333,"e5g4":2334,"e5h4":2335,"e5a5":2336,"e5b5":2337,"e5c5":2338,"e5d5":2339,"e5e5":2340,"e5f5":2341,"e5g5":2342,"e5h5":2343,"e5a6":2344,"e5b6":2345,"e5c6":2346,"e5d6":2347,"e5e6":2348,"e5f6":2349,"e5g6":2350,"e5h6":2351,"e5a7":2352,"e5b7":2353,"e5c7":2354,"e5d7":2355,"e5e7":2356,"e5f7":2357,"e5g7":2358,"e5h7":2359,"e5a8":2360,"e5b8":2361,"e5c8":2362,"e5d8":2363,"e5e8":2364,"e5f8":2365,"e5g8":2366,"e5h8":2367,"f5a1":2368,"f5b1":2369,"f5c1":2370,"f5d1":2371,"f5e1":2372,"f5f1":2373,"f5g1":2374,"f5h1":2375,"f5a2":2376,"f5b2":2377,"f5c2":2378,"f5d2":2379,"f5e2":2380,"f5f2":2381,"f5g2":2382,"f5h2":2383,"f5a3":2384,"f5b3":2385,"f5c3":2386,"f5d3":2387,"f5e3":2388,"f5f3":2389,"f5g3":2390,"f5h3":2391,"f5a4":2392,"f5b4":2393,"f5c4":2394,"f5d4":2395,"f5e4":2396,"f5f4":2397,"f5g4":2398,"f5h4":2399,"f5a5":2400,"f5b5":2401,"f5c5":2402,"f5d5":2403,"f5e5":2404,"f5f5":2405,"f5g5":2406,"f5h5":2407,"f5a6":2408,"f5b6":2409,"f5c6":2410,"f5d6":2411,"f5e6":2412,"f5f6":2413,"f5g6":2414,"f5h6":2415,"f5a7":2416,"f5b7":2417,"f5c7":2418,"f5d7":2419,"f5e7":2420,"f5f7":2421,"f5g7":2422,"f5h7":2423,"f5a8":2424,"f5b8":2425,"f5c8":2426,"f5d8":2427,"f5e8":2428,"f5f8":2429,"f5g8":2430,"f5h8":2431,"g5a1":2432,"g5b1":2433,"g5c1":2434,"g5d1":2435,"g5e1":2436,"g5f1":2437,"g5g1":2438,"g5h1":2439,"g5a2":2440,"g5b2":2441,"g5c2":2442,"g5d2":2443,"g5e2":2444,"g5f2":2445,"g5g2":2446,"g5h2":2447,"g5a3":2448,"g5b3":2449,"g5c3":2450,"g5d3":2451,"g5e3":2452,"g5f3":2453,"g5g3":2454,"g5h3":2455,"g5a4":2456,"g5b4":2457,"g5c4":2458,"g5d4":2459,"g5e4":2460,"g5f4":2461,"g5g4":2462,"g5h4":2463,"g5a5":2464,"g5b5":2465,"g5c5":2466,"g5d5":2467,"g5e5":2468,"g5f5":2469,"g5g5":2470,"g5h5":2471,"g5a6":2472,"g5b6":2473,"g5c6":2474,"g5d6":2475,"g5e6":2476,"g5f6":2477,"g5g6":2478,"g5h6":2479,"g5a7":2480,"g5b7":2481,"g5c7":2482,"g5d7":2483,"g5e7":2484,"g5f7":2485,"g5g7":2486,"g5h7":2487,"g5a8":2488,"g5b8":2489,"g5c8":2490,"g5d8":2491,"g5e8":2492,"g5f8":2493,"g5g8":2494,"g5h8":2495,"h5a1":2496,"h5b1":2497,"h5c1":2498,"h5d1":2499,"h5e1":2500,"h5f1":2501,"h5g1":2502,"h5h1":2503,"h5a2":2504,"h5b2":2505,"h5c2":2506,"h5d2":2507,"h5e2":2508,"h5f2":2509,"h5g2":2510,"h5h2":2511,"h5a3":2512,"h5b3":2513,"h5c3":2514,"h5d3":2515,"h5e3":2516,"h5f3":2517,"h5g3":2518,"h5h3":2519,"h5a4":2520,"h5b4":2521,"h5c4":2522,"h5d4":2523,"h5e4":2524,"h5f4":2525,"h5g4":2526,"h5h4":2527,"h5a5":2528,"h5b5":2529,"h5c5":2530,"h5d5":2531,"h5e5":2532,"h5f5":2533,"h5g5":2534,"h5h5":2535,"h5a6":2536,"h5b6":2537,"h5c6":2538,"h5d6":2539,"h5e6":2540,"h5f6":2541,"h5g6":2542,"h5h6":2543,"h5a7":2544,"h5b7":2545,"h5c7":2546,"h5d7":2547,"h5e7":2548,"h5f7":2549,"h5g7":2550,"h5h7":2551,"h5a8":2552,"h5b8":2553,"h5c8":2554,"h5d8":2555,"h5e8":2556,"h5f8":2557,"h5g8":2558,"h5h8":2559,"a6a1":2560,"a6b1":2561,"a6c1":2562,"a6d1":2563,"a6e1":2564,"a6f1":2565,"a6g1":2566,"a6h1":2567,"a6a2":2568,"a6b2":2569,"a6c2":2570,"a6d2":2571,"a6e2":2572,"a6f2":2573,"a6g2":2574,"a6h2":2575,"a6a3":2576,"a6b3":2577,"a6c3":2578,"a6d3":2579,"a6e3":2580,"a6f3":2581,"a6g3":2582,"a6h3":2583,"a6a4":2584,"a6b4":2585,"a6c4":2586,"a6d4":2587,"a6e4":2588,"a6f4":2589,"a6g4":2590,"a6h4":2591,"a6a5":2592,"a6b5":2593,"a6c5":2594,"a6d5":2595,"a6e5":2596,"a6f5":2597,"a6g5":2598,"a6h5":2599,"a6a6":2600,"a6b6":2601,"a6c6":2602,"a6d6":2603,"a6e6":2604,"a6f6":2605,"a6g6":2606,"a6h6":2607,"a6a7":2608,"a6b7":2609,"a6c7":2610,"a6d7":2611,"a6e7":2612,"a6f7":2613,"a6g7":2614,"a6h7":2615,"a6a8":2616,"a6b8":2617,"a6c8":2618,"a6d8":2619,"a6e8":2620,"a6f8":2621,"a6g8":2622,"a6h8":2623,"b6a1":2624,"b6b1":2625,"b6c1":2626,"b6d1":2
2775627,"b6e1":2628,"b6f1":2629,"b6g1":2630,"b6h1":2631,"b6a2":2632,"b6b2":2633,"b6c2":2634,"b6d2":2635,"b6e2":2636,"b6f2":2637,"b6g2":2638,"b6h2":2639,"b6a3":2640,"b6b3":2641,"b6c3":2642,"b6d3":2643,"b6e3":2644,"b6f3":2645,"b6g3":2646,"b6h3":2647,"b6a4":2648,"b6b4":2649,"b6c4":2650,"b6d4":2651,"b6e4":2652,"b6f4":2653,"b6g4":2654,"b6h4":2655,"b6a5":2656,"b6b5":2657,"b6c5":2658,"b6d5":2659,"b6e5":2660,"b6f5":2661,"b6g5":2662,"b6h5":2663,"b6a6":2664,"b6b6":2665,"b6c6":2666,"b6d6":2667,"b6e6":2668,"b6f6":2669,"b6g6":2670,"b6h6":2671,"b6a7":2672,"b6b7":2673,"b6c7":2674,"b6d7":2675,"b6e7":2676,"b6f7":2677,"b6g7":2678,"b6h7":2679,"b6a8":2680,"b6b8":2681,"b6c8":2682,"b6d8":2683,"b6e8":2684,"b6f8":2685,"b6g8":2686,"b6h8":2687,"c6a1":2688,"c6b1":2689,"c6c1":2690,"c6d1":2691,"c6e1":2692,"c6f1":2693,"c6g1":2694,"c6h1":2695,"c6a2":2696,"c6b2":2697,"c6c2":2698,"c6d2":2699,"c6e2":2700,"c6f2":2701,"c6g2":2702,"c6h2":2703,"c6a3":2704,"c6b3":2705,"c6c3":2706,"c6d3":2707,"c6e3":2708,"c6f3":2709,"c6g3":2710,"c6h3":2711,"c6a4":2712,"c6b4":2713,"c6c4":2714,"c6d4":2715,"c6e4":2716,"c6f4":2717,"c6g4":2718,"c6h4":2719,"c6a5":2720,"c6b5":2721,"c6c5":2722,"c6d5":2723,"c6e5":2724,"c6f5":2725,"c6g5":2726,"c6h5":2727,"c6a6":2728,"c6b6":2729,"c6c6":2730,"c6d6":2731,"c6e6":2732,"c6f6":2733,"c6g6":2734,"c6h6":2735,"c6a7":2736,"c6b7":2737,"c6c7":2738,"c6d7":2739,"c6e7":2740,"c6f7":2741,"c6g7":2742,"c6h7":2743,"c6a8":2744,"c6b8":2745,"c6c8":2746,"c6d8":2747,"c6e8":2748,"c6f8":2749,"c6g8":2750,"c6h8":2751,"d6a1":2752,"d6b1":2753,"d6c1":2754,"d6d1":2755,"d6e1":2756,"d6f1":2757,"d6g1":2758,"d6h1":2759,"d6a2":2760,"d6b2":2761,"d6c2":2762,"d6d2":2763,"d6e2":2764,"d6f2":2765,"d6g2":2766,"d6h2":2767,"d6a3":2768,"d6b3":2769,"d6c3":2770,"d6d3":2771,"d6e3":2772,"d6f3":2773,"d6g3":2774,"d6h3":2775,"d6a4":2776,"d6b4":2777,"d6c4":2778,"d6d4":2779,"d6e4":2780,"d6f4":2781,"d6g4":2782,"d6h4":2783,"d6a5":2784,"d6b5":2785,"d6c5":2786,"d6d5":2787,"d6e5":2788,"d6f5":2789,"d6g5":2790,"d6h5":2791,"d6a6":2792,"d6b6":2793,"d6c6":2794,"d6d6":2795,"d6e6":2796,"d6f6":2797,"d6g6":2798,"d6h6":2799,"d6a7":2800,"d6b7":2801,"d6c7":2802,"d6d7":2803,"d6e7":2804,"d6f7":2805,"d6g7":2806,"d6h7":2807,"d6a8":2808,"d6b8":2809,"d6c8":2810,"d6d8":2811,"d6e8":2812,"d6f8":2813,"d6g8":2814,"d6h8":2815,"e6a1":2816,"e6b1":2817,"e6c1":2818,"e6d1":2819,"e6e1":2820,"e6f1":2821,"e6g1":2822,"e6h1":2823,"e6a2":2824,"e6b2":2825,"e6c2":2826,"e6d2":2827,"e6e2":2828,"e6f2":2829,"e6g2":2830,"e6h2":2831,"e6a3":2832,"e6b3":2833,"e6c3":2834,"e6d3":2835,"e6e3":2836,"e6f3":2837,"e6g3":2838,"e6h3":2839,"e6a4":2840,"e6b4":2841,"e6c4":2842,"e6d4":2843,"e6e4":2844,"e6f4":2845,"e6g4":2846,"e6h4":2847,"e6a5":2848,"e6b5":2849,"e6c5":2850,"e6d5":2851,"e6e5":2852,"e6f5":2853,"e6g5":2854,"e6h5":2855,"e6a6":2856,"e6b6":2857,"e6c6":2858,"e6d6":2859,"e6e6":2860,"e6f6":2861,"e6g6":2862,"e6h6":2863,"e6a7":2864,"e6b7":2865,"e6c7":2866,"e6d7":2867,"e6e7":2868,"e6f7":2869,"e6g7":2870,"e6h7":2871,"e6a8":2872,"e6b8":2873,"e6c8":2874,"e6d8":2875,"e6e8":2876,"e6f8":2877,"e6g8":2878,"e6h8":2879,"f6a1":2880,"f6b1":2881,"f6c1":2882,"f6d1":2883,"f6e1":2884,"f6f1":2885,"f6g1":2886,"f6h1":2887,"f6a2":2888,"f6b2":2889,"f6c2":2890,"f6d2":2891,"f6e2":2892,"f6f2":2893,"f6g2":2894,"f6h2":2895,"f6a3":2896,"f6b3":2897,"f6c3":2898,"f6d3":2899,"f6e3":2900,"f6f3":2901,"f6g3":2902,"f6h3":2903,"f6a4":2904,"f6b4":2905,"f6c4":2906,"f6d4":2907,"f6e4":2908,"f6f4":2909,"f6g4":2910,"f6h4":2911,"f6a5":2912,"f6b5":2913,"f6c5":2914,"f6d5":2915,"f6e5":2916,"f6f5":2917,"f6g5":2918,"f6h5":2919,"f6a6":2920,"f6b6":2921,"f6c6":2922,"f6d6":2923,"f6e6":2924,"f6f6":2925,"f6g6":2926,"f6h6":2927,"f6a7":2928,"f6b7":2929,"f6c7":2930,"f6d7":2931,"f6e7":2932,"f6f7":2933,"f6g7":2934,"f6h7":2935,"f6a8":2936,"f6b8":2937,"f6c8":2938,"f6d8":2939,"f6e8":2940,"f6f8":2941,"f6g8":2942,"f6h8":2943,"g6a1":2944,"g6b1":2945,"g6c1":2946,"g6d1":2947,"g6e1":2948,"g6f1":2949,"g6g1":2950,"g6h1":2951,"g6a2":2952,"g6b2":2953,"g6c2":2954,"g6d2":2955,"g6e2":2956,"g6f2":2957,"g6g2":2958,"g6h2":2959,"g6a3":2960,"g6b3":2961,"g6c3":2962,"g6d3":2963,"g6e3":2964,"g6f3":2965,"g6g3":2966,"g6h3":2967,"g6a4":2968,"g6b4":2969,"g6c4":2970,"g6d4":2971,"g6e4":2972,"g6f4":2973,"g6g4"
2775:2974,"g6h4":2975,"g6a5":2976,"g6b5":2977,"g6c5":2978,"g6d5":2979,"g6e5":2980,"g6f5":2981,"g6g5":2982,"g6h5":2983,"g6a6":2984,"g6b6":2985,"g6c6":2986,"g6d6":2987,"g6e6":2988,"g6f6":2989,"g6g6":2990,"g6h6":2991,"g6a7":2992,"g6b7":2993,"g6c7":2994,"g6d7":2995,"g6e7":2996,"g6f7":2997,"g6g7":2998,"g6h7":2999,"g6a8":3000,"g6b8":3001,"g6c8":3002,"g6d8":3003,"g6e8":3004,"g6f8":3005,"g6g8":3006,"g6h8":3007,"h6a1":3008,"h6b1":3009,"h6c1":3010,"h6d1":3011,"h6e1":3012,"h6f1":3013,"h6g1":3014,"h6h1":3015,"h6a2":3016,"h6b2":3017,"h6c2":3018,"h6d2":3019,"h6e2":3020,"h6f2":3021,"h6g2":3022,"h6h2":3023,"h6a3":3024,"h6b3":3025,"h6c3":3026,"h6d3":3027,"h6e3":3028,"h6f3":3029,"h6g3":3030,"h6h3":3031,"h6a4":3032,"h6b4":3033,"h6c4":3034,"h6d4":3035,"h6e4":3036,"h6f4":3037,"h6g4":3038,"h6h4":3039,"h6a5":3040,"h6b5":3041,"h6c5":3042,"h6d5":3043,"h6e5":3044,"h6f5":3045,"h6g5":3046,"h6h5":3047,"h6a6":3048,"h6b6":3049,"h6c6":3050,"h6d6":3051,"h6e6":3052,"h6f6":3053,"h6g6":3054,"h6h6":3055,"h6a7":3056,"h6b7":3057,"h6c7":3058,"h6d7":3059,"h6e7":3060,"h6f7":3061,"h6g7":3062,"h6h7":3063,"h6a8":3064,"h6b8":3065,"h6c8":3066,"h6d8":3067,"h6e8":3068,"h6f8":3069,"h6g8":3070,"h6h8":3071,"a7a1":3072,"a7b1":3073,"a7c1":3074,"a7d1":3075,"a7e1":3076,"a7f1":3077,"a7g1":3078,"a7h1":3079,"a7a2":3080,"a7b2":3081,"a7c2":3082,"a7d2":3083,"a7e2":3084,"a7f2":3085,"a7g2":3086,"a7h2":3087,"a7a3":3088,"a7b3":3089,"a7c3":3090,"a7d3":3091,"a7e3":3092,"a7f3":3093,"a7g3":3094,"a7h3":3095,"a7a4":3096,"a7b4":3097,"a7c4":3098,"a7d4":3099,"a7e4":3100,"a7f4":3101,"a7g4":3102,"a7h4":3103,"a7a5":3104,"a7b5":3105,"a7c5":3106,"a7d5":3107,"a7e5":3108,"a7f5":3109,"a7g5":3110,"a7h5":3111,"a7a6":3112,"a7b6":3113,"a7c6":3114,"a7d6":3115,"a7e6":3116,"a7f6":3117,"a7g6":3118,"a7h6":3119,"a7a7":3120,"a7b7":3121,"a7c7":3122,"a7d7":3123,"a7e7":3124,"a7f7":3125,"a7g7":3126,"a7h7":3127,"a7a8":3128,"a7b8":3129,"a7c8":3130,"a7d8":3131,"a7e8":3132,"a7f8":3133,"a7g8":3134,"a7h8":3135,"b7a1":3136,"b7b1":3137,"b7c1":3138,"b7d1":3139,"b7e1":3140,"b7f1":3141,"b7g1":3142,"b7h1":3143,"b7a2":3144,"b7b2":3145,"b7c2":3146,"b7d2":3147,"b7e2":3148,"b7f2":3149,"b7g2":3150,"b7h2":3151,"b7a3":3152,"b7b3":3153,"b7c3":3154,"b7d3":3155,"b7e3":3156,"b7f3":3157,"b7g3":3158,"b7h3":3159,"b7a4":3160,"b7b4":3161,"b7c4":3162,"b7d4":3163,"b7e4":3164,"b7f4":3165,"b7g4":3166,"b7h4":3167,"b7a5":3168,"b7b5":3169,"b7c5":3170,"b7d5":3171,"b7e5":3172,"b7f5":3173,"b7g5":3174,"b7h5":3175,"b7a6":3176,"b7b6":3177,"b7c6":3178,"b7d6":3179,"b7e6":3180,"b7f6":3181,"b7g6":3182,"b7h6":3183,"b7a7":3184,"b7b7":3185,"b7c7":3186,"b7d7":3187,"b7e7":3188,"b7f7":3189,"b7g7":3190,"b7h7":3191,"b7a8":3192,"b7b8":3193,"b7c8":3194,"b7d8":3195,"b7e8":3196,"b7f8":3197,"b7g8":3198,"b7h8":3199,"c7a1":3200,"c7b1":3201,"c7c1":3202,"c7d1":3203,"c7e1":3204,"c7f1":3205,"c7g1":3206,"c7h1":3207,"c7a2":3208,"c7b2":3209,"c7c2":3210,"c7d2":3211,"c7e2":3212,"c7f2":3213,"c7g2":3214,"c7h2":3215,"c7a3":3216,"c7b3":3217,"c7c3":3218,"c7d3":3219,"c7e3":3220,"c7f3":3221,"c7g3":3222,"c7h3":3223,"c7a4":3224,"c7b4":3225,"c7c4":3226,"c7d4":3227,"c7e4":3228,"c7f4":3229,"c7g4":3230,"c7h4":3231,"c7a5":3232,"c7b5":3233,"c7c5":3234,"c7d5":3235,"c7e5":3236,"c7f5":3237,"c7g5":3238,"c7h5":3239,"c7a6":3240,"c7b6":3241,"c7c6":3242,"c7d6":3243,"c7e6":3244,"c7f6":3245,"c7g6":3246,"c7h6":3247,"c7a7":3248,"c7b7":3249,"c7c7":3250,"c7d7":3251,"c7e7":3252,"c7f7":3253,"c7g7":3254,"c7h7":3255,"c7a8":3256,"c7b8":3257,"c7c8":3258,"c7d8":3259,"c7e8":3260,"c7f8":3261,"c7g8":3262,"c7h8":3263,"d7a1":3264,"d7b1":3265,"d7c1":3266,"d7d1":3267,"d7e1":3268,"d7f1":3269,"d7g1":3270,"d7h1":3271,"d7a2":3272,"d7b2":3273,"d7c2":3274,"d7d2":3275,"d7e2":3276,"d7f2":3277,"d7g2":3278,"d7h2":3279,"d7a3":3280,"d7b3":3281,"d7c3":3282,"d7d3":3283,"d7e3":3284,"d7f3":3285,"d7g3":3286,"d7h3":3287,"d7a4":3288,"d7b4":3289,"d7c4":3290,"d7d4":3291,"d7e4":3292,"d7f4":3293,"d7g4":3294,"d7h4":3295,"d7a5":3296,"d7b5":3297,"d7c5":3298,"d7d5":3299,"d7e5":3300,"d7f5":3301,"d7g5":3302,"d7h5":3303,"d7a6":3304,"d7b6":3305,"d7c6":3306,"d7d6":3307,"d7e6":3308,"d7f6":3309,"d7g6":3310,"d7h6":3311,"d7a7":3312,"d7b7":3313,"d7c7":3314,"d7d7":3315,"d7e7":3316,"d7f7":3317,"d7g7":3318,"d7h7":3319,"d7a8":3320,"d7b8":3321,"d7c8":3322,"d7d8":3323,"d7e8":3324,"d7f8":3325,"d7g8":3326,"d7h8":3327,"e7a1":3328,"e7b1":3329,"e7c1":3330,"e7d1":3331,"e7e1":3332,"e7f1":3333,"e7g1":3334,"e7h1":3335,"e7a2":3336,"e7b2":3337,"e7c2":3338,"e7d2":3339,"e7e2":3340,"e7f2":3341,"e7g2":3342,"e7h2":3343,"e7a3":3344,"e7b3":3345,"e7c3":3346,"e7d3":3347,"e7e3":3348,"e7f3":3349,"e7g3":3350,"e7h3":3351,"e7a4":3352,"e7b4":3353,"e7c4":3354,"e7d4":3355,"e7e4":3356,"e7f4":3357,"e7g4":3358,"e7h4":3359,"e7a5":3360,"e7b5":3361,"e7c5":3362,"e7d5":3363,"e7e5":3364,"e7f5":3365,"e7g5":3366,"e7h5":3367,"e7a6":3368,"e7b6":3369,"e7c6":3370,"e7d6":3371,"e7e6":3372,"e7f6":3373,"e7g6":3374,"e7h6":3375,"e7a7":3376,"e7b7":3377,"e7c7":3378,"e7d7":3379,"e7e7":3380,"e7f7":3381,"e7g7":3382,"e7h7":3383,"e7a8":3384,"e7b8":3385,"e7c8":3386,"e7d8":3387,"e7e8":3388,"e7f8":3389,"e7g8":3390,"e7h8":3391,"f7a1":3392,"f7b1":3393,"f7c1":3394,"f7d1":3395,"f7e1":3396,"f7f1":3397,"f7g1":3398,"f7h1":3399,"f7a2":3400,"f7b2":3401,"f7c2":3402,"f7d2":3403,"f7e2":3404,"f7f2":3405,"f7g2":3406,"f7h2":3407,"f7a3":3408,"f7b3":3409,"f7c3":3410,"f7d3":3411,"f7e3":3412,"f7f3":3413,"f7g3":3414,"f7h3":3415,"f7a4":3416,"f7b4":3417,"f7c4":3418,"f7d4":3419,"f7e4":3420,"f7f4":3421,"f7g4":3422,"f7h4":3423,"f7a5":3424,"f7b5":3425,"f7c5":3426,"f7d5":3427,"f7e5":3428,"f7f5":3429,"f7g5":3430,"f7h5":3431,"f7a6":3432,"f7b6":3433,"f7c6":3434,"f7d6":3435,"f7e6":3436,"f7f6":3437,"f7g6":3438,"f7h6":3439,"f7a7":3440,"f7b7":3441,"f7c7":3442,"f7d7":3443,"f7e7":3444,"f7f7":3445,"f7g7":3446,"f7h7":3447,"f7a8":3448,"f7b8":3449,"f7c8":3450,"f7d8":3451,"f7e8":3452,"f7f8":3453,"f7g8":3454,"f7h8":3455,"g7a1":3456,"g7b1":3457,"g7c1":3458,"g7d1":3459,"g7e1":3460,"g7f1":3461,"g7g1":3462,"g7h1":3463,"g7a2":3464,"g7b2":3465,"g7c2":3466,"g7d2":3467,"g7e2":3468,"g7f2":3469,"g7g2":3470,"g7h2":3471,"g7a3":3472,"g7b3":3473,"g7c3":3474,"g7d3":3475,"g7e3":3476,"g7f3":3477,"g7g3":3478,"g7h3":3479,"g7a4":3480,"g7b4":3481,"g7c4":3482,"g7d4":3483,"g7e4":3484,"g7f4":3485,"g7g4":3486,"g7h4":3487,"g7a5":3488,"g7b5":3489,"g7c5":3490,"g7d5":3491,"g7e5":3492,"g7f5":3493,"g7g5":3494,"g7h5":3495,"g7a6":3496,"g7b6":3497,"g7c6":3498,"g7d6":3499,"g7e6":3500,"g7f6":3501,"g7g6":3502,"g7h6":3503,"g7a7":3504,"g7b7":3505,"g7c7":3506,"g7d7":3507,"g7e7":3508,"g7f7":3509,"g7g7":3510,"g7h7":3511,"g7a8":3512,"g7b8":3513,"g7c8":3514,"g7d8":3515,"g7e8":3516,"g7f8":3517,"g7g8":3518,"g7h8":3519,"h7a1":3520,"h7b1":3521,"h7c1":3522,"h7d1":3523,"h7e1":3524,"h7f1":3525,"h7g1":3526,"h7h1":3527,"h7a2":3528,"h7b2":3529,"h7c2":3530,"h7d2":3531,"h7e2":3532,"h7f2":3533,"h7g2":3534,"h7h2":3535,"h7a3":3536,"h7b3":3537,"h7c3":3538,"h7d3":3539,"h7e3":3540,"h7f3":3541,"h7g3":3542,"h7h3":3543,"h7a4":3544,"h7b4":3545,"h7c4":3546,"h7d4":3547,"h7e4":3548,"h7f4":3549,"h7g4":3550,"h7h4":3551,"h7a5":3552,"h7b5":3553,"h7c5":3554,"h7d5":3555,"h7e5":3556,"h7f5":3557,"h7g5":3558,"h7h5":3559,"h7a6":3560,"h7b6":3561,"h7c6":3562,"h7d6":3563,"h7e6":3564,"h7f6":3565,"h7g6":3566,"h7h6":3567,"h7a7":3568,"h7b7":3569,"h7c7":3570,"h7d7":3571,"h7e7":3572,"h7f7":3573,"h7g7":3574,"h7h7":3575,"h7a8":3576,"h7b8":3577,"h7c8":3578,"h7d8":3579,"h7e8":3580,"h7f8":3581,"h7g8":3582,"h7h8":3583,"a8a1":3584,"a8b1":3585,"a8c1":3586,"a8d1":3587,"a8e1":3588,"a8f1":3589,"a8g1":3590,"a8h1":3591,"a8a2":3592,"a8b2":3593,"a8c2":3594,"a8d2":3595,"a8e2":3596,"a8f2":3597,"a8g2":3598,"a8h2":3599,"a8a3":3600,"a8b3":3601,"a8c3":3602,"a8d3":3603,"a8e3":3604,"a8f3":3605,"a8g3":3606,"a8h3":3607,"a8a4":3608,"a8b4":3609,"a8c4":3610,"a8d4":3611,"a8e4":3612,"a8f4":3613,"a8g4":3614,"a8h4":3615,"a8a5":3616,"a8b5":3617,"a8c5":3618,"a8d5":3619,"a8e5":3620,"a8f5":3621,"a8g5":3622,"a8h5":3623,"a8a6":3624,"a8b6":3625,"a8c6":3626,"a8d6":3627,"a8e
27756":3628,"a8f6":3629,"a8g6":3630,"a8h6":3631,"a8a7":3632,"a8b7":3633,"a8c7":3634,"a8d7":3635,"a8e7":3636,"a8f7":3637,"a8g7":3638,"a8h7":3639,"a8a8":3640,"a8b8":3641,"a8c8":3642,"a8d8":3643,"a8e8":3644,"a8f8":3645,"a8g8":3646,"a8h8":3647,"b8a1":3648,"b8b1":3649,"b8c1":3650,"b8d1":3651,"b8e1":3652,"b8f1":3653,"b8g1":3654,"b8h1":3655,"b8a2":3656,"b8b2":3657,"b8c2":3658,"b8d2":3659,"b8e2":3660,"b8f2":3661,"b8g2":3662,"b8h2":3663,"b8a3":3664,"b8b3":3665,"b8c3":3666,"b8d3":3667,"b8e3":3668,"b8f3":3669,"b8g3":3670,"b8h3":3671,"b8a4":3672,"b8b4":3673,"b8c4":3674,"b8d4":3675,"b8e4":3676,"b8f4":3677,"b8g4":3678,"b8h4":3679,"b8a5":3680,"b8b5":3681,"b8c5":3682,"b8d5":3683,"b8e5":3684,"b8f5":3685,"b8g5":3686,"b8h5":3687,"b8a6":3688,"b8b6":3689,"b8c6":3690,"b8d6":3691,"b8e6":3692,"b8f6":3693,"b8g6":3694,"b8h6":3695,"b8a7":3696,"b8b7":3697,"b8c7":3698,"b8d7":3699,"b8e7":3700,"b8f7":3701,"b8g7":3702,"b8h7":3703,"b8a8":3704,"b8b8":3705,"b8c8":3706,"b8d8":3707,"b8e8":3708,"b8f8":3709,"b8g8":3710,"b8h8":3711,"c8a1":3712,"c8b1":3713,"c8c1":3714,"c8d1":3715,"c8e1":3716,"c8f1":3717,"c8g1":3718,"c8h1":3719,"c8a2":3720,"c8b2":3721,"c8c2":3722,"c8d2":3723,"c8e2":3724,"c8f2":3725,"c8g2":3726,"c8h2":3727,"c8a3":3728,"c8b3":3729,"c8c3":3730,"c8d3":3731,"c8e3":3732,"c8f3":3733,"c8g3":3734,"c8h3":3735,"c8a4":3736,"c8b4":3737,"c8c4":3738,"c8d4":3739,"c8e4":3740,"c8f4":3741,"c8g4":3742,"c8h4":3743,"c8a5":3744,"c8b5":3745,"c8c5":3746,"c8d5":3747,"c8e5":3748,"c8f5":3749,"c8g5":3750,"c8h5":3751,"c8a6":3752,"c8b6":3753,"c8c6":3754,"c8d6":3755,"c8e6":3756,"c8f6":3757,"c8g6":3758,"c8h6":3759,"c8a7":3760,"c8b7":3761,"c8c7":3762,"c8d7":3763,"c8e7":3764,"c8f7":3765,"c8g7":3766,"c8h7":3767,"c8a8":3768,"c8b8":3769,"c8c8":3770,"c8d8":3771,"c8e8":3772,"c8f8":3773,"c8g8":3774,"c8h8":3775,"d8a1":3776,"d8b1":3777,"d8c1":3778,"d8d1":3779,"d8e1":3780,"d8f1":3781,"d8g1":3782,"d8h1":3783,"d8a2":3784,"d8b2":3785,"d8c2":3786,"d8d2":3787,"d8e2":3788,"d8f2":3789,"d8g2":3790,"d8h2":3791,"d8a3":3792,"d8b3":3793,"d8c3":3794,"d8d3":3795,"d8e3":3796,"d8f3":3797,"d8g3":3798,"d8h3":3799,"d8a4":3800,"d8b4":3801,"d8c4":3802,"d8d4":3803,"d8e4":3804,"d8f4":3805,"d8g4":3806,"d8h4":3807,"d8a5":3808,"d8b5":3809,"d8c5":3810,"d8d5":3811,"d8e5":3812,"d8f5":3813,"d8g5":3814,"d8h5":3815,"d8a6":3816,"d8b6":3817,"d8c6":3818,"d8d6":3819,"d8e6":3820,"d8f6":3821,"d8g6":3822,"d8h6":3823,"d8a7":3824,"d8b7":3825,"d8c7":3826,"d8d7":3827,"d8e7":3828,"d8f7":3829,"d8g7":3830,"d8h7":3831,"d8a8":3832,"d8b8":3833,"d8c8":3834,"d8d8":3835,"d8e8":3836,"d8f8":3837,"d8g8":3838,"d8h8":3839,"e8a1":3840,"e8b1":3841,"e8c1":3842,"e8d1":3843,"e8e1":3844,"e8f1":3845,"e8g1":3846,"e8h1":3847,"e8a2":3848,"e8b2":3849,"e8c2":3850,"e8d2":3851,"e8e2":3852,"e8f2":3853,"e8g2":3854,"e8h2":3855,"e8a3":3856,"e8b3":3857,"e8c3":3858,"e8d3":3859,"e8e3":3860,"e8f3":3861,"e8g3":3862,"e8h3":3863,"e8a4":3864,"e8b4":3865,"e8c4":3866,"e8d4":3867,"e8e4":3868,"e8f4":3869,"e8g4":3870,"e8h4":3871,"e8a5":3872,"e8b5":3873,"e8c5":3874,"e8d5":3875,"e8e5":3876,"e8f5":3877,"e8g5":3878,"e8h5":3879,"e8a6":3880,"e8b6":3881,"e8c6":3882,"e8d6":3883,"e8e6":3884,"e8f6":3885,"e8g6":3886,"e8h6":3887,"e8a7":3888,"e8b7":3889,"e8c7":3890,"e8d7":3891,"e8e7":3892,"e8f7":3893,"e8g7":3894,"e8h7":3895,"e8a8":3896,"e8b8":3897,"e8c8":3898,"e8d8":3899,"e8e8":3900,"e8f8":3901,"e8g8":3902,"e8h8":3903,"f8a1":3904,"f8b1":3905,"f8c1":3906,"f8d1":3907,"f8e1":3908,"f8f1":3909,"f8g1":3910,"f8h1":3911,"f8a2":3912,"f8b2":3913,"f8c2":3914,"f8d2":3915,"f8e2":3916,"f8f2":3917,"f8g2":3918,"f8h2":3919,"f8a3":3920,"f8b3":3921,"f8c3":3922,"f8d3":3923,"f8e3":3924,"f8f3":3925,"f8g3":3926,"f8h3":3927,"f8a4":3928,"f8b4":3929,"f8c4":3930,"f8d4":3931,"f8e4":3932,"f8f4":3933,"f8g4":3934,"f8h4":3935,"f8a5":3936,"f8b5":3937,"f8c5":3938,"f8d5":3939,"f8e5":3940,"f8f5":3941,"f8g5":3942,"f8h5":3943,"f8a6":3944,"f8b6":3945,"f8c6":3946,"f8d6":3947,"f8e6":3948,"f8f6":3949,"f8g6":3950,"f8h6":3951,"f8a7":3952,"f8b7":3953,"f8c7":3954,"f8d7":3955,"f8e7":3956,"f8f7":3957,"f8g7":3958,"f8h7":3959,"f8a8":3960,"f8b8":3961,"f8c8":3962,"f8d8":3963,"f8e8":3964,"f8f8":3965,"f8g8":3966,"f8h8":3967,"g8a1":3968,"g8b1":3969,"g8c1":3970,"g8d1":3971,"g8e1":3972,"g8f1":3973,"g8g1":3974,"g8h1":3975,"g8a2":3976,"g8b2":3977,"g8c2":3978,"g8d2":3979,"g8e2":3980,"g8f2":3981,"g8g2":3982,"g8h2":3983,"g8a3":3984,"g8b3":3985,"g8c3":3986,"g8d3":3987,"g8e3":3988,"g8f3":3989,"g8g3":3990,"g8h3":3991,"g8a4":3992,"g8b4":3993,"g8c4":3994,"g8d4":3995,"g8e4":3996,"g8f4":3997,"g8g4":3998,"g8h4":3999,"g8a5":4000,"g8b5":4001,"g8c5":4002,"g8d5":4003,"g8e5":4004,"g8f5":4005,"g8g5":4006,"g8h5":4007,"g8a6":4008,"g8b6":4009,"g8c6":4010,"g8d6":4011,"g8e6":4012,"g8f6":4013,"g8g6":4014,"g8h6":4015,"g8a7":4016,"g8b7":4017,"g8c7":4018,"g8d7":4019,"g8e7":4020,"g8f7":402
27751,"g8g7":4022,"g8h7":4023,"g8a8":4024,"g8b8":4025,"g8c8":4026,"g8d8":4027,"g8e8":4028,"g8f8":4029,"g8g8":4030,"g8h8":4031,"h8a1":4032,"h8b1":4033,"h8c1":4034,"h8d1":4035,"h8e1":4036,"h8f1":4037,"h8g1":4038,"h8h1":4039,"h8a2":4040,"h8b2":4041,"h8c2":4042,"h8d2":4043,"h8e2":4044,"h8f2":4045,"h8g2":4046,"h8h2":4047,"h8a3":4048,"h8b3":4049,"h8c3":4050,"h8d3":4051,"h8e3":4052,"h8f3":4053,"h8g3":4054,"h8h3":4055,"h8a4":4056,"h8b4":4057,"h8c4":4058,"h8d4":4059,"h8e4":4060,"h8f4":4061,"h8g4":4062,"h8h4":4063,"h8a5":4064,"h8b5":4065,"h8c5":4066,"h8d5":4067,"h8e5":4068,"h8f5":4069,"h8g5":4070,"h8h5":4071,"h8a6":4072,"h8b6":4073,"h8c6":4074,"h8d6":4075,"h8e6":4076,"h8f6":4077,"h8g6":4078,"h8h6":4079,"h8a7":4080,"h8b7":4081,"h8c7":4082,"h8d7":4083,"h8e7":4084,"h8f7":4085,"h8g7":4086,"h8h7":4087,"h8a8":4088,"h8b8":4089,"h8c8":4090,"h8d8":4091,"h8e8":4092,"h8f8":4093,"h8g8":4094,"h8h8":4095,"a7a8q":4096,"a7a8r":4097,"a7a8b":4098,"a7a8n":4099,"a7b8q":4100,"a7b8r":4101,"a7b8b":4102,"a7b8n":4103,"a7c8q":4104,"a7c8r":4105,"a7c8b":4106,"a7c8n":4107,"a7d8q":4108,"a7d8r":4109,"a7d8b":4110,"a7d8n":4111,"a7e8q":4112,"a7e8r":4113,"a7e8b":4114,"a7e8n":4115,"a7f8q":4116,"a7f8r":4117,"a7f8b":4118,"a7f8n":4119,"a7g8q":4120,"a7g8r":4121,"a7g8b":4122,"a7g8n":4123,"a7h8q":4124,"a7h8r":4125,"a7h8b":4126,"a7h8n":4127,"b7a8q":4128,"b7a8r":4129,"b7a8b":4130,"b7a8n":4131,"b7b8q":4132,"b7b8r":4133,"b7b8b":4134,"b7b8n":4135,"b7c8q":4136,"b7c8r":4137,"b7c8b":4138,"b7c8n":4139,"b7d8q":4140,"b7d8r":4141,"b7d8b":4142,"b7d8n":4143,"b7e8q":4144,"b7e8r":4145,"b7e8b":4146,"b7e8n":4147,"b7f8q":4148,"b7f8r":4149,"b7f8b":4150,"b7f8n":4151,"b7g8q":4152,"b7g8r":4153,"b7g8b":4154,"b7g8n":4155,"b7h8q":4156,"b7h8r":4157,"b7h8b":4158,"b7h8n":4159,"c7a8q":4160,"c7a8r":4161,"c7a8b":4162,"c7a8n":4163,"c7b8q":4164,"c7b8r":4165,"c7b8b":4166,"c7b8n":4167,"c7c8q":4168,"c7c8r":4169,"c7c8b":4170,"c7c8n":4171,"c7d8q":4172,"c7d8r":4173,"c7d8b":4174,"c7d8n":4175,"c7e8q":4176,"c7e8r":4177,"c7e8b":4178,"c7e8n":4179,"c7f8q":4180,"c7f8r":4181,"c7f8b":4182,"c7f8n":4183,"c7g8q":4184,"c7g8r":4185,"c7g8b":4186,"c7g8n":4187,"c7h8q":4188,"c7h8r":4189,"c7h8b":4190,"c7h8n":4191,"d7a8q":4192,"d7a8r":4193,"d7a8b":4194,"d7a8n":4195,"d7b8q":4196,"d7b8r":4197,"d7b8b":4198,"d7b8n":4199,"d7c8q":4200,"d7c8r":4201,"d7c8b":4202,"d7c8n":4203,"d7d8q":4204,"d7d8r":4205,"d7d8b":4206,"d7d8n":4207,"d7e8q":4208,"d7e8r":4209,"d7e8b":4210,"d7e8n":4211,"d7f8q":4212,"d7f8r":4213,"d7f8b":4214,"d7f8n":4215,"d7g8q":4216,"d7g8r":4217,"d7g8b":4218,"d7g8n":4219,"d7h8q":4220,"d7h8r":4221,"d7h8b":4222,"d7h8n":4223,"e7a8q":4224,"e7a8r":4225,"e7a8b":4226,"e7a8n":4227,"e7b8q":4228,"e7b8r":4229,"e7b8b":4230,"e7b8n":4231,"e7c8q":4232,"e7c8r":4233,"e7c8b":4234,"e7c8n":4235,"e7d8q":4236,"e7d8r":4237,"e7d8b":4238,"e7d8n":4239,"e7e8q":4240,"e7e8r":4241,"e7e8b":4242,"e7e8n":4243,"e7f8q":4244,"e7f8r":4245,"e7f8b":4246,"e7f8n":4247,"e7g8q":4248,"e7g8r":4249,"e7g8b":4250,"e7g8n":4251,"e7h8q":4252,"e7h8r":4253,"e7h8b":4254,"e7h8n":4255,"f7a8q":4256,"f7a8r":4257,"f7a8b":4258,"f7a8n":4259,"f7b8q":4260,"f7b8r":4261,"f7b8b":4262,"f7b8n":4263,"f7c8q":4264,"f7c8r":4265,"f7c8b":4266,"f7c8n":4267,"f7d8q":4268,"f7d8r":4269,"f7d8b":4270,"f7d8n":4271,"f7e8q":4272,"f7e8r":4273,"f7e8b":4274,"f7e8n":4275,"f7f8q":4276,"f7f8r":4277,"f7f8b":4278,"f7f8n":4279,"f7g8q":4280,"f7g8r":4281,"f7g8b":4282,"f7g8n":4283,"f7h8q":4284,"f7h8r":4285,"f7h8b":4286,"f7h8n":4287,"g7a8q":4288,"g7a8r":4289,"g7a8b":4290,"g7a8n":4291,"g7b8q":4292,"g7b8r":4293,"g7b8b":4294,"g7b8n":4295,"g7c8q":4296,"g7c8r":4297,"g7c8b":4298,"g7c8n":4299,"g7d8q":4300,"g7d8r":4301,"g7d8b":4302,"g7d8n":4303,"g7e8q":4304,"g7e8r":4305,"g7e8b":4306,"g7e8n":4307,"g7f8q":4308,"g7f8r":4309,"g7f8b":4310,"g7f8n":4311,"g7g8q":4312,"g7g8r":4313,"g7g8b":4314,"g7g8n":4315,"g7h8q":4316,"g7h8r":4317,"g7h8b":4318,"g7h8n":4319,"h7a8q":4320,"h7a8r":4321,"h7a8b":4322,"h7a8n":4323,"h7b8q":4324,"h7b8r":4325,"h7b8b":4326,"h7b8n":4327,"h7c8q":4328,"h7c8r":4329,"h7c8b":4330,"h7c8n":4331,"h7d8q":4332,"h7d8r":4333,"h7d8b":4334,"h7d8n":4335,"h7e8q":4336,"h7e8r":4337,"h7e8b":4338,"h7e8n":4339,"h7f8q":4340,"h7f8r":4341,"h7f8b":4342,"h7f8n":4343,"h7g8q":4344,"h7g8r":4345,"h7g8b":4346,"h7g8n":4347,"h7h8q":4348,"h7h8r":4349,"h7h8b":4350,"h7h8n":4351}'),oa=JSON.parse('{"0":"a1a1","1":"a1b1","2":"a1c1","3":"a1d1","4":"a1e1","5":"a1f1","6":"a1g1","7":"a1h1","8":"a1a2","9":"a1b2","10":"a1c2","11":"a1d2","12":"a1e2","13":"a1f2","14":"a1g2","15":"a1h2","16":"a1a3","17":"a1b3","18":"a1c3","19":"a1d3","20":"a1e3","21":"a1f3","22":"a1g3","23":"a1h3","24":"a1a4","25":"a1b4","26":"a1c4","27":"a1d4","28":"a1e4","29":"a1f4","30":"a1g4","31":"a1h4","32":"a1a5","33":"a1b5","34":"a1c5","35":"a1d5","36":"a1e5","37":"a1f5","38":"a1g5","39":"a1h5","40":"a1a6","41":"a1b6","42":"a1c6","43":"a1d6","44":"a1e6","45":"a1f6","46":"a1g6","47":"a1h6","48":"a1a7","49":"a1b7","50":"a1c7","51":"a1d7","52":"a1e7","53":"a1f7","54":"a1g7","55":"a1h7","56":"a1a8","57":"a1b8","58":"a1c8","59":"a1d8","60":"a1e8","61":"a1f8","62":"a1g8","63":"a1h8","64":"b1a1","65":"b1b1","66":"b1c1","67":"b1d1","68":"b1e1","69":"b1f1","70":"b1g1","71":"b1h1","72":"b1a2","73":"b1b2","74":"b1c2","75":"b1d2","76":"b1e2","77":"b1f2","78"
2775:"b1g2","79":"b1h2","80":"b1a3","81":"b1b3","82":"b1c3","83":"b1d3","84":"b1e3","85":"b1f3","86":"b1g3","87":"b1h3","88":"b1a4","89":"b1b4","90":"b1c4","91":"b1d4","92":"b1e4","93":"b1f4","94":"b1g4","95":"b1h4","96":"b1a5","97":"b1b5","98":"b1c5","99":"b1d5","100":"b1e5","101":"b1f5","102":"b1g5","103":"b1h5","104":"b1a6","105":"b1b6","106":"b1c6","107":"b1d6","108":"b1e6","109":"b1f6","110":"b1g6","111":"b1h6","112":"b1a7","113":"b1b7","114":"b1c7","115":"b1d7","116":"b1e7","117":"b1f7","118":"b1g7","119":"b1h7","120":"b1a8","121":"b1b8","122":"b1c8","123":"b1d8","124":"b1e8","125":"b1f8","126":"b1g8","127":"b1h8","128":"c1a1","129":"c1b1","130":"c1c1","131":"c1d1","132":"c1e1","133":"c1f1","134":"c1g1","135":"c1h1","136":"c1a2","137":"c1b2","138":"c1c2","139":"c1d2","140":"c1e2","141":"c1f2","142":"c1g2","143":"c1h2","144":"c1a3","145":"c1b3","146":"c1c3","147":"c1d3","148":"c1e3","149":"c1f3","150":"c1g3","151":"c1h3","152":"c1a4","153":"c1b4","154":"c1c4","155":"c1d4","156":"c1e4","157":"c1f4","158":"c1g4","159":"c1h4","160":"c1a5","161":"c1b5","162":"c1c5","163":"c1d5","164":"c1e5","165":"c1f5","166":"c1g5","167":"c1h5","168":"c1a6","169":"c1b6","170":"c1c6","171":"c1d6","172":"c1e6","173":"c1f6","174":"c1g6","175":"c1h6","176":"c1a7","177":"c1b7","178":"c1c7","179":"c1d7","180":"c1e7","181":"c1f7","182":"c1g7","183":"c1h7","184":"c1a8","185":"c1b8","186":"c1c8","187":"c1d8","188":"c1e8","189":"c1f8","190":"c1g8","191":"c1h8","192":"d1a1","193":"d1b1","194":"d1c1","195":"d1d1","196":"d1e1","197":"d1f1","198":"d1g1","199":"d1h1","200":"d1a2","201":"d1b2","202":"d1c2","203":"d1d2","204":"d1e2","205":"d1f2","206":"d1g2","207":"d1h2","208":"d1a3","209":"d1b3","210":"d1c3","211":"d1d3","212":"d1e3","213":"d1f3","214":"d1g3","215":"d1h3","216":"d1a4","217":"d1b4","218":"d1c4","219":"d1d4","220":"d1e4","221":"d1f4","222":"d1g4","223":"d1h4","224":"d1a5","225":"d1b5","226":"d1c5","227":"d1d5","228":"d1e5","229":"d1f5","230":"d1g5","231":"d1h5","232":"d1a6","233":"d1b6","234":"d1c6","235":"d1d6","236":"d1e6","237":"d1f6","238":"d1g6","239":"d1h6","240":"d1a7","241":"d1b7","242":"d1c7","243":"d1d7","244":"d1e7","245":"d1f7","246":"d1g7","247":"d1h7","248":"d1a8","249":"d1b8","250":"d1c8","251":"d1d8","252":"d1e8","253":"d1f8","254":"d1g8","255":"d1h8","256":"e1a1","257":"e1b1","258":"e1c1","259":"e1d1","260":"e1e1","261":"e1f1","262":"e1g1","263":"e1h1","264":"e1a2","265":"e1b2","266":"e1c2","267":"e1d2","268":"e1e2","269":"e1f2","270":"e1g2","271":"e1h2","272":"e1a3","273":"e1b3","274":"e1c3","275":"e1d3","276":"e1e3","277":"e1f3","278":"e1g3","279":"e1h3","280":"e1a4","281":"e1b4","282":"e1c4","283":"e1d4","284":"e1e4","285":"e1f4","286":"e1g4","287":"e1h4","288":"e1a5","289":"e1b5","290":"e1c5","291":"e1d5","292":"e1e5","293":"e1f5","294":"e1g5","295":"e1h5","296":"e1a6","297":"e1b6","298":"e1c6","299":"e1d6","300":"e1e6","301":"e1f6","302":"e1g6","303":"e1h6","304":"e1a7","305":"e1b7","306":"e1c7","307":"e1d7","308":"e1e7","309":"e1f7","310":"e1g7","311":"e1h7","312":"e1a8","313":"e1b8","314":"e1c8","315":"e1d8","316":"e1e8","317":"e1f8","318":"e1g8","319":"e1h8","320":"f1a1","321":"f1b1","322":"f1c1","323":"f1d1","324":"f1e1","325":"f1f1","326":"f1g1","327":"f1h1","328":"f1a2","329":"f1b2","330":"f1c2","331":"f1d2","332":"f1e2","333":"f1f2","334":"f1g2","335":"f1h2","336":"f1a3","337":"f1b3","338":"f1c3","339":"f1d3","340":"f1e3","341":"f1f3","342":"f1g3","343":"f1h3","344":"f1a4","345":"f1b4","346":"f1c4","347":"f1d4","348":"f1e4","349":"f1f4","350":"f1g4","351":"f1h4","352":"f1a5","353":"f1b5","354":"f1c5","355":"f1d5","356":"f1e5","357":"f1f5","358":"f1g5","359":"f1h5","360":"f1a6","361":"f1b6","362":"f1c6","363":"f1d6","364":"f1e6","365":"f1f6","366":"f1g6","367":"f1h6","368":"f1a7","369":"f1b7","370":"f1c7","371":"f1d7","372":"f1e7","373":"f1f7","374":"f1g7","375":"f1h7","376":"f1a8","377":"f1b8","378":"f1c8","379":"f1d8","380":"f1e8","381":"f1f8","382":"f1g8","383":"f1h8","384":"g1a1","385":"g1b1","386":"g1c1","387":"g1d1","388":"g1e1","389":"g1f1","390":"g1g1","391":"g1h1","392":"g1a2","393":"g1b2","394":"g1c2","395":"g1d2","396":"g1e2","397":"g1f2","398":"g1g2","399":"g1h2","400":"g1a3","401":"g1b3","402":"g1c3","403":"g1d3","404":"g1e3","405":"g1f3","406":"g1g3","407":"g1h3","408":"g1a4","409":"g1b4","410":"g1c4","411":"g1d4","412":"g1e4","413":"g1f4","414":"g1g4","415":"g1h4","416":"g1a5","417":"g1b5","418":"g1c5","419":"g1d5","420":"g1e5","421":"g1f5","422":"g1g5","423":"g1h5","424":"g1a6","425":"g1b6","426":"g1c6","427":"g1d6","428":"g1e6","429":"g1f6","430":"g1g6","431":"g1h6","432":"g1a7","433":"g1b7","434":"g1c7","435":"g1d7","436":"g1e7","437":"g1f7","438":"g1g7","439":"g1h7","440":"g1a8","441":"g1b8","442":"g1c8","443":"g1d8","444":"g1e8","445":"g1f8","446":"g1g8","447":"g1h8","448":"h1a1","449":"h1b1","450":"h1c1","451":"h1d1","452":"h1e1","453":"h1f1","454":"h1g1","455":"h1h1","456":"h1a2","457":"h1b2","458":"h1c2","459":"h1d2","460":"h1e2","461":"h1f2","462":"h1g2","463":"h1h2","464":"h1a3","465":"h1b3","466":"h1c3","467":"h1d3","468":"h1e3","469":"h1f3","470":"h1g3","471":"h1h3","472":"h1a4","473":"h1b4","474":"h1c4","475":"h1d4","476":"h1e4","477":"h1f4","478":"h1g4","479":"h1h4","480":"h1a5","481":"h1b5","482":"h1c5","483":"h1d5","484":"h1e5","485":"h1f5","48
27756":"h1g5","487":"h1h5","488":"h1a6","489":"h1b6","490":"h1c6","491":"h1d6","492":"h1e6","493":"h1f6","494":"h1g6","495":"h1h6","496":"h1a7","497":"h1b7","498":"h1c7","499":"h1d7","500":"h1e7","501":"h1f7","502":"h1g7","503":"h1h7","504":"h1a8","505":"h1b8","506":"h1c8","507":"h1d8","508":"h1e8","509":"h1f8","510":"h1g8","511":"h1h8","512":"a2a1","513":"a2b1","514":"a2c1","515":"a2d1","516":"a2e1","517":"a2f1","518":"a2g1","519":"a2h1","520":"a2a2","521":"a2b2","522":"a2c2","523":"a2d2","524":"a2e2","525":"a2f2","526":"a2g2","527":"a2h2","528":"a2a3","529":"a2b3","530":"a2c3","531":"a2d3","532":"a2e3","533":"a2f3","534":"a2g3","535":"a2h3","536":"a2a4","537":"a2b4","538":"a2c4","539":"a2d4","540":"a2e4","541":"a2f4","542":"a2g4","543":"a2h4","544":"a2a5","545":"a2b5","546":"a2c5","547":"a2d5","548":"a2e5","549":"a2f5","550":"a2g5","551":"a2h5","552":"a2a6","553":"a2b6","554":"a2c6","555":"a2d6","556":"a2e6","557":"a2f6","558":"a2g6","559":"a2h6","560":"a2a7","561":"a2b7","562":"a2c7","563":"a2d7","564":"a2e7","565":"a2f7","566":"a2g7","567":"a2h7","568":"a2a8","569":"a2b8","570":"a2c8","571":"a2d8","572":"a2e8","573":"a2f8","574":"a2g8","575":"a2h8","576":"b2a1","577":"b2b1","578":"b2c1","579":"b2d1","580":"b2e1","581":"b2f1","582":"b2g1","583":"b2h1","584":"b2a2","585":"b2b2","586":"b2c2","587":"b2d2","588":"b2e2","589":"b2f2","590":"b2g2","591":"b2h2","592":"b2a3","593":"b2b3","594":"b2c3","595":"b2d3","596":"b2e3","597":"b2f3","598":"b2g3","599":"b2h3","600":"b2a4","601":"b2b4","602":"b2c4","603":"b2d4","604":"b2e4","605":"b2f4","606":"b2g4","607":"b2h4","608":"b2a5","609":"b2b5","610":"b2c5","611":"b2d5","612":"b2e5","613":"b2f5","614":"b2g5","615":"b2h5","616":"b2a6","617":"b2b6","618":"b2c6","619":"b2d6","620":"b2e6","621":"b2f6","622":"b2g6","623":"b2h6","624":"b2a7","625":"b2b7","626":"b2c7","627":"b2d7","628":"b2e7","629":"b2f7","630":"b2g7","631":"b2h7","632":"b2a8","633":"b2b8","634":"b2c8","635":"b2d8","636":"b2e8","637":"b2f8","638":"b2g8","639":"b2h8","640":"c2a1","641":"c2b1","642":"c2c1","643":"c2d1","644":"c2e1","645":"c2f1","646":"c2g1","647":"c2h1","648":"c2a2","649":"c2b2","650":"c2c2","651":"c2d2","652":"c2e2","653":"c2f2","654":"c2g2","655":"c2h2","656":"c2a3","657":"c2b3","658":"c2c3","659":"c2d3","660":"c2e3","661":"c2f3","662":"c2g3","663":"c2h3","664":"c2a4","665":"c2b4","666":"c2c4","667":"c2d4","668":"c2e4","669":"c2f4","670":"c2g4","671":"c2h4","672":"c2a5","673":"c2b5","674":"c2c5","675":"c2d5","676":"c2e5","677":"c2f5","678":"c2g5","679":"c2h5","680":"
2775c2a6","681":"c2b6","682":"c2c6","683":"c2d6","684":"c2e6","685":"c2f6","686":"c2g6","687":"c2h6","688":"c2a7","689":"c2b7","690":"c2c7","691":"c2d7","692":"c2e7","693":"c2f7","694":"c2g7","695":"c2h7","696":"c2a8","697":"c2b8","698":"c2c8","699":"c2d8","700":"c2e8","701":"c2f8","702":"c2g8","703":"c2h8","704":"d2a1","705":"d2b1","706":"d2c1","707":"d2d1","708":"d2e1","709":"d2f1","710":"d2g1","711":"d2h1","712":"d2a2","713":"d2b2","714":"d2c2","715":"d2d2","716":"d2e2","717":"d2f2","718":"d2g2","719":"d2h2","720":"d2a3","721":"d2b3","722":"d2c3","723":"d2d3","724":"d2e3","725":"d2f3","726":"d2g3","727":"d2h3","728":"d2a4","729":"d2b4","730":"d2c4","731":"d2d4","732":"d2e4","733":"d2f4","734":"d2g4","735":"d2h4","736":"d2a5","737":"d2b5","738":"d2c5","739":"d2d5","740":"d2e5","741":"d2f5","742":"d2g5","743":"d2h5","744":"d2a6","745":"d2b6","746":"d2c6","747":"d2d6","748":"d2e6","749":"d2f6","750":"d2g6","751":"d2h6","752":"d2a7","753":"d2b7","754":"d2c7","755":"d2d7","756":"d2e7","757":"d2f7","758":"d2g7","759":"d2h7","760":"d2a8","761":"d2b8","762":"d2c8","763":"d2d8","764":"d2e8","765":"d2f8","766":"d2g8","767":"d2h8","768":"e2a1","769":"e2b1","770":"e2c1","771":"e2d1","772":"e2e1","773":"e2f1","774":"e2g1","775":"e2h1","776":"e2a2","777":"e2b2","778":"e2c2","779":"e2d2","780":"e2e2","781":"e2f2","782":"e2g2","783":"e2h2","784":"e2a3","785":"e2b3","786":"e2c3","787":"e2d3","788":"e2e3","789":"e2f3","790":"e2g3","791":"e2h3","792":"e2a4","793":"e2b4","794":"e2c4","795":"e2d4","796":"e2e4","797":"e2f4","798":"e2g4","799":"e2h4","800":"e2a5","801":"e2b5","802":"e2c5","803":"e2d5","804":"e2e5","805":"e2f5","806":"e2g5","807":"e2h5","808":"e2a6","809":"e2b6","810":"e2c6","811":"e2d6","812":"e2e6","813":"e2f6","814":"e2g6","815":"e2h6","816":"e2a7","817":"e2b7","818":"e2c7","819":"e2d7","820":"e2e7","821":"e2f7","822":"e2g7","823":"e2h7","824":"e2a8","825":"e2b8","826":"e2c8","827":"e2d8","828":"e2e8","829":"e2f8","830":"e2g8","831":"e2h8","832":"f2a1","833":"f2b1","834":"f2c1","835":"f2d1","836":"f2e1","837":"f2f1","838":"f2g1","839":"f2h1","840":"f2a2","841":"f2b2","842":"f2c2","843":"f2d2","844":"f2e2","845":"f2f2","846":"f2g2","847":"f2h2","848":"f2a3","849":"f2b3","850":"f2c3","851":"f2d3","852":"f2e3","853":"f2f3","854":"f2g3","855":"f2h3","856":"f2a4","857":"f2b4","858":"f2c4","859":"f2d4","860":"f2e4","861":"f2f4","862":"f2g4","863":"f2h4","864":"f2a5","865":"f2b5","866":"f2c5","867":"f2d5","868":"f2e5","869":"f2f5","870":"f2g5","871":"f2h5","872":"f2a6","873":"f2b6","874":"f2c6","875":"f2d6","876":"f2e6","877":"f2f6","878":"f2g6","879":"f2h6","880":"f2a7","881":"f2b7","882":"f2c7","883":"f2d7","884":"f2e7","885":"f2f7","886":"f2g7","887":"f2h7","888":"f2a8","889":"f2b8","890":"f2c8","891":"f2d8","892":"f2e8","893":"f2f8","894":"f2g8","895":"f2h8","896":"g2a1","897":"g2b1","898":"g2c1","899":"g2d1","900":"g2e1","901":"g2f1","902":"g2g1","903":"g2h1","904":"g2a2","905":"g2b2","906":"g2c2","907":"g2d2","908":"g2e2","909":"g2f2","910":"g2g2","911":"g2h2","912":"g2a3","913":"g2b3","914":"g2c3","915":"g2d3","916":"g2e3","917":"g2f3","918":"g2g3","919":"g2h3","920":"g2a4","921":"g2b4","922":"g2c4","923":"g2d4","924":"g2e4","925":"g2f4","926":"g2g4","927":"g2h4","928":"g2a5","929":"g2b5","930":"g2c5","931":"g2d5","932":"g2e5","933":"g2f5","934":"g2g5","935":"g2h5","936":"g2a6","937":"g2b6","938":"g2c6","939":"g2d6","940":"g2e6","941":"g2f6","942":"g2g6","943":"g2h6","944":"g2a7","945":"g2b7","946":"g2c7","947":"g2d7","948":"g2e7","949":"g2f7","950":"g2g7","951":"g2h7","952":"g2a8","953":"g2b8","954":"g2c8","955":"g2d8","956":"g2e8","957":"g2f8","958":"g2g8","959":"g2h8","960":"h2a1","961":"h2b1","962":"h2c1","963":"h2d1","964":"h2e1","965":"h2f1","966":"h2g1","967":"h2h1","968":"h2a2","969":"h2b2","970":"h2c2","971":"h2d2","972":"h2e2","973":"h2f2","974":"h2g2","975":"h2h2","976":"h2a3","977":"h2b3","978":"h2c3","979":"h2d3","980":"h2e3","981":"h2f3","982":"h2g3","983":"h2h3","984":"h2a4","985":"h2b4","986":"h2c4","987":"h2d4","988":"h2e4","989":"h2f4","990":"h2g4","991":"h2h4","992":"h2a5","993":"h2b5","994":"h2c5","995":"h2d5","996":"h2e5","997":"h2f5","998":"h2g5","999":"h2h5","1000":"h2a6","1001":"h2b6","1002":"h2c6","1003":"h2d6","1004":"h2e6","1005":"h2f6","1006":"h2g6","1007":"h2h6","1008":"h2a7","1009":"h2b7","1010":"h2c7","1011":"h2d7","1012":"h2e7","1013":"h2f7","1014":"h2g7","1015":"h2h7","1016":"h2a8","1017":"h2b8","1018":"h2c8","1019":"h2d8","1020":"h2e8","1021":"h2f8","1022":"h2g8","1023":"h2h8","1024":"a3a1","1025":"a3b1","1026":"a3c1","1027":"a3d1","1028":"a3e1","1029":"a3f1","1030":"a3g1","1031":"a3h1","1032":"a3a2","1033":"a3b2","1034":"a3c2","1035":"a3d2","1036":"a3e2","1037":"a3f2","1038":"a3g2","1039":"a3h2","1040":"a3a3","1041":"a3b3","1042":"a3c3","1043":"a3d3","1044"
2775:"a3e3","1045":"a3f3","1046":"a3g3","1047":"a3h3","1048":"a3a4","1049":"a3b4","1050":"a3c4","1051":"a3d4","1052":"a3e4","1053":"a3f4","1054":"a3g4","1055":"a3h4","1056":"a3a5","1057":"a3b5","1058":"a3c5","1059":"a3d5","1060":"a3e5","1061":"a3f5","1062":"a3g5","1063":"a3h5","1064":"a3a6","1065":"a3b6","1066":"a3c6","1067":"a3d6","1068":"a3e6","1069":"a3f6","1070":"a3g6","1071":"a3h6","1072":"a3a7","1073":"a3b7","1074":"a3c7","1075":"a3d7","1076":"a3e7","1077":"a3f7","1078":"a3g7","1079":"a3h7","1080":"a3a8","1081":"a3b8","1082":"a3c8","1083":"a3d8","1084":"a3e8","1085":"a3f8","1086":"a3g8","1087":"a3h8","1088":"b3a1","1089":"b3b1","1090":"b3c1","1091":"b3d1","1092":"b3e1","1093":"b3f1","1094":"b3g1","1095":"b3h1","1096":"b3a2","1097":"b3b2","1098":"b3c2","1099":"b3d2","1100":"b3e2","1101":"b3f2","1102":"b3g2","1103":"b3h2","1104":"b3a3","1105":"b3b3","1106":"b3c3","1107":"b3d3","1108":"b3e3","1109":"b3f3","1110":"b3g3","1111":"b3h3","1112":"b3a4","1113":"b3b4","1114":"b3c4","1115":"b3d4","1116":"b3e4","1117":"b3f4","1118":"b3g4","1119":"b3h4","1120":"b3a5","1121":"b3b5","1122":"b3c5","1123":"b3d5","1124":"b3e5","1125":"b3f5","1126":"b3g5","1127":"b3h5","1128":"b3a6","1129":"b3b6","1130":"b3c6","1131":"b3d6","1132":"b3e6","1133":"b3f6","1134":"b3g6","1135":"b3h6","1136":"b3a7","1137":"b3b7","1138":"b3c7","1139":"b3d7","1140":"b3e7","1141":"b3f7","1142":"b3g7","1143":"b3h7","1144":"b3a8","1145":"b3b8","1146":"b3c8","1147":"b3d8","1148":"b3e8","1149":"b3f8","1150":"b3g8","1151":"b3h8","1152":"c3a1","1153":"c3b1","1154":"c3c1","1155":"c3d1","1156":"c3e1","1157":"c3f1","1158":"c3g1","1159":"c3h1","1160":"c3a2","1161":"c3b2","1162":"c3c2","1163":"c3d2","1164":"c3e2","1165":"c3f2","1166":"c3g2","1167":"c3h2","1168":"c3a3","1169":"c3b3","1170":"c3c3","1171":"c3d3","1172":"c3e3","1173":"c3f3","1174":"c3g3","1175":"c3h3","1176":"c3a4","1177":"c3b4","1178":"c3c4","1179":"c3d4","1180":"c3e4","1181":"c3f4","1182":"c3g4","1183":"c3h4","1184":"c3a5","1185":"c3b5","1186":"c3c5","1187":"c3d5","1188":"c3e5","1189":"c3f5","1190":"c3g5","1191":"c3h5","1192":"c3a6","1193":"c3b6","1194":"c3c6","1195":"c3d6","1196":"c3e6","1197":"c3f6","1198":"c3g6","1199":"c3h6","1200":"c3a7","1201":"c3b7","1202":"c3c7","1203":"c3d7","1204":"c3e7","1205":"c3f7","1206":"c3g7","1207":"c3h7","1208":"c3a8","1209":"c3b8","1210":"c3c8","1211":"c3d8","1212":"c3e8","1213":"c3f8","1214":"c3g8","1215":"c3h8","1216":"d3a1","1217":"d3b1","1218":"d3c1","1219":"d3d1","1220":"d3e1","1221":"d3f1","1222":"d3g1","1223":"d3h1","1224":"d3a2","1225":"d3b2","1226":"d3c2","1227":"d3d2","1228":"d3e2","1229":"d3f2","1230":"d3g2","1231":"d3h2","1232":"d3a3","1233":"d3b3","1234":"d3c3","1235":"d3d3","1236":"d3e3","1237":"d3f3","1238":"d3g3","1239":"d3h3","1240":"d3a4","1241":"d3b4","1242":"d3c4","1243":"d3d4","1244":"d3e4","1245":"d3f4","1246":"d3g4","1247":"d3h4","1248":"d3a5","1249":"d3b5","1250":"d3c5","1251":"d3d5","1252":"d3e5","1253":"d3f5","1254":"d3g5","1255":"d3h5","1256":"d3a6","1257":"d3b6","1258":"d3c6","1259":"d3d6","1260":"d3e6","1261":"d3f6","1262":"d3g6","1263":"d3h6","1264":"d3a7","1265":"d3b7","1266":"d3c7","1267":"d3d7","1268":"d3e7","1269":"d3f7","1270":"d3g7","1271":"d3h7","1272":"d3a8","1273":"d3b8","1274":"d3c8","1275":"d3d8","1276":"d3e8","1277":"d3f8","1278":"d3g8","1279":"d3h8","1280":"e3a1","1281":"e3b1","1282":"e3c1","1283":"e3d1","1284":"e3e1","1285":"e3f1","1286":"e3g1","1287":"e3h1","1288":"e3a2","1289":"e3b2","1290":"e3c2","1291":"e3d2","1292":"e3e2","1293":"e3f2","1294":"e3g2","1295":"e3h2","1296":"e3a3","1297":"e3b3","1298":"e3c3","1299":"e3d3","1300":"e3e3","1301":"e3f3","1302":"e3g3","1303":"e3h3","1304":"e3a4","1305":"e3b4","1306":"e3c4","1307":"e3d4","1308":"e3e4","1309":"e3f4","1310":"e3g4","1311":"e3h4","1312":"e3a5","1313":"e3b5","1314":"e3c5","1315":"e3d5","1316":"e3e5","1317":"e3f5","1318":"e3g5","1319":"e3h5","1320":"e3a6","1321":"e3b6","1322":"e3c6","1323":"e3d6","1324":"e3e6","1325":"e3f6","1326":"e3g6","1327":"e3h6","1328":"e3a7","1329":"e3b7","1330":"e3c7","1331":"e3d7","1332":"e3e7","1333":"e3f7","1334":"e3g7","1335":"e3h7","1336":"e3a8","1337":"e3b8","1338":"e3c8","1339":"e3d8","1340":"e3e8","1341":"e3f8","1342"
2775:"e3g8","1343":"e3h8","1344":"f3a1","1345":"f3b1","1346":"f3c1","1347":"f3d1","1348":"f3e1","1349":"f3f1","1350":"f3g1","1351":"f3h1","1352":"f3a2","1353":"f3b2","1354":"f3c2","1355":"f3d2","1356":"f3e2","1357":"f3f2","1358":"f3g2","1359":"f3h2","1360":"f3a3","1361":"f3b3","1362":"f3c3","1363":"f3d3","1364":"f3e3","1365":"f3f3","1366":"f3g3","1367":"f3h3","1368":"f3a4","1369":"f3b4","1370":"f3c4","1371":"f3d4","1372":"f3e4","1373":"f3f4","1374":"f3g4","1375":"f3h4","1376":"f3a5","1377":"f3b5","1378":"f3c5","1379":"f3d5","1380":"f3e5","1381":"f3f5","1382":"f3g5","1383":"f3h5","1384":"f3a6","1385":"f3b6","1386":"f3c6","1387":"f3d6","1388":"f3e6","1389":"f3f6","1390":"f3g6","1391":"f3h6","1392":"f3a7","1393":"f3b7","1394":"f3c7","1395":"f3d7","1396":"f3e7","1397":"f3f7","1398":"f3g7","1399":"f3h7","1400":"f3a8","1401":"f3b8","1402":"f3c8","1403":"f3d8","1404":"f3e8","1405":"f3f8","1406":"f3g8","1407":"f3h8","1408":"g3a1","1409":"g3b1","1410":"g3c1","1411":"g3d1","1412":"g3e1","1413":"g3f1","1414":"g3g1","1415":"g3h1","1416":"g3a2","1417":"g3b2","1418":"g3c2","1419":"g3d2","1420":"g3e2","1421":"g3f2","1422":"g3g2","1423":"g3h2","1424":"g3a3","1425":"g3b3","1426":"g3c3","1427":"g3d3","1428":"g3e3","1429":"g3f3","1430":"g3g3","1431":"g3h3","1432":"g3a4","1433":"g3b4","1434":"g3c4","1435":"g3d4","1436":"g3e4","1437":"g3f4","1438":"g3g4","1439":"g3h4","1440":"g3a5","1441":"g3b5","1442":"g3c5","1443":"g3d5","1444":"g3e5","1445":"g3f5","1446":"g3g5","1447":"g3h5","1448":"g3a6","1449":"g3b6","1450":"g3c6","1451":"g3d6","1452":"g3e6","1453":"g3f6","1454":"g3g6","1455":"g3h6","1456":"g3a7","1457":"g3b7","1458":"g3c7","1459":"g3d7","1460":"g3e7","1461":"g3f7","1462":"g3g7","1463":"g3h7","1464":"g3a8","1465":"g3b8","1466":"g3c8","1467":"g3d8","1468":"g3e8","1469":"g3f8","1470":"g3g8","1471":"g3h8","1472":"h3a1","1473":"h3b1","1474":"h3c1","1475":"h3d1","1476":"h3e1","1477":"h3f1","1478":"h3g1","1479":"h3h1","1480":"h3a2","1481":"h3b2","1482":"h3c2","1483":"h3d2","1484":"h3e2","1485":"h3f2","1486":"h3g2","1487":"h3h2","1488":"h3a3","1489":"h3b3","1490":"h3c3","1491":"h3d3","1492":"h3e3","1493":"h3f3","1494":"h3g3","1495":"h3h3","1496":"h3a4","1497":"h3b4","1498":"h3c4","1499":"h3d4","1500":"h3e4","1501":"h3f4","1502":"h3g4","1503":"h3h4","1504":"h3a5","1505":"h3b5","1506":"h3c5","1507":"h3d5","1508":"h3e5","1509":"h3f5","1510":"h3g5","1511":"h3h5","1512":"h3a6","1513":"h3b6","1514":"h3c6","1515":"h3d6","1516":"h3e6","1517":"h3f6","1518":"h3g6","1519":"h3h6","1520":"h3a7","1521":"h3b7","1522":"h3c7","1523":"h3d7","1524":"h3e7","1525":"h3f7","1526":"h3g7","1527":"h3h7","1528":"h3a8","1529":"h3b8","1530":"h3c8","1531":"h3d8","1532":"h3e8","1533":"h3f8","1534":"h3g8","1535":"h3h8","1536":"a4a1","1537":"a4b1","1538":"a4c1","1539":"a4d1","1540":"a4e1","1541":"a4f1","1542":"a4g1","1543":"a4h1","1544":"a4a2","1545":"a4b2","1546":"a4c2","1547":"a4d2","1548":"a4e2","1549":"a4f2","1550":"a4g2","1551":"a4h2","1552":"a4a3","1553":"a4b3","1554":"a4c3","1555":"a4d3","1556":"a4e3","1557":"a4f3","1558":"a4g3","1559":"a4h3","1560":"a4a4","1561":"a4b4","1562":"a4c4","1563":"a4d4","1564":"a4e4","1565":"a4f4","1566":"a4g4","1567":"a4h4","1568":"a4a5","1569":"a4b5","1570":"a4c5","1571":"a4d5","1572":"a4e5","1573":"a4f5","1574":"a4g5","1575":"a4h5","1576":"a4a6","1577":"a4b6","1578":"a4c6","1579":"a4d6","1580":"a4e6","1581":"a4f6","1582":"a4g6","1583":"a4h6","1584":"a4a7","1585":"a4b7","1586":"a4c7","1587":"a4d7","1588":"a4e7","1589":"a4f7","1590":"a4g7","1591":"a4h7","1592":"a4a8","1593":"a4b8","1594":"a4c8","1595":"a4d8","1596":"a4e8","1597":"a4f8","1598":"a4g8","1599":"a4h8","1600":"b4a1","1601":"b4b1","1602":"b4c1","1603":"b4d1","1604":"b4e1","1605":"b4f1","1606":"b4g1","1607":"b4h1","1608":"b4a2","1609":"b4b2","1610":"b4c2","1611":"b4d2","1612":"b4e2","1613":"b4f2","1614":"b4g2","1615":"b4h2","1616":"b4a3","1617":"b4b3","1618":"b4c3","1619":"b4d3","1620":"b4e3","1621":"b4f3","1622":"b4g3","1623":"b4h3","1624":"b4a4","1625":"b4b4","1626":"b4c4","1627":"b4d4","1628":"b4e4","1629":"b4f4","1630":"b4g4","1631":"b4h4","1632":"b4a5","1633":"b4b5","1634":"b4c5","1635":"b4d5","1636":"b4e5","1637":"b4f5","1638":"b4g5","1639":"b4h5","1640":"b4a6","1641":"b4b6","1642":"b4c6","1643":"b4d6","1644":"b4e6","1645":"b4f6","1646":"b4g6","1647":"b4h6","1648":"b4a7","1649":"b4b7","1650":"b4c7","1651":"b4d7","1652":"b4e7","1653":"b4f7","1654":"b4g7","1655":"b4h7","1656":"b4a8","1657":"b4b8","1658":"b4c8","1659":"b4d8","1660":"b4e8","1661":"b4f8","1662":"b4g8","1663":"b4h8","1664":"c4a1","1665":"c4b1","1666":"c4c1","1667":"c4d1","1668":"c4e1","1669":"c4f1","1670":"c4g1","1671":"c4h1","1672":"c4a2","1673":"c4b2","1674":"c4c2","1675":"c4d2","1676":"c4e2","1677":"c4f2","1678":"c4g2","1679":"c4h2","1680":"c4a3","1681":"c4b3","1682":"c4c3","1683":"c4d3","1684":"c4e3","1685":"c4f3","1686":"c4g3","1687":"c4h3","1688":"c4a4","1689":"c4b4","1690":"
2775c4c4","1691":"c4d4","1692":"c4e4","1693":"c4f4","1694":"c4g4","1695":"c4h4","1696":"c4a5","1697":"c4b5","1698":"c4c5","1699":"c4d5","1700":"c4e5","1701":"c4f5","1702":"c4g5","1703":"c4h5","1704":"c4a6","1705":"c4b6","1706":"c4c6","1707":"c4d6","1708":"c4e6","1709":"c4f6","1710":"c4g6","1711":"c4h6","1712":"c4a7","1713":"c4b7","1714":"c4c7","1715":"c4d7","1716":"c4e7","1717":"c4f7","1718":"c4g7","1719":"c4h7","1720":"c4a8","1721":"c4b8","1722":"c4c8","1723":"c4d8","1724":"c4e8","1725":"c4f8","1726":"c4g8","1727":"c4h8","1728":"d4a1","1729":"d4b1","1730":"d4c1","1731":"d4d1","1732":"d4e1","1733":"d4f1","1734":"d4g1","1735":"d4h1","1736":"d4a2","1737":"d4b2","1738":"d4c2","1739":"d4d2","1740":"d4e2","1741":"d4f2","1742":"d4g2","1743":"d4h2","1744":"d4a3","1745":"d4b3","1746":"d4c3","1747":"d4d3","1748":"d4e3","1749":"d4f3","1750":"d4g3","1751":"d4h3","1752":"d4a4","1753":"d4b4","1754":"d4c4","1755":"d4d4","1756":"d4e4","1757":"d4f4","1758":"d4g4","1759":"d4h4","1760":"d4a5","1761":"d4b5","1762":"d4c5","1763":"d4d5","1764":"d4e5","1765":"d4f5","1766":"d4g5","1767":"d4h5","1768":"d4a6","1769":"d4b6","1770":"d4c6","1771":"d4d6","1772":"d4e6","1773":"d4f6","1774":"d4g6","1775":"d4h6","1776":"d4a7","1777":"d4b7","1778":"d4c7","1779":"d4d7","1780":"d4e7","1781":"d4f7","1782":"d4g7","1783":"d4h7","1784":"d4a8","1785":"d4b8","1786":"d4c8","1787":"d4d8","1788":"d4e8","1789":"d4f8","1790":"d4g8","1791":"d4h8","1792":"e4a1","1793":"e4b1","1794":"e4c1","1795":"e4d1","1796":"e4e1","1797":"e4f1","1798":"e4g1","1799":"e4h1","1800":"e4a2","1801":"e4b2","1802":"e4c2","1803":"e4d2","1804":"e4e2","1805":"e4f2","1806":"e4g2","1807":"e4h2","1808":"e4a3","1809":"e4b3","1810":"e4c3","1811":"e4d3","1812":"e4e3","1813":"e4f3","1814":"e4g3","1815":"e4h3","1816":"e4a4","1817":"e4b4","1818":"e4c4","1819":"e4d4","1820":"e4e4","1821":"e4f4","1822":"e4g4","1823":"e4h4","1824":"e4a5","1825":"e4b5","1826":"e4c5","1827":"e4d5","1828":"e4e5","1829":"e4f5","1830":"e4g5","1831":"e4h5","1832":"e4a6","1833":"e4b6","1834":"e4c6","1835":"e4d6","1836":"e4e6","1837":"e4f6","1838":"e4g6","1839":"e4h6","1840":"e4a7","1841":"e4b7","1842":"e4c7","1843":"e4d7","1844":"e4e7","1845":"e4f7","1846":"e4g7","1847":"e4h7","1848":"e4a8","1849":"e4b8","1850":"e4c8","1851":"e4d8","1852":"e4e8","1853":"e4f8","1854":"e4g8","1855":"e4h8","1856":"f4a1","1857":"f4b1","1858":"f4c1","1859":"f4d1","1860":"f4e1","1861":"f4f1","1862":"f4g1","1863":"f4h1","1864":"f4a2","1865":"f4b2","1866":"f4c2","1867":"f4d2","1868":"f4e2","1869":"f4f2","1870":"f4g2","1871":"f4h2","1872":"f4a3","1873":"f4b3","1874":"f4c3","1875":"f4d3","1876":"f4e3","1877":"f4f3","1878":"f4g3","1879":"f4h3","1880":"f4a4","1881":"f4b4","1882":"f4c4","1883":"f4d4","1884":"f4e4","1885":"f4f4","1886":"f4g4","1887":"f4h4","1888":"f4a5","1889":"f4b5","1890":"f4c5","1891":"f4d5","1892":"f4e5","1893":"f4f5","1894":"f4g5","1895":"f4h5","1896":"f4a6","1897":"f4b6","1898":"f4c6","1899":"f4d6","1900":"f4e6","1901":"f4f6","1902":"f4g6","1903":"f4h6","1904":"f4a7","1905":"f4b7","1906":"f4c7","1907":"f4d7","1908":"f4e7","1909":"f4f7","1910":"f4g7","1911":"f4h7","1912":"f4a8","1913":"f4b8","1914":"f4c8","1915":"f4d8","1916":"f4e8","1917":"f4f8","1918":"f4g8","1919":"f4h8","1920":"g4a1","1921":"g4b1","1922":"g4c1","1923":"g4d1","1924":"g4e1","1925":"g4f1","1926":"g4g1","1927":"g4h1","1928":"g4a2","1929":"g4b2","1930":"g4c2","1931":"g4d2","1932":"g4e2","1933":"g4f2","1934":"g4g2","1935":"g4h2","1936":"g4a3","1937":"g4b3","1938":"g4c3","1939":"g4d3","1940":"g4e3","1941":"g4f3","1942":"g4g3","1943":"g4h3","1944":"g4a4","1945":"g4b4","1946":"g4c4","1947":"g4d4","1948":"g4e4","1949":"g4f4","1950":"g4g4","1951":"g4h4","1952":"g4a5","1953":"g4b5","1954":"g4c5","1955":"g4d5","1956":"g4e5","1957":"g4f5","1958":"g4g5","1959":"g4h5","1960":"g4a6","1961":"g4b6","1962":"g4c6","1963":"g4d6","1964":"g4e6","1965":"g4f6","1966":"g4g6","1967":"g4h6","1968":"g4a7","1969":"g4b7","1970":"g4c7","1971":"g4d7","1972":"g4e7","1973":"g4f7","1974":"g4g7","1975":"g4h7","1976":"g4a8","1977":"g4b8","1978":"g4c8","1979":"g4d8","1980":"g4e8","1981":"g4f8","1982":"g4g8","1983":"g4h8","1984":"h4a1","1985":"h4b1","1986":"h4c1","1987":"h4d1","1988":"h4e1","1989":"h4f1","1990":"h4g1","1991":"h4h1","1992":"h4a2","1993":"h4b2","1994":"h4c2","1995":"h4d2","1996":"h4e2","1997":"h4f2","1998":"h4g2","1999":"h4h2","2000":"h4a3","2001":"h4b3","2002":"h4c3","2003":"h4d3","2004":"h4e3","2005":"h4f3","2006":"h4g3","2007":"h4h3","2008":"h4a4","2009":"h4b4","2010":"h4c4","2011":"h4d4","2012":"h4e4","2013":"h4f4","2014":"h4g4","2015":"h4h4","2016":"h4a5","2017":"h4b5","2018":"h4c5","2019":"h4d5","2020":"h4e5","2021":"h4f5","2022":"h4g5","2023":"h4h5","2024":"h4a6","2025":"h4b6","2026":"h4c6","2027":"h4d6","2028":"h4e6","2029":"h4f6","2030":"h4g6","2031":"h4h6","2032":"h4a7","2033":"h4b7","2034":"h4c7","2035":"h4d7","2036":"h4e7","2037":"h4f7","2038":"h4g7","2039":"h4h7","2040":"h4a8","2041":"h4b8","2042":"h4c8","2043":"h4d8","2044":"h4e8","2045":"h4f8","2046":"h4g8","2047":"h4h8","2048":"a5a1","2049":"a5b1","2050":"a5c1","2051":"a5d1","2052":"a5e1","2053":"a5f1","2054":"a5g1","2055":"a5h1","2056":"a5a2","2057":"a5b2","2058":"a5c2","2059":"a5d2","2060":"a5e2","2061":"a5f2","2062":"a5g2","2063":"a5h2","2064":"a5a3","2065":"a5b3","2066":"a5c3","2067":"a5d3","2068":"a5e3","2069":"a5f3","2070":"a5g3","2071":"a5h3","2072":"a5a4","2073":"a5b4","2074":"a5c4","2075":"a5d4","2076":"a5e4","2077":"a5f4","2078":"a5g4","2079":"a5h4","2080":"a5a5","2081":"a5b5","2082":"a5c5","2083":"a5d5","2084":"a5e5","2085":"a5f5","2086":"a5g5","2087":"a5h5","2088":"a5a6","2089":"a5b6","2090":"a5c6","2091":"a5d6","2092":"a5e6","2093":"a5f6","2094":"a5g6","2095":"a5h6","2096":"a5a7","2097":"a5b7","2098":"a5c7","2099":"a5d7","2100":"a5e7","2101":"a5f7","2102":"a5g7","2103":"a5h7","2104":"a5a8","2105":"a5b8","2106":"a5c8","2107":"a5d8","2108":"a5e8","2109":"a5f8","2110":"a5g8","2111":"a5h8","2112":"b5a1","2113":"b5b1","2114":"b5c1","2115":"b5d1","2116":"b5e1","2117":"b5f1","2118":"b5g1","2119":"b5h1","2120":"b5a2","2121":"b5b2","2122":"b5c2","2123":"b5d2","2124":"b5e2","2125":"b5f2","2126":"b5g2","2127":"b5h2","2128":"b5a3","2129":"b5b3","2130":"b5c3","2131":"b5d3","2132":"b5e3","2133":"b5f3","2134":"b5g3","2135":"b5h3","2136":"b5a4","2137":"b5b4","2138":"b5c4","2139":"b5d4","2140":"b5e4","2141":"b5f4","2142":"b5g4","2143":"b5h4","2144":"b5a5","2145":"b5b5","2146":"b5c5","2147":"b5d5","2148":"b5e5","2149":"b5f5","2150":"b5g5","2151":"b5h5","2152":"b5a6","2153":"b5b6","2154":"b5c6","2155":"b5d6","2156":"b5e6","2157":"b5f6","2158":"b5g6","2159":"b5h6","2160":"b5a7","2161":"b5b7","2162":"b5c7","2163":"b5d7","2164":"b5e7","2165":"b5f7","2166":"b5g7","2167":"b5h7","2168":"b5a8","2169":"b5b8","2170":"b5c8","2171":"b5d8","2172":"b5e8","2173":"b5f8","2174":"b5g8","2175":"b5h8","2176":"c5a1","2177":"c5b1","2178":"c5c1","2179":"c5d1","2180":"
2775c5e1","2181":"c5f1","2182":"c5g1","2183":"c5h1","2184":"c5a2","2185":"c5b2","2186":"c5c2","2187":"c5d2","2188":"c5e2","2189":"c5f2","2190":"c5g2","2191":"c5h2","2192":"c5a3","2193":"c5b3","2194":"c5c3","2195":"c5d3","2196":"c5e3","2197":"c5f3","2198":"c5g3","2199":"c5h3","2200":"c5a4","2201":"c5b4","2202":"c5c4","2203":"c5d4","2204":"c5e4","2205":"c5f4","2206":"c5g4","2207":"c5h4","2208":"c5a5","2209":"c5b5","2210":"c5c5","2211":"c5d5","2212":"c5e5","2213":"c5f5","2214":"c5g5","2215":"c5h5","2216":"c5a6","2217":"c5b6","2218":"c5c6","2219":"c5d6","2220":"c5e6","2221":"c5f6","2222":"c5g6","2223":"c5h6","2224":"c5a7","2225":"c5b7","2226":"c5c7","2227":"c5d7","2228":"c5e7","2229":"c5f7","2230":"c5g7","2231":"c5h7","2232":"c5a8","2233":"c5b8","2234":"c5c8","2235":"c5d8","2236":"c5e8","2237":"c5f8","2238":"c5g8","2239":"c5h8","2240":"d5a1","2241":"d5b1","2242":"d5c1","2243":"d5d1","2244":"d5e1","2245":"d5f1","2246":"d5g1","2247":"d5h1","2248":"d5a2","2249":"d5b2","2250":"d5c2","2251":"d5d2","2252":"d5e2","2253":"d5f2","2254":"d5g2","2255":"d5h2","2256":"d5a3","2257":"d5b3","2258":"d5c3","2259":"d5d3","2260":"d5e3","2261":"d5f3","2262":"d5g3","2263":"d5h3","2264":"d5a4","2265":"d5b4","2266":"d5c4","2267":"d5d4","2268":"d5e4","2269":"d5f4","2270":"d5g4","2271":"d5h4","2272":"d5a5","2273":"d5b5","2274":"d5c5","2275":"d5d5","2276":"d5e5","2277":"d5f5","2278":"d5g5","2279":"d5h5","2280":"d5a6","2281":"d5b6","2282":"d5c6","2283":"d5d6","2284":"d5e6","2285":"d5f6","2286":"d5g6","2287":"d5h6","2288":"d5a7","2289":"d5b7","2290":"d5c7","2291":"d5d7","2292":"d5e7","2293":"d5f7","2294":"d5g7","2295":"d5h7","2296":"d5a8","2297":"d5b8","2298":"d5c8","2299":"d5d8","2300":"d5e8","2301":"d5f8","2302":"d5g8","2303":"d5h8","2304":"e5a1","2305":"e5b1","2306":"e5c1","2307":"e5d1","2308":"e5e1","2309":"e5f1","2310":"e5g1","2311":"e5h1","2312":"e5a2","2313":"e5b2","2314":"e5c2","2315":"e5d2","2316":"e5e2","2317":"e5f2","2318":"e5g2","2319":"e5h2","2320":"e5a3","2321":"e5b3","2322":"e5c3","2323":"e5d3","2324":"e5e3","2325":"e5f3","2326":"e5g3","2327":"e5h3","2328":"e5a4","2329":"e5b4","2330":"e5c4","2331":"e5d4","2332":"e5e4","2333":"e5f4","2334":"e5g4","2335":"e5h4","2336":"e5a5","2337":"e5b5","2338":"e5c5","2339":"e5d5","2340":"e5e5","2341":"e5f5","2342":"e5g5","2343":"e5h5","2344":"e5a6","2345":"e5b6","2346":"e5c6","2347":"e5d6","2348":"e5e6","2349":"e5f6","2350":"e5g6","2351":"e5h6","2352":"e5a7","2353":"e5b7","2354":"e5c7","2355":"e5d7","2356":"e5e7","2357":"e5f7","2358":"e5g7","2359":"e5h7","2360":"e5a8","2361":"e5b8","2362":"e5c8","23
277563":"e5d8","2364":"e5e8","2365":"e5f8","2366":"e5g8","2367":"e5h8","2368":"f5a1","2369":"f5b1","2370":"f5c1","2371":"f5d1","2372":"f5e1","2373":"f5f1","2374":"f5g1","2375":"f5h1","2376":"f5a2","2377":"f5b2","2378":"f5c2","2379":"f5d2","2380":"f5e2","2381":"f5f2","2382":"f5g2","2383":"f5h2","2384":"f5a3","2385":"f5b3","2386":"f5c3","2387":"f5d3","2388":"f5e3","2389":"f5f3","2390":"f5g3","2391":"f5h3","2392":"f5a4","2393":"f5b4","2394":"f5c4","2395":"f5d4","2396":"f5e4","2397":"f5f4","2398":"f5g4","2399":"f5h4","2400":"f5a5","2401":"f5b5","2402":"f5c5","2403":"f5d5","2404":"f5e5","2405":"f5f5","2406":"f5g5","2407":"f5h5","2408":"f5a6","2409":"f5b6","2410":"f5c6","2411":"f5d6","2412":"f5e6","2413":"f5f6","2414":"f5g6","2415":"f5h6","2416":"f5a7","2417":"f5b7","2418":"f5c7","2419":"f5d7","2420":"f5e7","2421":"f5f7","2422":"f5g7","2423":"f5h7","2424":"f5a8","2425":"f5b8","2426":"f5c8","2427":"f5d8","2428":"f5e8","2429":"f5f8","2430":"f5g8","2431":"f5h8","2432":"g5a1","2433":"g5b1","2434":"g5c1","2435":"g5d1","2436":"g5e1","2437":"g5f1","2438":"g5g1","2439":"g5h1","2440":"g5a2","2441":"g5b2","2442":"g5c2","2443":"g5d2","2444":"g5e2","2445":"g5f2","2446":"g5g2","2447":"g5h2","2448":"g5a3","2449":"g5b3","2450":"g5c3","2451":"g5d3","2452":"g5e3","2453":"g5f3","2454":"g5g3","2455":"g5h3","2456":"g5a4","2457":"g5b4","2458":"g5c4","2459":"g5d4","2460":"g5e4","2461":"g5f4","2462":"g5g4","2463":"g5h4","2464":"g5a5","2465":"g5b5","2466":"g5c5","2467":"g5d5","2468":"g5e5","2469":"g5f5","2470":"g5g5","2471":"g5h5","2472":"g5a6","2473":"g5b6","2474":"g5c6","2475":"g5d6","2476":"g5e6","2477":"g5f6","2478":"g5g6","2479":"g5h6","2480":"g5a7","2481":"g5b7","2482":"g5c7","2483":"g5d7","2484":"g5e7","2485":"g5f7","2486":"g5g7","2487":"g5h7","2488":"g5a8","2489":"g5b8","2490":"g5c8","2491":"g5d8","2492":"g5e8","2493":"g5f8","2494":"g5g8","2495":"g5h8","2496":"h5a1","2497":"h5b1","2498":"h5c1","2499":"h5d1","2500":"h5e1","2501":"h5f1","2502":"h5g1","2503":"h5h1","2504":"h5a2","2505":"h5b2","2506":"h5c2","2507":"h5d2","2508":"h5e2","2509":"h5f2","2510":"h5g2","2511":"h5h2","2512":"h5a3","2513":"h5b3","2514":"h5c3","2515":"h5d3","2516":"h5e3","2517":"h5f3","2518":"h5g3","2519":"h5h3","2520":"h5a4","2521":"h5b4","2522":"h5c4","2523":"h5d4","2524":"h5e4","2525":"h5f4","2526":"h5g4","2527":"h5h4","2528":"h5a5","2529":"h5b5","2530":"h5c5","2531":"h5d5","2532":"h5e5","2533":"h5f5","2534":"h5g5","2535":"h5h5","2536":"h5a6","2537":"h5b6","2538":"h5c6","2539":"h5d6","2540":"h5e6","2541":"h5f6","2542":"h5g6","2543":"h5h6","2544":"h5a7","2545":"h5b7","2546":"h5c7","2547":"h5d7","2548":"h5e7","2549":"h5f7","2550":"h5g7","2551":"h5h7","2552":"h5a8","2553":"h5b8","2554":"h5c8","2555":"h5d8","2556":"h5e8","2557":"h5f8","2558":"h5g8","2559":"h5h8","2560":"a6a1","2561":"a6b1","2562":"a6c1","2563":"a6d1","2564":"a6e1","2565":"a6f1","2566":"a6g1","2567":"a6h1","2568":"a6a2","2569":"a6b2","2570":"a6c2","2571":"a6d2","2572":"a6e2","2573":"a6f2","2574":"a6g2","2575":"a6h2","2576":"a6a3","2577":"a6b3","2578":"a6c3","2579":"a6d3","2580":"a6e3","2581":"a6f3","2582":"a6g3","2583":"a6h3","2584":"a6a4","2585":"a6b4","2586":"a6c4","2587":"a6d4","2588":"a6e4","2589":"a6f4","2590":"a6g4","2591":"a6h4","2592":"a6a5","2593":"a6b5","2594":"a6c5","2595":"a6d5","2596":"a6e5","2597":"a6f5","2598":"a6g5","2599":"a6h5","2600":"a6a6","2601":"a6b6","2602":"a6c6","2603":"a6d6","2604":"a6e6","2605":"a6f6","2606":"a6g6","2607":"a6h6","2608":"a6a7","2609":"a6b7","2610":"a6c7","2611":"a6d7","2612":"a6e7","2613":"a6f7","2614":"a6g7","2615":"a6h7","2616":"a6a8","2617":"a6b8","2618":"a6c8","2619":"a6d8","2620":"a6e8","2621":"a6f8","2622":"a6g8","2623":"a6h8","2624":"b6a1","2625":"b6b1","2626":"b6c1","2627":"b6d1","2628":"b6e1","2629":"b6f1","2630":"b6g1","2631":"b6h1","2632":"b6a2","2633":"b6b2","2634":"b6c2","2635":"b6d2","2636":"b6e2","2637":"b6f2","2638":"b6g2","2639":"b6h2","2640":"b6a3","2641":"b6b3","2642":"b6c3","2643":"b6d3","2644":"b6e3","2645":"b6f3","2646":"b6g3","2647":"b6h3","2648":"b6a4","2649":"b6b4","2650":"b6c4","2651":"b6d4","2652":"b6e4","2653":"b6f4","2654":"b6g4","2655":"b6h4","2656":"b6a5","2657":"b6b5","2658":"b6c5","2659":"b6d5","2660":"b6e5","2661":"b6f5","2662":"b6g5","2663":"b6h5","2664":"b6a6","2665":"b6b6","2666":"b6c6","2667":"b6d6","2668":"b6e6","2669":"b6f6","2670":"b6g6","2671":"b6h6","2672":"b6a7","2673":"b6b7","2674":"b6c7","2675":"b6d7","2676":"b6e7","2677":"b6f7","2678":"b6g7","2679":"b6h7","2680":"b6a8","2681":"b6b8","2682":"b6c8","2683":"b6d8","2684":"b6e8","2685":"b6f8","2686":"b6g8","2687":"b6h8","2688":"c6a1","2689":"c6b1","2690":"c6c1","2691":"c6d1","2692":"c6e1","2693":"c6f1","2694":"c6g1","2695":"c6h1","2696":"c6a2","2697":"c6b2","2698":"c6c2","2699":"c6d2","2700":"c6e2","2701":"c6f2","2702":"c6g2","2703":"c6h2","2704":"c6a3","2705":"c6b3","2706":"c6c3","2707":"c6d3","2708":"c6e3","2709":"c6f3","2710":"c6g3","2711":"c6h3","2712":"c6a4","2713":"c6b4","2714":"c6c4","2715":"c6d4","2716":"c6e4","2717":"c6f4","2718"
2775:"c6g4","2719":"c6h4","2720":"c6a5","2721":"c6b5","2722":"c6c5","2723":"c6d5","2724":"c6e5","2725":"c6f5","2726":"c6g5","2727":"c6h5","2728":"c6a6","2729":"c6b6","2730":"c6c6","2731":"c6d6","2732":"c6e6","2733":"c6f6","2734":"c6g6","2735":"c6h6","2736":"c6a7","2737":"c6b7","2738":"c6c7","2739":"c6d7","2740":"c6e7","2741":"c6f7","2742":"c6g7","2743":"c6h7","2744":"c6a8","2745":"c6b8","2746":"c6c8","2747":"c6d8","2748":"c6e8","2749":"c6f8","2750":"c6g8","2751":"c6h8","2752":"d6a1","2753":"d6b1","2754":"d6c1","2755":"d6d1","2756":"d6e1","2757":"d6f1","2758":"d6g1","2759":"d6h1","2760":"d6a2","2761":"d6b2","2762":"d6c2","2763":"d6d2","2764":"d6e2","2765":"d6f2","2766":"d6g2","2767":"d6h2","2768":"d6a3","2769":"d6b3","2770":"d6c3","2771":"d6d3","2772":"d6e3","2773":"d6f3","2774":"d6g3","2775":"d6h3","2776":"d6a4","2777":"d6b4","2778":"d6c4","2779":"d6d4","2780":"d6e4","2781":"d6f4","2782":"d6g4","2783":"d6h4","2784":"d6a5","2785":"d6b5","2786":"d6c5","2787":"d6d5","2788":"d6e5","2789":"d6f5","2790":"d6g5","2791":"d6h5","2792":"d6a6","2793":"d6b6","2794":"d6c6","2795":"d6d6","2796":"d6e6","2797":"d6f6","2798":"d6g6","2799":"d6h6","2800":"d6a7","2801":"d6b7","2802":"d6c7","2803":"d6d7","2804":"d6e7","2805":"d6f7","2806":"d6g7","2807":"d6h7","2808":"d6a8","2809":"d6b8","2810":"d6c8","2811":"d6d8","2812":"d6e8","2813":"d6f8","2814":"d6g8","2815":"d6h8","2816":"e6a1","2817":"e6b1","2818":"e6c1","2819":"e6d1","2820":"e6e1","2821":"e6f1","2822":"e6g1","2823":"e6h1","2824":"e6a2","2825":"e6b2","2826":"e6c2","2827":"e6d2","2828":"e6e2","2829":"e6f2","2830":"e6g2","2831":"e6h2","2832":"e6a3","2833":"e6b3","2834":"e6c3","2835":"e6d3","2836":"e6e3","2837":"e6f3","2838":"e6g3","2839":"e6h3","2840":"e6a4","2841":"e6b4","2842":"e6c4","2843":"e6d4","2844":"e6e4","2845":"e6f4","2846":"e6g4","2847":"e6h4","2848":"e6a5","2849":"e6b5","2850":"e6c5","2851":"e6d5","2852":"e6e5","2853":"e6f5","2854":"e6g5","2855":"e6h5","2856":"e6a6","2857":"e6b6","2858":"e6c6","2859":"e6d6","2860":"e6e6","2861":"e6f6","2862":"e6g6","2863":"e6h6","2864":"e6
2775a7","2865":"e6b7","2866":"e6c7","2867":"e6d7","2868":"e6e7","2869":"e6f7","2870":"e6g7","2871":"e6h7","2872":"e6a8","2873":"e6b8","2874":"e6c8","2875":"e6d8","2876":"e6e8","2877":"e6f8","2878":"e6g8","2879":"e6h8","2880":"f6a1","2881":"f6b1","2882":"f6c1","2883":"f6d1","2884":"f6e1","2885":"f6f1","2886":"f6g1","2887":"f6h1","2888":"f6a2","2889":"f6b2","2890":"f6c2","2891":"f6d2","2892":"f6e2","2893":"f6f2","2894":"f6g2","2895":"f6h2","2896":"f6a3","2897":"f6b3","2898":"f6c3","2899":"f6d3","2900":"f6e3","2901":"f6f3","2902":"f6g3","2903":"f6h3","2904":"f6a4","2905":"f6b4","2906":"f6c4","2907":"f6d4","2908":"f6e4","2909":"f6f4","2910":"f6g4","2911":"f6h4","2912":"f6a5","2913":"f6b5","2914":"f6c5","2915":"f6d5","2916":"f6e5","2917":"f6f5","2918":"f6g5","2919":"f6h5","2920":"f6a6","2921":"f6b6","2922":"f6c6","2923":"f6d6","2924":"f6e6","2925":"f6f6","2926":"f6g6","2927":"f6h6","2928":"f6a7","2929":"f6b7","2930":"f6c7","2931":"f6d7","2932":"f6e7","2933":"f6f7","2934":"f6g7","2935":"f6h7","2936":"f6a8","2937":"f6b8","2938":"f6c8","2939":"f6d8","2940":"f6e8","2941":"f6f8","2942":"f6g8","2943":"f6h8","2944":"g6a1","2945":"g6b1","2946":"g6c1","2947":"g6d1","2948":"g6e1","2949":"g6f1","2950":"g6g1","2951":"g6h1","2952":"g6a2","2953":"g6b2","2954":"g6c2","2955":"g6d2","2956":"g6e2","2957":"g6f2","2958":"g6g2","2959":"g6h2","2960":"g6a3","2961":"g6b3","2962":"g6c3","2963":"g6d3","2964":"g6e3","2965":"g6f3","2966":"g6g3","2967":"g6h3","2968":"g6a4","2969":"g6b4","2970":"g6c4","2971":"g6d4","2972":"g6e4","2973":"g6f4","2974":"g6g4","2975":"g6h4","2976":"g6a5","2977":"g6b5","2978":"g6c5","2979":"g6d5","2980":"g6e5","2981":"g6f5","2982":"g6g5","2983":"g6h5","2984":"g6a6","2985":"g6b6","2986":"g6c6","2987":"g6d6","2988":"g6e6","2989":"g6f6","2990":"g6g6","2991":"g6h6","2992":"g6a7","2993":"g6b7","2994":"g6c7","2995":"g6d7","2996":"g6e7","2997":"g6f7","2998":"g6g7","2999":"g6h7","3000":"g6a8","3001":"g6b8","3002":"g6c8","3003":"g6d8","3004":"g6e8","3005":"g6f8","3006":"g6g8","3007":"g6h8","3008":"h6a1","3009":"h6b1","3010":"h6c1","3011":"h6d1","3012":"h6e1","3013":"h6f1","3014":"h6g1","3015":"h6h1","3016":"h6a2","3017":"h6b2","3018":"h6c2","3019":"h6d2","3020":"h6e2","3021":"h6f2","3022":"h6g2","3023":"h6h2","3024":"h6a3","3025":"h6b3","3026":"h6c3","3027":"h6d3","3028":"h6e3","3029":"h6f3","3030":"h6g3","3031":"h6h3","3032":"h6a4","3033":"h6b4","3034":"h6c4","3035":"h6d4","3036":"h6e4","3037":"h6f4","3038":"h6g4","3039":"h6h4","3040":"h6a5","3041":"h6b5","3042":"h6c5","3043":"h6d5","3044":"h6e5","3045":"h6f5","3046":"h6g5","3047":"h6h5","3048":"h6a6","3049":"h6b6","3050":"h6c6","3051":"h6d6","3052":"h6e6","3053":"h6f6","3054":"h6g6","3055":"h6h6","3056":"h6a7","3057":"h6b7","3058":"h6c7","3059":"h6d7","3060":"h6e7","3061":"h6f7","3062":"h6g7","3063":"h6h7","3064":"h6a8","3065":"h6b8","3066":"h6c8","3067":"h6d8","3068":"h6e8","3069":"h6f8","3070":"h6g8","3071":"h6h8","3072":"a7
2775a1","3073":"a7b1","3074":"a7c1","3075":"a7d1","3076":"a7e1","3077":"a7f1","3078":"a7g1","3079":"a7h1","3080":"a7a2","3081":"a7b2","3082":"a7c2","3083":"a7d2","3084":"a7e2","3085":"a7f2","3086":"a7g2","3087":"a7h2","3088":"a7a3","3089":"a7b3","3090":"a7c3","3091":"a7d3","3092":"a7e3","3093":"a7f3","3094":"a7g3","3095":"a7h3","3096":"a7a4","3097":"a7b4","3098":"a7c4","3099":"a7d4","3100":"a7e4","3101":"a7f4","3102":"a7g4","3103":"a7h4","3104":"a7a5","3105":"a7b5","3106":"a7c5","3107":"a7d5","3108":"a7e5","3109":"a7f5","3110":"a7g5","3111":"a7h5","3112":"a7a6","3113":"a7b6","3114":"a7c6","3115":"a7d6","3116":"a7e6","3117":"a7f6","3118":"a7g6","3119":"a7h6","3120":"a7a7","3121":"a7b7","3122":"a7c7","3123":"a7d7","3124":"a7e7","3125":"a7f7","3126":"a7g7","3127":"a7h7","3128":"a7a8","3129":"a7b8","3130":"a7c8","3131":"a7d8","3132":"a7e8","3133":"a7f8","3134":"a7g8","3135":"a7h8","3136":"b7a1","3137":"b7b1","3138":"b7c1","3139":"b7d1","3140":"b7e1","3141":"b7f1","3142":"b7g1","3143":"b7h1","3144":"b7a2","3145":"b7b2","3146":"b7c2","3147":"b7d2","3148":"b7e2","3149":"b7f2","3150":"b7g2","3151":"b7h2","3152":"b7a3","3153":"b7b3","3154":"b7c3","3155":"b7d3","3156":"b7e3","3157":"b7f3","3158":"b7g3","3159":"b7h3","3160":"b7a4","3161":"b7b4","3162":"b7c4","3163":"b7d4","3164":"b7e4","3165":"b7f4","3166":"b7g4","3167":"b7h4","3168":"b7a5","3169":"b7b5","3170":"b7c5","3171":"b7d5","3172":"b7e5","3173":"b7f5","3174":"b7g5","3175":"b7h5","3176":"b7a6","3177":"b7b6","3178":"b7c6","3179":"b7d6","3180":"b7e6","3181":"b7f6","3182":"b7g6","3183":"b7h6","3184":"b7a7","3185":"b7b7","3186":"b7c7","3187":"b7d7","3188":"b7e7","3189":"b7f7","3190":"b7g7","3191":"b7h7","3192":"b7a8","3193":"b7b8","3194":"b7c8","3195":"b7d8","3196":"b7e8","3197":"b7f8","3198":"b7g8","3199":"b7h8","3200":"c7a1","3201":"c7b1","3202":"c7c1","3203":"c7d1","3204":"c7e1","3205":"c7f1","3206":"c7g1","3207":"c7h1","3208":"c7a2","3209":"c7b2","3210":"c7c2","3211":"c7d2","3212":"c7e2","3213":"c7f2","3214":"c7g2","3215":"c7h2","3216":"c7a3","3217":"c7b3","3218":"c7c3","3219":"c7d3","3220":"c7e3","3221":"c7f3","3222":"c7g3","3223":"c7h3","3224":"c7a4","3225":"c7b4","3226":"c7c4","3227":"c7d4","3228":"c7e4","3229":"c7f4","3230":"c7g4","3231":"c7h4","3232":"c7a5","3233":"c7b5","3234":"c7c5","3235":"c7d5","3236":"c7e5","3237":"c7f5","3238":"c7g5","3239":"c7h5","3240":"c7a6","3241":"c7b6","3242":"c7c6","3243":"c7d6","3244":"c7e6","3245":"c7f6","3246":"c7g6","3247":"c7h6","3248":"c7a7","3249":"c7b7","3250":"c7c7","3251":"c7d7","3252":"c7e7","3253":"c7f7","3254":"c7g7","3255":"c7h7","3256":"c7a8","3257":"c7b8","3258":"c7c8","3259":"c7d8","3260":"c7e8","3261":"c7f8","3262":"c7g8","3263":"c7h8","3264":"d7a1","3265":"d7b1","3266":"d7c1","3267":"d7d1","3268":"d7e1","3269":"d7f1","3270":"d7g1","3271":"d7h1","3272":"d7a2","3273":"d7b2","3274":"d7c2","3275":"d7d2","3276":"d7e2","3277":"d7f2","3278":"d7g2","3279":"d7h2","3280":"d7a3","3281":"d7b3","3282":"d7c3","3283":"d7d3","3284":"d7e3","3285":"d7f3","3286":"d7g3","3287":"d7h3","3288":"d7a4","3289":"d7b4","3290":"d7c4","3291":"d7d4","3292":"d7e4","3293":"d7f4","3294":"d7g4","3295":"d7h4","3296":"d7a5","3297":"d7b5","3298":"d7c5","3299":"d7d5","3300":"d7e5","3301":"d7f5","3302":"d7g5","3303":"d7h5","3304":"d7a6","3305":"d7b6","3306":"d7c6","3307":"d7d6","3308":"d7e6","3309":"d7f6","3310":"d7g6","3311":"d7h6","3312":"d7a7","3313":"d7b7","3314":"d7c7","3315":"d7d7","3316":"d7e7","3317":"d7f7","3318":"d7g7","3319":"d7h7","3320":"d7a8","3321":"d7b8","3322":"d7c8","3323":"d7d8","3324":"d7e8","3325":"d7f8","3326":"d7g8","3327":"d7h8","3328":"e7a1","3329":"e7b1","3330":"e7c1","3331":"e7d1","3332":"e7e1","3333":"e7f1","3334":"e7g1","3335":"e7h1","3336":"e7a2","3337":"e7b2","3338":"e7c2","3339":"e7d2","3340":"e7e2","3341":"e7f2","3342":"e7g2","3343":"e7h2","3344":"e7a3","3345":"e7b3","3346":"e7c3","3347":"e7d3","3348":"e7e3","3349":"e7f3","3350":"e7g3","3351":"e7h3","3352":"e7a4","3353":"e7b4","3354":"e7c4","3355":"e7d4","3356":"e7e4","3357":"e7f4","3358":"e7g4","3359":"e7h4","3360":"e7a5","3361":"e7b5","3362":"e7c5","3363":"e7d5","3364":"e7e5","3365":"e7f5","3366":"e7g5","3367":"e7h5","3368":"e7a6","3369":"e7b6","3370":"e7c6","3371":"e7d6","3372":"e7e6","3373":"e7f6","3374":"e7g6","3375":"e7h6","3376":"e7a7","3377":"e7b7","3378":"e7c7","3379":"e7d7","3380":"e7e7","3381":"e7f7","3382":"e7g7","3383":"e7h7","3384":"e7a8","3385":"e7b8","3386":"e7c8","3387":"e7d8","3388":"e7e8","3389":"e7f8","3390":"e7g8","3391":"e7h8","3392":"f7a1","3393":"f7b1","3394":"f7c1","3395":"f7d1","3396":"f7e1","3397":"f7f1","3398":"f7g1","3399":"f7h1","3400":"f7a2","3401":"f7b2","3402":"f7c2","3403":"f7d2","3404":"f7e2","3405":"f7f2","3406":"f7g2","3407":"f7h2","3408":"f7a3","3409"
2775:"f7b3","3410":"f7c3","3411":"f7d3","3412":"f7e3","3413":"f7f3","3414":"f7g3","3415":"f7h3","3416":"f7a4","3417":"f7b4","3418":"f7c4","3419":"f7d4","3420":"f7e4","3421":"f7f4","3422":"f7g4","3423":"f7h4","3424":"f7a5","3425":"f7b5","3426":"f7c5","3427":"f7d5","3428":"f7e5","3429":"f7f5","3430":"f7g5","3431":"f7h5","3432":"f7a6","3433":"f7b6","3434":"f7c6","3435":"f7d6","3436":"f7e6","3437":"f7f6","3438":"f7g6","3439":"f7h6","3440":"f7a7","3441":"f7b7","3442":"f7c7","3443":"f7d7","3444":"f7e7","3445":"f7f7","3446":"f7g7","3447":"f7h7","3448":"f7a8","3449":"f7b8","3450":"f7c8","3451":"f7d8","3452":"f7e8","3453":"f7f8","3454":"f7g8","3455":"f7h8","3456":"g7a1","3457":"g7b1","3458":"g7c1","3459":"g7d1","3460":"g7e1","3461":"g7f1","3462":"g7g1","3463":"g7h1","3464":"g7a2","3465":"g7b2","3466":"g7c2","3467":"g7d2","3468":"g7e2","3469":"g7f2","3470":"g7g2","3471":"g7h2","3472":"g7a3","3473":"g7b3","3474":"g7c3","3475":"g7d3","3476":"g7e3","3477":"g7f3","3478":"g7g3","3479":"g7h3","3480":"g7a4","3481":"g7b4","3482":"g7c4","3483":"g7d4","3484":"g7e4","3485":"g7f4","3486":"g7g4","3487":"g7h4","3488":"g7a5","3489":"g7b5","3490":"g7c5","3491":"g7d5","3492":"g7e5","3493":"g7f5","3494":"g7g5","3495":"g7h5","3496":"g7a6","3497":"g7b6","3498":"g7c6","3499":"g7d6","3500":"g7e6","3501":"g7f6","3502":"g7g6","3503":"g7h6","3504":"g7a7","3505":"g7b7","3506":"g7c7","3507":"g7d7","3508":"g7e7","3509":"g7f7","3510":"g7g7","3511":"g7h7","3512":"g7a8","3513":"g7b8","3514":"g7c8","3515":"g7d8","3516":"g7e8","3517":"g7f8","3518":"g7g8","3519":"g7h8","3520":"h7a1","3521":"h7b1","3522":"h7c1","3523":"h7d1","3524":"h7e1","3525":"h7f1","3526":"h7g1","3527":"h7h1","3528":"h7a2","3529":"h7b2","3530":"h7c2","3531":"h7d2","3532":"h7e2","3533":"h7f2","3534":"h7g2","3535":"h7h2","3536":"h7a3","3537":"h7b3","3538":"h7c3","3539":"h7d3","3540":"h7e3","3541":"h7f3","3542":"h7g3","3543":"h7h3","3544":"h7a4","3545":"h7b4","3546":"h7c4","3547":"h7d4","3548":"h7e4","3549":"h7f4","3550":"h7g4","3551":"h7h4","3552":"h7a5","3553":"h7b5","3554":"h7c5","3555":"h7d5","3556":"h7e5","3557":"h7f5","3558":"h7g5","3559":"h7h5","3560":"h7a6","3561":"h7b6","3562":"h7c6","3563":"h7d6","3564":"h7e6","3565":"h7f6","3566":"h7g6","3567":"h7h6","3568":"h7a7","3569":"h7b7","3570":"h7c7","3571":"h7d7","3572":"h7e7","3573":"h7f7","3574":"h7g7","3575":"h7h7","3576":"h7a8","3577":"h7b8","3578":"h7c8","3579":"h7d8","3580":"h7e8","3581":"h7f8","3582":"h7g8","3583":"h7h8","3584":"a8a1","3585":"a8b1","3586":"a8c1","3587":"a8d1","3588":"a8e1","3589":"a8f1","3590":"a8g1","3591":"a8h1","3592":"a8a2","3593":"a8b2","3594":"a8c2","3595":"a8d2","3596":"a8e2","3597":"a8f2","3598":"a8g2","3599":"a8h2","3600":"a8a3","3601":"a8b3","3602":"a8c3","3603":"a8d3","3604":"a8e3","3605":"a8f3","3606":"a8g3","3607":"a8h3","3608":"a8a4","3609":"a8b4","3610":"a8c4","3611":"a8d4","3612":"a8e4","3613":"a8f4","3614":"a8g4","3615":"a8h4","3616":"a8a5","3617":"a8b5","3618":"a8c5","3619":"a8d5","3620":"a8e5","3621":"a8f5","3622":"a8g5","3623":"a8h5","3624":"a8a6","3625":"a8b6","3626":"a8c6","3627":"a8d6","3628":"a8e6","3629":"a8f6","3630":"a8g6","3631":"a8h6","3632":"a8a7","3633":"a8b7","3634":"a8c7","3635":"a8d7","3636":"a8e7","3637":"a8f7","3638":"a8g7","3639":"a8h7","3640":"a8a8","3641":"a8b8","3642":"a8c8","3643":"a8d8","3644":"a8e8","3645":"a8f8","3646":"a8g8","3647":"a8h8","3648":"b8a1","3649":"b8b1","3650":"b8c1","3651":"b8d1","3652":"b8e1","3653":"b8f1","3654":"b8g1","3655":"b8h1","3656":"b8a2","3657":"b8b2","3658":"b8c2","3659":"b8d2","3660":"b8e2","3661":"b8f2","3662":"b8g2","3663":"b8h2","3664":"b8a3","3665":"b8b3","3666":"b8c3","3667":"b8d3","3668":"b8e3","3669":"b8f3","3670":"b8g3","3671":"b8h3","3672":"b8a4","3673":"b8b4","3674":"b8c4","3675":"b8d4","3676":"b8e4","3677":"b8f4","3678":"b8g4","3679":"b8h4","3680":"b8a5","3681":"b8b5","3682":"b8c5","3683":"b8d5","3684":"b8e5","3685":"b8f5","3686":"b8g5","3687":"b8h5","3688":"b8a6","3689":"b8b6","3690":"b8c6","3691":"b8d6","3692":"b8e6","3693":"b8f6","3694":"b8g6","3695":"b8h6","3696":"b8a7","3697":"b8b7","3698":"b8c7","3699":"b8d7","3700":"b8e7","3701":"b8f7","3702":"b8g7","3703":"b8h7","3704":"b8a8","3705":"b8b8","3706":"b8c8","3707":"b8d8","3708":"b8e8","3709":"b8f8","3710":"b8g8","3711":"b8h8","3712":"c8a1","3713":"c8b1","3714":"c8c1","3715":"c8d1","3716":"c8e1","3717":"c8f1","3718":"c8g1","3719":"c8h1","3720":"c8a2","3721":"c8b2","3722":"c8c2","3723":"c8d2","3724":"c8e2","3725":"c8f2","3726":"c8g2","3727":"c8h2","3728":"c8a3","3729":"c8b3","3730":"c8c3","3731":"c8d3","3732":"c8e3","3733":"c8f3","3734":"c8g3","3735":"c8h3","3736":"c8a4","3737":"c8b4","3738":"c8c4","3739":"c8d4","3740":"c8e4","3741":"c8f4","3742":"c8g4","3743":"c8h4","3744":"c8a5","3745":"c8b5","3746":"c8c5","3747":"c8d5","3748":"c8e5","3749":"c8f5","3750":"c8g5","3751":"c8h5","3752":"c8a6","3753":"c8b6","3754":"c8c6","3755":"c8d6","3756":"c8e6","3757":"
2775c8f6","3758":"c8g6","3759":"c8h6","3760":"c8a7","3761":"c8b7","3762":"c8c7","3763":"c8d7","3764":"c8e7","3765":"c8f7","3766":"c8g7","3767":"c8h7","3768":"c8a8","3769":"c8b8","3770":"c8c8","3771":"c8d8","3772":"c8e8","3773":"c8f8","3774":"c8g8","3775":"c8h8","3776":"d8a1","3777":"d8b1","3778":"d8c1","3779":"d8d1","3780":"d8e1","3781":"d8f1","3782":"d8g1","3783":"d8h1","3784":"d8a2","3785":"d8b2","3786":"d8c2","3787":"d8d2","3788":"d8e2","3789":"d8f2","3790":"d8g2","3791":"d8h2","3792":"d8a3","3793":"d8b3","3794":"d8c3","3795":"d8d3","3796":"d8e3","3797":"d8f3","3798":"d8g3","3799":"d8h3","3800":"d8a4","3801":"d8b4","3802":"d8c4","3803":"d8d4","3804":"d8e4","3805":"d8f4","3806":"d8g4","3807":"d8h4","3808":"d8a5","3809":"d8b5","3810":"d8c5","3811":"d8d5","3812":"d8e5","3813":"d8f5","3814":"d8g5","3815":"d8h5","3816":"d8a6","3817":"d8b6","3818":"d8c6","3819":"d8d6","3820":"d8e6","3821":"d8f6","3822":"d8g6","3823":"d8h6","3824":"d8a7","3825":"d8b7","3826":"d8c7","3827":"d8d7","3828":"d8e7","3829":"d8f7","3830":"d8g7","3831":"d8h7","3832":"d8a8","3833":"d8b8","3834":"d8c8","3835":"d8d8","3836":"d8e8","3837":"d8f8","3838":"d8g8","3839":"d8h8","3840":"e8a1","3841":"e8b1","3842":"e8c1","3843":"e8d1","3844":"e8e1","3845":"e8f1","3846":"e8g1","3847":"e8h1","3848":"e8a2","3849":"e8b2","3850":"e8c2","3851":"e8d2","3852":"e8e2","3853":"e8f2","3854":"e8g2","3855":"e8h2","3856":"e8a3","3857":"e8b3","3858":"e8c3","3859":"e8d3","3860":"e8e3","3861":"e8f3","3862":"e8g3","3863":"e8h3","3864":"e8a4","3865":"e8b4","3866":"e8c4","3867":"e8d4","3868":"e8e4","3869":"e8f4","3870":"e8g4","3871":"e8h4","3872":"e8a5","3873":"e8b5","3874":"e8c5","3875":"e8d5","3876":"e8e5","3877":"e8f5","3878":"e8g5","3879":"e8h5","3880":"e8a6","3881":"e8b6","3882":"e8c6","3883":"e8d6","3884":"e8e6","3885":"e8f6","3886":"e8g6","3887":"e8h6","3888":"e8a7","3889":"e8b7","3890":"e8c7","3891":"e8d7","3892":"e8e7","3893":"e8f7","3894":"e8g7","3895":"e8h7","3896":"e8a8","3897":"e8b8","3898":"e8c8","3899":"e8d8","3900":"e8e8","3901":"e8f8","3902":"e8g8","3903":"e8h8","3904":"f8a1","3905":"f8b1","3906":"f8c1","3907":"f8d1","3908":"f8e1","3909":"f8f1","3910":"f8g1","3911":"f8h1","3912":"f8a2","3913":"f8b2","3914":"f8c2","3915":"f8d2","3916":"f8e2","3917":"f8f2","3918":"f8g2","3919":"f8h2","3920":"f8a3","3921":"f8b3","3922":"f8c3","3923":"f8d3","3924":"f8e3","3925":"f8f3","3926":"f8g3","3927":"f8h3","3928":"f8a4","3929":"f8b4","3930":"f8c4","3931":"f8d4","3932":"f8e4","3933":"f8f4","3934":"f8g4","3935":"f8h4","3936":"f8a5","3937":"f8b5","3938":"f8c5","3939":"f8d5","3940":"f8e5","3941":"f8f5","3942":"f8g5","3943":"f8h5","3944":"f8a6","3945":"f8b6","3946":"f8c6","3947":"f8d6","3948":"f8e6","3949":"f8f6","3950":"f8g6","3951":"f8h6","3952":"f8a7","3953":"f8b7","3954":"f8c7","3955":"f8d7","3956":"f8e7","3957":"f8f7","3958":"f8g7","3959":"f8h7","3960":"f8a8","3961":"f8b8","3962":"f8c8","3963":"f8d8","3964":"f8e8","3965":"f8f8","3966":"f8g8","3967":"f8h8","3968":"g8a1","3969":"g8b1","3970":"g8c1","3971":"g8d1","3972":"g8e1","3973":"g8f1","3974":"g8g1","3975":"g8h1","3976":"g8a2","3977":"g8b2","3978":"g8c2","3979":"g8d2","3980":"g8e2","3981":"g8f2","3982":"g8g2","3983":"g8h2","3984":"g8a3","3985":"g8b3","3986":"g8c3","3987":"g8d3","3988":"g8e3","3989":"g8f3","3990":"g8g3","3991":"g8h3","3992":"g8a4","3993":"g8b4","3994":"g8c4","3995":"g8d4","3996":"g8e4","3997":"g8f4","3998":"g8g4","3999":"g8h4","4000":"g8a5","4001":"g8b5","4002":"g8c5","4003":"g8d5","4004":"g8e5","4005":"g8f5","4006":"g8g5","4007":"g8h5","4008":"g8a6","4009":"g8b6","4010":"g8c6","4011":"g8d6","4012":"g8e6","4013":"g8f6","4014":"g8g6","4015":"g8h6","4016":"g8a7","4017":"g8b7","4018":"g8c7","4019":"g8d7","4020":"g8e7","4021":"g8f7","4022":"g8g7","4023":"g8h7","4024":"g8a8","4025":"g8b8","4026":"g8c8","4027":"g8d8","4028":"g8e8","4029":"g8f8","4030":"g8g8","4031":"g8h8","4032":"h8a1","4033":"h8b1","4034":"h8c1","4035":"h8d1","4036":"h8e1","4037":"h8f1","4038":"h8g1","4039":"h8h1","4040":"h8a2","4041":"h8b2","4042":"h8c2","4043":"h8d2","4044":"h8e2","4045":"h8f2","4046":"h8g2","4047":"h8h2","4048":"h8a3","4049":"h8b3","4050":"h8c3","4051":"h8d3","4052":"h8e3","4053":"h8f3","4054":"h8g3","4055":"h8h3","4056":"h8a4","4057":"h8b4","4058":"h8c4","4059":"h8d4","4060":"h8e4","4061":"h8f4","4062":"h8g4","4063":"h8h4","4064":"h8a5","4065":"h8b5","4066":"h8c5","4067":"h8d5","4068":"h8e5","4069":"h8f5","4070":"h8g5","4071":"h8h5","4072":"h8a6","4073":"h8b6","4074":"h8c6","4075":"h8d6","4076":"h8e
27756","4077":"h8f6","4078":"h8g6","4079":"h8h6","4080":"h8a7","4081":"h8b7","4082":"h8c7","4083":"h8d7","4084":"h8e7","4085":"h8f7","4086":"h8g7","4087":"h8h7","4088":"h8a8","4089":"h8b8","4090":"h8c8","4091":"h8d8","4092":"h8e8","4093":"h8f8","4094":"h8g8","4095":"h8h8","4096":"a7a8q","4097":"a7a8r","4098":"a7a8b","4099":"a7a8n","4100":"a7b8q","4101":"a7b8r","4102":"a7b8b","4103":"a7b8n","4104":"a7c8q","4105":"a7c8r","4106":"a7c8b","4107":"a7c8n","4108":"a7d8q","4109":"a7d8r","4110":"a7d8b","4111":"a7d8n","4112":"a7e8q","4113":"a7e8r","4114":"a7e8b","4115":"a7e8n","4116":"a7f8q","4117":"a7f8r","4118":"a7f8b","4119":"a7f8n","4120":"a7g8q","4121":"a7g8r","4122":"a7g8b","4123":"a7g8n","4124":"a7h8q","4125":"a7h8r","4126":"a7h8b","4127":"a7h8n","4128":"b7a8q","4129":"b7a8r","4130":"b7a8b","4131":"b7a8n","4132":"b7b8q","4133":"b7b8r","4134":"b7b8b","4135":"b7b8n","4136":"b7c8q","4137":"b7c8r","4138":"b7c8b","4139":"b7c8n","4140":"b7d8q","4141":"b7d8r","4142":"b7d8b","4143":"b7d8n","4144":"b7e8q","4145":"b7e8r","4146":"b7e8b","4147":"b7e8n","4148":"b7f8q","4149":"b7f8r","4150":"b7f8b","4151":"b7f8n","4152":"b7g8q","4153":"b7g8r","4154":"b7g8b","4155":"b7g8n","4156":"b7h8q","4157":"b7h8r","4158":"b7h8b","4159":"b7h8n","4160":"c7a8q","4161":"c7a8r","4162":"c7a8b","4163":"c7a8n","4164":"c7b8q","4165":"c7b8r","4166":"c7b8b","4167":"c7b8n","4168":"c7c8q","4169":"c7c8r","4170":"c7c8b","4171":"c7c8n","4172":"c7d8q","4173":"c7d8r","4174":"c7d8b","4175":"c7d8n","4176":"c7e8q","4177":"c7e8r","4178":"c7e8b","4179":"c7e8n","4180":"c7f8q","4181":"c7f8r","4182":"c7f8b","4183":"c7f8n","4184":"c7g8q","4185":"c7g8r","4186":"c7g8b","4187":"c7g8n","4188":"c7h8q","4189":"c7h8r","4190":"c7h8b","4191":"c7h8n","4192":"d7a8q","4193":"d7a8r","4194":"d7a8b","4195":"d7a8n","4196":"d7b8q","4197":"d7b8r","4198":"d7b8b","4199":"d7b8n","4200":"d7c8q","4201":"d7c8r","4202":"d7c8b","4203":"d7c8n","4204":"d7d8q","4205":"d7d8r","4206":"d7d8b","4207":"d7d8n","4208":"d7e8q","4209":"d7e8r","4210":"d7e8b","4211":"d7e8n","4212":"d7f8q","4213":"d7f8r","4214":"d7f8b","4215":"d7f8n","4216":"d7g8q","4217":"d7g8r","4218":"d7g8b","4219":"d7g8n","4220":"d7h8q","4221":"d7h8r","4222":"d7h8b","4223":"d7h8n","4224":"e7a8q","4225":"e7a8r","4226":"e7a8b","4227":"e7a8n","4228":"e7b8q","4229":"e7b8r","4230":"e7b8b","4231":"e7b8n","4232":"e7c8q","4233":"e7c8r","4234":"e7c8b","4235":"e7c8n","4236":"e7d8q","4237":"e7d8r","4238":"e7d8b","4239":"e7d8n","4240":"e7e8q","4241":"e7e8r","4242":"e7e8b","4243":"e7e8n","4244":"e7f8q","4245":"e7f8r","4246":"e7f8b","4247":"e7f8n","4248":"e7g8q","4249":"e7g8r","4250":"e7g8b","4251":"e7g8n","4252":"e7h8q","4253":"e7h8r","4254":"e7h8b","4255":"e7h8n","4256":"f7a8q","4257":"f7a8r","4258":"f7a8b","4259":"f7a8n","4260":"f7b8q","4261":"f7b8r","4262":"f7b8b","4263":"f7b8n","4264":"f7c8q","4265":"f7c8r","4266":"f7c8b","4267":"f7c8n","4268":"f7d8q","4269":"f7d8r","4270":"f7d8b","4271":"f7d8n","4272":"f7e8q","4273":"f7e8r","4274":"f7e8b","4275":"f7e8n","4276":"f7f8q","4277":"f7f8r","4278":"f7f8b","4279":"f7f8n","4280":"f7g8q","4281":"f7g8r","4282":"f7g8b","4283":"f7g8n","4284":"f7h8q","4285":"f7h8r","4286":"f7h8b","4287":"f7h8n","4288":"g7a8q","4289":"g7a8r","4290":"g7a8b","4291":"g7a8n","4292":"g7b8q","4293":"g7b8r","4294":"g7b8b","4295":"g7b8n","4296":"g7c8q","4297":"g7c8r","4298":"g7c8b","4299":"g7c8n","4300":"g7d8q","4301":"g7d8r","4302":"g7d8b","4303":"g7d8n","4304":"g7e8q","4305":"g7e8r","4306":"g7e8b","4307":"g7e8n","4308":"g7f8q","4309":"g7f8r","4310":"g7f8b","4311":"g7f8n","4312":"g7g8q","4313":"g7g8r","4314":"g7g8b","4315":"g7g8n","4316":"g7h8q","4317":"g7h8r","4318":"g7h8b","4319":"g7h8n","4320":"h7a8q","4321":"h7a8r","4322":"h7a8b","4323":"h7a8n","4324":"h7b8q","4325":"h7b8r","4326":"h7b8b","4327":"h7b8n","4328":"h7c8q","4329":"h7c8r","4330":"h7c8b","4331":"h7c8n","4332":"h7d8q","4333":"h7d8r","4334":"h7d8b","4335":"h7d8n","4336":"h7e8q","4337":"h7e8r","4338":"h7e8b","4339":"h7e8n","4340":"h7f8q","4341":"h7f8r","4342":"h7f8b","4343":"h7f8n","4344":"h7g8q","4345":"h7g8r","4346":"h7g8b","4347":"h7g8n","4348":"h7h8q","4349":"h7h8r","4350":"h7h8b","4351":"h7h8n"}');function on(t){return t.charAt(0)+(9-parseInt(t.charAt(1))).toString()}function os(t){let r=new or.d$(t);if("b"===t.split(" ")[1])r=new or.d$(function(t){let[r,i,a,n,s,o]=t.split(" "),l=r.split("/").slice().reverse().map(t=>(function(t){let r="";for(let i of t)/[A-Z]/.test(i)?r+=i.toLowerCase():/[a-z]/.test(i)?r+=i.toUpperCase():r+=i;return r})(t)).join("/"),u=function(t){if("-"===t)return"-";let r=new Set(t.split("")),i=new Set;r.has("K")&&i.add("k"),r.has("Q")&&i.add("q"),r.has("k")&&i.add("K"),r.has("q")&&i.add("Q");let a="";return i.has("K")&&(a+="K"),i.has("Q")&&(a+="Q"),i.has("k")&&(a+="k"),i.has("q")&&(a+="q"),""===a?"-":a}(a),d="-"!==n?on(n):"-";
2775return"".concat(l," ").concat("w"===i?"b":"w"," ").concat(u," ").concat(d," ").concat(s," ").concat(o)}(r.fen()));else if("w"!==t.split(" ")[1])throw Error("Invalid FEN: ".concat(t));let i=function(t){let r=t.split(" ")[0],i=["P","N","B","R","Q","K","p","n","b","r","q","k"],a=new Float32Array(768),n=r.split("/");for(let t=0;t<8;t++){let r=7-t,s=0;for(let o of n[t])if(isNaN(parseInt(o))){let t=i.indexOf(o);t>=0&&(a[12*(8*r+s)+t]=1),s+=1}else s+=parseInt(o)}return a}(r.fen()),a=new Float32Array(Object.keys(oi).length);for(let t of r.moves({verbose:!0})){let r=t.promotion?t.promotion:"",i=oi[t.from+t.to+r];void 0!==i&&(a[i]=1)}return{boardTokens:i,legalMoves:a}}!function(){let t={["<".concat(1100)]:0},r=1;for(let i=1100;i<2e3;i+=100){let a=i+100;t["".concat(i,"-").concat(a-1)]=r,r+=1}t[">=".concat(2e3)]=r}();var oo=i(57076);class ol{initialize(t,r){"undefined"!=typeof Worker&&(this.worker=new Worker("/maia-worker.js"),this.worker.onmessage=t=>{var r,i;let a=t.data;switch(a.type){case"status":this.options.setStatus(a.status),"ready"===a.status&&(this.options.setProgress(100),null==(r=this.pendingDownload)||r.resolve(),this.pendingDownload=null,this.downloadPromise=null);break;case"progress":this.options.setProgress(a.progress);break;case"error":if(void 0!==a.id){let t=this.pendingInferences.get(a.id);t&&(t.reject(Error(a.message)),this.pendingInferences.delete(a.id))}else this.options.setError(a.message),this.options.setStatus("error"),null==(i=this.pendingDownload)||i.reject(Error(a.message)),this.pendingDownload=null,this.downloadPromise=null;break;case"inference-result":{let t=this.pendingInferences.get(a.id);t&&(t.resolve({logitsMove:new Float32Array(a.logitsMove),logitsValue:new Float32Array(a.logitsValue)}),this.pendingInferences.delete(a.id))}}},this.worker.onerror=t=>{var r;console.error("Maia worker error:",t);let i=Error(t.message||"Worker crashed");this.options.setError(i.message),this.options.setStatus("error"),null==(r=this.pendingDownload)||r.reject(i),this.pendingDownload=null,this.downloadPromise=null},this.worker.postMessage({type:"init",modelUrl:t,modelVersion:r}))}async downloadModel(){if(!this.worker)throw Error("Worker not initialized");return this.downloadPromise||(this.options.setProgress(0),this.downloadPromise=new Promise((t,r)=>{this.pendingDownload={resolve:t,reject:r},this.worker.postMessage({type:"download"})})),this.downloadPromise}async getStorageInfo(){return await this.storage.getStorageInfo()}async clearStorage(){return await this.storage.clearAllStorage()}runInference(t,r,i,a){if(!this.worker)return Promise.reject(Error("Worker not initialized"));let n=this.nextRequestId++;return new Promise((s,o)=>{this.pendingInferences.set(n,{resolve:s,reject:o}),this.worker.postMessage({type:"inference",id:n,tokens:t.buffer,eloSelfs:r.buffer,eloOppos:i.buffer,batchSize:a},[t.buffer,r.buffer,i.buffer])})}async evaluateMaia3(t,r,i){let{boardTokens:a,legalMoves:n}=os(t),{logitsMove:s,logitsValue:o}=await this.runInference(a,Float32Array.from([r]),Float32Array.from([i]),1);return ou(t,new T("float32",s,[s.length]),new T("float32",o,[o.length]),n)}async batchEvaluateMaia3(t,r,i){let a=t.length,n=[],s=[];for(let r=0;r<a;r++){let{boardTokens:i,legalMoves:a}=os(t[r]);n.push(i),s.push(a)}let o=new Float32Array(64*a*12);for(let t=0;t<a;t++)o.set(n[t],64*t*12);let l=performance.now(),{logitsMove:u,logitsValue:d}=await this.runInference(o,Float32Array.from(r),Float32Array.from(i),a),c=performance.now(),h=[];for(let r=0;r<a;r++){let i=4352*r,a=u.slice(i,i+4352),n=new T("float32",a,[4352]),o=3*r,l=d.slice(o,o+3),c=new T("float32",l,[3]),{policy:f,value:p}=ou(t[r],n,c,s[r]);h.push({policy:f,value:p})}return{result:h,time:c-l}}constructor(t){this.worker=null,this.pendingInferences=new Map,this.pendingDownload=null,this.downloadPromise=null,this.nextRequestId=0,this.options=t,this.storage=new oo.l,this.initialize(t.model,t.modelVersion)}}function ou(t,r,i,a){let n=r.data,s=i.data,o=Math.max(s[0],s[1],s[2]),l=Math.exp(s[0]-o),u=Math.exp(s[1]-o),d=Math.exp(s[2]-o),c=(d+.5*u)/(l+u+d),h=!1;"b"===t.split(" ")[1]&&(h=!0,c=1-c),c=Math.round(1e4*c)/1e4;let f=a.map((t,r)=>t>0?r:-1).filter(t=>-1!==t),p=[];for(let t of f){let r=oa[t];h&&(r=function(t){let r=t.length>4,i=t.substring(0,2),a=t.substring(2,4),n=r?t.substring(4):"";return on(i)+on(a)+n}(r)),p.push(r)}let m=f.map(t=>n[t]),g=Math.max(...m),b=m.map(t=>Math.exp(t-g)),y=b.reduce((t,r)=>t+r,0),v=b.map(t=>t/y),_={};for(let t=0;t<f.length;t++)_[p[t]]=v[t];return{policy:Object.keys(_).sort((t,r)=>_[r]-_[t]).reduce((t,r)=>(t[r]=_[r],t),{}),value:c}}var od=i(14232),oc=i(97685),oh=i(65364);let of=od.createContext({maia:void 0,status:"loading",progress:0,downloadModel:async()=>{throw Error("poorly provided MaiaEngineContext, missing downloadModel")}}),op=t=>{let{children:r}
2775=t,[i,a]=(0,od.useState)("loading"),[n,s]=(0,od.useState)(0),[o,l]=(0,od.useState)(null),u=(0,od.useRef)(null),d=(0,od.useRef)(null),c=(0,od.useMemo)(()=>{var t,r;return new ol({model:null!=(t=oh.env.NEXT_PUBLIC_MAIA_MODEL_URL)?t:"/maia3/maia3_simplified.onnx",modelVersion:null!=(r=oh.env.NEXT_PUBLIC_MAIA_MODEL_VERSION)?r:"3",setStatus:a,setProgress:s,setError:l})},[]),h=(0,od.useCallback)(async()=>{try{a("downloading"),await c.downloadModel()}catch(t){l(t instanceof Error?t.message:"Failed to download model"),a("error")}},[c]);return(0,od.useCallback)(async()=>await c.getStorageInfo(),[c]),(0,od.useCallback)(async()=>await c.clearStorage(),[c]),(0,od.useEffect)(()=>()=>{null!==d.current&&(window.clearTimeout(d.current),d.current=null),u.current&&(oc.Ay.dismiss(u.current),u.current=null)},[]),(0,od.useEffect)(()=>{if("loading"===i){if(u.current||null!==d.current)return;d.current=window.setTimeout(()=>{d.current=null,u.current||(u.current=oc.Ay.loading("Loading Maia..."))},800);return}if(null!==d.current&&(window.clearTimeout(d.current),d.current=null),"no-cache"===i||"downloading"===i){u.current&&(oc.Ay.dismiss(u.current),u.current=null);return}if("ready"===i)u.current&&(oc.Ay.success("Loaded Maia! Analysis is ready",{id:u.current}),u.current=null);else if("error"===i){let t=o?"Failed to load Maia model: ".concat(o):"Failed to load Maia model";u.current?(oc.Ay.error(t,{id:u.current}),u.current=null):oc.Ay.error(t)}},[i,o]),(0,z.jsx)(of.Provider,{value:{maia:c,status:i,progress:n,downloadModel:h},children:r})}},10223:(t,r,i)=>{"use strict";i.d(r,{v:()=>n});var a=i(40215);class n{constructor(){this.subscriptions=[]}add(t){return(0,a.Kq)(this.subscriptions,t),()=>(0,a.Ai)(this.subscriptions,t)}notify(t,r,i){let a=this.subscriptions.length;if(a)if(1===a)this.subscriptions[0](t,r,i);else for(let n=0;n<a;n++){let a=this.subscriptions[n];a&&a(t,r,i)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}},11391:(t,r,i)=>{"use strict";i.d(r,{Z:()=>l,t:()=>u});var a=i(37876),n=i(14232),s=i(88593);let o=(0,n.createContext)(void 0),l=t=>{let{children:r}
2775=t,[i,l]=(0,n.useState)(()=>(0,s.h_)());return(0,n.useEffect)(()=>{document.body.className=document.body.className.replace(/theme-\w+/g,""),document.body.classList.add("theme-".concat(i.chessboardTheme))},[]),(0,n.useEffect)(()=>{let t=t=>{if("maia-user-settings"===t.key&&t.newValue)try{let r=JSON.parse(t.newValue);l(r)}catch(t){console.warn("Failed to sync settings from storage change:",t)}};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]),(0,a.jsx)(o.Provider,{value:{settings:i,updateSetting:(t,r)=>{let a={...i,[t]:r};l(a),(0,s.uT)(a),"chessboardTheme"===t&&(document.body.className=document.body.className.replace(/theme-\w+/g,""),document.body.classList.add("theme-".concat(r)))},resetSettings:()=>{let t={soundEnabled:!0,chessboardTheme:"brown"};l(t),(0,s.uT)(t)}},children:r})},u=()=>{let t=(0,n.useContext)(o);if(void 0===t)throw Error("useSettings must be used within a SettingsProvider");return t}},11614:(t,r,i)=>{"use strict";i.d(r,{y:()=>o});var a=i(5897),n=i(28670),s=i(12562);let o={test:t=>s.B.test(t)||a.u.test(t)||n.V.test(t),parse:t=>s.B.test(t)?s.B.parse(t):n.V.test(t)?n.V.parse(t):a.u.parse(t),transform:t=>"string"==typeof t?t:t.hasOwnProperty("red")?s.B.transform(t):n.V.transform(t)}},12152:(t,r,i)=>{"use strict";i.d(r,{M:()=>O,Z:()=>M});var a=i(37876),n=i(14232),s=i(97685),o=i(36500),l=i(32711),u=i(88831);class d{async openDB(){return"undefined"==typeof indexedDB?null:this.db?this.db:new Promise((t,r)=>{let i=indexedDB.open(this.dbName,this.version);i.onerror=()=>r(i.error),i.onsuccess=()=>{this.db=i.result,t(i.result)},i.onupgradeneeded=t=>{let r=t.target.result;r.objectStoreNames.contains(this.storeName)||r.createObjectStore(this.storeName,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})}})}async getModel(t){try{let r=await this.openDB();if(!r)return null;let i=r.transaction([this.storeName],"readonly").objectStore(this.storeName),a=await new Promise((r,a)=>{let n=i.get(t);n.onsuccess=()=>r(n.result||null),n.onerror=()=>a(n.error)});if(!a)return null;if(a.url!==t)return await this.deleteModel(t),null;return a.data.arrayBuffer()}catch(t){return console.warn("Stockfish cache read failed:",t),null}}async storeModel(t,r){try{let i=await this.openDB();if(!i)return;let a=i.transaction([this.storeName],"readwrite").objectStore(this.storeName),n={id:t,url:t,data:new Blob([r]),timestamp:Date.now(),size:r.byteLength};await new Promise((t,r)=>{let i=a.put(n);i.onsuccess=()=>t(),i.onerror=()=>r(i.error)})}catch(t){console.warn("Stockfish cache write failed:",t)}}async deleteModel(t){try{let r=await this.openDB();if(!r)return;let i=r.transaction([this.storeName],"readwrite").objectStore(this.storeName);await new Promise((r,a)=>{let n=i.delete(t);n.onsuccess=()=>r(),n.onerror=()=>a(n.error)})}catch(t){console.warn("Stockfish cache delete failed:",t)}}async requestPersistentStorage(){try{if("undefined"!=typeof navigator&&"storage"in navigator&&"persist"in navigator.storage)return navigator.storage.persist();return!1}catch(t){return console.warn("Failed to request persistent storage:",t),!1}}constructor(){this.dbName="StockfishModels",this.storeName="models",this.version=1,this.db=null}}var c=i(65364);class h{get ready(){return this.isReady&&null!==this.stockfish&&this.nnueLoaded}get initializationError(){return this.initError}get initializing(){return this.initInFlight}get initializationPhase(){return this.initPhase}async *streamEvaluations(t,r){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:18,n=arguments.length>3?arguments[3]:void 0;if(this.stockfish&&this.isReady){void 0!==i.g&&"function"==typeof i.g.gc&&i.g.gc(),this.stopEvaluation(),this.store={},this.legalMoveCount=r;let s=new l.d$(t);this.moves=s.moves({verbose:!0}).map(t=>t.from+t.to+(t.promotion||"")),this.fen=t,this.currentPositionId=t+"_"+Date.now(),this.isEvaluating=!0,this.currentTargetDepth=a,this.currentAnalysisStartedAtMs=Date.now(),this.evaluationGenerator=this.createEvaluationGenerator();let o=this.resolveMoveMapStrategy(n);this.currentMoveMapStrategy=o,this.currentDiagnosticsToConsole=this.resolveDiagnosticsToConsole();let u=Array.from(new Set((null==n?void 0:n.maiaCandidateMoves)||[])).filter(t=>this.moves.includes(t)),d=Array.from(new Set((null==n?void 0:n.forcedCandidateMoves)||[])).filter(t=>this.moves.includes(t)),c=Object.fromEntries(Object.entries((null==n?void 0:n.maiaPolicy)||{}).filter(t=>{let[r,i]=t;return this.moves.includes(r)&&Number.isFinite(i)})),h=Number.isFinite(null==n?void 0:n.kSf)?Math.max(1,Math.floor((null==n?void 0:n.kSf)||1)):void 0,f={positionId:this.currentPositionId,fen:t,legalMoves:[...this.moves],legalMoveCount:this.legalMoveCount,maiaCandidateMoves:u,forcedCandidateMoves:d,maiaPolicy:c,kSf:h||0,targetDepth:a,analysisStartedAtMs:this.currentAnalysisStartedAtMs,diagnosticsToConsole:this.currentDiagnosticsToConsole};if("searchmoves-all"===o&&f.legalMoves.length>0)try{yield*this.streamEvaluationsSearchmovesAll(f);return}
2775catch(t){if(console.warn("Searchmoves-all Stockfish analysis failed, falling back to MultiPV-all:",t),this.store={},!this.isActiveRun(f.positionId))return}if("staged-root-probe"===o&&f.legalMoves.length>0)try{yield*this.streamEvaluationsStaged(f);return}catch(t){if(console.warn("Staged Stockfish move-map analysis failed, falling back to MultiPV-all:",t),this.store={},!this.isActiveRun(f.positionId))return}for(this.sendMessage("ucinewgame"),this.sendMessage("position fen ".concat(t)),this.sendMessage("go depth ".concat(a));this.isActiveRun(f.positionId);)try{let t=await this.getNextEvaluation();if(t)yield t;else break}catch(t){console.error("Error in evaluation stream:",t);break}}}async getNextEvaluation(){return new Promise((t,r)=>{this.evaluationResolver=t,this.evaluationRejecter=r})}createEvaluationGenerator(){return null}sendMessage(t){this.stockfish&&this.stockfish.uci(t)}isActiveRun(t){return this.isEvaluating&&this.currentPositionId===t}async waitForReady(){if(this.stockfish)return new Promise(t=>{if(!this.stockfish)return void t();let r=!1,i=this.stockfish.listen,a=a=>{a.includes("readyok")&&!r?(r=!0,this.stockfish&&(this.stockfish.listen=i),t()):i(a)};this.stockfish.listen=a,this.stockfish.uci("isready")})}resolveMoveMapStrategy(t){let r=null==t?void 0:t.moveMapStrategy,i=null;try{var a;i=null!=(a=window.localStorage.getItem("maia.stockfishMoveMapStrategy"))?a:window.localStorage.getItem("stockfishMoveMapStrategy")}catch(t){i=null}let n=r||i||c.env.NEXT_PUBLIC_STOCKFISH_MOVE_MAP_STRATEGY||"staged-root-probe";return"staged-root-probe"===n?"staged-root-probe":"searchmoves-all"===n?"searchmoves-all":"staged-root-probe"}resolveDiagnosticsToConsole(){try{var t;let r=null!=(t=window.localStorage.getItem("maia.stockfishDiagnostics"))?t:window.localStorage.getItem("stockfishDiagnostics");if(r)return["1","true","yes","on"].includes(r.toLowerCase())}catch(t){}let r=c.env.NEXT_PUBLIC_STOCKFISH_DIAGNOSTICS;return!!r&&["1","true","yes","on"].includes(r.toLowerCase())}getRootProbePlan(t,r){let i=Math.max(4,Math.min(10,t-6));return i>=t&&(i=Math.max(1,t-2)),{screeningDepth:i}}async *streamMultiPvSnapshots(t,r,i){if(!this.stockfish||i<=0)return;let a=Math.max(1,Math.min(i,t.legalMoveCount)),n=this.stockfish,s=n.listen;if(await this.waitForReady(),!this.isActiveRun(t.positionId)||(n.uci("setoption name MultiPV value ".concat(a)),await this.waitForReady(),!this.isActiveRun(t.positionId)))return;let o=Date.now(),u="b"===new l.d$(t.fen).turn(),d={},c=0,h=[],f=null,p=!1,m=()=>{if(!p&&(p=!0,f)){let t=f;f=null,t(null)}},g=t=>{let r=d[t];if(!r||t<=c)return;let i=[];for(let t=1;t<=a;t++){let a=r[t];if(!a)return;i.push({move:a.move,cp:a.cp,depth:a.depth,mateIn:a.mateIn})}c=t,(t=>{if(f){let r=f;f=null,r(t);return}h.push(t)})({depth:t,elapsedMs:Date.now()-o,moves:i})},b=r=>{var i,n;let s;if(!r.startsWith("info "))return;let o=r.match(/\bdepth (\d+)\b/),l=r.match(/\bmultipv (\d+)\b/),c=r.match(/\bscore (?:cp (-?\d+)|mate (-?\d+))(?: (upperbound|lowerbound))?\b/);if(!o||!l||!c)return;let h=Number.parseInt(l[1],10);if(h<1||h>a)return;let f=r.match(/\bpv ((?:\S+\s*)+)$/),p=null==f||null==(i=f[1])?void 0:i.trim().split(/\s+/)[0];if(!p||!t.legalMoves.includes(p))return;let m=Number.parseInt(c[1],10),b=Number.parseInt(c[2],10);if(!Number.isFinite(m)&&Number.isFinite(b)&&(s=b,m=b>0?1e4:-1e4),!Number.isFinite(m))return;u&&(m*=-1);let y=Number.parseInt(o[1],10),v={move:p,cp:m,depth:y,mateIn:s,isBound:!!c[3],multipv:h};d[y]||(d[y]={}),n=d[y][h],(!n||(v.depth!==n.depth?v.depth>n.depth:n.isBound===v.isBound||n.isBound&&!v.isBound))&&(d[y][h]=v),g(y)};try{for(n.listen=r=>{if(!this.isActiveRun(t.positionId))return void m();for(let t of r.split(/\r?\n/).map(t=>t.trim()).filter(Boolean))if(b(t),t.startsWith("bestmove ")){for(let t of Object.keys(d).map(t=>Number.parseInt(t,10)).filter(t=>Number.isFinite(t)).sort((t,r)=>t-r))g(t);m();return}},n.uci("position fen ".concat(t.fen)),n.uci("go depth ".concat(r));;){this.isActiveRun(t.positionId)||m();let r=h.length>0?h.shift()||null:await new Promise(t=>{p?t(null):f=t});if(!r)break;yield r}}finally{this.stockfish&&(this.stockfish.listen=s,this.stockfish.uci("setoption name MultiPV value 100"))}}async *streamEvaluationsStaged(t){if(this.stockfish&&0!==t.legalMoves.length)try{let i=t.targetDepth,a=this.getRootProbePlan(i,t.legalMoveCount),n={},s={},o={},l={screening:0,multipv:0,deepening:0},u=new Set,d=(t,r)=>{let i=o[t];if(!i){o[t]=r;return}i!==r&&(o[t]="both")};if(this.sendMessage("ucinewgame"),this.sendMessage("position fen ".concat(t.fen)),await this.waitForReady(),!this.isActiveRun(t.positionId))return;let c=null;for await(let o of this.streamMultiPvSnapshots(t,a.screeningDepth,t.legalMoveCount)){if(!this.isActiveRun(t.positionId))return;c=o,l.screening=o.elapsedMs;let u=Math.max(1,Math.min(a.screeningDepth,o.depth));for(let t of o.moves){var r;n[t.move]={cp:t.cp,depth:Math.max((null==(r=n[t.move])?void 0:r.depth)||0,Math.max(1,Math.min(a.screeningDepth,t.depth))),mateIn:t.mateIn},s[t.move]="screen"}if(Object.keys(n).length===t.legalMoveCount&&u<i){let r=this.buildEvaluationFromRootScores(u,n,t.fen);this.attachDiagnostics(r,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveCounts:{screened:t.legalMoveCount,deepened:0,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(r,!1,t.diagnosticsToConsole),yield r}}if(!c||0===c.moves.length)throw Error("Failed to collect staged screening scores");if(Object.keys(n).length!==t.legalMoveCount)throw Error("Incomplete staged screening (".concat(Object.keys(n).length,"/").concat(t.legalMoveCount,")"));let h=Math.max(1,Math.min(t.legalMoveCount,t.kSf>0?t.kSf:4)),f=t.maiaCandidateMoves.slice(0,4),p=Array.from(new Set([...f,...t.forcedCandidateMoves])),m=Math.min(14,i);if(m>a.screeningDepth)for(let r of p){if(!this.isActiveRun(t.positionId))return;if(!n[r])continue;d(r,"maia-95");let a=n[r];if(a&&a.depth>=m)continue;let c=Date.now(),h=await this.runRootSearchWithRetry(t,m,r);
2775if(l.deepening+=Date.now()-c,!h)continue;n[r]={cp:h.cp,depth:Math.max(1,Math.min(m,h.depth)),mateIn:h.mateIn},s[r]="deep",u.add(r);let f=this.buildEvaluationFromRootScores(m,n,t.fen);this.attachDiagnostics(f,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(f,!1,t.diagnosticsToConsole),yield f}for await(let r of this.streamMultiPvSnapshots(t,i,h)){if(!this.isActiveRun(t.positionId))return;for(let t of(l.multipv=r.elapsedMs,r.moves)){let r=n[t.move];n[t.move]={cp:t.cp,depth:Math.max((null==r?void 0:r.depth)||0,t.depth),mateIn:t.mateIn},s[t.move]="multipv",u.add(t.move),d(t.move,"sf-top")}let c=this.buildEvaluationFromRootScores(Math.max(a.screeningDepth,r.depth),n,t.fen);this.attachDiagnostics(c,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(c,!1,t.diagnosticsToConsole),yield c}for(let r of p){if(!this.isActiveRun(t.positionId))return;if(!n[r])continue;d(r,"maia-95");let a=n[r];if(a&&a.depth>=i)continue;let c=Date.now(),h=await this.runRootSearchWithRetry(t,i,r);if(l.deepening+=Date.now()-c,!h)continue;n[r]={cp:h.cp,depth:Math.max(1,Math.min(i,h.depth)),mateIn:h.mateIn},s[r]="deep",u.add(r);let f=this.buildEvaluationFromRootScores(i,n,t.fen);this.attachDiagnostics(f,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(f,!1,t.diagnosticsToConsole),yield f}if(!this.isActiveRun(t.positionId))return;let g=this.buildEvaluationFromRootScores(i,n,t.fen);this.attachDiagnostics(g,{runContext:t,strategy:"staged-root-probe",targetDepth:i,legalMoveCount:t.legalMoveCount,phaseTimesMs:l,rootScores:n,movePhases:s,moveSelectionSources:o,moveCounts:{screened:t.legalMoveCount,deepened:u.size,finalAtTargetDepth:Object.values(n).filter(t=>t.depth>=i).length}}),this.maybePublishDiagnostics(g,!0,t.diagnosticsToConsole),yield g}finally{this.currentPositionId===t.positionId&&(this.isEvaluating=!1)}}async *streamEvaluationsSearchmovesAll(t){if(this.stockfish&&0!==t.legalMoves.length)try{let r=t.targetDepth,i={},a={},n={groundTruth:0};if(this.sendMessage("ucinewgame"),this.sendMessage("position fen ".concat(t.fen)),await this.waitForReady(),!this.isActiveRun(t.positionId))return;for(let s of t.legalMoves){if(!this.isActiveRun(t.positionId))return;let o=Date.now(),l=await this.runRootSearchWithRetry(t,r,s);if(n.groundTruth+=Date.now()-o,!l)throw Error("Failed to analyze root move ".concat(s));i[s]={cp:l.cp,depth:Math.max(1,Math.min(r,l.depth)),mateIn:l.mateIn},a[s]="ground-truth"}let s=this.buildEvaluationFromRootScores(r,i,t.fen);this.attachDiagnostics(s,{runContext:t,strategy:"searchmoves-all",targetDepth:r,legalMoveCount:t.legalMoveCount,phaseTimesMs:n,rootScores:i,movePhases:a,moveCounts:{screened:0,deepened:t.legalMoveCount,finalAtTargetDepth:Object.values(i).filter(t=>t.depth>=r).length}}),this.maybePublishDiagnostics(s,!0,t.diagnosticsToConsole),yield s}finally{this.currentPositionId===t.positionId&&(this.isEvaluating=!1)}}buildEvaluationFromRootScores(t,r,i){let a,n=new l.d$(i),s="b"===n.turn(),o=Object.entries(r).sort((t,r)=>{let[,i]=t,[,a]=r;if(a.cp!==i.cp)return s?i.cp-a.cp:a.cp-i.cp;let n=i.mateIn,o=a.mateIn;return void 0===n&&void 0===o?0:void 0===n?1:void 0===o?-1:Math.abs(n)-Math.abs(o)});if(0===o.length)throw Error("No root move scores available");let[d,c]=o[0],h={},f={},p={},m={};for(let[t,r]of o){h[t]=r.cp,f[t]=s?c.cp-r.cp:r.cp-c.cp;let i=(0,u.zF)(r.cp*(s?-1:1),!1);p[t]=i,m[t]=r.depth,void 0!==r.mateIn&&((a=a||{})[t]=r.mateIn)}let g={sent:!0,depth:t,model_move:d,model_optimal_cp:c.cp,cp_vec:h,cp_relative_vec:f,root_move_depth_vec:m,winrate_vec:p,winrate_loss_vec:{},mate_vec:a,is_checkmate:n.inCheckmate()};return this.finalizeEvaluation(g)}buildMoveDiagnostics(t,r,i,a){let n={};for(let[s,o]of Object.entries(t))n[s]={cp:o.cp,depth:o.depth,mateIn:o.mateIn,phase:null==r?void 0:r[s],selectedBy:null==i?void 0:i[s],maiaProb:null==a?void 0:a[s]};return n}attachDiagnostics(t,r){let{runContext:i}=r;t.diagnostics={positionId:i.positionId,fen:i.fen,strategy:r.strategy,targetDepth:r.targetDepth,legalMoveCount:r.legalMoveCount,totalTimeMs:Date.now()-i.analysisStartedAtMs,phaseTimesMs:r.phaseTimesMs?{...r.phaseTimesMs}
2775:void 0,moveCounts:r.moveCounts?{...r.moveCounts}:void 0,moves:this.buildMoveDiagnostics(r.rootScores,r.movePhases,r.moveSelectionSources,i.maiaPolicy)}}cloneEvaluation(t){return{...t,cp_vec:{...t.cp_vec},cp_relative_vec:{...t.cp_relative_vec},root_move_depth_vec:t.root_move_depth_vec?{...t.root_move_depth_vec}:void 0,winrate_vec:t.winrate_vec?{...t.winrate_vec}:void 0,winrate_loss_vec:t.winrate_loss_vec?{...t.winrate_loss_vec}:void 0,mate_vec:t.mate_vec?{...t.mate_vec}:void 0,diagnostics:t.diagnostics?{...t.diagnostics,phaseTimesMs:t.diagnostics.phaseTimesMs?{...t.diagnostics.phaseTimesMs}:void 0,moveCounts:t.diagnostics.moveCounts?{...t.diagnostics.moveCounts}:void 0,moves:t.diagnostics.moves?Object.fromEntries(Object.entries(t.diagnostics.moves).map(t=>{let[r,i]=t;return[r,{...i}]})):void 0}:void 0}}maybePublishDiagnostics(t,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.currentDiagnosticsToConsole;if(!r)return;let a=this.cloneEvaluation(t);try{let t=window,r=t.__maiaStockfishDiagnostics||[];r.push(a),t.__maiaStockfishDiagnostics=r.slice(-50)}catch(t){}if(!i||!a.diagnostics)return;let n=a.diagnostics;console.groupCollapsed("[Stockfish ".concat(n.strategy,"] depth ").concat(a.depth,"/").concat(n.targetDepth," in ").concat(n.totalTimeMs,"ms (").concat(n.legalMoveCount," legal)")),console.log("Summary",{positionId:n.positionId,bestMove:a.model_move,bestCp:a.model_optimal_cp,totalTimeMs:n.totalTimeMs,phaseTimesMs:n.phaseTimesMs,moveCounts:n.moveCounts}),n.moves&&console.table(Object.entries(n.moves).map(t=>{let[r,i]=t;return{move:r,cp:i.cp,depth:i.depth,mateIn:i.mateIn,phase:i.phase,selectedBy:i.selectedBy,maiaProb:i.maiaProb}}).sort((t,r)=>r.cp-t.cp)),console.groupEnd()}finalizeEvaluation(t){let r=-1/0,i=t.winrate_vec;if(i){for(let t in i){let a=i[t];a>r&&(r=a)}let a=t.winrate_loss_vec;if(a)for(let t in i)a[t]=i[t]-r}return t.winrate_vec&&(t.winrate_vec=Object.fromEntries(Object.entries(t.winrate_vec||{}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))),t.winrate_loss_vec&&(t.winrate_loss_vec=Object.fromEntries(Object.entries(t.winrate_loss_vec||{}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))),t.mate_vec&&0===Object.keys(t.mate_vec).length&&delete t.mate_vec,t}async runRootSearchWithRetry(t,r,i){let a=await this.runRootSearch(t,r,i,!1);return a||!i?a:this.runRootSearch(t,r,i,!0)}async runRootSearch(t,r,i){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this.stockfish||r<=0||!this.isActiveRun(t.positionId)||(await this.waitForReady(),!this.isActiveRun(t.positionId)))return null;let n=this.stockfish,s=n.listen,o="b"===new l.d$(t.fen).turn(),u=null,d=null,c={},h=(t,r)=>!t||(r.depth!==t.depth?r.depth>t.depth:t.isBound===r.isBound||t.isBound&&!r.isBound),f=r=>{var a,n;let s;if(!r.startsWith("info "))return;let l=r.match(/\bdepth (\d+)\b/),f=r.match(/\bmultipv (\d+)\b/),p=r.match(/\bscore (?:cp (-?\d+)|mate (-?\d+))(?: (upperbound|lowerbound))?\b/);if(!l||!p)return;let m=r.match(/\bpv ((?:\S+\s*)+)$/),g=null==m||null==(a=m[1])?void 0:a.trim().split(/\s+/)[0];if(i){if(!g||g!==i)return}else if(!g)return;let b=i||g;if(!b||!t.legalMoves.includes(b))return;let y=Number.parseInt(p[1],10),v=Number.parseInt(p[2],10);if(!Number.isFinite(y)&&Number.isFinite(v)&&(s=v,y=v>0?1e4:-1e4),!Number.isFinite(y))return;o&&(y*=-1);let _={move:b,cp:y,depth:Number.parseInt(l[1],10),mateIn:s,isBound:!!p[3]};h(u,_)&&(u=_),h(c[b]||null,_)&&(c[b]=_),1===Number.parseInt(null!=(n=null==f?void 0:f[1])?n:"1",10)&&h(d,_)&&(d=_)};return new Promise(o=>{let l=!1,h=t=>{l||(l=!0,this.stockfish&&(this.stockfish.listen=s),o(t))};n.listen=r=>{for(let a of r.split(/\r?\n/).map(t=>t.trim()).filter(Boolean)){f(a);let r=a.match(/^bestmove (\S+)/);if(!r)continue;if(!this.isActiveRun(t.positionId))return void h(null);let n=r[1]&&"(none)"!==r[1]?r[1]:void 0,s=i||n||(null==u?void 0:u.move),o=(s?c[s]:void 0)||(i?u:null)||d||u;if(!o||!s||!t.legalMoves.includes(s))return void h(null);h({move:s,cp:o.cp,depth:o.depth,mateIn:o.mateIn});return}},n.uci("position fen ".concat(t.fen)),n.uci(i?a?"go searchmoves ".concat(i," depth ").concat(r):"go depth ".concat(r," searchmoves ").concat(i):"go depth ".concat(r))})}onMessage(t){let r;if(!this.isEvaluating)return;let i=[...t.matchAll(/info depth (\d+) seldepth (\d+) multipv (\d+) score (?:cp (-?\d+)|mate (-?\d+)).+ pv ((?:\S+\s*)+)/g)][0];if(!i||!i.length)return;let a=parseInt(i[1],10),n=parseInt(i[3],10),s=parseInt(i[4],10),o=parseInt(i[5],10),d=i[6].split(" ")[0];if(!this.moves.includes(d))return;!isNaN(o)&&isNaN(s)&&(r=o,s=o>0?1e4:-1e4);let c="b"===new l.d$(this.fen).turn();if(c&&(s*=-1),this.store[a]){this.store[a].cp_vec[d]=s,this.store[a].cp_relative_vec[d]=c?this.store[a].model_optimal_cp-s:s-this.store[a].model_optimal_cp,this.store[a].root_move_depth_vec||(this.store[a].root_move_depth_vec={}),this.store[a].root_move_depth_vec[d]=a,void 0!==r?(this.store[a].mate_vec||(this.store[a].mate_vec={}),this.store[a].mate_vec[d]=r):this.store[a].mate_vec&&(delete this.store[a].mate_vec[d],0===Object.keys(this.store[a].mate_vec).length&&delete this.store[a].mate_vec);let t=(0,u.zF)(s*(c?-1:1),!1);this.store[a].winrate_vec||(this.store[a].winrate_vec={}),this.store[a].winrate_loss_vec||(this.store[a].winrate_loss_vec={});let i=this.store[a].winrate_vec;i&&(i[d]=t)}else{let t=(0,u.zF)(s*(c?-1:1),!1);this.store[a]={depth:a,model_move:d,model_optimal_cp:s,cp_vec:{[d]:s},cp_relative_vec:{[d]:0},root_move_depth_vec:{[d]:a},winrate_vec:{[d]:t},winrate_loss_vec:{[d]:0},mate_vec:void 0!==r?{[d]:r}:void 0,sent:!1}}if(!this.store[a].sent&&n===this.legalMoveCount){this.store[a]=this.finalizeEvaluation(this.store[a]);let t=new l.d$(this.fen);this.store[a].is_checkmate=t.inCheckmate(),this.attachDiagnostics(this.store[a],{runContext:{positionId:this.currentPositionId,fen:this.fen,legalMoves:[...this.moves],legalMoveCount:this.legalMoveCount,maiaCandidateMoves:[],forcedCandidateMoves:[],maiaPolicy:{},kSf:0,targetDepth:this.currentTargetDepth,analysisStartedAtMs:this.currentAnalysisStartedAtMs,diagnosticsToConsole:this.currentDiagnosticsToConsole},strategy:"multipv-all",targetDepth:this.currentTargetDepth,legalMoveCount:this.legalMoveCount,phaseTimesMs:void 0,rootScores:Object.fromEntries(Object.entries(this.store[a].cp_vec).map(t=>{var r,i,n;let[s,o]=t;return[s,{cp:o,depth:null!=(n=null==(r=this.store[a].root_move_depth_vec)?void 0:r[s])?n:a,mateIn:null==(i=this.store[a].mate_vec)?void 0:i[s]}]})),movePhases:Object.fromEntries(Object.keys(this.store[a].cp_vec).map(t=>[t,"multipv"])),moveCounts:{finalAtTargetDepth:Object.values(this.store[a].root_move_depth_vec||{}).filter(t=>t>=this.currentTargetDepth).length}}),this.store[a].sent=!0,this.maybePublishDiagnostics(this.store[a],a>=this.currentTargetDepth&&this.currentTargetDepth>0),this.evaluationResolver&&(this.evaluationResolver(this.store[a]),this.evaluationResolver=null,this.evaluationRejecter=null),a>=this.currentTargetDepth&&this.currentTargetDepth>0&&this.stopEvaluation()}}onError(t){console.error(t),this.evaluationRejecter&&(this.evaluationRejecter(t),this.evaluationResolver=null,this.evaluationRejecter=null),this.isEvaluating=!1}stopEvaluation(){this.isEvaluating&&(this.isEvaluating=!1,this.sendMessage("stop"))}constructor(){if(this.stockfish=null,this.isReady=!1,this.nnueLoaded=!1,this.currentPositionId="",this.fen="",this.store={},this.moves=[],this.isEvaluating=!1,this.legalMoveCount=0,this.evaluationResolver=null,this.evaluationRejecter=null,this.evaluationPromise=null,this.evaluationGenerator=null,this.initError=null,this.initInFlight=!1,this.initPhase="idle",this.currentTargetDepth=0,this.currentMoveMapStrategy="staged-root-probe",this.currentAnalysisStartedAtMs=0,this.currentDiagnosticsToConsole=!1,this.onMessage=this.onMessage.bind(this),"undefined"==typeof Worker)return;this.initInFlight=!0,this.initPhase="loading-module",b(t=>{this.initPhase=t}).then(t=>{this.stockfish=t,t.uci("uci"),t.uci("isready"),t.uci("setoption name MultiPV value 100"),t.onError=this.onError,t.listen=this.onMessage,this.initError=null,this.isReady=!0,this.nnueLoaded=!0,this.initPhase="ready"}).catch(t=>{console.error("Failed to initialize Stockfish:",t),this.initError=t instanceof Error?t.message:"Unknown initialization error",this.isReady=!1,this.nnueLoaded=!1,this.initPhase="error"}).finally(()=>{this.initInFlight=!1})}}let f=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32767,i=4;for(;;)try{return new WebAssembly.Memory({shared:!0,initial:t,maximum:r})}catch(a){if(r<=t||!(a instanceof RangeError))throw a;r=Math.max(t,Math.ceil(r-r/i)),i=4===i?3:4}},p=async(t,r)=>{if("undefined"==typeof AbortController||r<=0)return fetch(t);let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return await fetch(t,{signal:i.signal})}catch(i){if(i instanceof DOMException&&"AbortError"===i.name)throw Error("Stockfish NNUE fetch timed out after ".concat(r,"ms: ").concat(t));throw i}finally{clearTimeout(a)}},m=async(t,r,i)=>{if(r<=0)return t;let a=null;try{return await Promise.race([t,new Promise((t,n)=>{a=setTimeout(()=>n(Error(i)),r)})])}finally{a&&clearTimeout(a)}},g=async function(t,r,i,a){let n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(!n){let i=await m(r.getModel(t),1500,"Timed out while checking cached Stockfish model: ".concat(t)).catch(t=>(console.warn(t),null));if(i)return i}null==a||a();let s=await p(t,i);if(!s.ok)throw Error("Failed to fetch Stockfish NNUE model (".concat(s.status,") from ").concat(t));let o=await s.arrayBuffer();return m(r.storeModel(t,o),5e3,"Timed out while caching Stockfish model: ".concat(t)).catch(t=>{console.warn(t)}),o},b=async t=>{var r;let a=await i.e(35).then(i.bind(i,3035)),n=null!=(r=c.env.NEXT_PUBLIC_STOCKFISH_NNUE_BASE_URL)?r:"https://raw.githubusercontent.com/CSSLab/maia-platform-frontend/e23a50e/public/stockfish",s=new d,o=(()=>{let t=c.env.NEXT_PUBLIC_STOCKFISH_NNUE_FETCH_TIMEOUT_MS,r=t?parseInt(t,10):NaN;return Number.isFinite(r)&&r>0?r:3e4})(),l=(()=>{let t=c.env.NEXT_PUBLIC_STOCKFISH_MODULE_INIT_TIMEOUT_MS,r=t?parseInt(t,10):NaN;return Number.isFinite(r)&&r>0?r:15e3})(),u=null;s.requestPersistentStorage().catch(t=>{console.warn("Failed to request persistent storage for Stockfish:",t)});let h=async()=>(null==t||t("loading-module"),m(a.default({wasmMemory:f(2560),locateFile:t=>"/stockfish/".concat(t)}),l,"Stockfish module initialization timed out after ".concat(l,"ms"))),p=async function(r){let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!u)throw Error("Stockfish recommended NNUE URLs were not initialized");let a=!1;null==t||t("checking-cache");let n=await Promise.all([g(u[0],s,o,()=>{a||(a=!0,null==t||t("downloading-nnue"))},i),g(u[1],s,o,()=>{a||(a=!0,null==t||t("downloading-nnue"))},i)]);null==t||t("loading-nnue"),r.setNnueBuffer(new Uint8Array(n[0]),0),r.setNnueBuffer(new Uint8Array(n[1]),1)};try{let t=await h();u=["".concat(n,"/").concat(t.getRecommendedNnue(0)),"".concat(n,"/").concat(t.getRecommendedNnue(1))];try{await p(t)}catch(r){if(!(t=>t instanceof RangeError||t instanceof Error&&(/offset is out of bounds/i.test(t.message)||/could not allocate/i.test(t.message)||/bytes\?/i.test(t.message)))(r))throw r;console.warn("Stockfish NNUE load failed; clearing cached weights and retrying once.",r),await Promise.all(u.map(t=>s.deleteModel(t))),t=await h(),await p(t,!0)}return t}catch(t){throw console.error("Failed to load NNUE models:",t),t}};var y=i(65364);let v="maia.stockfishMoveMapStrategy",_="maia.stockfishDiagnostics",w="maia.stockfishDebugPanel",x=["staged-root-probe","multipv-all","searchmoves-all"],$=t=>!!t&&["1","true","yes","on"].includes(t.toLowerCase()),S=(t,r)=>{if(!r||!t)return"Loading Stockfish...";switch(t.initializationPhase){case"checking-cache":return"Checking local Stockfish cache...";case"downloading-nnue":return"Downloading Stockfish model weights...";case"loading-nnue":return"Loading Stockfish from local cache...";case"loading-module":return"Starting Stockfish engine...";default:return"Loading Stockfish..."}},k=null,C=t=>{let r=t.diagnostics;return r?"".concat(r.positionId,":").concat(r.strategy,":").concat(r.targetDepth):"".concat(t.depth,":").concat(t.model_move,":").concat(Object.keys(t.cp_vec).length)},E=t=>"number"!=typeof t||Number.isNaN(t)?"-":"".concat(Math.round(t)," ms"),T=t=>"number"!=typeof t||Number.isNaN(t)?"-":t>0?"+".concat(t):"".concat(t),I=t=>"number"!=typeof t||Number.isNaN(t)?"-":"".concat((100*t).toFixed(1),"%"),A=()=>{var t,r,i,s,l,u;
2775let[d,c]=(0,n.useState)(!1),[h,f]=(0,n.useState)(!1),[p,m]=(0,n.useState)(!1),[g,b]=(0,n.useState)("staged-root-probe"),[S,k]=(0,n.useState)([]),[A,O]=(0,n.useState)(null),[M,P]=(0,n.useState)({key:"cp",direction:"desc"}),[R,j]=(0,n.useState)({key:"diff",direction:"desc"});(0,n.useEffect)(()=>{let t=()=>{var t,r,i,a,n,s;c($(null!=(t=window.localStorage.getItem(w))?t:y.env.NEXT_PUBLIC_STOCKFISH_DEBUG_PANEL||null));let o=null!=(a=null!=(i=null!=(r=window.localStorage.getItem(v))?r:window.localStorage.getItem("stockfishMoveMapStrategy"))?i:y.env.NEXT_PUBLIC_STOCKFISH_MOVE_MAP_STRATEGY)?a:"staged-root-probe";b(x.includes(o)?o:"staged-root-probe"),m($(null!=(s=null!=(n=window.localStorage.getItem(_))?n:window.localStorage.getItem("stockfishDiagnostics"))?s:y.env.NEXT_PUBLIC_STOCKFISH_DIAGNOSTICS||null)),k([...window.__maiaStockfishDiagnostics||[]].reverse())};t();let r=window.setInterval(t,500);return window.addEventListener("storage",t),()=>{window.clearInterval(r),window.removeEventListener("storage",t)}},[]),(0,n.useEffect)(()=>{if(!S.length)return void O(null);A&&S.some(t=>C(t)===A)||O(C(S[0]))},[S,A]);let z=(0,n.useMemo)(()=>A&&S.find(t=>C(t)===A)||S[0],[S,A]),D=(0,n.useMemo)(()=>(null==z?void 0:z.diagnostics)&&S.find(t=>{var r,i;if(t===z)return!1;let a=t.diagnostics;return!!a&&"searchmoves-all"===a.strategy&&a.fen===(null==(r=z.diagnostics)?void 0:r.fen)&&a.targetDepth===(null==(i=z.diagnostics)?void 0:i.targetDepth)})||null,[S,z]),B=(0,n.useMemo)(()=>{var t,r;if(!z)return[];let i=(null==(t=z.diagnostics)?void 0:t.moves)||{},a=(null==D||null==(r=D.diagnostics)?void 0:r.moves)||{};return Array.from(new Set([...Object.keys(i),...Object.keys(a)])).map(t=>{let r=i[t],n=a[t],s="number"==typeof(null==r?void 0:r.cp)&&"number"==typeof(null==n?void 0:n.cp)?Math.abs(r.cp-n.cp):void 0;return{move:t,selectedCp:null==r?void 0:r.cp,groundTruthCp:null==n?void 0:n.cp,absDiff:s,selectedDepth:null==r?void 0:r.depth,groundTruthDepth:null==n?void 0:n.depth,phase:null==r?void 0:r.phase,mateIn:null==r?void 0:r.mateIn,maiaProb:null==r?void 0:r.maiaProb}})},[z,D]),L=(0,n.useMemo)(()=>{let t=B.map(t=>t.absDiff).filter(t=>"number"==typeof t);return t.length?{mae:t.reduce((t,r)=>t+r,0)/t.length,max:Math.max(...t),comparedMoves:t.length}:null},[B]),U=(0,n.useCallback)(t=>{P(r=>r.key===t?{key:t,direction:"asc"===r.direction?"desc":"asc"}:{key:t,direction:"desc"})},[]),F=(0,n.useMemo)(()=>{var t;let r=Object.entries((null==z||null==(t=z.diagnostics)?void 0:t.moves)||{}).map(t=>{let[r,i]=t;return{move:r,info:i}}),i="asc"===M.direction?1:-1,a=t=>"number"==typeof t&&Number.isFinite(t)?t:-1/0;return r.sort((t,r)=>{let n=0;switch(M.key){case"move":n=t.move.localeCompare(r.move);break;case"cp":n=a(t.info.cp)-a(r.info.cp);break;case"depth":n=a(t.info.depth)-a(r.info.depth);break;case"phase":n=(t.info.phase||"").localeCompare(r.info.phase||"");break;case"selectedBy":n=(t.info.selectedBy||"").localeCompare(r.info.selectedBy||"");break;case"mateIn":n=a(t.info.mateIn)-a(r.info.mateIn);break;case"maiaProb":n=a(t.info.maiaProb)-a(r.info.maiaProb)}return 0===n?t.move.localeCompare(r.move):n*i})},[z,M]),q=(0,n.useCallback)(t=>M.key!==t?"↕":"asc"===M.direction?"↑":"↓",[M]),V=(0,n.useCallback)(t=>{j(r=>r.key===t?{key:t,direction:"asc"===r.direction?"desc":"asc"}:{key:t,direction:"desc"})},[]),W=(0,n.useMemo)(()=>{let t=[...B],r="asc"===R.direction?1:-1,i=t=>"number"==typeof t&&Number.isFinite(t)?t:-1/0;return t.sort((t,a)=>{let n=0;switch(R.key){case"move":n=t.move.localeCompare(a.move);break;case"thisCp":n=i(t.selectedCp)-i(a.selectedCp);break;case"gtCp":n=i(t.groundTruthCp)-i(a.groundTruthCp);break;case"diff":n=i(t.absDiff)-i(a.absDiff);break;case"thisDepth":n=i(t.selectedDepth)-i(a.selectedDepth);break;case"gtDepth":n=i(t.groundTruthDepth)-i(a.groundTruthDepth);break;case"phase":n=(t.phase||"").localeCompare(a.phase||"");break;case"maiaProb":n=i(t.maiaProb)-i(a.maiaProb)}return 0===n?t.move.localeCompare(a.move):n*r})},[B,R]),H=(0,n.useCallback)(t=>R.key!==t?"↕":"asc"===R.direction?"↑":"↓",[R]),G=(0,n.useCallback)(t=>{window.localStorage.setItem(v,t),b(t)},[]),K=(0,n.useCallback)(t=>{window.localStorage.setItem(_,t?"1":"0"),m(t)}
2775,[]),Y=(0,n.useCallback)(()=>{window.__maiaStockfishDiagnostics=[],k([])},[]),Q=(0,n.useCallback)(()=>{window.localStorage.setItem(o.MA,"".concat(Date.now())),window.dispatchEvent(new CustomEvent(o.vJ,{detail:{ts:Date.now()}}))},[]),X=(0,n.useCallback)(()=>{window.localStorage.setItem(w,"0"),c(!1)},[]);return d?(0,a.jsx)("div",{className:"pointer-events-auto fixed bottom-4 right-4 z-[1000] w-[min(92vw,560px)]",children:(0,a.jsxs)("div",{className:"flex max-h-[85vh] flex-col overflow-hidden rounded-xl border border-zinc-300 bg-white/95 shadow-2xl backdrop-blur",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-zinc-200 px-3 py-2",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wide text-zinc-500",children:"Stockfish Debug"}),(0,a.jsx)("div",{className:"truncate text-sm text-zinc-700",children:N(z)})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>f(t=>!t),className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",children:h?"Open":"Collapse"}),(0,a.jsx)("button",{type:"button",onClick:X,className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",children:"Hide"})]})]}),!h&&(0,a.jsxs)("div",{className:"space-y-3 overflow-y-auto p-3",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs text-zinc-600",children:["Strategy (global)",(0,a.jsx)("select",{value:g,onChange:t=>G(t.target.value),className:"rounded border border-zinc-300 bg-white px-2 py-1 text-sm text-zinc-900",children:x.map(t=>(0,a.jsx)("option",{value:t,children:t},t))})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1 text-xs text-zinc-600",children:[(0,a.jsx)("span",{children:"Controls"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("label",{className:"flex items-center gap-1 rounded border border-zinc-300 px-2 py-1 text-xs text-zinc-700",children:[(0,a.jsx)("input",{type:"checkbox",checked:p,onChange:t=>K(t.target.checked)}),"Console logs"]}),(0,a.jsx)("button",{type:"button",onClick:Y,className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",children:"Clear runs"}),(0,a.jsx)("button",{type:"button",onClick:Q,className:"rounded border border-zinc-300 px-2 py-1 text-xs hover:bg-zinc-50",title:"Force re-analyze the currently selected board node",children:"Re-run current node"})]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-[1.1fr_0.9fr]",children:[(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsxs)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:["Recent runs (",S.length,")"]}),(0,a.jsxs)("div",{className:"max-h-40 space-y-1 overflow-auto",children:[0===S.length&&(0,a.jsx)("div",{className:"text-xs text-zinc-500",children:"No diagnostics yet. Run analysis on any supported page."}),S.map(t=>{var r;let i=C(t),n=t.diagnostics;return(0,a.jsxs)("button",{type:"button",onClick:()=>O(i),className:"block w-full rounded border px-2 py-1 text-left text-xs ".concat(A===i?"border-red-300 bg-red-50":"border-zinc-200 hover:bg-zinc-50"),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("span",{className:"truncate font-medium text-zinc-800",children:[(null==n?void 0:n.strategy)||"unknown"," d",null!=(r=null==n?void 0:n.targetDepth)?r:t.depth]}),(0,a.jsx)("span",{className:"text-zinc-500",children:E(null==n?void 0:n.totalTimeMs)})]}),(0,a.jsx)("div",{className:"truncate text-zinc-500",children:(t=>t?t.split(" ").slice(0,2).join(" "):"-")(null==n?void 0:n.fen)})]},i)})]})]}),(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:"Selected summary"}),(null==z?void 0:z.diagnostics)?(0,a.jsxs)("div",{className:"space-y-1 text-xs text-zinc-700",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Strategy:"})," ",z.diagnostics.strategy]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Timing:"})," ",E(z.diagnostics.totalTimeMs)]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Best:"})," ",z.model_move," (",T(z.model_optimal_cp),")"]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Moves:"})," ",Object.keys(z.diagnostics.moves||{}).length,"/",z.diagnostics.legalMoveCount]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Final@target:"})," ",null!=(s=null==(t=z.diagnostics.moveCounts)?void 0:t.finalAtTargetDepth)?s:"-"]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"font-medium",children:"Screened/Deepened:"})," ",null!=(l=null==(r=z.diagnostics.moveCounts)?void 0:r.screened)?l:0,"/",null!=(u=null==(i=z.diagnostics.moveCounts)?void 0:i.deepened)?u:0]})]}):(0,a.jsx)("div",{className:"text-xs text-zinc-500",children:"Select a run."})]})]}),(null==z?void 0:z.diagnostics)&&(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:"Phase timings"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 text-xs",children:Object.entries(z.diagnostics.phaseTimesMs||{}).length?Object.entries(z.diagnostics.phaseTimesMs||{}).map(t=>{let[r,i]=t;return(0,a.jsxs)("span",{className:"rounded bg-zinc-100 px-2 py-1 text-zinc-700",children:[r,": ",E(i)]},r)}):(0,a.jsx)("span",{className:"text-zinc-500",children:"Not broken out for this strategy/depth snapshot."})})]}),(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsxs)("div",{className:"mb-1 flex items-center justify-between gap-2",children:[(0,a.jsx)("div",{className:"text-xs font-medium text-zinc-700",children:"Ground-truth comparison (vs latest `searchmoves-all` same FEN/depth)"}),L&&(0,a.jsxs)("div",{className:"text-xs text-zinc-600",children:["MAE ",L.mae.toFixed(1)," cp | Max"," ",L.max," cp | n=",L.comparedMoves]})]}),D?(0,a.jsx)("div",{className:"max-h-56 overflow-auto",children:(0,a.jsxs)("table",{className:"min-w-full text-left text-xs",children:[(0,a.jsx)("thead",{className:"sticky top-0 bg-white",children:(0,a.jsxs)("tr",{className:"text-zinc-500",children:[(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("move"),children:["Move ",H("move")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("thisCp"),children:["This cp ",H("thisCp")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("gtCp"),children:["GT cp ",H("gtCp")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("diff"),children:["|diff| ",H("diff")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("thisDepth"),children:["Depth ",H("thisDepth")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("gtDepth"),children:["GT d ",H("gtDepth")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("phase"),children:["Phase ",H("phase")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>V("maiaProb"),children:["Maia prob ",H("maiaProb")]})})]})}),(0,a.jsx)("tbody",{children:W.map(t=>{var r,i;return(0,a.jsxs)("tr",{className:"border-t border-zinc-100",children:[(0,a.jsx)("td",{className:"px-1 py-1 font-mono text-zinc-800",children:t.move}),(0,a.jsx)("td",{className:"px-1 py-1",children:T(t.selectedCp)}),(0,a.jsx)("td",{className:"px-1 py-1",children:T(t.groundTruthCp)}),(0,a.jsx)("td",{className:"px-1 py-1",children:"number"==typeof t.absDiff?t.absDiff:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:null!=(r=t.selectedDepth)?r:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:null!=(i=t.groundTruthDepth)?i:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:t.phase||"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:I(t.maiaProb)})]},t.move)})})]})}):(0,a.jsx)("div",{className:"text-xs text-zinc-500",children:"No matching `searchmoves-all` run found for this FEN/target depth."})]}),(0,a.jsxs)("div",{className:"rounded border border-zinc-200 p-2",children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-zinc-700",children:"Selected run moves/evals"}),(0,a.jsx)("div",{className:"max-h-56 overflow-auto",children:(0,a.jsxs)("table",{className:"min-w-full text-left text-xs",children:[(0,a.jsx)("thead",{className:"sticky top-0 bg-white",children:(0,a.jsxs)("tr",{className:"text-zinc-500",children:[(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("move"),children:["Move ",q("move")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("cp"),children:["CP ",q("cp")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("depth"),children:["Depth ",q("depth")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("phase"),children:["Phase ",q("phase")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("selectedBy"),children:["Selected by ",q("selectedBy")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("mateIn"),children:["Mate ",q("mateIn")]})}),(0,a.jsx)("th",{className:"px-1 py-1",children:(0,a.jsxs)("button",{type:"button",onClick:()=>U("maiaProb"),children:["Maia prob ",q("maiaProb")]})})]})}),(0,a.jsx)("tbody",{children:F.map(t=>{let{move:r,info:i}=t;return(0,a.jsxs)("tr",{className:"border-t border-zinc-100",children:[(0,a.jsx)("td",{className:"px-1 py-1 font-mono text-zinc-800",children:r}),(0,a.jsx)("td",{className:"px-1 py-1",children:T(i.cp)}),(0,a.jsx)("td",{className:"px-1 py-1",children:i.depth}),(0,a.jsx)("td",{className:"px-1 py-1",children:i.phase||"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:(t=>t?"sf-top"===t?"SF top-K":"maia-95"===t?"Maia 95%":"Both":"-")(i.selectedBy)}),(0,a.jsx)("td",{className:"px-1 py-1",children:"number"==typeof i.mateIn?i.mateIn:"-"}),(0,a.jsx)("td",{className:"px-1 py-1",children:I(i.maiaProb)})]},r)})})]})})]}),(0,a.jsx)("div",{className:"text-[11px] text-zinc-500",children:"Global switches are stored in localStorage and apply to all client-side Stockfish anal
2775ysis using this shared engine provider."})]})]})}):null},N=t=>{if(!(null==t?void 0:t.diagnostics))return"No diagnostic snapshots yet";let r=t.diagnostics;return"".concat(r.strategy," • d").concat(t.depth,"/").concat(r.targetDepth," • ").concat(E(r.totalTimeMs)," • ").concat(r.legalMoveCount," legal")},O=n.createContext({streamEvaluations:()=>{throw Error("poorly provided StockfishEngineContext, missing streamEvaluations")},stopEvaluation:()=>{throw Error("poorly provided StockfishEngineContext, missing stopEvaluation")},isReady:()=>{throw Error("poorly provided StockfishEngineContext, missing isReady")},status:"loading",error:null}),M=t=>{let{children:r}=t,i=(0,n.useRef)(null);i.current||(k&&(!k.initializationError||k.ready||k.initializing)||(k=new h),i.current=k);let[o,l]=(0,n.useState)(()=>{var t,r;return(null==(t=i.current)?void 0:t.initializationError)?"error":(null==(r=i.current)?void 0:r.ready)?"ready":"loading"}),[u,d]=(0,n.useState)(()=>{var t,r;return null!=(r=null==(t=i.current)?void 0:t.initializationError)?r:null}),[c]=(0,n.useState)(()=>(()=>{try{let t=window.localStorage.getItem("maia.stockfishDebugLoading");if(null!==t)return $(t)}catch(t){}return $(y.env.NEXT_PUBLIC_STOCKFISH_DEBUG_LOADING)})()),[f,p]=(0,n.useState)(()=>S(i.current,c)),m=(0,n.useRef)(null),g=(0,n.useRef)(null),b=(0,n.useCallback)((t,r,a,n)=>i.current?i.current.streamEvaluations(t,r,a,n):(console.error("Engine not initialized"),null),[]),v=(0,n.useCallback)(()=>{var t;null==(t=i.current)||t.stopEvaluation()},[]),_=(0,n.useCallback)(()=>{var t,r;return null!=(r=null==(t=i.current)?void 0:t.ready)&&r},[]);(0,n.useEffect)(()=>{let t=()=>{let t=i.current;t&&(p(r=>{let i=S(t,c);return r===i?r:i}),t.initializationError?(l("error"),d(t.initializationError)):t.ready?(l("ready"),d(null)):l("loading"))};t();let r=setInterval(t,100);return()=>clearInterval(r)},[c]),(0,n.useEffect)(()=>()=>{null!==g.current&&(window.clearTimeout(g.current),g.current=null),m.current&&(s.Ay.dismiss(m.current),m.current=null)},[]),(0,n.useEffect)(()=>{if("loading"===o){if(m.current){m.current=s.Ay.loading(f,{id:m.current});return}if(null!==g.current)return;g.current=window.setTimeout(()=>{g.current=null,m.current||!i.current||i.current.ready||(m.current=s.Ay.loading(S(i.current,c)))},800);return}if(null!==g.current&&(window.clearTimeout(g.current),g.current=null),"ready"===o)m.current&&(s.Ay.success("Loaded Stockfish! Engine is ready",{id:m.current}),m.current=null);else if("error"===o){let t=u?"Failed to load Stockfish engine: ".concat(u):"Failed to load Stockfish engine";m.current?(s.Ay.error(t,{id:m.current}),m.current=null):s.Ay.error(t)}},[o,u,f,c]);let w=(0,n.useMemo)(()=>({streamEvaluations:b,stopEvaluation:v,isReady:_,status:o,error:u}),[b,v,_,o,u]);return(0,a.jsxs)(O.Provider,{value:w,children:[r,(0,a.jsx)(A,{})]})}},12562:(t,r,i)=>{"use strict";i.d(r,{B:()=>u});var a=i(94349),n=i(49037),s=i(33439),o=i(31062);let l={...n.ai,transform:t=>Math.round((0,a.q)(0,255,t))},u={test:(0,o.$)("rgb","red"),parse:(0,o.q)("red","green","blue"),transform:({red:t,green:r,blue:i,alpha:a=1})=>"rgba("+l.transform(t)+", "+l.transform(r)+", "+l.transform(i)+", "+(0,s.a)(n.X4.transform(a))+")"}},12732:()=>{},15861:t=>{!function(){var r={229:function(t){var r,i,a,n=t.exports={};function s(){throw Error("setTimeout has not been defined")}function o(){throw Error("clearTimeout has not been defined")}try{r="function"==typeof setTimeout?setTimeout:s}catch(t){r=s}try{i="function"==typeof clearTimeout?clearTimeout:o}catch(t){i=o}function l(t){if(r===setTimeout)return setTimeout(t,0);if((r===s||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(i){try{return r.call(null,t,0)}catch(i){return r.call(this,t,0)}}}var u=[],d=!1,c=-1;function h(){d&&a&&(d=!1,a.length?u=a.concat(u):c=-1,u.length&&f())}function f(){if(!d){var t=l(h);d=!0;for(var r=u.length;r;){for(a=u,u=[];++c<r;)a&&a[c].run();c=-1,r=u.length}a=null,d=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===o||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(r){try{return i.call(null,t)}catch(r){return i.call(this,t)}}}(t)}}function p(t,r){this.fun=t,this.array=r}function m(){}n.nextTick=function(t){var r=Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)r[i-1]=arguments[i];u.push(new p(t,r)),1!==u.length||d||l(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=m,n.addListener=m,n.once=m,n.off=m,n.removeListener=m,n.removeAllListeners=m,n.emit=m,n.prependListener=m,n.prependOnceListener=m,n.listeners=function(t){return[]},n.binding=function(t){throw Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw Error("process.chdir is not supported")},n.umask=function(){return 0}}},i={};function a(t){var n=i[t];if(void 0!==n)return n.exports;var s=i[t]={exports:{}},o=!0;try{r[t](s,s.exports,a),o=!1}finally{o&&delete i[t]}return s.exports}a.ab="//",t.exports=a(229)}()},17394:(t,r,i)=>{"use strict";
2775t.exports=i.p+"static/media/ort.bundle.min.eb6b9ac5.mjs"},17416:(t,r,i)=>{"use strict";i.d(r,{w:()=>o});var a=i(37876),n=i(54587),s=i.n(n);let o=()=>(0,a.jsx)("div",{className:"flex w-full flex-col items-center justify-center py-4",children:(0,a.jsxs)("div",{className:"flex w-[90%] flex-col items-start justify-center gap-6 bg-transparent md:items-center",children:[(0,a.jsx)("div",{className:"mx-auto mt-1 flex w-full select-none items-center gap-7",children:(0,a.jsx)("div",{className:"h-px flex-1 rounded bg-white/10","aria-hidden":"true"})}),(0,a.jsxs)("div",{className:"flex w-full max-w-4xl flex-col items-start justify-start gap-4 md:flex-row md:items-center md:justify-center md:gap-8",children:[(0,a.jsxs)("div",{className:"mb-2 flex flex-col items-start gap-1 md:mb-0 md:items-center md:gap-0.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(s(),{src:"/maia-ios-icon.png",alt:"Maia Chess",width:26,height:26}),(0,a.jsx)("p",{className:"text-xl font-bold text-primary",children:"Maia Chess"})]}),(0,a.jsxs)("p",{className:"max-w-[200px] text-left text-sm text-secondary md:max-w-[160px] md:text-center md:text-xs",children:["A project by the"," ",(0,a.jsx)("a",{target:"_blank",rel:"noreferrer",href:"http://csslab.cs.toronto.edu/",className:"text-primary",children:"University of Toronto CSSLab"})]})]}),(0,a.jsx)("div",{className:"hidden h-10 w-[1px] rounded-full bg-white/10 md:block"}),(0,a.jsx)("div",{className:"flex flex-col gap-6 md:flex-row md:gap-10",children:[{title:"Research",links:[{href:"https://arxiv.org/abs/2605.19091",text:"Maia-3 Paper (ICLR '26)"},{href:"https://www.cs.toronto.edu/~ashton/pubs/maia2-neurips2024.pdf",text:"Maia-2 Paper (NeurIPS '24)"},{href:"https://arxiv.org/abs/2006.01855",text:"Maia Paper (KDD '20)"},{href:"https://csslab.cs.toronto.edu/research/",text:"CSSLab Research"}]},{title:"Open-Source",links:[{href:"https://github.com/CSSLab/maia3",text:"Maia-3 Model"},{href:"https://github.com/CSSLab/maia2",text:"Maia-2 Model"},{href:"https://github.com/CSSLab/maia-chess",text:"Maia Model"},{href:"https://github.com/csslab/maia-platform-frontend",text:"Maia Web Platform"}]},{title:"Lichess Bots",links:[{href:"https://lichess.org/@/maia1",text:"Maia 1100"},{href:"https://lichess.org/@/maia5",text:"Maia 1500"},{href:"https://lichess.org/@/maia9",text:"Maia 1900"}]},{title:"Contact",links:[{href:"https://discord.gg/hHb6gqFpxZ",text:"Discord Community",icon:"link"},{href:"mailto:[email protected]",text:"[email protected]",icon:"mail"},{href:"https://x.com/maiachess",text:"@maiachess",icon:"link"}]}].map((t,r)=>(0,a.jsxs)("div",{className:"flex flex-col items-start justify-start gap-1.5 md:gap-0.5",children:[(0,a.jsx)("p",{className:"text-base font-medium md:text-sm",children:t.title}),t.links.map((t,r)=>(0,a.jsx)("a",{href:t.href,target:"_blank",rel:"noreferrer",className:"mt-0.5 md:mt-0.5",children:t.icon?(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-secondary transition duration-200 hover:text-primary/80",children:[(0,a.jsx)("span",{className:"material-symbols-outlined !text-sm md:!text-xs",children:t.icon}),(0,a.jsx)("p",{className:"text-sm md:text-xs",children:t.text})]}):(0,a.jsx)("p",{className:"text-sm text-secondary transition duration-200 hover:text-primary/80 md:text-xs",children:t.text})},r))]},r))})]}),(0,a.jsx)("p",{className:"text-left text-sm text-secondary md:text-center md:text-xs",children:"\xa9 2026 Maia Chess. All rights reserved."})]})})},18722:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.strippedSan=r.validateFen=r.isFlagKey=r.isSquare=r.isPieceSymbol=r.isColor=r.symbol=r.isDigit=r.swapColor=r.algebraic=r.file=r.rank=void 0;var a=i(6162);function n(t){return t>>4}function s(t){return 15&t}r.rank=n,r.file=s,r.algebraic=function(t){var r=s(t),i=n(t);return"abcdefgh".substring(r,r+1)+"87654321".substring(i,i+1)},r.swapColor=function(t){return t===a.WHITE?a.BLACK:a.WHITE},r.isDigit=function(t){return/^[0-9]$/.test(t)},r.symbol=function(t){var r=t.type;return t.color===a.WHITE?r.toUpperCase():r.toLowerCase()},r.isColor=function(t){return"w"===t||"b"===t},r.isPieceSymbol=function(t){return/^[pnbrqk]$/.test(t)},r.isSquare=function(t){return/^[a-h][1-8]$/.test(t)},r.isFlagKey=function(t){return -1!==["NORMAL","CAPTURE","BIG_PAWN","EP_CAPTURE","PROMOTION","KSIDE_CASTLE","QSIDE_CASTLE"].indexOf(t)},r.validateFen=function(t){var r={0:"No errors.",1:"FEN string must contain six space-delimited fields.",2:"6th field (move number) must be a positive integer.",3:"5th field (half move counter) must be a non-negative integer.",4:"4th field (en-passant square) is invali
2775d.",5:"3rd field (castling availability) is invalid.",6:"2nd field (side to move) is invalid.",7:"1st field (piece positions) does not contain 8 '/'-delimited rows.",8:"1st field (piece positions) is invalid [consecutive numbers].",9:"1st field (piece positions) is invalid [invalid piece].",10:"1st field (piece positions) is invalid [row too large].",11:"Illegal en-passant square"},i=t.split(/\s+/);if(6!==i.length)return{valid:!1,error_number:1,error:r[1]};if(isNaN(i[5])||0>=parseInt(i[5],10))return{valid:!1,error_number:2,error:r[2]};if(isNaN(i[4])||0>parseInt(i[4],10))return{valid:!1,error_number:3,error:r[3]};if(!/^(-|[abcdefgh][36])$/.test(i[3]))return{valid:!1,error_number:4,error:r[4]};if(!/^(KQ?k?q?|Qk?q?|kq?|q|-)$/.test(i[2]))return{valid:!1,error_number:5,error:r[5]};if(!/^(w|b)$/.test(i[1]))return{valid:!1,error_number:6,error:r[6]};var a=i[0].split("/");if(8!==a.length)return{valid:!1,error_number:7,error:r[7]};for(var n=0;n<a.length;n++){for(var s=0,o=!1,l=0;l<a[n].length;l++)if(isNaN(a[n][l])){if(!/^[prnbqkPRNBQK]$/.test(a[n][l]))return{valid:!1,error_number:9,error:r[9]};s+=1,o=!1}else{if(o)return{valid:!1,error_number:8,error:r[8]};s+=parseInt(a[n][l],10),o=!0}if(8!==s)return{valid:!1,error_number:10,error:r[10]}}return"3"==i[3][1]&&"w"==i[1]||"6"==i[3][1]&&"b"==i[1]?{valid:!1,error_number:11,error:r[11]}:{valid:!0,error_number:0,error:r[0]}},r.strippedSan=function(t){return t.replace(/=/,"").replace(/[+#]?[?!]*$/,"")}},18847:(t,r,i)=>{t.exports=i(52496)},18874:()=>{},19583:(t,r,i)=>{"use strict";i.d(r,{t:()=>b});var a=i(37876),n=i(48230),s=i.n(n),o=i(77328),l=i.n(o),u=i(18847),d=i.n(u),c=i(14232),h=i(27942),f=i(17416),p=i(87192);let m=d()(()=>i.e(669).then(i.bind(i,15669)),{loadableGenerated:{webpack:()=>[15669]},ssr:!1,loading:()=>(0,a.jsx)("div",{className:"h-full w-full rounded bg-glass"})}),g="font-sans";class b extends c.Component{static getDerivedStateFromError(t){return console.log("Error caught in getDerivedStateFromError:",t),{hasError:!0,error:t}}componentDidCatch(t,r){console.log("Error caught in componentDidCatch:",t,r);try{let r=window.location.pathname,i=t.name||"Unknown Error",a=t.message||"No message available";(0,p.SH)(i,r,"component_error",a)}catch(t){console.error("Failed to track error:",t)}"Unauthorized"===t.message?this.setState({hasError:!0,isUnauthorized:!0,error:t}):this.setState({hasError:!0,isUnauthorized:!1,error:t})}render(){if(this.state.hasError){var t,r;return this.state.isUnauthorized?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l(),{children:(0,a.jsx)("link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=swap"})}),(0,a.jsx)("div",{className:"".concat(g," app-container"),children:(0,a.jsxs)("div",{className:"flex min-h-screen w-screen flex-col bg-backdrop",children:[(0,a.jsx)(h.Y,{}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-4",children:[(0,a.jsx)("h2",{className:"text-3xl font-bold text-primary",children:"Unauthorized Access"}),(0,a.jsx)("p",{className:"text-primary",children:"You do not have permission to view this content. Please log in."}),(0,a.jsx)(s(),{href:"/",className:"flex items-center justify-center rounded bg-human-3 px-8 py-2 transition duration-200 hover:bg-human-4",onClick:()=>this.setState({hasError:!1}),children:(0,a.jsx)("span",{className:"text-lg text-primary",children:"Click here to go home"})})]}),(0,a.jsx)(f.w,{})]})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l(),{children:(0,a.jsx)("link",{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=swap"})}),(0,a.jsxs)("div",{className:"".concat(g," app-container flex min-h-screen w-screen flex-col bg-backdrop"),children:[(0,a.jsx)(h.Y,{}),(0,a.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-8 p-6",children:[(0,a.jsxs)("div",{className:"flex max-w-2xl flex-col items-center gap-6 text-center",children:[(0,a.jsx)("div",{className:"h-[200px] w-[200px] opacity-75",children:(0,a.jsx)(m,{contained:!0,config:{fen:"r
2775n1qkb1r/ppp1pBpp/5n2/4N3/8/2N5/PPPP1PPP/R1BbK2R b KQkq - 0 7",check:"black"}})}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("h2",{className:"text-4xl font-bold text-primary",children:"Oops! Something went wrong"}),(0,a.jsx)("p",{className:"text-lg text-secondary",children:"We're sorry for the inconvenience. An unexpected error occurred while loading the page."})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row",children:[(0,a.jsx)(s(),{href:"/",className:"flex items-center justify-center rounded-lg bg-human-3 px-6 py-3 transition duration-200 hover:bg-human-4",onClick:()=>this.setState({hasError:!1}),children:(0,a.jsx)("span",{className:"font-medium text-primary",children:"Return to Home"})}),(0,a.jsx)(s(),{href:"https://discord.gg/hHb6gqFpxZ",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center rounded-lg border border-human-3 px-6 py-3 transition duration-200 hover:bg-human-3/20",children:(0,a.jsx)("span",{className:"font-medium text-primary",children:"Get Help on Discord"})})]})]}),(0,a.jsx)("div",{className:"w-full max-w-2xl rounded-lg bg-glass p-4",children:(0,a.jsxs)("details",{className:"cursor-pointer",children:[(0,a.jsx)("summary",{className:"mb-3 font-medium text-primary",children:"Technical Details (click to expand)"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-secondary",children:"If you continue to experience this issue, please share the following error details with our support team on Discord:"}),(0,a.jsx)("code",{className:"block overflow-x-auto rounded bg-glass-strong p-3 text-xs text-secondary",children:(null==(t=this.state.error)?void 0:t.stack)||(null==(r=this.state.error)?void 0:r.toString())||"Unknown error"}),(0,a.jsxs)("p",{className:"text-tertiary text-xs",children:["Timestamp: ",new Date().toISOString()]})]})]})})]}),(0,a.jsx)(f.w,{})]})]})}return this.props.children}constructor(t){super(t),this.state={hasError:!1,isUnauthorized:!1,error:null}}}},20254:(t,r,i)=>{"use strict";i.d(r,{U:()=>a,f:()=>n});let a=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],n=new Set(a)},21300:(t,r,i)=>{"use strict";i.d(r,{KN:()=>s,gQ:()=>d,px:()=>o,uj:()=>n,vh:()=>l,vw:()=>u});let a=t=>({test:r=>"string"==typeof r&&r.endsWith(t)&&1===r.split(" ").length,parse:parseFloat,transform:r=>`${r}${t}`}),n=a("deg"),s=a("%"),o=a("px"),l=a("vh"),u=a("vw"),d={...s,parse:t=>s.parse(t)/100,transform:t=>s.transform(100*t)}},21419:(t,r,i)=>{"use strict";i.d(r,{G:()=>a});let a=t=>r=>1-t(1-r)},21623:(t,r,i)=>{"use strict";let a;i.d(r,{k:()=>l});var n=i(30785),s=i(81461);function o(){a=void 0}let l={now:()=>(void 0===a&&l.set(s.uv.isProcessing||n.W.useManualTiming?s.uv.timestamp:performance.now()),a),set:t=>{a=t,queueMicrotask(o)}}},23408:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return u}}),i(26201);let a=i(78637),n=i(89161),s=["-moz-initial","fill","none","scale-down",void 0];function o(t){return void 0!==t.default}function l(t){return void 0===t?t:"number"==typeof t?Number.isFinite(t)?t:NaN:"string"==typeof t&&/^[0-9]+$/.test(t)?parseInt(t,10):NaN}function u(t,r){var i,u;let d,c,h,{src:f,sizes:p,unoptimized:m=!1,priority:g=!1,loading:b,className:y,quality:v,width:_,height:w,fill:x=!1,style:$,overrideSrc:S,onLoad:k,onLoadingComplete:C,placeholder:E="empty",blurDataURL:T,fetchPriority:I,decoding:A="async",layout:N,objectFit:O,objectPosition:M,lazyBoundary:P,lazyRoot:R,...j}=t,{imgConf:z,showAltText:D,blurComplete:B,defaultLoader:L}=r,U=z||n.imageConfigDefault;if("allSizes"in U)d=U;else{let t=[...U.deviceSizes,...U.imageSizes].sort((t,r)=>t-r),r=U.deviceSizes.sort((t,r)=>t-r),a=null==(i=U.qualities)?void 0:i.sort((t,r)=>t-r);d={...U,allSizes:t,deviceSizes:r,qualities:a}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,
2775configurable:!0});let F=j.loader||L;delete j.loader,delete j.srcSet;let q="__next_img_default"in F;if(q){if("custom"===d.loader)throw Object.defineProperty(Error('Image with src "'+f+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader'),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let t=F;F=r=>{let{config:i,...a}=r;return t(a)}}if(N){"fill"===N&&(x=!0);let t={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[N];t&&($={...$,...t});let r={responsive:"100vw",fill:"100vw"}[N];r&&!p&&(p=r)}let V="",W=l(_),H=l(w);if((u=f)&&"object"==typeof u&&(o(u)||void 0!==u.src)){let t=o(f)?f.default:f;if(!t.src)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(t)),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(t)),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(c=t.blurWidth,h=t.blurHeight,T=T||t.blurDataURL,V=t.src,!x)if(W||H){
2775if(W&&!H){let r=W/t.width;H=Math.round(t.height*r)}else if(!W&&H){let r=H/t.height;W=Math.round(t.width*r)}}else W=t.width,H=t.height}let G=!g&&("lazy"===b||void 0===b);(!(f="string"==typeof f?f:V)||f.startsWith("data:")||f.startsWith("blob:"))&&(m=!0,G=!1),d.unoptimized&&(m=!0),q&&!d.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(m=!0);let K=l(v),Y=Object.assign(x?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:O,objectPosition:M}:{},D?{}:{color:"transparent"},$),Q=B||"empty"===E?null:"blur"===E?'url("data:image/svg+xml;charset=utf-8,'+(0,a.getImageBlurSvg)({widthInt:W,heightInt:H,blurWidth:c,blurHeight:h,blurDataURL:T||"",objectFit:Y.objectFit})+'")':'url("'+E+'")',X=s.includes(Y.objectFit)?"fill"===Y.objectFit?"100% 100%":"cover":Y.objectFit,Z=Q?{backgroundSize:X,backgroundPosition:Y.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},J=function(t){let{config:r,src:i,unoptimized:a,width:n,quality:s,sizes:o,loader:l}=t;if(a)return{src:i,srcSet:void 0,sizes:void 0};let{widths:u,kind:d}=function(t,r,i){let{deviceSizes:a,allSizes:n}=t;if(i){let t=/(^|\s)(1?\d?\d)vw/g,r=[];for(let a;a=t.exec(i);)r.push(parseInt(a[2]));if(r.length){let t=.01*Math.min(...r);return{widths:n.filter(r=>r>=a[0]*t),kind:"w"}}return{widths:n,kind:"w"}}return"number"!=typeof r?{widths:a,kind:"w"}:{widths:[...new Set([r,2*r].map(t=>n.find(r=>r>=t)||n[n.length-1]))],kind:"x"}}(r,n,o),c=u.length-1;return{sizes:o||"w"!==d?o:"100vw",srcSet:u.map((t,a)=>l({config:r,src:i,quality:s,width:t})+" "+("w"===d?t:a+1)+d).join(", "),src:l({config:r,src:i,quality:s,width:u[c]})}}({config:d,src:f,unoptimized:m,width:W,quality:K,sizes:p,loader:F});return{props:{...j,loading:G?"lazy":b,fetchPriority:I,width:W,height:H,decoding:A,className:y,style:{...Y,...Z},sizes:J.sizes,srcSet:J.srcSet,src:S||J.src},meta:{unoptimized:m,priority:g,placeholder:E,fill:x}}}},24044:(t,r,i)=>{"use strict";i.d(r,{i:()=>n});var a=i(42034);let n=async t=>{let r=await fetch((0,a.c)("opening/log_opening_drill"),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)});if(401===r.status)throw Error("Unauthorized");if(!r.ok)throw Error("Failed to log opening drill: ".concat(r.statusText))}},24237:(t,r,i)=>{"use strict";i.d(r,{Sz:()=>o,ZZ:()=>u,dg:()=>l});var a=i(55886),n=i(30904),s=i(21419);let o=(0,a.A)(.33,1.53,.69,.99),l=(0,s.G)(o),u=(0,n.V)(l)},24468:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(t,r){for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]})}(r,{default:function(){return u},getImageProps:function(){return l}});let a=i(64252),n=i(23408),s=i(39420),o=a._(i(75540));function l(t){let{props:r}=(0,n.getImgProps)(t,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[t,i]of Object.entries(r))void 0===i&&delete r[t];return{props:r}}let u=s.Image},25059:(t,r,i)=>{"use strict";i.r(r),i.d(r,{default:()=>U});var a=i(37876),n=i(77328),s=i.n(n),o=i(97685),l=i(45105),u=i.n(l),d=i(89099),c=i(14232),h=i(36854),f=i(65364);function p(){return"undefined"!=typeof window}function m(){return"production"}function g(){return"development"===((p()?window.vam:m())||"production")}function b(t){return(0,c.useEffect)(()=>{var r;t.beforeSend&&(null==(r=window.va)||r.call(window,"beforeSend",t.beforeSend))},[t.beforeSend]),(0,c.useEffect)(()=>{!function(t={debug:!0}){var r;if(!p())return;!function(t="auto"){if("auto"===t){window.vam=m();return}window.vam=t}(t.mode),window.va||(window.va=function(...t){(window.vaq=window.vaq||[]).push(t)}),t.beforeSend&&(null==(r=window.va)||r.call(window,"beforeSend",t.beforeSend));let i=t.scriptSrc?t.scriptSrc:g()?"https://va.vercel-scripts.com/v1/script.debug.js":t.basePath?`${t.basePath}/insights/script.js`:"/_vercel/insights/script.js";if(document.head.querySelector(`script[src*="${i}"]`))return;let a=document.createElement("script");
2775a.src=i,a.defer=!0,a.dataset.sdkn="@vercel/analytics"+(t.framework?`/${t.framework}`:""),a.dataset.sdkv="1.5.0",t.disableAutoTrack&&(a.dataset.disableAutoTrack="1"),t.endpoint?a.dataset.endpoint=t.endpoint:t.basePath&&(a.dataset.endpoint=`${t.basePath}/insights`),t.dsn&&(a.dataset.dsn=t.dsn),a.onerror=()=>{let t=g()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${i}. ${t}`)},g()&&!1===t.debug&&(a.dataset.debug="false"),document.head.appendChild(a)}({framework:t.framework||"react",basePath:t.basePath??function(){if(void 0!==f&&void 0!==f.env)return f.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}(),...void 0!==t.route&&{disableAutoTrack:!0},...t})},[]),(0,c.useEffect)(()=>{t.route&&t.path&&function({route:t,path:r}){var i;null==(i=window.va)||i.call(window,"pageview",{route:t,path:r})}({route:t.route,path:t.path})},[t.route,t.path]),null}var y=(0,c.createContext)({client:h.Ay});function v(t){var r=t.children,i=t.client,a=t.apiKey,n=t.options,s=(0,c.useRef)(null),o=(0,c.useMemo)(function(){return i?(a&&console.warn("[PostHog.js] You have provided both `client` and `apiKey` to `PostHogProvider`. `apiKey` will be ignored in favour of `client`."),n&&console.warn("[PostHog.js] You have provided both `client` and `options` to `PostHogProvider`. `options` will be ignored in favour of `client`."),i):(a||console.warn("[PostHog.js] No `apiKey` or `client` were provided to `PostHogProvider`. Using default global `window.posthog` instance. You must initialize it manually. This is not recommended behavior."),h.Ay)},[i,a,JSON.stringify(n)]);return(0,c.useEffect)(function(){if(!i){var t=s.current;t?(a!==t.apiKey&&console.warn("[PostHog.js] You have provided a different `apiKey` to `PostHogProvider` than the one that was already initialized. This is not supported by our provider and we'll keep using the previous key. If you need to toggle between API Keys you need to control the `client` yourself and pass it in as a prop rather than an `apiKey` prop."),n&&!function t(r,i,a){if(void 0===a&&(a=new WeakMap),r===i)return!0;if("object"!=typeof r||null===r||"object"!=typeof i||null===i)return!1;if(a.has(r)&&a.get(r)===i)return!0;a.set(r,i);var n=Object.keys(r),s=Object.keys(i);if(n.length!==s.length)return!1;for(var o=0;o<n.length;o++){var l=n[o];if(!s.includes(l)||!t(r[l],i[l],a))return!1}return!0}(n,t.options)&&h.Ay.set_config(n)):(h.Ay.__loaded&&console.warn("[PostHog.js] `posthog` was already loaded elsewhere. This may cause issues."),h.Ay.init(a,n)),s.current={apiKey:a,options:null!=n?n:{}}}},[i,a,JSON.stringify(n)]),c.createElement(y.Provider,{value:{client:o}},r)}var _=function(t,r){return(_=Object.setPrototypeOf||({__proto__:[]})instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(t[i]=r[i])})(t,r)};"function"==typeof SuppressedError&&SuppressedError;var w=function(t){return"function"==typeof t},x={componentStack:null,error:null},$={INVALID_FALLBACK:"[PostHog.js][PostHogErrorBoundary] Invalid fallback prop, provide a valid React element or a function that returns a valid React element."};!function(t){if("function"!=typeof t&&null!==t)throw TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=i}function i(r){var i=t.call(this,r)||this;return i.state=x,i}_(i,t),i.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r),i.prototype.componentDidCatch=function(t,r){var i,a=r.componentStack,n=this.props.additionalProperties;this.setState({error:t,componentStack:a}),w(n)?i=n(t):"object"==typeof n&&(i=n),this.context.client.captureException(t,i)},i.prototype.render=function(){var t=this.props,r=t.children,i=t.fallback,a=this.state;if(null==a.componentStack)return w(r)?r():r;var n=w(i)?c.createElement(i,{error:a.error,componentStack:a.componentStack}):i;return c.isValidElement(n)?n:(console.warn($.INVALID_FALLBACK),c.createElement(c.Fragment,null))},i.contextType=y}(c.Component);var S=i(76123),k=i(85888),C=i(55892),E=i(9504),T=i(91749),I=i(11391),A=i(12152),N=i(87003),O=i(94139);i(18874),i(12732),i(87865),i(26389),i(49574),i(63163);var M=i(41087),P=i(19583),R=i(25968),j=i(17416),z=i(27942),D=i(42246);let B="https://www.maiachess.com/assets/og-maia.png",L="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,200..400,0..1,0&display=swap",U=function(t){let{Component:r,pageProps:i}=t,n=(0,d.useRouter)(),l=n.pathname.startsWith("/analysis"),f=["/analysis","/drills","/puzzles","/settings","/broadcast"].some(t=>n.pathname.includes(t)),p=["/analysis","/drills","/puzzles","/broadcast"].some(t=>n.pathname.includes(t));return(0,c.useEffect)(()=>{h.Ay.init("phc_m3vnfVEor992YayqRovInRzEERrYVp7J1HER71ZmgKa",{api_host:"/ingest",ui_host:"https://us.posthog.com",...D.j,capture_exceptions:!0,debug:!1})},[]),(0,c.useEffect)(()=>{let t=document.documentElement,r=()=>{t.classList.add("material-symbols-ready")};if(!("fonts"in document)||document.fonts.check('24px "Material Symbols Outlined"'))return void r();document.fonts.load('24px "Material Symbols Outlined"').then(r).catch(()=>void 0)},[]),(0,a.jsx)(v,{client:h.Ay,children:(0,a.jsx)(N.A,{children:(0,a.jsxs)(M.L,{components:[I.Z,S.d,O.Am,C.h,P.t,T.i,...f?[E.t]:[],...p?[A.Z]:[],...l?[k.h]:[]],children:[(0,a.jsxs)(s(),{children:[(0,a.jsx)("link",{rel:"icon",type:"image/png",href:"/favicon.png"}
2775),(0,a.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,a.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,a.jsx)("link",{rel:"preload",as:"style",href:L}),(0,a.jsx)("link",{rel:"stylesheet",href:L}),(0,a.jsx)("noscript",{children:(0,a.jsx)("link",{rel:"stylesheet",href:L})}),(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:"html:not(.material-symbols-ready) .material-symbols-outlined{visibility:hidden}"}}),(0,a.jsx)("meta",{name:"apple-mobile-web-app-capable",content:"yes"}),(0,a.jsx)("meta",{name:"apple-mobile-web-app-status-bar-style",content:"default"}),(0,a.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,a.jsx)("meta",{name:"apple-mobile-web-app-title",content:"Maia Chess"}),(0,a.jsx)("link",{rel:"apple-touch-icon",href:"/maia-ios-icon.png"}),(0,a.jsx)("meta",{property:"og:image",content:B}),(0,a.jsx)("meta",{property:"og:image:url",content:B}),(0,a.jsx)("meta",{property:"og:image:secure_url",content:B}),(0,a.jsx)("meta",{property:"og:image:alt",content:"Maia Chess"}),(0,a.jsx)("meta",{property:"og:image:type",content:"image/png"}),(0,a.jsx)("meta",{property:"og:image:width",content:"1200"}),(0,a.jsx)("meta",{property:"og:image:height",content:"630"}),(0,a.jsx)("meta",{property:"og:site_name",content:"Maia Chess"}),(0,a.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,a.jsx)("meta",{name:"twitter:image",content:B}),(0,a.jsx)("meta",{name:"twitter:image:src",content:B}),(0,a.jsx)("meta",{name:"twitter:image:alt",content:"Maia Chess"})]}),(0,a.jsxs)("div",{className:"".concat("font-sans"," app-container"),children:[(0,a.jsx)(z.Y,{}),(0,a.jsxs)("div",{className:"content-container",children:[(0,a.jsx)("div",{className:"pointer-events-none fixed inset-0",style:{background:"radial-gradient(ellipse 120% 80% at center top, rgba(239, 68, 68, 0.08) 0%, transparent 75%)"}}),(0,a.jsx)(r,{...i})]}),(0,a.jsx)(j.w,{}),(0,a.jsx)(R.O,{})]}),(0,a.jsx)(o.l$,{position:"bottom-right"}),(0,a.jsx)(b,{}),(0,a.jsx)(u(),{async:!0,src:"/analytics.js?id=G-SNP84LXLKY"}),(0,a.jsx)(u(),{id:"analytics",children:"\n            window.dataLayer = window.dataLayer || [];\n            function gtag(){dataLayer.push(arguments);}\n            gtag('js', new Date());\n\n            gtag('config', 'G-SNP84LXLKY');\n          "})]})})})}},25968:(t,r,i)=>{"use strict";i.d(r,{O:()=>o});var a=i(37876),n=i(14232),s=i(55892);let o=()=>{let{user:t}=(0,n.useContext)(s.c);return(null==t?void 0:t.lichessId)?(0,a.jsx)("button",{id:"feedback-button",className:"fixed bottom-8 right-8 z-20 flex h-12 w-12 items-center justify-center rounded-full border border-glass-border bg-glass-strong backdrop-blur-md transition-all duration-200 hover:bg-glass-stronger",children:(0,a.jsx)("span",{className:"material-symbols-outlined material-symbols-filled text-primary",children:"feedback"})}):null}},26389:()=>{},26474:(t,r,i)=>{"use strict";i.d(r,{Y:()=>d});var a=i(37876),n=i(14232),s=i(48230),o=i.n(s),l=i(27212),u=i(54256);let d=t=>{let{status:r,loading:i=!1}=t,[s,d]=(0,n.useState)(!1);return!r.isOnLeaderboard||i?null:(0,a.jsxs)("div",{className:"relative",onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:[(0,a.jsx)("div",{className:"flex cursor-pointer items-center justify-center",children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("span",{className:"material-symbols-outlined material-symbols-filled !text-2xl text-yellow-500",children:"trophy"}),r.totalLeaderboards>0&&(0,a.jsx)("span",{className:"absolute right-0 top-0 flex h-3 w-3 items-center justify-center rounded-full bg-green-500 text-[8px] font-semibold text-white",children:r.totalLeaderboards})]})}),(0,a.jsx)(l.N,{children:s&&(0,a.jsxs)(u.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute right-0 top-full z-50 w-64 overflow-hidden rounded-md border border-glass-border text-white/90 shadow-lg",style:{background:"radial-gradient(ellipse 110% 90% at 20% 10%, rgba(239, 68, 68, 0.10) 0%, rgba(239, 68, 68, 0.06) 35%, transparent 75%), #171214"},children:[(0,a.jsx)("div",{className:"border-b border-glass-border px-3 py-2",children:(0,a.jsx)("h3",{className:"text-sm font-medium text-white/90",children:"You're on the leaderboard!"})}),(0,a.jsx)("div",{className:"flex flex-col",children:r.positions.map(t=>(0,a.jsxs)(o(),{href:"/leaderboard",className:"flex items-center justify-between px-3 py-2 text-white/90 transition-colors hover:bg-[rgba(255,255,255,0.04)]",children:[(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-white/90",children:t.gameName}),(0,a.jsxs)("span",{className:"text-xs text-secondary",children:["Rating: ",t.elo]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[t.position<=3&&(0,a.jsx)("span",{className:"material-symbols-outlined !text-lg text-yellow-500",children:"workspace_premium"}),(0,a.jsxs)("span",{className:"text-base font-semibold text-yellow-500",children:["#",t.position]})]})]},t.gameType))}),(0,a.jsx)("div",{className:"border-t border-glass-border px-3 py-2",children:(0,a.jsx)(o(),{href:"/leaderboard",className:"text-xs text-secondary hover:text-primary",children:"View full leaderboard →"})})]})})]})}},27212:(t,r,i)=>{"use strict";i.d(r,{N:()=>y});var a=i(37876),n=i(14232),s=i(5048),o=i(91200),l=i(3866),u=i(39751);class d extends n.Component{getSnapshotBeforeUpdate(t){let r=this.props.childRef.current;if(r&&t.isPresent&&!this.props.isPresent){let t=this.props.sizeRef.current;t.height=r.offsetHeight||0,t.width=r.offsetWidth||0,t.top=r.offsetTop,t.left=r.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function c({children:t,isPresent:r}){let i=(0,n.useId)(),s=(0,n.useRef)(null),o=(0,n.useRef)({width:0,height:0,top:0,left:0}),{nonce:l}=(0,n.useContext)(u.Q);return(0,n.useInsertionEffect)(()=>{let{width:t,height:a,top:n,left:u}=o.current;if(r||!s.current||!t||!a)return;s.current.dataset.motionPopId=i;let d=document.createElement("style");return l&&(d.nonce=l),document.head.appendChild(d),d.sheet&&d.sheet.insertRule(`
2776          [data-motion-pop-id="${i}"] {
2777            position: absolute !important;
2778            width: ${t}px !important;
2779            height: ${a}px !important;
2780            top: ${n}px !important;
2781            left: ${u}px !important;
2782          }
2783        `),()=>{document.head.removeChild(d)}},[r]),(0,a.jsx)(d,{isPresent:r,childRef:s,sizeRef:o,children:n.cloneElement(t,{ref:s})})}let h=({children:t,initial:r,isPresent:i,onExitComplete:s,custom:u,presenceAffectsLayout:d,mode:h})=>{let p=(0,o.M)(f),m=(0,n.useId)(),g=(0,n.useCallback)(t=>
2783{for(let r of(p.set(t,!0),p.values()))if(!r)return;s&&s()},[p,s]),b=(0,n.useMemo)(()=>({id:m,initial:r,isPresent:i,custom:u,onExitComplete:g,register:t=>(p.set(t,!1),()=>p.delete(t))}),d?[Math.random(),g]:[i,g]);return(0,n.useMemo)(()=>{p.forEach((t,r)=>p.set(r,!1))},[i]),n.useEffect(()=>{i||p.size||!s||s()},[i]),"popLayout"===h&&(t=(0,a.jsx)(c,{isPresent:i,children:t})),(0,a.jsx)(l.t.Provider,{value:b,children:t})};function f(){return new Map}var p=i(83885);let m=t=>t.key||"";function g(t){let r=[];return n.Children.forEach(t,t=>{(0,n.isValidElement)(t)&&r.push(t)}),r}var b=i(50181);let y=({children:t,custom:r,initial:i=!0,onExitComplete:l,presenceAffectsLayout:u=!0,mode:d="sync",propagate:c=!1})=>{let[f,y]=(0,p.xQ)(c),v=(0,n.useMemo)(()=>g(t),[t]),_=c&&!f?[]:v.map(m),w=(0,n.useRef)(!0),x=(0,n.useRef)(v),$=(0,o.M)(()=>new Map),[S,k]=(0,n.useState)(v),[C,E]=(0,n.useState)(v);(0,b.E)(()=>{w.current=!1,x.current=v;for(let t=0;t<C.length;t++){let r=m(C[t]);_.includes(r)?$.delete(r):!0!==$.get(r)&&$.set(r,!1)}},[C,_.length,_.join("-")]);let T=[];if(v!==S){let t=[...v];for(let r=0;r<C.length;r++){let i=C[r],a=m(i);_.includes(a)||(t.splice(r,0,i),T.push(i))}"wait"===d&&T.length&&(t=T),E(g(t)),k(v);return}let{forceRender:I}=(0,n.useContext)(s.L);return(0,a.jsx)(a.Fragment,{children:C.map(t=>{let n=m(t),s=(!c||!!f)&&(v===C||_.includes(n));return(0,a.jsx)(h,{isPresent:s,initial:(!w.current||!!i)&&void 0,custom:s?void 0:r,presenceAffectsLayout:u,mode:d,onExitComplete:s?void 0:()=>{if(!$.has(n))return;$.set(n,!0);let t=!0;$.forEach(r=>{r||(t=!1)}),t&&(null==I||I(),E(x.current),c&&(null==y||y()),l&&l())},children:t},n)})})}},27942:(t,r,i)=>{"use strict";i.d(r,{Y:()=>v});var a=i(37876),n=i(48230),s=i.n(n),o=i(54587),l=i.n(o),u=i(89099),d=i(86493),c=i(14232),h=i(54256),f=i(27212),p=i(55892),m=i(91749),g=i(94139),b=i(26474),y=i(30525);let v=()=>{let[t,r]=(0,c.useState)(!1),[i,n]=(0,c.useState)(!1),[o,v]=(0,c.useState)(!1),[_,w]=(0,c.useState)(!1),{isMobile:x,width:$}=(0,c.useContext)(g.lh),{user:S,connectLichess:k,logout:C}=(0,c.useContext)(p.c),{status:E,loading:T}=(0,y.d)(null==S?void 0:S.displayName),I=(0,u.useRouter)(),{setPlaySetupModalProps:A}=(0,c.useContext)(m.V),N=!x&&$>0&&$<1300,O=(0,c.useCallback)(t=>{"undefined"!=typeof document&&document.activeElement instanceof HTMLElement&&document.activeElement.blur(),A({playType:t})},[A]);(0,c.useEffect)(()=>()=>A(void 0),[A]),(0,c.useEffect)(()=>{let t=()=>{r(!1)};return I.events.on("routeChangeStart",t),()=>{I.events.off("routeChangeStart",t)}},[I]),(0,c.useEffect)(()=>(t?document.body.style.overflow="hidden":document.body.style.overflow="unset",()=>{document.body.style.overflow="unset"}),[t]);let M=(null==S?void 0:S.lichessId)?(0,a.jsxs)("div",{className:"relative flex items-center gap-2 rounded-full border border-glass-border bg-backdrop px-3 py-1.5 transition-all duration-200 hover:border-white/20",onMouseEnter:()=>w(!0),onMouseLeave:()=>w(!1),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-xl text-primary/80",children:"account_circle"}),(0,a.jsx)("span",{className:"text-sm font-medium text-primary/90",children:null==S?void 0:S.displayName}),(0,a.jsx)(h.P.i,{className:"material-symbols-outlined text-sm text-primary/60",animate:{rotate:180*!!_},transition:{duration:.2},children:"arrow_drop_down"}),(0,a.jsx)(f.N,{children:_&&(0,a.jsx)(h.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute bottom-[100%] left-0 z-50 w-full overflow-hidden rounded-md border border-glass-border bg-backdrop md:bottom-auto md:top-[100%]",children:(0,a.jsxs)("div",{className:"divide-y divide-glass-border tracking-wide",children:[(0,a.jsx)(s(),{href:"/profile",className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Profile"}),(0,a.jsx)(s(),{href:"/settings",className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Settings"}),(0,a.jsx)("button",{onClick:C,className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Logout"})]})})})]}):(0,a.jsx)("button",{onClick:k,className:"px-2 py-1 text-sm tracking-wide text-primary/80 transition-all duration-200 hover:text-primary",children:"Sign in"}),P=(0,a.jsxs)("div",{className:"flex w-[90%] flex-row items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex flex-row items-center justify-start gap-6",children:[(0,a.jsxs)(s(),{href:"/",className:"flex flex-row items-center gap-2",children:[(0,a.jsx)(l(),{src:"/maia-ios-icon.png",width:40,height:40,alt:"Maia Logo"}),(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Maia Chess"})]}),(0,a.jsxs)("div",{className:"hidden flex-row items-center gap-1 text-sm tracking-wider md:flex",children:[(0,a.jsxs)("div",{className:"relative",onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[(0,a.jsxs)("button",{className:"-gap-1 flex items-center px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/play")?"!text-primary":"!text-primary/80"),children:[(0,a.jsx)("p",{children:"PLAY"}
2783),(0,a.jsx)(h.P.i,{className:"material-symbols-outlined text-sm",animate:{rotate:180*!!i},transition:{duration:.2},children:"arrow_drop_down"})]}),(0,a.jsx)(f.N,{children:i&&(0,a.jsx)(h.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute left-0 top-[100%] z-30 w-48 overflow-hidden rounded-md border border-glass-border bg-backdrop",children:(0,a.jsxs)("div",{className:"divide-y divide-glass-border tracking-wide",children:[(0,a.jsx)("button",{onClick:()=>O("againstMaia"),className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Play Maia"}),(0,a.jsx)("button",{onClick:()=>O("handAndBrain"),className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",children:"Play Hand and Brain"}),(0,a.jsx)("a",{className:"flex w-full items-center justify-start px-3 py-2 text-sm text-primary transition-colors hover:bg-glass",href:"https://lichess.org/@/maia1",target:"_blank",rel:"noreferrer",children:"Play Maia on Lichess"})]})})})]}),(0,a.jsx)(s(),{href:"/analysis",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/analysis")?"!text-primary":"!text-primary/80"),children:"ANALYSIS"}),(0,a.jsx)(s(),{href:"/puzzles",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/puzzles")?"!text-primary":"!text-primary/80"),children:"PUZZLES"}),(0,a.jsx)(s(),{href:"/drills",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/drills")?"!text-primary":"!text-primary/80"),children:"DRILLS"}),(0,a.jsx)(s(),{href:"/turing",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/turing")?"!text-primary":"!text-primary/80"),children:"BOT-OR-NOT"}),!N&&(0,a.jsx)(s(),{href:"/broadcast",className:"px-2 py-1 transition-all duration-200 hover:!text-primary ".concat(I.pathname.startsWith("/broadcast")?"!text-primary":"!text-primary/80"),children:"BROADCASTS"}),(0,a.jsxs)("div",{className:"relative",onMouseEnter:()=>v(!0),onMouseLeave:()=>v(!1),children:[(0,a.jsxs)("button",{className:"-gap-1 flex items-center px-2 py-1 !text-primary/80 transition-all duration-200 hover:!text-primary",children:[(0,a.jsx)("p",{children:"MORE"}),(0,a.jsx)(h.P.i,{className:"material-symbols-outlined text-sm",animate:{rotate:180*!!o},transition:{duration:.2},children:"arrow_drop_down"})]}),(0,a.jsx)(f.N,{children:o&&(0,a.jsx)(h.P.div,{initial:{opacity:0,y:-10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"absolute left-0 top-[100%] z-30 w-32 overflow-hidden rounded-md border border-glass-border bg-backdrop",children:(0,a.jsxs)("div",{className:"divide-y divide-glass-border tracking-wide",children:[N&&(0,a.jsx)(s(),{href:"/broadcast",className:"flex w-full items-center justify-start px-3 py-2 text-sm transition-colors hover:bg-glass ".concat(I.pathname.startsWith("/broadcast")?"text-primary":"text-white/90"),children:"Broadcasts"}),(0,a.jsx)(s(),{href:"/leaderboard",className:"flex w-full items-center justify-start px-3 py-2 text-sm transition-colors hover:bg-glass ".concat(I.pathname.startsWith("/leaderboard")?"text-primary":"text-white/90"),children:"Leaderboard"}),(0,a.jsx)(s(),{href:"/blog",className:"flex w-full items-center justify-start px-3 py-2 text-sm text-white/90 transition-colors hover:bg-glass",children:"Maia Blog"})]})})})]})]})]}),(0,a.jsxs)("div",{className:"hidden flex-row items-center gap-3 md:flex",children:[(0,a.jsx)("a",{target:"_blank",rel:"noreferrer",href:"https://discord.gg/Az93GqEAs7",children:d.EI}),(null==S?void 0:S.lichessId)&&(0,a.jsx)(b.Y,{status:E,loading:T}),M]})]}),R=(0,a.jsxs)("div",{className:"flex w-full flex-row justify-between px-4",children:[(0,a.jsx)(s(),{href:"/",passHref:!0,children:(0,a.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[(0,a.jsx)(l(),{src:"/maia-ios-icon.png",width:40,height:40,alt:"Maia Logo"}),(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Maia Chess"})]})}),(0,a.jsx)("button",{"aria-label":"Open navigation menu",className:"block cursor-pointer *:*:fill-primary",onClick:()=>r(t=>!t),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl",children:"menu"})}),t&&(0,a.jsxs)("div",{className:"fixed left-0 top-0 z-40 flex h-screen w-screen flex-col items-start justify-between overflow-y-auto bg-backdrop py-4",children:[(0,a.jsxs)("div",{className:"flex w-full flex-row justify-between px-4",children:[(0,a.jsx)(s(),{href:"/",passHref:!0,children:(0,a.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[(0,a.jsx)(l(),{src:"/maia-ios-icon.png",width:40,height:40,alt:"Maia Logo"}),(0,a.jsx)("h2",{className:"text-2xl font-bold",children:"Maia Chess"})]})}),(0,a.jsx)("button",{"aria-label":"Close navigation menu",className:"block cursor-pointer *:*:fill-primary",onClick:()=>r(!1),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl",children:"menu"})})]}),(0,a.jsxs)("div",{className:"flex w-full flex-1 flex-col gap-5 overflow-y-auto px-12 py-6 tracking-wider",children:[(0,a.jsxs)("div",{className:"flex flex-col items-start justify-center gap-3",children:[(0,a.jsx)("button",{children:"PLAY"}),(0,a.jsxs)("div",{className:"ml-4 flex flex-col items-start justify-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>{r(!1),O("againstMaia")},children:"Play Maia"}),(0,a.jsx)("button",{onClick:()=>{r(!1),O("handAndBrain")},children:"Play Hand and Brain"}),(0,a.jsx)("a",{href:"https://lichess.org/@/maia1",target:"_blank",rel:"noreferrer",onClick:()=>r(!1),children:"Play Maia on Lichess"})]})]}),(0,a.jsx)(s(),{href:"/analysis",className:"uppercase",children:"Analysis"}),(0,a.jsx)(s(),{href:"/puzzles",className:"uppercase",children:"Puzzles"}),(0,a.jsx)(s(),{href:"/drills",className:"uppercase",children:"Drills"}),(0,a.jsx)(s(),{href:"/turing",className:"uppercase",children:"Bot-or-not"}),(0,a.jsx)(s(),{href:"/broadcast",className:"uppercase",children:"Broadcasts"}),(0,a.jsx)(s(),{href:"/leaderboard",className:"uppercase",children:"Leaderboard"}),(0,a.jsx)(s(),{href:"/blog",className:"uppercase",children:"Maia Blog"}),(0,a.jsx)("a",{target:"_blank",rel:"noreferrer",href:"https://discord.gg/Az93GqEAs7",className:"uppercase",onClick:()=>r(!1),children:"Discord"}),(null==S?void 0:S.lichessId)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s(),{href:"/profile",className:"uppercase",children:"Profile"}),(0,a.jsx)(s(),{href:"/settings",className:"uppercase",children:"Settings"}),(0,a.jsx)("button",{onClick:C,className:"text-left uppercase",children:"Logout"})]})]}),(0,a.jsxs)("div",{className:"flex w-full flex-row items-center gap-3 px-12",children:[(null==S?void 0:S.lichessId)&&(0,a.jsx)(b.Y,{status:E,loading:T}),(null==S?void 0:S.lichessId)?(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary/80",children:"account_circle"}),(0,a.jsx)("span",{className:"text-lg font-medium tracking-wider text-primary/90",children:null==S?void 0:S.displayName})]}):(0,a.jsx)("button",{onClick:k,className:"uppercase",children:"Sign in"})]})]})]});return(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("div",{"data-component":"app-header",className:"flex w-screen flex-row items-center justify-center pb-1 pt-4 md:pb-0",children:x?R:P})})}},28404:(t,r,i)=>{"use strict";i.d(r,{b:()=>n});var a=i(24237);let n=t=>(t*=2)<1?.5*(0,a.dg)(t):.5*(2-Math.pow(2,-10*(t-1)))},28670:(t,r,i)=>{"use strict";i.d(r,{V:()=>l});var a=i(49037),n=i(21300),s=i(33439),o=i(31062);let l={test:(0,o.$)("hsl","hue"),parse:(0,o.q)("hue","saturation","lightness"),transform:({hue:t,saturation:r,lightness:i,alpha:o=1})=>"hsla("+Math.round(t)+", "+n.KN.transform((0,s.a)(r))+", "+n.KN.transform((0,s.a)(i))+", "+(0,s.a)(a.X4.transform(o))+")"}},29610:(t,r,i)=>{"use strict";
2783Object.defineProperty(r,"__esModule",{value:!0}),r.validateMove=r.getBoard=r.ascii=r.buildMove=r.makeMove=r.insufficientMaterial=r.inStalemate=r.inCheckmate=r.inCheck=r.isKingAttacked=r.isAttacked=r.makePretty=r.sanToMove=r.moveToSan=r.generateMoves=r.removePiece=r.putPiece=r.clonePiece=r.cloneMove=r.getPiece=r.loadPgn=r.getPgn=r.loadFen=r.getFen=r.getDisambiguator=void 0;var a=i(6162),n=i(73198),s=i(18722);function o(t,r,i){for(var a=h(t,{legal:!i}),n=r.from,o=r.to,l=r.piece,u=0,d=0,c=0,f=0,p=a.length;f<p;f++){var m=a[f].from,g=a[f].to;l===a[f].piece&&n!==m&&o===g&&(u++,s.rank(n)===s.rank(m)&&d++,s.file(n)===s.file(m)&&c++)}if(u>0)if(d>0&&c>0)return s.algebraic(n);else if(c>0)return s.algebraic(n).charAt(1);else return s.algebraic(n).charAt(0);return""}function l(t){var r=t.split(/\s+/),i=r[0],o=0;if(!s.validateFen(t).valid)return null;for(var l=new n.State,u=0;u<i.length;u++){var d=i.charAt(u);if("/"===d)o+=8;else if(s.isDigit(d))o+=parseInt(d,10);else{var h=d<"a"?a.WHITE:a.BLACK,f=c(l,{type:d.toLowerCase(),color:h},s.algebraic(o));if(!f)return null;l=f,o++}}return l.turn=r[1]===a.BLACK?a.BLACK:a.WHITE,r[2].indexOf("K")>-1&&(l.castling.w|=a.BITS.KSIDE_CASTLE),r[2].indexOf("Q")>-1&&(l.castling.w|=a.BITS.QSIDE_CASTLE),r[2].indexOf("k")>-1&&(l.castling.b|=a.BITS.KSIDE_CASTLE),r[2].indexOf("q")>-1&&(l.castling.b|=a.BITS.QSIDE_CASTLE),l.ep_square="-"===r[3]?a.EMPTY:a.SQUARES[r[3]],l.half_moves=parseInt(r[4],10),l.move_number=parseInt(r[5],10),l}function u(t){return{to:t.to,from:t.from,color:t.color,flags:t.flags,piece:t.piece,captured:t.captured,promotion:t.promotion,san:t.san}}function d(t){return{color:t.color,type:t.type}}function c(t,r,i){var n=r.type,o=r.color;if(!n||!o||!i||(n=n.toLowerCase(),o=o.toLowerCase(),i=i.toLowerCase(),!s.isPieceSymbol(n)||!s.isColor(o)||!s.isSquare(i)))return null;var l=t.clone(),u=a.SQUARES[i];return n===a.KING&&l.kings[o]!==a.EMPTY&&l.kings[o]!==u?null:(l.board[u]={type:n,color:o},n===a.KING&&(l.kings[o]=u),l)}function h(t,r){void 0===r&&(r={});var i,n,o=r.legal,l=function(r,i,n,o,l){var u=r[n];if(u&&u.type===a.PAWN&&(s.rank(o)===a.RANK_8||s.rank(o)===a.RANK_1))for(var d=[a.QUEEN,a.ROOK,a.BISHOP,a.KNIGHT],c=0,h=d.length;c<h;c++)i.push(_(t,n,o,l,d[c]));else i.push(_(t,n,o,l))},u=[],d=t.turn,c=s.swapColor(d),h={b:a.RANK_7,w:a.RANK_2},f=a.SQUARES.a8,p=a.SQUARES.h1,b=!1,y=r.square;if(y){if(y=y.toLowerCase(),!s.isSquare(y))return[];f=p=a.SQUARES[y],b=!0}for(var w=f;w<=p;w++){if(136&w){w+=7;continue}var x=t.board[w];if(x&&x.color===d)if(x.type===a.PAWN){var $=w+a.PAWN_OFFSETS[d][0];if(!t.board[$]){l(t.board,u,w,$,a.BITS.NORMAL);var S=w+a.PAWN_OFFSETS[d][1];h[d]!==s.rank(w)||t.board[S]||l(t.board,u,w,S,a.BITS.BIG_PAWN)}for(var k=2;k<4;k++){var C=w+a.PAWN_OFFSETS[d][k];136&C||(t.board[C]&&(null==(i=t.board[C])?void 0:i.color)===c?l(t.board,u,w,C,a.BITS.CAPTURE):C===t.ep_square&&l(t.board,u,w,t.ep_square,a.BITS.EP_CAPTURE))}}else for(var k=0,E=a.PIECE_OFFSETS[x.type].length;k<E;k++)for(var T=a.PIECE_OFFSETS[x.type][k],I=w;!(136&(I+=T));){if(t.board[I]){if((null==(n=t.board[I])?void 0:n.color)===d)break;l(t.board,u,w,I,a.BITS.CAPTURE);break}if(l(t.board,u,w,I,a.BITS.NORMAL),"n"===x.type||"k"===x.type)break}}if(!b||p===t.kings[d]){if(t.castling[d]&a.BITS.KSIDE_CASTLE){var A=t.kings[d],N=A+2;t.board[A+1]||t.board[N]||m(t,c,t.kings[d])||m(t,c,A+1)||m(t,c,N)||l(t.board,u,t.kings[d],N,a.BITS.KSIDE_CASTLE)}if(t.castling[d]&a.BITS.QSIDE_CASTLE){var A=t.kings[d],N=A-2;t.board[A-1]||t.board[A-2]||t.board[A-3]||m(t,c,t.kings[d])||m(t,c,A-1)||m(t,c,N)||l(t.board,u,t.kings[d],N,a.BITS.QSIDE_CASTLE)}}if(!(void 0===o||o))return u;for(var O=[],w=0,E=u.length;w<E;w++)g(v(t,u[w]),d)||O.push(u[w]);return O}function f(t,r,i){void 0===i&&(i={});var n,l=i.sloppy,u=i.checkPromotion,d="";if(r.flags&a.BITS.KSIDE_CASTLE)d="O-O";else if(r.flags&a.BITS.QSIDE_CASTLE)d="O-O-O";else{var c=o(t,r,void 0!==l&&l);r.piece!==a.PAWN&&(d+=r.piece.toUpperCase()+c),r.flags&(a.BITS.CAPTURE|a.BITS.EP_CAPTURE)&&(r.piece===a.PAWN&&(d+=s.algebraic(r.from)[0]),d+="x"),d+=s.algebraic(r.to),(void 0===u||u)&&r.flags&a.BITS.PROMOTION&&(d+="="+(null==(n=r.promotion)?void 0:n.toUpperCase()))}var h=v(t,r);return b(h)&&(y(h)?d+="#":d+="+"),d}function p(t,r,i){void 0===i&&(i={});var n,o,l,u,d,c=i.sloppy,p=void 0!==c&&c,m=i.checkPromotion,g=void 0===m||m,b=s.strippedSan(r);p&&(n=b.match(/([pnbrqkPNBRQK])?([a-h][1-8])x?-?([a-h][1-8])([qrbnQRBN])?/))&&(o=n[1],l=n[2],u=n[3],d=n[4]);for(var y=h(t,{square:l}),v=0,_=y.length;v<_;v++){var w=f(t,y[v],{checkPromotion:g});if(b===s.strippedSan(w)||p&&b===s.strippedSan(f(t,y[v],i))||l&&u&&s.isSquare(l)&&s.isSquare(u)&&n&&(!o||o.toLowerCase()==y[v].piece)&&a.SQUARES[l]==y[v].from&&a.SQUARES[u]==y[v].to&&(!g||!d||d.toLowerCase()==y[v].promotion))return y[v]}return null}function m(t,r,i){for(var n,s=a.SQUARES.a8;s<=a.SQUARES.h1;s++){if(136&s){s+=7;continue}if(null!=t.board[s]&&(null==(n=t.board[s])?void 0:n.color)===r){var o=t.board[s],l=s-i,u=l+119;if(o&&a.ATTACKS[u]&1<<a.SHIFTS[o.type]){if(o.type===a.PAWN){if(l>0){if(o.color===a.WHITE)return!0}else if(o.color===a.BLACK)return!0;continue}if("n"===o.type||"k"===o.type)return!0;for(var d=a.RAYS[u],c=s+d,h=!1;c!==i;){if(t.board[c]){h=!0;break}c+=d}if(!h)return!0}}}return!1}function g(t,r){return m(t,s.swapColor(r),t.kings[r])}function b(t){return g(t,t.turn)}function y(t){return b(t)&&0===h(t).length}function v(t,r){var i=t.clone(),n=i.turn,o=s.swapColor(n);i.board[r.to]=i.board[r.from],delete i.board[r.from],r.flags&a.BITS.EP_CAPTURE&&(i.turn===a.BLACK?delete i.board[r.to-16]:delete i.board[r.to+16]),r.flags&a.BITS.PROMOTION&&r.promotion&&s.isPieceSymbol(r.promotion)&&(i.board[r.to]={type:r.promotion,color:n});var l=i.board[r.to];if(l&&l.type===a.KING){if(i.kings[l.color]=r.to,r.flags&a.BITS.KSIDE_CASTLE){var u=r.to-1,d=r.to+1;i.board[u]=i.board[d],delete i.board[d]}else if(r.flags&a.BITS.QSIDE_CASTLE){var u=r.to+1,d=r.to-2;i.board[u]=i.board[d],delete i.board[d]}i.castling[n]=0}if(i.castling[n]){for(var c=0,h=a.ROOKS[n].length;c<h;c++)if(r.from===a.ROOKS[n][c].square&&i.castling[n]&a.ROOKS[n][c].flag){i.castling[n]^=a.ROOKS[n][c].flag;break}}if(i.castling[o]){for(var c=0,h=a.ROOKS[o].length;c<h;c++)if(r.to===a.ROOKS[o][c].square&&i.castling[o]&a.ROOKS[o][c].flag){i.castling[o]^=a.ROOKS[o][c].flag;break}}return r.flags&a.BITS.BIG_PAWN?"b"===i.turn?i.ep_square=r.to-16:i.ep_square=r.to+16:i.ep_square=a.E
2783MPTY,r.piece===a.PAWN||r.flags&(a.BITS.CAPTURE|a.BITS.EP_CAPTURE)?i.half_moves=0:i.half_moves++,i.turn===a.BLACK&&i.move_number++,i.turn=s.swapColor(i.turn),i}function _(t,r,i,n,o){var l,u={color:t.turn,from:r,to:i,flags:n,piece:t.board[r].type};return o&&s.isPieceSymbol(o)&&(u.flags|=a.BITS.PROMOTION,u.promotion=o),t.board[i]?u.captured=null==(l=t.board[i])?void 0:l.type:n&a.BITS.EP_CAPTURE&&(u.captured=a.PAWN),u}r.getDisambiguator=o,r.getFen=function(t){for(var r=0,i="",n=a.SQUARES.a8;n<=a.SQUARES.h1;n++){var o=t.board[n];if(o){r>0&&(i+=r,r=0);var l=o.color,u=o.type;i+=l===a.WHITE?u.toUpperCase():u.toLowerCase()}else r++;n+1&136&&(r>0&&(i+=r),n!==a.SQUARES.h1&&(i+="/"),r=0,n+=8)}var d="";t.castling[a.WHITE]&a.BITS.KSIDE_CASTLE&&(d+="K"),t.castling[a.WHITE]&a.BITS.QSIDE_CASTLE&&(d+="Q"),t.castling[a.BLACK]&a.BITS.KSIDE_CASTLE&&(d+="k"),t.castling[a.BLACK]&a.BITS.QSIDE_CASTLE&&(d+="q"),d=d||"-";var c=t.ep_square===a.EMPTY?"-":s.algebraic(t.ep_square);return[i,t.turn,d,c,t.half_moves,t.move_number].join(" ")},r.loadFen=l,r.getPgn=function(t,r,i,n,s){void 0===s&&(s={});var o=s.newline_char,l=void 0===o?"\n":o,u=s.max_width,d=void 0===u?0:u,c=[],h=!1;for(var p in r)c.push("["+p+' "'+r[p]+'"]'+l),h=!0;h&&n.length&&c.push(l);var m=function(r){var a=i[t.fen];if(void 0!==a){var n=r.length>0?" ":"";r=""+r+n+"{"+a+"}"}return r};n[0]&&(t=n[0].state);var g=[],b="";
2783if(0===n.length&&g.push(m("")),n.forEach(function(r,i){var n=r.move;b=m(b),0===i&&n.color===a.BLACK?b=t.move_number+". ...":n.color===a.WHITE&&(b.length&&g.push(b),b=t.move_number+"."),b=b+" "+f(t,n),t=v(t,n)}),b.length&&g.push(m(b)),void 0!==r.Result&&g.push(r.Result),0===d)return c.join("")+g.join(" ");for(var y=function(){return c.length>0&&" "===c[c.length-1]&&(c.pop(),!0)},_=0,p=0;p<g.length;p++){if(_+g[p].length>d&&g[p].includes("{")){_=function(t,r){for(var i=0,a=r.split(" ");i<a.length;i++){var n=a[i];if(n){if(t+n.length>d){for(;y();)t--;c.push(l),t=0}c.push(n),t+=n.length,c.push(" "),t++}}return y()&&t--,t}(_,g[p]);continue}_+g[p].length>d&&0!==p?(" "===c[c.length-1]&&c.pop(),c.push(l),_=0):0!==p&&(c.push(" "),_++),c.push(g[p]),_+=g[p].length}return c.join("")},r.loadPgn=function(t,r){void 0===r&&(r={});var i=r.newline_char,n=void 0===i?"\r?\n":i,s=r.sloppy,o=void 0!==s&&s,u=function(t){return t.replace(/\\/g,"\\")},d=RegExp("^(\\[((?:"+u(n)+")|.)*\\])(?:"+u(n)+"){2}"),c=d.test(t)?d.exec(t)[1]:"",h=l(a.DEFAULT_POSITION),f=function(t,r){for(var i=r.newline_char,a={},n=t.split(new RegExp(u(i))),s="",o="",l=0;l<n.length;l++)s=n[l].replace(/^\[([A-Z][A-Za-z]*)\s.*\]$/,"$1"),o=n[l].replace(/^\[[A-Za-z]+\s"(.*)" *\]$/,"$1"),s.trim().length>0&&(a[s.trim()]=o);return a}(c,{newline_char:n,sloppy:o});if("1"===f.SetUp&&"FEN"in f){var m=l(f.FEN);if(!m)return null;h=m}for(var g=function(t){var r;return 0==t.length?"":decodeURIComponent("%"+(null==(r=null==t?void 0:t.match(/.{1,2}/g))?void 0:r.join("%")))},b=function(t){return"{"+Array.from((t=t.replace(RegExp(u(n),"g")," ")).slice(1,t.length-1)).map(function(t){return 128>t.charCodeAt(0)?t.charCodeAt(0).toString(16):encodeURIComponent(t).replace(/%/g,"").toLowerCase()}).join("")+"}"},y=t.replace(c,"").replace(RegExp("({[^}]*})+?|;([^"+u(n)+"]*)","g"),function(t,r,i){return void 0!==r?b(r):" "+b("{"+i.slice(1)+"}")}).replace(RegExp(u(n),"g")," "),_=/(\([^()]+\))+?/g;_.test(y);)y=y.replace(_,"");for(var w=(y=(y=(y=y.replace(/\d+\.(\.\.)?/g,"")).replace(/\.\.\./g,"")).replace(/\$\d+/g,"")).trim().split(new RegExp(/\s+/)).join(",").replace(/,,+/g,",").split(","),x={},$=[],S=0;S<w.length;S++){var k=w[S],C=function(t){if(t.startsWith("{")&&t.endsWith("}"))return g(t.slice(1,t.length-1))}(k);if(void 0!==C){x[h.fen]=C;continue}if(S===w.length-1&&-1!==a.POSSIBLE_RESULTS.indexOf(k)){Object.keys(f).length&&void 0===f.Result&&(f.Result=k);continue}var E=p(h,w[S],{sloppy:o});if(null===E)return null;$.push({move:E,state:h});var m=v(h,E);if(!m)return null;h=m}return[h,f,x,$]},r.getPiece=function(t,r){if(!r||(r=r.toLowerCase(),!s.isSquare(r)))return null;var i=a.SQUARES[r],n=t.board[i];return n?d(n):null},r.cloneMove=u,r.clonePiece=d,r.putPiece=c,r.removePiece=function(t,r){if(!r||(r=r.toLowerCase(),!s.isSquare(r)))return null;var i=a.SQUARES[r],n=t.board[i];if(!n)return null;var o=t.clone(),l=n.type,u=n.color;return l===a.KING&&(o.kings[u]=a.EMPTY),delete o.board[i],o},r.generateMoves=h,r.moveToSan=f,r.sanToMove=p,r.makePretty=function(t,r){var i=u(r),n="";for(var o in a.BITS)s.isFlagKey(o)&&a.BITS[o]&i.flags&&(n+=a.FLAGS[o]);return{to:s.algebraic(i.to),from:s.algebraic(i.from),color:i.color,flags:n,piece:i.piece,san:f(t,i),captured:i.captured,promotion:i.promotion}},r.isAttacked=m,r.isKingAttacked=g,r.inCheck=b,r.inCheckmate=y,r.inStalemate=function(t){return!b(t)&&0===h(t).length},r.insufficientMaterial=function(t){for(var r={},i=[],n=0,s=0,o=a.SQUARES.a8;o<=a.SQUARES.h1;o++){if(s=(s+1)%2,136&o){o+=7;continue}var l=t.board[o];l&&(r[l.type]=l.type in r?r[l.type]+1:1,l.type===a.BISHOP&&i.push(s),n++)}if(2===n||3===n&&(1===r[a.BISHOP]||1===r[a.KNIGHT]))return!0;if(n===r[a.BISHOP]+2){for(var u=0,d=i.length,o=0;o<d;o++)u+=i[o];if(0===u||u===d)return!0}return!1},r.makeMove=v,r.buildMove=_,r.ascii=function(t,r){return void 0===r&&(r="\n"),["  +------------------------+",a.RANKS.map(function(r){for(var i=t.slice(16*r,16*r+8),a=[],n=0;n<i.length;n++){var o=i[n];a.push(o?" "+s.symbol(o)+" ":" . ")}var l=a.join("");return"87654321"[r]+" |"+l+"|"}).join(r),"  +------------------------+","    a  b  c  d  e  f  g  h"].join(r)},r.getBoard=function(t){for(var r=[],i=[],n=a.SQUARES.a8;n<=a.SQUARES.h1;n++){var s=t[n];null==s?i.push(null):i.push({type:s.type,color:s.color}),n+1&136&&(r.push(i),i=[],n+=8)}return r},r.validateMove=function(t,r,i){void 0===i&&(i={});var a=i.checkPromotion,n=void 0===a||a;if("string"==typeof r)return p(t,r,i);if("object"==typeof r)for(var o=h(t,{square:r.from}),l=0;l<o.length;l++){var u=o[l];if(r.from===s.algebraic(u.from)&&r.to===s.algebraic(u.to)&&(!n||!("promotion"in u)||r.promotion===u.promotion))return u}return null}},30287:(t,r,i)=>{"use strict";i.d(r,{j:()=>k}
2783);var a=i(90360),n=i(37605);function s(t,r,i){return(i<0&&(i+=1),i>1&&(i-=1),i<1/6)?t+(r-t)*6*i:i<.5?r:i<2/3?t+(r-t)*(2/3-i)*6:t}var o=i(5897),l=i(12562),u=i(28670);function d(t,r){return i=>i>0?r:t}let c=(t,r,i)=>{let a=t*t,n=i*(r*r-a)+a;return n<0?0:Math.sqrt(n)},h=[o.u,l.B,u.V];function f(t){let r=h.find(r=>r.test(t));if((0,n.$)(!!r,`'${t}' is not an animatable color. Use the equivalent color code instead.`),!r)return!1;let i=r.parse(t);return r===u.V&&(i=function({hue:t,saturation:r,lightness:i,alpha:a}){t/=360,i/=100;let n=0,o=0,l=0;if(r/=100){let a=i<.5?i*(1+r):i+r-i*r,u=2*i-a;n=s(u,a,t+1/3),o=s(u,a,t),l=s(u,a,t-1/3)}else n=o=l=i;return{red:Math.round(255*n),green:Math.round(255*o),blue:Math.round(255*l),alpha:a}}(i)),i}let p=(t,r)=>{let i=f(t),n=f(r);if(!i||!n)return d(t,r);let s={...i};return t=>(s.red=c(i.red,n.red,t),s.green=c(i.green,n.green,t),s.blue=c(i.blue,n.blue,t),s.alpha=(0,a.k)(i.alpha,n.alpha,t),l.B.transform(s))};var m=i(2926),g=i(11614),b=i(34474),y=i(40597);let v=new Set(["none","hidden"]);function _(t,r){return i=>(0,a.k)(t,r,i)}function w(t){return"number"==typeof t?_:"string"==typeof t?(0,y.p)(t)?d:g.y.test(t)?p:S:Array.isArray(t)?x:"object"==typeof t?g.y.test(t)?p:$:d}function x(t,r){let i=[...t],a=i.length,n=t.map((t,i)=>w(t)(t,r[i]));return t=>{for(let r=0;r<a;r++)i[r]=n[r](t);return i}}function $(t,r){let i={...t,...r},a={};for(let n in i)void 0!==t[n]&&void 0!==r[n]&&(a[n]=w(t[n])(t[n],r[n]));return t=>{for(let r in a)i[r]=a[r](t);return i}}let S=(t,r)=>{let i=b.f.createTransformer(r),a=(0,b.V)(t),s=(0,b.V)(r);return a.indexes.var.length===s.indexes.var.length&&a.indexes.color.length===s.indexes.color.length&&a.indexes.number.length>=s.indexes.number.length?v.has(t)&&!s.values.length||v.has(r)&&!a.values.length?function(t,r){return v.has(t)?i=>i<=0?t:r:i=>i>=1?r:t}(t,r):(0,m.F)(x(function(t,r){var i;let a=[],n={color:0,var:0,number:0};for(let s=0;s<r.values.length;s++){let o=r.types[s],l=t.indexes[o][n[o]],u=null!=(i=t.values[l])?i:0;a[s]=u,n[o]++}return a}(a,s),s.values),i):((0,n.$)(!0,`Complex values '${t}' and '${r}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`),d(t,r))};function k(t,r,i){return"number"==typeof t&&"number"==typeof r&&"number"==typeof i?(0,a.k)(t,r,i):w(t)(t,r)}},30525:(t,r,i)=>{"use strict";i.d(r,{d:()=>s});var a=i(14232),n=i(32872);let s=t=>{let[r,i]=(0,a.useState)({isOnLeaderboard:!1,positions:[],totalLeaderboards:0}),[s,o]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),d=(0,a.useRef)({data:null,timestamp:0}),c={play_leaders:{key:"regular",name:"Regular"},puzzles_leaders:{key:"train",name:"Train"},turing_leaders:{key:"turing",name:"Bot/Not"},hand_leaders:{key:"hand",name:"Hand"},brain_leaders:{key:"brain",name:"Brain"}},h=(0,a.useCallback)((t,r)=>{let i=[];return Object.entries(c).forEach(a=>{let[n,{key:s,name:o}]=a,l=t[n];if(Array.isArray(l)){let t=l.findIndex(t=>t.display_name===r);-1!==t&&t<10&&i.push({gameType:s,gameName:o,position:t+1,elo:l[t].elo})}}),{isOnLeaderboard:i.length>0,positions:i,totalLeaderboards:i.length}},[]),f=(0,a.useCallback)(async()=>{if(!t)return void i({isOnLeaderboard:!1,positions:[],totalLeaderboards:0});o(!0),u(null);try{let r=Date.now();if(d.current.data&&r-d.current.timestamp<3e5){let r=h(d.current.data,t);i(r),o(!1);return}let a=await (0,n.kK)();d.current={data:a,timestamp:r};let s=h(a,t);i(s)}catch(t){console.error("Error fetching leaderboard status:",t),u("Failed to fetch leaderboard data"),i({isOnLeaderboard:!1,positions:[],totalLeaderboards:0})}finally{o(!1)}},[t,h]),p=(0,a.useCallback)(()=>{d.current={data:null,timestamp:0},f()},[f]);return(0,a.useEffect)(()=>{f()},[f]),{status:r,loading:s,error:l,refreshStatus:p}}},30785:(t,r,i)=>{"use strict";i.d(r,{W:()=>a});let a={skipAnimations:!1,useManualTiming:!1}},30904:(t,r,i)=>{"use strict";i.d(r,{V:()=>a});let a=t=>r=>r<=.5?t(2*r)/2:(2-t(2*(1-r)))/2},31062:(t,r,i)=>{"use strict";i.d(r,{$:()=>s,q:()=>o});var a=i(1960);let n=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,s=(t,r)=>i=>!!("string"==typeof i&&n.test(i)&&i.startsWith(t)||r&&null!=i&&Object.prototype.hasOwnProperty.call(i,r)),o=(t,r,i)=>n=>{if("string"!=typeof n)return n;let[s,o,l,u]=n.match(a.S);return{[t]:parseFloat(s),[r]:parseFloat(o),[i]:parseFloat(l),alpha:void 0!==u?parseFloat(u):1}}},32711:(t,r,i)=>{"use strict";var a=i(97947);Object.defineProperty(r,"d$",{enumerable:!0,get:function(){return a.Chess}}),i(73198);var n=i(6162);Object.defineProperty(r,"p9",{enumerable:!0,get:function(){return n.SQUARES}}),i(18722)},32872:(t,r,i)=>{"use strict";i.d(r,{nI:()=>n.n,jm:()=>a.jm,mb:()=>d,fD:()=>a.fD,mn:()=>a.mn,Mi:()=>a.Mi,OK:()=>g.OK,kK:()=>h,O:()=>y.O,tY:()=>a.tY,q3:()=>g.q3,sd:()=>a.sd,Z3:()=>g.Z3,lK:()=>b,bm:()=>o,V3:()=>u,CQ:()=>f,CD:()=>m,s4:()=>a.s4,Xw:()=>v,QY:()=>g.QY,Yy:()=>l,BH:()=>c,l2:()=>a.l2,zj:()=>
2783g.zj,xD:()=>a.xD,og:()=>y.og,pG:()=>a.pG,lk:()=>p});var a=i(84547),n=i(42034),s=i(62207);let o=async()=>{let t=await fetch((0,n.c)("puzzle/new_puzzle")),r=await t.json(),i=r.puzzle_id.game_source+"-"+r.puzzle_id.game_id+"-"+r.puzzle_id.move_ply,a=r.puzzle_elo,o={...r.termination,condition:"Normal"},l={name:r.black_player.name,rating:r.black_player.rating},u={name:r.white_player.name,rating:r.white_player.rating},d=r.game_states,c=d.map(t=>{let{last_move:r}=t;return(null!=r?r:[]).join("-")}),h=d.map((t,r)=>{let{last_move:i,fen:a,check:n,last_move_san:s}=t;return{board:a,lastMove:i,movePlayed:c[r],san:s,uci:i?i.join(""):void 0,check:n}});if(0===h.length)throw Error("Moves array is empty. Cannot initialize GameTree.");let f=new s.lr(h[0].board);f.getRoot();for(let t=1;t<h.length;t++){let r=h[t];r.uci&&r.san&&f.getLastMainlineNode().addChild(r.board,r.uci,r.san,!0)}let p=r.target_move_map,m={},g={},b={};return p.forEach(t=>{let{check:r,fen:i,maia_eval:a,move:n,move_san:s,stockfish_eval:o}=t,l=n.join("");m[l]=-1e3===o?-50:o,g[l]=a,b[l]={board:i,lastMove:n,san:s,check:r}}),{id:i,puzzle_elo:a,whitePlayer:u,blackPlayer:l,moves:h,tree:f,maiaEvaluation:g,stockfishEvaluation:m,gameType:"train",termination:o,availableMoves:b,targetIndex:r.target_move_index}},l=async(t,r,i)=>{let a=t.split("-"),s={game_source:a[0],game_id:a[1],move_ply:Number.parseInt(a[2])};return(await fetch((0,n.c)("puzzle/log_puzzle_guesses?"+new URLSearchParams({gave_up:i?"true":"false"})),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({puzzle_id:s,user_guesses:r})})).json()},u=async()=>{let t=await fetch((0,n.c)("puzzle/get_player_stats")),r=await t.json();return{totalPuzzles:r.total_puzzles,puzzlesSolved:r.puzzles_solved,rating:r.puzzle_elo}},d=async()=>{let t=await fetch((0,n.c)("auth/account"));return(t=>{let r=t.client_id;return{clientId:r,displayName:t.display_name,lichessId:t.lichess_id}})(await t.json())},c=async()=>(await fetch((0,n.c)("auth/logout")),d()),h=async()=>{let t=await fetch((0,n.c)("auth/leaderboard"));return await t.json()},f=async()=>{let t=await fetch((0,n.c)("turing/new_game"));if(401===t.status)throw Error("Unauthorized");let r=await t.json(),i={...r.termination,condition:"Normal"},a=r.game_states,o=r.id,l=a.map(t=>{let{last_move:r,fen:i,check:a,last_move_san:n}=t;return{board:i,lastMove:r,san:n,uci:r?r.join(""):void 0,check:a}});if(0===l.length)throw Error("No moves available to initialize the game tree");let u=new s.lr(l[0].board);u.getRoot();for(let t=1;t<l.length;t++){let r=l[t];r.uci&&r.san&&u.getLastMainlineNode().addChild(r.board,r.uci,r.san,!0)}return{termination:i,id:o,gameStates:a,moves:l,tree:u}},p=async function(t,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=await fetch((0,n.c)("turing/game_guess"),{body:JSON.stringify({id:t,white_is_bot:"white"===r,black_is_bot:"black"===r,comment:i}),method:"POST",headers:{"Content-Type":"application/json"}}),s=await a.json(),o=s.black_is_bot?"black":"white",l={name:s.black_name,rating:s.black_rating},u={name:s.white_name,rating:s.white_rating},d=s.guess_correct,c=s.game_type,h=s.time_control.split("+"),f=parseInt(h[0],10)/60;return{bot:o,blackPlayer:l,whitePlayer:u,correct:d,gameType:c,timeControl:"".concat(f,"+").concat(h[1]),turingElo:s.turing_elo}},m=async()=>{let t=await fetch((0,n.c)("turing/get_player_stats")),r=await t.json();return{correctGuesses:r.correct_guesses,wrongGuesses:r.wrong_guesses,rating:r.turing_elo}};var g=i(67427);let b=async t=>{let r=await fetch((0,n.c)("auth/get_player_stats".concat(t?"/".concat(t):""))),i=await r.json();return{regularRating:i.play_elo,regularWins:i.play_won,regularDraws:i.play_drawn,regularGames:i.play_games_played,regularMax:i.play_elo_max,regularMin:i.play_elo_min,regularHours:i.play_game_time,handRating:i.hand_elo,handWins:i.hand_won,handDraws:i.hand_drawn,handGames:i.hand_games_played,handMax:i.hand_elo_max,handMin:i.hand_elo_min,handHours:i.hand_game_time,brainRating:i.brain_elo,brainWins:i.brain_won,brainDraws:i.brain_drawn,brainGames:i.brain_games_played,brainMax:i.brain_elo_max,brainMin:i.brain_elo_min,brainHours:i.brain_game_time,trainRating:i.puzzles_elo,trainCorrect:i.puzzles_correct,trainGames:i.puzzles_played,trainMax:i.puzzles_elo_max,trainMin:i.puzzles_elo_min,trainHours:i.puzzle_game_time,botNotRating:i.turing_elo,botNotCorrect:i.tur
2783ing_guesses_correct,botNotWrong:i.turing_guesses_wrong,botNotGames:i.turing_guesses_correct+i.turing_guesses_wrong,botNotMax:i.turing_elo_max,botNotMin:i.turing_elo_min,botNotHours:i.turing_game_time}};i(24044);var y=i(34146);let v=async()=>{let t=await fetch((0,n.c)("auth/global_stats"));return await t.json()};i(69441)},33439:(t,r,i)=>{"use strict";i.d(r,{a:()=>a});let a=t=>Math.round(1e5*t)/1e5},34009:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(t,r){for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]})}(r,{default:function(){return $},useLinkStatus:function(){return x}});let a=i(88365),n=i(37876),s=a._(i(14232)),o=i(84727),l=i(1623),u=i(170),d=i(70464),c=i(20125),h=i(242),f=i(63786),p=i(34327),m=i(9094),g=i(89203);i(35785);let b=new Set;function y(t,r,i,a){if((0,l.isLocalURL)(r)){if(!a.bypassPrefetchedCheck){let n=r+"%"+i+"%"+(void 0!==a.locale?a.locale:"locale"in t?t.locale:void 0);if(b.has(n))return;b.add(n)}t.prefetch(r,i,a).catch(t=>{})}}function v(t){return"string"==typeof t?t:(0,u.formatUrl)(t)}let _=s.default.forwardRef(function(t,r){let i,a,{href:u,as:b,children:_,prefetch:w=null,passHref:x,replace:$,shallow:S,scroll:k,locale:C,onClick:E,onNavigate:T,onMouseEnter:I,onTouchStart:A,legacyBehavior:N=!1,...O}=t;i=_,N&&("string"==typeof i||"number"==typeof i)&&(i=(0,n.jsx)("a",{children:i}));let M=s.default.useContext(h.RouterContext),P=!1!==w,{href:R,as:j}=s.default.useMemo(()=>{if(!M){let t=v(u);return{href:t,as:b?v(b):t}}let[t,r]=(0,o.resolveHref)(M,u,!0);return{href:t,as:b?(0,o.resolveHref)(M,b):r||t}},[M,u,b]),z=s.default.useRef(R),D=s.default.useRef(j);N&&(a=s.default.Children.only(i));let B=N?a&&"object"==typeof a&&a.ref:r,[L,U,F]=(0,f.useIntersection)({rootMargin:"200px"}),q=s.default.useCallback(t=>{(D.current!==j||z.current!==R)&&(F(),D.current=j,z.current=R),L(t)},[j,R,F,L]),V=(0,g.useMergedRef)(q,B);s.default.useEffect(()=>{M&&U&&P&&y(M,R,j,{locale:C})},[j,R,U,C,P,null==M?void 0:M.locale,M]);let W={ref:V,onClick(t){N||"function"!=typeof E||E(t),N&&a.props&&"function"==typeof a.props.onClick&&a.props.onClick(t),M&&(t.defaultPrevented||function(t,r,i,a,n,s,o,u,d){let{nodeName:c}=t.currentTarget;if(!("A"===c.toUpperCase()&&function(t){let r=t.currentTarget.getAttribute("target");return r&&"_self"!==r||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which}(t)||t.currentTarget.hasAttribute("download"))){if(!(0,l.isLocalURL)(i)){n&&(t.preventDefault(),location.replace(i));return}t.preventDefault(),(()=>{if(d){let t=!1;if(d({preventDefault:()=>{t=!0}}),t)return}let t=null==o||o;"beforePopState"in r?r[n?"replace":"push"](i,a,{shallow:s,locale:u,scroll:t}):r[n?"replace":"push"](a||i,{scroll:t})})()}}(t,M,R,j,$,S,k,C,T))},onMouseEnter(t){N||"function"!=typeof I||I(t),N&&a.props&&"function"==typeof a.props.onMouseEnter&&a.props.onMouseEnter(t),M&&y(M,R,j,{locale:C,priority:!0,bypassPrefetchedCheck:!0})},onTouchStart:function(t){N||"function"!=typeof A||A(t),N&&a.props&&"function"==typeof a.props.onTouchStart&&a.props.onTouchStart(t),M&&y(M,R,j,{locale:C,priority:!0,bypassPrefetchedCheck:!0})}};if((0,d.isAbsoluteUrl)(j))W.href=j;else if(!N||x||"a"===a.type&&!("href"in a.props)){let t=void 0!==C?C:null==M?void 0:M.locale;W.href=(null==M?void 0:M.isLocaleDomain)&&(0,p.getDomainLocale)(j,t,null==M?void 0:M.locales,null==M?void 0:M.domainLocales)||(0,m.addBasePath)((0,c.addLocale)(j,t,null==M?void 0:M.defaultLocale))}return N?s.default.cloneElement(a,W):(0,n.jsx)("a",{...O,...W,children:i})}),w=(0,s.createContext)({pending:!1}),x=()=>(0,s.useContext)(w),$=_;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34146:(t,r,i)=>{"use strict";i.d(r,{O:()=>n,og:()=>s});var a=i(88831);let n=async()=>{let t=await fetch("https://lichess.org/api/tv/channels");if(!t.ok)throw Error("Failed to fetch Lichess TV data");let r=(await t.json()).rapid;if(!(null==r?void 0:r.gameId))throw Error("No TV game available");return{gameId:r.gameId,white:r.user1,black:r.user2}},s=async(t,r,i,n,s)=>{let o=fetch("https://lichess.org/api/stream/game/".concat(t),{signal:s,headers:{Accept:"application/x-ndjson"}});try{let t=await o;
2783if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));if(!t.body)throw Error("No response body");await (0,a.g2)(t=>{t.id?r(t):t.uci||t.lm?i({fen:t.fen,uci:t.uci||t.lm,wc:t.wc,bc:t.bc}):console.log("Unknown message format:",t)})(t).then(n)}catch(t){if(null==s?void 0:s.aborted)console.log("Stream aborted");else throw console.error("Stream error:",t),t}}},34327:(t,r,i)=>{"use strict";function a(t,r,i,a){return!1}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getDomainLocale",{enumerable:!0,get:function(){return a}}),i(19783),("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34474:(t,r,i)=>{"use strict";i.d(r,{V:()=>c,f:()=>m});var a=i(11614);let n=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;var s=i(1960),o=i(33439);let l="number",u="color",d=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function c(t){let r=t.toString(),i=[],n={color:[],number:[],var:[]},s=[],o=0,c=r.replace(d,t=>(a.y.test(t)?(n.color.push(o),s.push(u),i.push(a.y.parse(t))):t.startsWith("var(")?(n.var.push(o),s.push("var"),i.push(t)):(n.number.push(o),s.push(l),i.push(parseFloat(t))),++o,"${}")).split("${}");return{values:i,split:c,indexes:n,types:s}}function h(t){return c(t).values}function f(t){let{split:r,types:i}=c(t),n=r.length;return t=>{let s="";for(let d=0;d<n;d++)if(s+=r[d],void 0!==t[d]){let r=i[d];r===l?s+=(0,o.a)(t[d]):r===u?s+=a.y.transform(t[d]):s+=t[d]}return s}}let p=t=>"number"==typeof t?0:t,m={test:function(t){var r,i;return isNaN(t)&&"string"==typeof t&&((null==(r=t.match(s.S))?void 0:r.length)||0)+((null==(i=t.match(n))?void 0:i.length)||0)>0},parse:h,createTransformer:f,getAnimatableNone:function(t){let r=h(t);return f(t)(r.map(p))}}},35785:(t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return i}});let i=t=>{}},36072:(t,r,i)=>{"use strict";i.d(r,{D:()=>h});var a=i(89099),n=i(14232),s=i(32711),o=i(2703),l=i(62207),u=i(74279),d=i(32872);let c=async()=>{let t=await (0,d.CD)();return{gamesPlayed:t.correctGuesses+t.wrongGuesses,gamesWon:t.correctGuesses,rating:t.rating}},h=()=>{var t;let r=(0,a.useRouter)(),[i,h]=(0,n.useState)([]),[f,p]=(0,n.useState)(!1),[m,g]=(0,n.useState)(0),[b,y,v]=(0,o.J)(c),_=(0,n.useCallback)(async()=>{let t;p(!0);try{t=await (0,d.CQ)()}catch(t){r.push("/401");return}p(!1),g(i.length),h(i.concat([t]))},[i,r]);(0,n.useEffect)(()=>{0!==i.length||f||_()},[_,i.length,f]);let w=(0,n.useMemo)(()=>i[m],[i,m]),x=(0,n.useMemo)(()=>new l.lr(new s.d$().fen()),[]),$=(0,u.u)(null!=(t=null==w?void 0:w.tree)?t:x,"white");(0,n.useEffect)(()=>{if($.tree&&w){let t=$.tree.getMainLine();$.setCurrentNode(t[0])}},[w]);let S=(0,n.useMemo)(()=>i.map(t=>t.id),[i]),k=(0,n.useCallback)(async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=arguments.length>2?arguments[2]:void 0;if(w&&!w.result){let n=await (0,d.lk)(w.id,t,r);h(i.map((t,r)=>r===m?{...t,result:{...n,ratingDiff:n.turingElo-(a||0)}}:t)),C[1](""),v(n.turingElo),y(1,+!!n.correct)}},[w,y,i,v,m]),C=(0,n.useState)("");return{gameTree:$.tree,currentNode:$.currentNode,setCurrentNode:$.setCurrentNode,goToNode:$.goToNode,goToNextNode:$.goToNextNode,goToPreviousNode:$.goToPreviousNode,goToRootNode:$.goToRootNode,plyCount:$.plyCount,orientation:$.orientation,setOrientation:$.setOrientation,game:w,games:i,getNewGame:_,loading:f,gameIds:S,currentIndex:m,setCurrentIndex:g,submitGuess:k,commentController:C,stats:b}}},36101:(t,r,i)=>{"use strict";i.d(r,{M:()=>o});var a=i(32711),n=i(14232),s=i(74279);let o=t=>{let r=(0,n.useMemo)(()=>"w"===new a.d$(t.tree.getLastMainlineNode().fen).turn()?"white":"black",[t.targetIndex]),i=(0,s.u)(t.tree,r),o=(0,n.useMemo)(()=>{let r=i.tree.getRoot();for(let i=1;i<=t.targetIndex;i++)if(r.mainChild)r=r.mainChild;else break;return r},[i.tree,t.targetIndex]);(0,n.useEffect)(()=>{i.goToNode(o)},[t.id]);let l=(0,n.useMemo)(()=>{let t=new Map,r=i.currentNode.fen;return r===o.fen&&new a.d$(r).moves({verbose:!0}
2783).forEach(r=>{var i;let a=r.from,n=r.to;t.set(a,(null!=(i=t.get(a))?i:[]).concat([n]))}),t},[i.currentNode,o]),u=(0,n.useCallback)(t=>{let r=i.tree.addMoveToMainLine(t);r&&i.setCurrentNode(r)},[i]);return{reset:(0,n.useCallback)(()=>{o.removeAllChildren(),i.goToNode(o)},[i,o]),onPlayerGuess:u,availableMovesMapped:l,puzzleStartingNode:o,gameTree:i.tree,currentNode:i.currentNode,setCurrentNode:i.setCurrentNode,goToNode:i.goToNode,goToNextNode:i.goToNextNode,goToPreviousNode:i.goToPreviousNode,goToRootNode:i.goToRootNode,plyCount:i.plyCount,orientation:i.orientation,setOrientation:i.setOrientation}}},36500:(t,r,i)=>{"use strict";i.d(r,{Ke:()=>n,MA:()=>o,ce:()=>a,lm:()=>l,vJ:()=>s});let a={BLUNDER_THRESHOLD:.1,INACCURACY_THRESHOLD:.05,EXCELLENT_WINRATE_ADVANTAGE_THRESHOLD:.05,MAIA_UNLIKELY_THRESHOLD:.1,GOOD_THRESHOLD:-.05},n=12,s="maia:stockfish-debug-rerun",o="maia.stockfishDebugRerunTs",l={good:["#238b45","#41ab5d","#74c476","#90D289","#AEDFA4"],ok:["#ec7014","#feb24c","#fed976","#ffeda0","#ffffcc"].reverse(),blunder:["#cb181d","#ef3b2c","#fb6a4a","#fc9272","#fcbba1"].reverse()}},37605:(t,r,i)=>{"use strict";i.d(r,{$:()=>n,V:()=>s});var a=i(90620);let n=a.l,s=a.l},38588:(t,r,i)=>{"use strict";i.d(r,{PL:()=>n,Wv:()=>o,np:()=>s});var a=i(32711);let n=t=>t?"w"===new a.d$(t.fen).turn()?"white":"black":"white",s=t=>Array.from(t.entries()).flatMap(t=>{let[r,i]=t;return i.map(t=>({from:r,to:t}))}),o=(t,r)=>r.filter(r=>r.from===t[0]&&r.to===t[1]).length>1},39420:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return w}});let a=i(64252),n=i(88365),s=i(37876),o=n._(i(14232)),l=a._(i(98477)),u=a._(i(29269)),d=i(23408),c=i(89161),h=i(9263);i(26201);let f=i(242),p=a._(i(75540)),m=i(89203),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function b(t,r,i,a,n,s,o){let l=null==t?void 0:t.src;t&&t["data-loaded-src"]!==l&&(t["data-loaded-src"]=l,("decode"in t?t.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(t.parentElement&&t.isConnected){if("empty"!==r&&n(!0),null==i?void 0:i.current){let r=new Event("load");Object.defineProperty(r,"target",{writable:!1,value:t});let a=!1,n=!1;i.current({...r,nativeEvent:r,currentTarget:t,target:t,isDefaultPrevented:()=>a,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{a=!0,r.preventDefault()},stopPropagation:()=>{n=!0,r.stopPropagation()}})}(null==a?void 0:a.current)&&a.current(t)}}))}function y(t){return o.use?{fetchPriority:t}:{fetchpriority:t}}let v=(0,o.forwardRef)((t,r)=>{let{src:i,srcSet:a,sizes:n,height:l,width:u,decoding:d,className:c,style:h,fetchPriority:f,placeholder:p,loading:g,unoptimized:v,fill:_,onLoadRef:w,onLoadingCompleteRef:x,setBlurComplete:$,setShowAltText:S,sizesInput:k,onLoad:C,onError:E,...T}=t,I=(0,o.useCallback)(t=>{t&&(E&&(t.src=t.src),t.complete&&b(t,p,w,x,$,v,k))},[i,p,w,x,$,E,v,k]),A=(0,m.useMergedRef)(r,I);return(0,s.jsx)("img",{...T,...y(f),loading:g,width:u,height:l,decoding:d,"data-nimg":_?"fill":"1",className:c,style:h,sizes:n,srcSet:a,src:i,ref:A,onLoad:t=>{b(t.currentTarget,p,w,x,$,v,k)},onError:t=>{S(!0),"empty"!==p&&$(!0),E&&E(t)}})});function _(t){let{isAppRouter:r,imgAttributes:i}=t,a={as:"image",imageSrcSet:i.srcSet,imageSizes:i.sizes,crossOrigin:i.crossOrigin,referrerPolicy:i.referrerPolicy,...y(i.fetchPriority)};return r&&l.default.preload?(l.default.preload(i.src,a),null):(0,s.jsx)(u.default,{children:(0,s.jsx)("link",{rel:"preload",href:i.srcSet?void 0:i.src,...a},"__nimg-"+i.src+i.srcSet+i.sizes)})}let w=(0,o.forwardRef)((t,r)=>{let i=(0,o.useContext)(f.RouterContext),a=(0,o.useContext)(h.ImageConfigContext),n=(0,o.useMemo)(()=>{var t;let r=g||a||c.imageConfigDefault,i=[...r.deviceSizes,...r.imageSizes].sort((t,r)=>t-r),n=r.deviceSizes.sort((t,r)=>t-r),s=null==(t=r.qualities)?void 0:t.sort((t,r)=>t-r);return{...r,allSizes:i,deviceSizes:n,qualities:s}},[a]),{onLoad:l,onLoadingComplete:u}=t,m=(0,o.useRef)(l);(0,o.useEffect)(()=>{m.current=l},[l]);let b=(0,o.useRef)(u);(0,o.useEffect)(()=>{b.current=u},[u]);let[y,w]=(0,o.useState)(!1),[x,$]=(0,o.useState)(!1),{props:S,meta:k}=(0,d.getImgProps)(t,{defaultLoader:p.default,imgConf:n,blurComplete:y,showAltText:x});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(v,{...S,unoptimized:k.unoptimized,placeholder:k.placeholder,fill:k.fill,onLoadRef:m,onLoadingCompleteRef:b,setBlurComplete:w,setShowAltText:$,sizesInput:t.sizes,ref:r}),k.priority?(0,s.jsx)(_,{isAppRouter:!i,imgAttributes:S}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esMo
2783dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39751:(t,r,i)=>{"use strict";i.d(r,{Q:()=>a});let a=(0,i(14232).createContext)({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"})},40215:(t,r,i)=>{"use strict";function a(t,r){-1===t.indexOf(r)&&t.push(r)}function n(t,r){let i=t.indexOf(r);i>-1&&t.splice(i,1)}i.d(r,{Ai:()=>n,Kq:()=>a})},40597:(t,r,i)=>{"use strict";i.d(r,{j:()=>n,p:()=>o});let a=t=>r=>"string"==typeof r&&r.startsWith(t),n=a("--"),s=a("var(--"),o=t=>!!s(t)&&l.test(t.split("/*")[0].trim()),l=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu},41087:(t,r,i)=>{"use strict";i.d(r,{L:()=>n});var a=i(37876);let n=t=>{let{components:r=[],children:i}=t;return(0,a.jsx)(a.Fragment,{children:r.reduceRight((t,r)=>(0,a.jsx)(r,{children:t}),i)})}},42034:(t,r,i)=>{"use strict";i.d(r,{c:()=>a,n:()=>n});let a=t=>"".concat("/api/v1/").concat(t),n=a("auth/lichess_login")},43687:(t,r,i)=>{"use strict";i.d(r,{f:()=>s});var a=i(14232),n=i(76123);let s=()=>{let t=(0,a.useContext)(n.j);if(!t)throw Error("useSound must be used within SoundProvider");return t}},45105:(t,r,i)=>{t.exports=i(36758)},45534:t=>{var r=Error("Element already at target scroll position"),i=Error("Scroll cancelled"),a=Math.min,n=Date.now;function s(t){return function(s,u,d,c){"function"==typeof(d=d||{})&&(c=d,d={}),"function"!=typeof c&&(c=l);var h=n(),f=s[t],p=d.ease||o,m=isNaN(d.duration)?350:+d.duration,g=!1;return f===u?c(r,s[t]):requestAnimationFrame(function r(o){if(g)return c(i,s[t]);var l=a(1,(n()-h)/m),d=p(l);s[t]=d*(u-f)+f,l<1?requestAnimationFrame(r):requestAnimationFrame(function(){c(null,s[t])})}),function(){g=!0}}}function o(t){return .5*(1-Math.cos(Math.PI*t))}function l(){}t.exports={left:s("scrollLeft"),top:s("scrollTop")}},47137:(t,r,i)=>{"use strict";i.d(r,{E4:()=>o,Hr:()=>f,W9:()=>h});var a=i(49037),n=i(21300),s=i(20254);let o=t=>t===a.ai||t===n.px,l=(t,r)=>parseFloat(t.split(", ")[r]),u=(t,r)=>(i,{transform:a})=>{if("none"===a||!a)return 0;let n=a.match(/^matrix3d\((.+)\)$/u);if(n)return l(n[1],r);{let r=a.match(/^matrix\((.+)\)$/u);return r?l(r[1],t):0}},d=new Set(["x","y","z"]),c=s.U.filter(t=>!d.has(t));function h(t){let r=[];return c.forEach(i=>{let a=t.getValue(i);void 0!==a&&(r.push([i,a.get()]),a.set(+!!i.startsWith("scale")))}),r}let f={width:({x:t},{paddingLeft:r="0",paddingRight:i="0"})=>t.max-t.min-parseFloat(r)-parseFloat(i),height:({y:t},{paddingTop:r="0",paddingBottom:i="0"})=>t.max-t.min-parseFloat(r)-parseFloat(i),top:(t,{top:r})=>parseFloat(r),left:(t,{left:r})=>parseFloat(r),bottom:({y:t},{top:r})=>parseFloat(r)+(t.max-t.min),right:({x:t},{left:r})=>parseFloat(r)+(t.max-t.min),x:u(4,13),y:u(5,14)};f.translateX=f.x,f.translateY=f.y},47240:(t,r,i)=>{"use strict";i.d(r,{c:()=>u});var a=i(62207),n=i(32711),s=i(74279),o=i(14232);let l=new n.d$().fen(),u=(t,r)=>{let[i,u]=(0,o.useState)(()=>new a.lr(r.startFen||l)),d=(0,s.u)(i,r.player),[c,h]=(0,o.useState)(0),[f,p]=(0,o.useState)(!1),[m,g]=(0,o.useState)(null),[b,y]="unlimited"==r.timeControl?[0,0]:r.timeControl.split("+").map(Number),v=60*b*1e3,[_,w]=(0,o.useState)(v),[x,$]=(0,o.useState)(v),[S,k]=(0,o.useState)(0),C=(0,o.useMemo)(()=>i.toMoveArray(),[i,c]),E=(0,o.useMemo)(()=>i.toTimeArray(),[i,c]),T=(0,o.useMemo)(()=>{let r=i.getMainLine(),a=r[r.length-1].turn,s=i.toChess(),o=m?((t,r)=>t.insufficientMaterial()?{result:"1/2-1/2",winner:"none",type:"time"}:{result:"white"===r?"0-1":"1-0",winner:"white"===r?"black":"white",type:"time"})(s,m):f?{result:"w"==a?"0-1":"1-0",winner:"w"==a?"black":"white",type:"resign"}:(t=>{if(!t.gameOver())return;if(t.inDraw()||t.inStalemate()||t.inThreefoldRepetition())return{result:"1/2-1/2",winner:"none",type:"rules"};let r="w"==t.turn()?"white":"black";if(t.inCheckmate())return{result:"white"==r?"0-1":"1-0",winner:"white"==r?"black":"white",type:"rules"}})(s),l=[],u=i.getRoot(),d=new n.d$(u.fen);l.push({board:u.fen,check:!!d.inCheck()&&("w"===d.turn()?"white":"black")});for(let t=1;t<r.length;t++){let i=r[t],a=new n.d$(i.fen);l.push({board:i.fen,san:i.san||void 0,lastMove:i.move?[i.move.slice(0,2),i.move.
2783slice(2,4)]:void 0,uci:i.move||void 0,check:!!a.inCheck()&&("w"===a.turn()?"white":"black")})}return{id:t,termination:o,tree:i,turn:"b"==a?"black":"white"}},[i,c,f,m,_,x,t]),I=T.termination?null:T.turn,A=I==r.player,{availableMoves:N,pieces:O}=(0,o.useMemo)(()=>{if(!d.currentNode)return{availableMoves:[],pieces:{}};let t=new n.d$(d.currentNode.fen),r=t.moves({verbose:!0}),i=!A||T.termination?[]:r.map(t=>({from:t.from,to:t.to,promotion:t.promotion,piece:t.piece})),a={};for(let[r]of Object.entries(n.p9)){let i=t.get(r);i&&(a[r]=i)}return{availableMoves:i,pieces:a}},[d.currentNode,A,T.termination,c]),M=(0,o.useCallback)(function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(C.length<2&&!i)return 0;let a=Date.now(),n=void 0===r?a-S:r;return S>0&&("white"==t?w(Math.max(_-n+1e3*y,0)):$(Math.max(x-n+1e3*y,0))),k(a),n},[C.length,S,_,x,y]),P=(0,o.useCallback)(function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return I?M(I,t):0},[I,M]),R=(0,o.useCallback)(t=>{let r=Date.now();"white"==t?w(0):$(0),k(r),g(t)},[]);(0,o.useEffect)(()=>{if(!T.termination&&C.length>1&&"unlimited"!=r.timeControl&&I){let t=setTimeout(()=>{R(I)},"white"==I?_:x);return()=>clearTimeout(t)}},[R,T.termination,x,C.length,r.timeControl,I,_]);let j=(0,o.useCallback)((t,r)=>{let a=i.getLastMainlineNode(),s=new n.d$(a.fen),o=s.move(t,{sloppy:!0});if(o){let i=a.addChild(s.fen(),t,o.san,!0,void 0,r);i&&(h(t=>t+1),d.setCurrentNode(i))}},[i,d.setCurrentNode]),z=async(t,r)=>{throw Error("makePlayerMove should be overridden by the consuming component")};return{game:T,gameTree:d.tree,currentNode:d.currentNode,player:r.player,playType:r.playType,maiaVersion:r.maiaVersion,toPlay:I,playerActive:A,moveList:C,moves:C,moveTimes:E,availableMoves:N,pieces:O,timeControl:r.timeControl,whiteClock:_,blackClock:x,lastMoveTime:S,stats:{lifetime:void 0,session:{gamesWon:0,gamesPlayed:0},lastRating:void 0,rating:0},setCurrentNode:d.setCurrentNode,goToNode:d.goToNode,goToNextNode:d.goToNextNode,goToPreviousNode:d.goToPreviousNode,goToRootNode:d.goToRootNode,plyCount:d.plyCount,orientation:d.orientation,setOrientation:d.setOrientation,addMoveWithTime:j,setResigned:p,reset:()=>{u(new a.lr(r.startFen||l)),p(!1),g(null),k(0),w(v),$(v),h(t=>t+1)},makePlayerMove:z,updateClock:P,updateClockForColor:M,premovesEnabled:!1,queuedPremove:null,setPremove:(t,r)=>{},clearPremove:()=>{},premoveResetKey:0}}},48230:(t,r,i)=>{t.exports=i(34009)},49037:(t,r,i)=>{"use strict";i.d(r,{X4:()=>s,ai:()=>n,hs:()=>o});var a=i(94349);let n={test:t=>"number"==typeof t,parse:parseFloat,transform:t=>t},s={...n,transform:t=>(0,a.q)(0,1,t)},o={...n,default:1}},49574:()=>{},50005:(t,r,i)=>{"use strict";i.d(r,{X:()=>n});let a=t=>null!==t;function n(t,{repeat:r,repeatType:i="loop"},n){let s=t.filter(a),o=r&&"loop"!==i&&r%2==1?0:s.length-1;return o&&void 0!==n?n:s[o]}},50181:(t,r,i)=>{"use strict";i.d(r,{E:()=>n});var a=i(14232);let n=i(2205).B?a.useLayoutEffect:a.useEffect},51024:(t,r,i)=>{"use strict";i.d(r,{OF:()=>d,Tf:()=>l,hr:()=>o,nl:()=>u});var a=i(32711),n=i(36500);let s=(t,r)=>{var i,a,n;let s=null==(i=t.winrate_loss_vec)?void 0:i[r];if(void 0!==s)return s;let o=null==(a=t.cp_relative_vec)?void 0:a[r];if(void 0!==o)return o;let l=null==(n=t.cp_vec)?void 0:n[r];return void 0!==l?l:-1/0},o=(t,r)=>[...r].sort((r,i)=>{var a,n,o,l;let u=s(t,i)-s(t,r);if(0!==u)return u;let d=(null!=(o=null==(a=t.cp_vec)?void 0:a[i])?o:-1/0)-(null!=(l=null==(n=t.cp_vec)?void 0:n[r])?l:-1/0);return 0!==d?d:r.localeCompare(i)}),l=(t,r)=>{var i;if(!t)return"#FFF";let a=null==t||null==(i=t.winrate_loss_vec)?void 0:i[r],s=null==t?void 0:t.cp_relative_vec[r];if(void 0!==a)if(a>=-n.ce.INACCURACY_THRESHOLD)return n.lm.good[0];else if(a>=-n.ce.BLUNDER_THRESHOLD)return n.lm.ok[0];else return n.lm.blunder[0];if(void 0!==s)if(s>=-50)return n.lm.good[0];else if(s>=-150)return n.lm.ok[0];else return n.lm.blunder[0];return"#FFF"},u=(t,r)=>{let i={},s=new a.d$(r).moves({verbose:!0}),u=s.map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""));if(s.forEach(t=>{i["".concat(t.from).concat(t.to).concat(t.promotion||"")]={san:t.san,color:"#FFF"}}),!t)return i;if(s.forEach(r=>{let a="".concat(r.from).concat(r.to).concat(r.promotion||""),n=l(t,a);i[a]={san:r.san,color:n}}),t)if(t.winrate_loss_vec&&Object.keys(t.winrate_loss_vec).length>0){let r=o(t,u.filter(r=>{var i;let a=null==(i=t.winrate_loss_vec)?void 0:i[r];return void 0!==a&&a>=-n.ce.INACCURACY_THRESHOLD})),a=o(t,u.filter(r=>{var i;let a=null==(i=t.winrate_loss_vec)?void 0:i[r];return void 0!==a&&a>=-n.ce.BLUNDER_THRESHOLD&&a<-n.ce.INACCURACY_THRESHOLD})),s=o(t,u.filter(r=>{var i;let a=null==(i=t.winrate_loss_vec)?void 0:i[r];return void 0!==a&&a<-n.ce.BLUNDER_THRESHOLD}));r.forEach((t,r)=>{i[t].color=n.lm.good[Math.min(r,n.lm.good.length-1)]}),a.forEach((t,r)=>{i[t].color=n.lm.ok[Math.min(r,n.lm.ok.length-1)]}
2783),s.forEach((t,r)=>{i[t].color=n.lm.blunder[Math.min(r,n.lm.blunder.length-1)]})}else{let r=o(t,u.filter(r=>t.cp_relative_vec[r]>=-50)),a=o(t,u.filter(r=>t.cp_relative_vec[r]>=-150&&t.cp_relative_vec[r]<-50)),s=o(t,u.filter(r=>t.cp_relative_vec[r]<-150));r.forEach((t,r)=>{i[t].color=n.lm.good[Math.min(r,n.lm.good.length-1)]}),a.forEach((t,r)=>{i[t].color=n.lm.ok[Math.min(r,n.lm.ok.length-1)]}),s.forEach((t,r)=>{i[t].color=n.lm.blunder[Math.min(r,n.lm.blunder.length-1)]})}return i},d=(t,r)=>{if(!t||!r)return{blunderMoves:{probability:0,moves:[]},okMoves:{probability:0,moves:[]},goodMoves:{probability:0,moves:[]}};let i=[],a=[],s=[],o=0,l=0,u=0;if(r.winrate_loss_vec)for(let[d,c]of Object.entries(t.policy)){let t=r.winrate_loss_vec[d];if(void 0===t)continue;let h=100*c;t>=-n.ce.INACCURACY_THRESHOLD?(u+=h,s.push({move:d,probability:h})):t>=-n.ce.BLUNDER_THRESHOLD?(l+=h,a.push({move:d,probability:h})):(o+=h,i.push({move:d,probability:h}))}else for(let[n,d]of Object.entries(t.policy)){let t=r.cp_relative_vec[n];if(void 0===t)continue;let c=100*d;t>=-50?(u+=c,s.push({move:n,probability:c})):t>=-150?(l+=c,a.push({move:n,probability:c})):(o+=c,i.push({move:n,probability:c}))}let d=[{key:"good",value:u},{key:"ok",value:l},{key:"blunder",value:o}].map(t=>({...t,floored:Math.floor(t.value),fractional:t.value-Math.floor(t.value)})),c=Math.max(0,Math.min(100-d.reduce((t,r)=>t+r.floored,0),100)),h=[...d].sort((t,r)=>r.fractional-t.fractional);for(let t=0;t<c&&t<h.length;t++)h[t]&&(h[t].floored+=1);let f=h.find(t=>t&&"good"===t.key)||{floored:0},p=h.find(t=>t&&"ok"===t.key)||{floored:0};return{blunderMoves:{probability:(h.find(t=>t&&"blunder"===t.key)||{floored:0}).floored,moves:i},okMoves:{probability:p.floored,moves:a},goodMoves:{probability:f.floored,moves:s}}}},52266:t=>{"use strict";var r=function(t,r){return t+i(r)},i=function(t){return null===t||"boolean"==typeof t||void 0===t?"":"number"==typeof t?t.toString():"string"==typeof t?t:Array.isArray(t)?t.reduce(r,""):Object.prototype.hasOwnProperty.call(t,"props")&&Object.prototype.hasOwnProperty.call(t.props,"children")?i(t.props.children):""};i.default=i,t.exports=i},52496:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(t,r){for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]})}(r,{default:function(){return l},noSSR:function(){return o}});let a=i(64252);i(37876),i(14232);let n=a._(i(90295));function s(t){return{default:(null==t?void 0:t.default)||t}}function o(t,r){return delete r.webpack,delete r.modules,t(r)}function l(t,r){let i=n.default,a={loading:t=>{let{error:r,isLoading:i,pastDelay:a}=t;return null}};t instanceof Promise?a.loader=()=>t:"function"==typeof t?a.loader=t:"object"==typeof t&&(a={...a,...t});let l=(a={...a,...r}).loader;return(a.loadableGenerated&&(a={...a,...a.loadableGenerated},delete a.loadableGenerated),"boolean"!=typeof a.ssr||a.ssr)?i({...a,loader:()=>null!=l?l().then(s):Promise.resolve(s(()=>null))}):(delete a.webpack,delete a.modules,o(i,a))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},53068:(t,r,i)=>{"use strict";i.d(r,{Q0:()=>A});var a=i(51024),n=i(32711),s=i(32872),o=i(14232),l=i(72975),u=i(36500),d=i(94598);let c=function(t,r,i,a){var c,h,f;let p=arguments.length>4&&void 0!==arguments[4]?arguments[4]:18,m=!(arguments.length>5)||void 0===arguments[5]||arguments[5],g=(0,o.useContext)(d.ul),b=(0,o.useContext)(d.Mb),[y,v]=(0,o.useState)(0),_=(0,o.useRef)(0),w=()=>{let t=window.localStorage.getItem(u.MA),r=t?Number.parseInt(t,10):0;return Number.isFinite(r)?r:0};async function x(t){if(!g.maia)throw Error("Maia engine not initialized");let{result:r}=await g.maia.batchEvaluateMaia3(Array(l.kJ.length).fill(t.fen()),l.kJ,l.kJ),i={};return l.YH.forEach((t,a)=>{i[t]=r[a]}),i}async function $(t){return await (0,s.q3)(t.fen())}(0,o.useEffect)(()=>{let t=()=>{v(w()||Date.now())};v(w()),window.addEventListener(u.vJ,t);let r=window.setInterval(()=>{let t=w();v(r=>t>r?t:r)},500);return()=>{window.removeEventListener(u.vJ,t),window.clearInterval(r)}},[]),(0,o.useEffect)(()=>
2783{if(!t||!m)return;let s=new n.d$(t.fen),o=t.fen,u=!1,d=async()=>{var n;let d=!!(null==t||null==(n=t.analysis.maia)?void 0:n[i]);if(!t||d||r.has(o))return;let c=0;for(;c<30&&"ready"!==g.status;)await new Promise(t=>setTimeout(t,100)),c++;if("ready"!==g.status)return void console.warn("Maia not ready after waiting, skipping analysis");r.add(o);try{let r=t.moveNumber<=5?$(s):Promise.resolve(null),n=await x(s);if(u)return;let o=await r;if(o&&t.moveNumber<=5){let r={};for(let t of l.YH){let i=Object.keys(o[t]||{}).length?o[t]:n[t].policy,a=Object.entries(i).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i});r[t]={value:n[t].value,policy:Object.fromEntries(a)}}t.addMaiaAnalysis(r,i)}else t.addMaiaAnalysis(n,i);a(t=>t+1)}finally{r.delete(o)}},c=setTimeout(()=>{d()},100);return()=>{u=!0,clearTimeout(c)}},[g.status,t,i,r,g,a,m]),(0,o.useEffect)(()=>{var r;if(!t||!m)return;let s=y>_.current;if(s&&(_.current=y),t.analysis.stockfish&&(null==(r=t.analysis.stockfish)?void 0:r.depth)>=p&&!s)return;let o=!1,l=async()=>{var r,s,l;let u=0;for(;u<120&&!b.isReady()&&!o;)await new Promise(t=>setTimeout(t,100)),u++;if(o||!b.isReady()){o||"error"!==b.status||console.warn("Stockfish not ready after waiting, skipping analysis");return}let d=new n.d$(t.fen),c=new Set(d.moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""))),h=null==(s=t.analysis.maia)||null==(r=s[i])?void 0:r.policy,f=[],m=null==(l=t.mainChild)?void 0:l.move,g=m&&c.has(m)?[m]:[];if(h){let t=0;for(let[r,i]of Object.entries(h).filter(t=>{let[,r]=t;return Number.isFinite(r)&&r>0}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))if(c.has(r)&&(f.push(r),(t+=i)>=.95))break}let y=b.streamEvaluations(d.fen(),d.moves().length,p,{maiaCandidateMoves:f,forcedCandidateMoves:g,maiaPolicy:h});if(y&&!o)try{for await(let r of y){if(o||!t||t!=t)break;t.addStockfishAnalysis(r,i),a(t=>t+1)}}catch(t){o||console.error("Stockfish evaluation error:",t)}},u=setTimeout(()=>{o||l()},100);return()=>{o=!0,clearTimeout(u)}},[t,b,i,a,p,y,null==t||null==(h=t.analysis.maia)||null==(c=h[i])?void 0:c.policy,null==t||null==(f=t.mainChild)?void 0:f.move,m])};var h=i(62207),f=i(76084),p=i(88831);let m=t=>({type:"text",content:t}),g=(t,r)=>({type:"move",san:t,uci:r}),b={overwhelming:{sing:["gives an overwhelming winning advantage","yields a crushing advantage"],plur:["give an overwhelming winning advantage","yield a crushing advantage"]},win:{sing:["gives a winning advantage","secures a clear win"],plur:["give a winning advantage","secure a clear win"]},advantage:{sing:["offers an advantage","creates pressure"],plur:["offer an advantage","create pressure"]},balance:{sing:["holds equality","maintains the balance"],plur:["hold equality","maintain the balance"]},hold:{sing:["defends the position","clings on"],plur:["defend the position","cling on"]},stay:{sing:["keeps the game alive","stays in the game"],plur:["keep the game alive","stay in the game"]}},y={hard:["hard for human players to find","very tough for humans to spot","challenging for most players to see"],skilled:["findable for skilled players","within reach for experienced players","findable for strong players"],straight:["straightforward for players across skill levels to find","easy for players of all strengths to spot","obvious to most players"]},v=["Tread carefully","Be alert","Stay sharp","Watch out"],_=["There","Be careful, as there","In this position there"],w=["tempting","enticing","natural-looking"],x=["alternatives","ways to go wrong"],$=t=>1/(1+Math.exp(-(t-1)/.8)),S=t=>{let r=$(t);return{w:r,d:1-r-$(-t)}};var k=i(97685),C=i(69942),E=i(12152),T=i(9504),I=i(84547);let A=function(t,r){var i,s,d,$;let A=!(arguments.length>2)||void 0===arguments[2]||arguments[2],N=!(arguments.length>3)||void 0===arguments[3]||arguments[3],O=r||(t.whitePlayer.name.includes("Maia")?"black":"white"),M=(0,o.useContext)(T.u),P=(0,o.useContext)(E.M),R=(0,f.u8)(t.tree,O),[j,z]=(0,o.useState)(0),D=(0,o.useMemo)(()=>new Set,[]),B=(t=>{let{game:r,gameTree:i,enableAutoSave:a,analysisState:n}=t,[s,l]=(0,o.useState)(""),[u,d]=(0,o.useState)(!1),[c,h]=(0,o.useState)(!1),f=(0,o.useRef)(null),p=(0,o.useCallback)(async()=>
2783{if(r.id&&a&&u&&"tournament"!==r.type)try{h(!0);let t=(0,C.Px)(i);if(0===t.length||!t.some(t=>{var r;let i=t.stockfish&&t.stockfish.depth>=12,a=(null==(r=t.stockfish)?void 0:r.mate_vec)&&Object.keys(t.stockfish.mate_vec).length>0||!1;return i||a||!!t.maia}))return void h(!1);let a=(0,C.N6)(t);if(a===s)return void h(!1);await (0,I.C)(r.id,t),l(a),d(!1)}catch(t){console.warn("Failed to save analysis to backend:",t)}finally{h(!1)}},[a,r.id,r.type,i,s,u]),m=(0,o.useRef)(p);return m.current=p,(0,o.useEffect)(()=>{d(!1),h(!1),l("")},[r.id,r.type]),(0,o.useEffect)(()=>{n>0&&d(!0)},[n]),(0,o.useEffect)(()=>{if(a)return f.current&&clearInterval(f.current),f.current=setInterval(()=>{m.current()},1e4),()=>{f.current&&clearInterval(f.current),m.current()}},[r.id,a]),{saveAnalysis:p,autoSave:(0,o.useCallback)(()=>({hasUnsavedChanges:u,isSaving:c,status:c?"saving":u?"unsaved":"saved"}),[u,c])()}})({game:t,gameTree:R.tree,enableAutoSave:A,analysisState:j}),[L,U]=(0,o.useState)(),[F,q]=(0,f.Mj)("currentMaiaModel",l.YH[0]),[V,W]=(0,f.Mj)("analysis-show-top-move-badges",!0),H=(t=>{let{gameTree:r,setCurrentNode:i}=t,a=(0,o.useContext)(E.M),s=(0,o.useContext)(T.u),[l,u]=(0,o.useState)({targetDepth:18}),[d,c]=(0,o.useState)({currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!1,isCancelled:!1}),h=(0,o.useRef)({cancelled:!1,currentNode:null}),f=(0,o.useCallback)(async t=>{d.isAnalyzing&&(h.current.cancelled=!0,a.stopEvaluation()),h.current.cancelled=!1,h.current.currentNode=null;let o=r.getMainLine();u({targetDepth:t}),c({currentMoveIndex:0,totalMoves:o.length,currentMove:"",isAnalyzing:!0,isComplete:!1,isCancelled:!1});let l=0;for(;l<50&&(!a.isReady()||"ready"!==s.status)&&!h.current.cancelled;)await new Promise(t=>setTimeout(t,100)),l++;if(h.current.cancelled)return void c(t=>({...t,isAnalyzing:!1,isCancelled:!0}));for(let r=0;r<o.length&&!h.current.cancelled;r++){let a=o[r];h.current.currentNode=a,i(a);let s=a.san||a.move||"Position ".concat(r+1);if(c(t=>({...t,currentMoveIndex:r+1,currentMove:s})),!new n.d$(a.fen).gameOver()){let r=0;for(;r<600&&!h.current.cancelled&&(!a.analysis.stockfish||a.analysis.stockfish.depth<t&&1e4!==a.analysis.stockfish.model_optimal_cp&&-1e4!==a.analysis.stockfish.model_optimal_cp);)await new Promise(t=>setTimeout(t,100)),r++}}c(t=>({...t,isAnalyzing:!1,isComplete:!h.current.cancelled,isCancelled:h.current.cancelled})),h.current.currentNode=null},[a,s.status,r,d.isAnalyzing,i]),p=(0,o.useCallback)(()=>{h.current.cancelled=!0,a.stopEvaluation(),c(t=>({...t,isAnalyzing:!1,isCancelled:!0}))},[a]);return{progress:d,config:l,setConfig:u,startAnalysis:f,cancelAnalysis:p,resetProgress:(0,o.useCallback)(()=>{c({currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!1,isCancelled:!1})},[]),isEnginesReady:(0,o.useCallback)(()=>a.isReady()&&"ready"===s.status,[a,s.status])()}})({gameTree:R.tree,setCurrentNode:R.setCurrentNode}),G=(t=>{let{gameTree:r,deepAnalysisProgress:i,startDeepAnalysis:a,currentMaiaModel:s,setCurrentNode:l,goToNode:d,currentNode:c}=t,[h,f]=(0,o.useState)({isActive:!1,showPlayerSelection:!1,selectedPlayerColor:null,currentMistakeIndex:0,mistakes:[],hasCompletedAnalysis:!1,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:null}),p=(0,o.useCallback)(async()=>{f(t=>({...t,showPlayerSelection:!0,isActive:!0}))},[]),m=(0,o.useCallback)(async t=>r.getMainLine().every(t=>{var r,i;return!!(!t.move||new n.d$(t.fen).gameOver())||(null!=(i=null==(r=t.analysis.stockfish)?void 0:r.depth)?i:0)>=u.Ke})?(g(t),Promise.resolve()):(await a(u.Ke),new Promise(r=>{let a=()=>{i.isComplete||i.isCancelled?(i.isComplete&&g(t),r()):setTimeout(a,500)};a()})),[i,a,r]),g=(0,o.useCallback)(t=>{let i=(0,C.qN)(r,t);if(0===i.length){let r="white"===t?"White":"Black";(0,k.Ay)("No clear mistakes made by ".concat(r),{icon:"\uD83D\uDC51",duration:3e3}),f({isActive:!1,showPlayerSelection:!1,selectedPlayerColor:null,currentMistakeIndex:0,mistakes:[],hasCompletedAnalysis:!1,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:null});return}let a=i[0],n=r.getMainLine()[a.moveIndex];f({isActive:!0,showPlayerSelection:!1,selectedPlayerColor:t,currentMistakeIndex:0,mistakes:i,hasCompletedAnalysis:!0,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:n&&n.parent?n.parent.fen:null}),n&&n.parent&&l(n.parent)},[r,l]),b=(0,o.useCallback)(()=>{f({isActive:!1,showPlayerSelection:!1,selectedPlayerColor:null,currentMistakeIndex:0,mistakes:[],hasCompletedAnalysis:!1,showSolution:!1,currentAttempt:1,maxAttempts:1/0,originalPosition:null})},[]),y=(0,o.useCallback)(()=>
2783{if(!h.isActive||0===h.mistakes.length)return;let t=h.mistakes[h.currentMistakeIndex];if(!t||!c)return;let i=new n.d$(c.fen);i.move(t.bestMove,{sloppy:!0})&&d(r.addVariationNode(c,i.fen(),t.bestMove,t.bestMoveSan,s)),f(t=>({...t,showSolution:!0}))},[h,c,r,s]),v=(0,o.useCallback)(()=>{if(!h.isActive||0===h.mistakes.length)return;let t=h.currentMistakeIndex+1;if(t>=h.mistakes.length)return void b();let i=h.mistakes[t],a=r.getMainLine()[i.moveIndex],n=a&&a.parent?a.parent.fen:null;a&&a.parent&&l(a.parent),f(r=>({...r,currentMistakeIndex:t,showSolution:!1,currentAttempt:1,originalPosition:n}))},[h,r,l,b]),_=(0,o.useCallback)(t=>h.isActive&&c&&h.mistakes[h.currentMistakeIndex]?(0,C.eX)(c,t)?(f(t=>({...t,showSolution:!0})),"correct"):(f(t=>({...t,currentAttempt:t.currentAttempt+1})),"incorrect"):"not-learning",[h,c]),w=(0,o.useCallback)(()=>{if(!h.originalPosition)return;let t=r.getMainLine().find(t=>t.fen===h.originalPosition);t&&l(t)},[h.originalPosition,r,l]),x=(0,o.useCallback)(()=>{if(!h.isActive||0===h.mistakes.length)return null;let t=h.mistakes[h.currentMistakeIndex],r=h.mistakes.length,i=h.currentMistakeIndex+1;return{mistake:t,progress:"".concat(i," of ").concat(r),isLastMistake:h.currentMistakeIndex===r-1}},[h]);return{state:h,start:p,startWithColor:m,stop:b,showSolution:y,goToNext:v,checkMove:_,getCurrentInfo:x,returnToOriginalPosition:w}})({gameTree:R.tree,deepAnalysisProgress:H.progress,startDeepAnalysis:H.startAnalysis,currentMaiaModel:F,setCurrentNode:R.setCurrentNode,goToNode:R.goToNode,currentNode:R.currentNode});(0,o.useEffect)(()=>{l.YH.includes(F)||q(l.YH[0])},[F,q]),c(R.currentNode||null,D,F,z,H.progress.isAnalyzing?H.config.targetDepth:18,N);let K=(0,o.useMemo)(()=>{if(!R.currentNode)return new Map;let t=new Map;return new n.d$(R.currentNode.fen).moves({verbose:!0}).forEach(r=>{var i;let{from:a,to:n}=r;t.set(a,(null!=(i=t.get(a))?i:[]).concat([n]))}),t},[R.currentNode]),Y=(0,o.useMemo)(()=>R.currentNode?(0,a.nl)(R.currentNode.analysis.stockfish,R.currentNode.fen):{},[R.currentNode,j]),Q=(0,o.useMemo)(()=>{var t;return R.currentNode?{maia:null==(t=R.currentNode.analysis.maia)?void 0:t[F],stockfish:R.currentNode.analysis.stockfish}:null},[F,R.currentNode,j]),X=(0,o.useMemo)(()=>(0,a.OF)(null==Q?void 0:Q.maia,null==Q?void 0:Q.stockfish),[Q]),{recommendations:Z,movesByRating:J,moveMap:ee}=((t,r,i)=>{let s=(0,o.useMemo)(()=>{if(!r)return{};let i={isBlackTurn:(null==t?void 0:t.turn)==="b"};if((null==r?void 0:r.maia)&&(i.maia=Object.entries(r.maia.policy).map(t=>{let[r,i]=t;return{move:r,prob:i}})),null==r?void 0:r.stockfish){let t=r.stockfish.cp_vec,n=r.stockfish.cp_relative_vec||{},s=r.stockfish.winrate_vec||{},o=r.stockfish.winrate_loss_vec||{};i.stockfish=(0,a.hr)(r.stockfish,Object.keys(t)).map(r=>({move:r,cp:t[r]||0,winrate:s[r]||0,winrate_loss:o[r]||0,cp_relative:n[r]||0}))}return i},[r,t]);return{recommendations:s,movesByRating:(0,o.useMemo)(()=>{var n,s,o,u;if(!t)return;let d=t.analysis.maia,c=null==r?void 0:r.stockfish,h=[];if(!d)return;if(null==(n=d[i])?void 0:n.policy)for(let t of Object.keys(d[i].policy).slice(0,3))h.find(r=>r[0]===t)||h.push([t,t]);if(c)for(let t of(0,a.hr)(c,Object.keys(c.cp_vec)).slice(0,3))h.find(r=>r[0]===t)||h.push([t,t]);for(let t of l.YH)if(null==(s=d[t])?void 0:s.policy){let r=Object.keys(d[t].policy)[0];r&&!h.find(t=>t[0]===r)&&h.push([r,r])}let f=[];for(let t of l.YH){let r={rating:parseInt(t.replace("maia_kdd_",""))};for(let i of h){let a=100*((null==(u=d[t])||null==(o=u.policy)?void 0:o[i[0]])||0);r[i[1]]=a}f.push(r)}return f},[i,r,t]),moveMap:(0,o.useMemo)(()=>{if(!(null==r?void 0:r.maia)||!(null==r?void 0:r.stockfish)||!t)return;let i=new Set(new n.d$(t.fen).moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""))),a=[];for(let t of i){var s,o;let i=void 0!==r.stockfish.cp_relative_vec[t]?Math.max(-3,r.stockfish.cp_relative_vec[t]/100):-3,n=100*(r.maia.policy[t]||0),l=(i+3)/3,u=Math.min(n/50,1),d=Math.max(.6,Math.min(.9,(l+u)/2)),c=l+u,h=r.stockfish.cp_vec[t]||0,f=null==(s=r.stockfish.mate_vec)?void 0:s[t],p=(null==(o=r.stockfish.winrate_vec)?void 0:o[t])||0,m=r.maia.policy[t]||0;a.push({move:t,x:i,y:n,z:100,opacity:d,importance:c,size:10,rawCp:h,winrate:p,rawMaiaProb:m,relativeCp:r.stockfish.cp_relative_vec[t],mate:f})}return a.sort((t,r)=>t.importance-r.importance)},[r,t])}})(R.currentNode||null,Q,F),et=(i=R.currentNode||null,(0,o.useMemo)(()=>
2783{if(!i||!(null==Q?void 0:Q.stockfish)||!(null==Q?void 0:Q.maia)||Q.stockfish.depth<12)return{segments:[]};let t=i.fen,r="w"===i.turn,a=Q.stockfish.cp_vec,s={},o=i.analysis.maia||{};return Object.keys(Q.maia.policy).forEach(t=>{s[t]=Array(l.YH.length).fill(0)}),l.YH.forEach((t,r)=>{let i=o[t];(null==i?void 0:i.policy)&&Object.entries(i.policy).forEach(t=>{let[i,a]=t;s[i]||(s[i]=Array(l.YH.length).fill(0)),s[i][r]=a})}),function(t,r,i,a){var s,o,l,u,d,c,h;let f,$,k=(f=(t=>{let r=0x811c9dc5;for(let i=0;i<t.length;i+=1)r=Math.imul(r^t.charCodeAt(i),0x1000193);return r>>>0})(t),$=()=>(f=1664525*f+0x3c6ef35f|0)/0x100000000,t=>{var r;return null!=(r=t[Math.floor($()*t.length)])?r:t[0]}),C=new n.d$(t),E=new Set;C.moves({verbose:!0}).forEach(t=>{var r;return E.add(t.from+t.to+(null!=(r=t.promotion)?r:""))});let T=Object.keys(r).filter(t=>E.has(t));if(!T.length)return{segments:[m("No legal moves available.")]};let I={};T.forEach(t=>{let i=a?r[t]:-r[t];I[t]=.01*i});let A=T.reduce((t,r)=>I[t]>I[r]?t:r),{w:N,d:O}=S(I[A]),M=T.filter(t=>{let{w:r,d:i}=S(I[t]);return .08>=Math.abs(r-N)&&.08>=Math.abs(i-O)}),P=M.length,R=t=>{var r;let i=C.move({from:t.slice(0,2),to:t.slice(2,4),promotion:t.length>4?t[4]:void 0}),a=null!=(r=null==i?void 0:i.san)?r:t;return C.undo(),a},j=[...M].sort((t,r)=>I[r]-I[t]),z=j.slice(0,3).map(t=>g(R(t),t)),D=j.filter(t=>t!==A).slice(0,3).map(t=>g(R(t),t)),B=R(A),L=j.length>=2&&(()=>{let{w:t,d:r}=S(I[j[1]]);return .04>=Math.abs(N-t)&&.04>=Math.abs(O-r)})(),U=j.reduce((t,r)=>t+I[r],0)/P,F=U>3?"overwhelming":U>1.5?"win":U>.35?"advantage":U>=-.35?"balance":U>=-1.5?"hold":"stay",q=0,V=0,W=0,H=0,G={},K={};for(let t=0;t<9;t+=1){let r=T.map(r=>{var a,n;return[null!=(n=null==(a=i[r])?void 0:a[t])?n:0,r]}).sort((t,r)=>r[0]-t[0]),[a,n]=r[0],[l,u]=null!=(s=r[1])?s:[0,""],[d,c]=null!=(o=r[2])?o:[0,""];n!==A&&(H=Math.max(H,a)),M.includes(n)&&(q+=1),n===A&&(V+=1),r.slice(0,4).forEach(t=>{var r;let[i,a]=t;G[a]=(null!=(r=G[a])?r:0)+i});let h=t=>a-t<=.08,f=t=>{var r;return K[t]=(null!=(r=K[t])?r:0)+1,!0};(u&&!M.includes(u)&&h(l)&&f(u)||c&&!M.includes(c)&&h(d)&&f(c))&&(W+=1)}let Y=t=>t<=2?0:t<=6?1:2,Q=Y(q),X=Y(V),Z=X<Q&&!L,J=k(0===Q?y.hard:1===Q?y.skilled:y.straight),ee=k(0===X?y.hard:1===X?y.skilled:y.straight);1===X&&Z&&(ee="only ".concat(ee));let et=(0,p.zF)(100*I[A]),er=t=>et-(0,p.zF)(100*I[t])>=.1,ei=er(Object.entries(G).sort((t,r)=>r[1]-t[1])[0][0]),[ea,en]=null!=(l=Object.entries(G).filter(t=>{let[r]=t;return!M.includes(r)}).sort((t,r)=>r[1]-t[1])[0])?l:["",0],es=Object.entries(G).sort((t,r)=>r[1]-t[1]).slice(0,4),eo=null;if(ea&&er(ea)&&en>.5)eo=ea;else for(let[t,r]of es)if(r>.5&&er(t)){eo=t;break}let el=Object.values(G).reduce((t,r)=>t+r,0),eu=Object.entries(G).filter(t=>{let[r]=t;return er(r)}).reduce((t,r)=>{let[,i]=r;return t+i},0),ed=[],ec=2!==Q||Z?"":", however",eh=k(w),ef=k(x);eo&&el>0&&eu/el>.4?ed.push(m(" ".concat(k(v)).concat(ec,", this position is highly treacherous! ")+"It is easy to go astray with ".concat(eh," blunders like ")),g(R(eo),eo),m(".")):eo&&ed.push(m(" ".concat(k(v)).concat(ec,"! There is a ").concat(eh," blunder in this ")+"position: "),g(R(eo),eo),m("."));let ep=Q<2&&H>.1;if(!eo&&(ep||2===Q&&W>4)){let t=null!=(d=null==(u=Object.entries(K).sort((t,r)=>r[1]-t[1])[0])?void 0:u[0])?d:"";t||(t=null!=(h=null==(c=Object.entries(G).filter(t=>{let[r]=t;return!M.includes(r)}).sort((t,r)=>r[1]-t[1])[0])?void 0:c[0])?h:"");let r=k(_);t?ed.push(m(" ".concat(r).concat(ec," are also ").concat(eh," ").concat(ef,", such as ")),g(R(t),t),m(".")):ed.push(m(" ".concat(r).concat(ec," are also ").concat(eh," ").concat(ef,".")))}let em=[],eg=Z?D:z,eb=1===P?"it is":"they are",ey=k(1===eg.length?b[F].sing:b[F].plur);return 1===eg.length?em.push(m("Only "),...eg):2===eg.length?em.push(m("Both "),eg[0],m(" and "),eg[1]):em.push(eg[0],m(", "),eg[1],m(", and "),eg[2]),Z?em.push(m(" ".concat(ey,", and ").concat(eb," ").concat(J,", but the best move (")),g(B,A),m(") is ".concat(ee,"."))):em.push(m(" ".concat(ey,", and ").concat(eb," ").concat(J,"."))),{segments:ei?[...ed,...em]:[...em,...ed]}}(t,a,s,r)},[null==i?void 0:i.fen,null==i||null==(s=i.analysis.stockfish)?void 0:s.depth,null==i?void 0:i.analysis.maia,null==Q||null==(d=Q.stockfish)?void 0:d.depth,null==Q||null==($=Q.maia)?void 0:$.policy])),er=(0,o.useMemo)(()=>{var t,r;if(!L)return;let i=new n.d$(null==(t=R.currentNode)?void 0:t.fen),a=null==(r=i.move({from:L[0],to:L[1]}))?void 0:r.san;if(a)return{move:L,fen:i.fen(),check:i.inCheck(),san:a}},[L,R.currentNode]),ei=(0,o.useMemo)(()=>
2783{if(!R.currentNode)return[];let t=[];if(null==Q?void 0:Q.maia){let r=Object.entries(Q.maia.policy)[0];r&&t.push({brush:"red",orig:r[0].slice(0,2),dest:r[0].slice(2,4)})}if(null==Q?void 0:Q.stockfish){let r=Q.stockfish.model_move;r&&t.push({brush:"blue",orig:r.slice(0,2),dest:r.slice(2,4),modifiers:{lineWidth:8}})}return t},[R.currentNode,Q]),ea=(0,o.useMemo)(()=>{if(!R.currentNode||!(null==Q?void 0:Q.maia))return null;let t=Object.entries(Q.maia.policy);if(0===t.length)return null;let[r]=t.reduce((t,r)=>r[1]>t[1]?r:t);if(!r||r.length<4)return null;let i=h.RV.classifyMove(R.currentNode,r,F);return i.blunder||i.inaccuracy?{square:r.slice(2,4),classification:i}:null},[R.currentNode,Q,F]);return{gameTree:R.tree,currentNode:R.currentNode,setCurrentNode:R.setCurrentNode,goToNode:R.goToNode,goToNextNode:R.goToNextNode,goToPreviousNode:R.goToPreviousNode,goToRootNode:R.goToRootNode,plyCount:R.plyCount,orientation:R.orientation,setOrientation:R.setOrientation,move:er,availableMoves:K,currentMaiaModel:F,setCurrentMaiaModel:q,currentMove:L,colorSanMapping:Y,setCurrentMove:U,showTopMoveBadges:V,setShowTopMoveBadges:W,moveEvaluation:Q,movesByRating:J,moveRecommendations:Z,moveMap:ee,blunderMeter:X,boardDescription:et,arrows:ei,topHumanMoveBadge:ea,stockfish:P,maia:M,gameAnalysis:{...H,saveAnalysis:B.saveAnalysis,autoSave:B.autoSave},learnFromMistakes:G}}},53746:(t,r,i)=>{"use strict";i.d(r,{I:()=>s});var a=i(30785);let n=["read","resolveKeyframes","update","preRender","render","postRender"];function s(t,r){let i=!1,s=!0,o={delta:0,timestamp:0,isProcessing:!1},l=()=>i=!0,u=n.reduce((t,r)=>(t[r]=function(t){let r=new Set,i=new Set,a=!1,n=!1,s=new WeakSet,o={delta:0,timestamp:0,isProcessing:!1};function l(r){s.has(r)&&(u.schedule(r),t()),r(o)}let u={schedule:(t,n=!1,o=!1)=>{let l=o&&a?r:i;return n&&s.add(t),l.has(t)||l.add(t),t},cancel:t=>{i.delete(t),s.delete(t)},process:t=>{if(o=t,a){n=!0;return}a=!0,[r,i]=[i,r],r.forEach(l),r.clear(),a=!1,n&&(n=!1,u.process(t))}};return u}(l),t),{}),{read:d,resolveKeyframes:c,update:h,preRender:f,render:p,postRender:m}=u,g=()=>{let n=a.W.useManualTiming?o.timestamp:performance.now();i=!1,o.delta=s?1e3/60:Math.max(Math.min(n-o.timestamp,40),1),o.timestamp=n,o.isProcessing=!0,d.process(o),c.process(o),h.process(o),f.process(o),p.process(o),m.process(o),o.isProcessing=!1,i&&r&&(s=!1,t(g))};return{schedule:n.reduce((r,a)=>{let n=u[a];return r[a]=(r,a=!1,l=!1)=>(!i&&(i=!0,s=!0,o.isProcessing||t(g)),n.schedule(r,a,l)),r},{}),cancel:t=>{for(let r=0;r<n.length;r++)u[n[r]].cancel(t)},state:o,steps:u}}},54256:(t,r,i)=>{"use strict";function a(t){return null!==t&&"object"==typeof t&&"function"==typeof t.start}i.d(r,{P:()=>i$});let n=t=>Array.isArray(t);function s(t,r){if(!Array.isArray(r))return!1;let i=r.length;if(i!==t.length)return!1;for(let a=0;a<i;a++)if(r[a]!==t[a])return!1;return!0}function o(t){return"string"==typeof t||Array.isArray(t)}function l(t){let r=[{},{}];return null==t||t.values.forEach((t,i)=>{r[0][i]=t.get(),r[1][i]=t.getVelocity()}),r}function u(t,r,i,a){if("function"==typeof r){let[n,s]=l(a);r=r(void 0!==i?i:t.custom,n,s)}if("string"==typeof r&&(r=t.variants&&t.variants[r]),"function"==typeof r){let[n,s]=l(a);r=r(void 0!==i?i:t.custom,n,s)}return r}function d(t,r,i){let a=t.getProps();return u(a,r,void 0!==i?i:a.custom,t)}let c=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],h=["initial",...c];var f,p,m=i(93563),g=i(20254);let b=new Set(["width","height","top","left","right","bottom",...g.U]),y=t=>n(t)?t[t.length-1]||0:t;var v=i(90280),_=i(82981);function w(t,r){let i=t.getValue("willChange");if((0,_.S)(i)&&i.add)return i.add(r)}let x=t=>t.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),$="data-"+x("framerAppearId");var S=i(91750),k=i(81461),C=i(30785),E=i(6249),T=i(90620),I=i(28404),A=i(24237),N=i(77801);let O=t=>/^0[^.\s]+$/u.test(t);var M=i(34474),P=i(1960);let R=new Set(["brightness","contrast","saturate","opacity"]);function j(t){let[r,i]=t.slice(0,-1).split("(");if("drop-shadow"===r)return t;let[a]=i.match(P.S)||[];if(!a)return t;let n=i.replace(a,""),s=+!!R.has(r);return a!==i&&(s*=100),r+"("+s+n+")"}let z=/\b([a-z-]*)\(.*?\)/gu,D={...M.f,getAnimatableNone:t=>{let r=t.match(z);return r?r.map(j).join(" "):t}};var B=i(11614),L=i(49037),U=i(21300);let F={borderWidth:U.px,borderTopWidth:U.px,borderRightWidth:U.px,borderBottomWidth:U.px,borderLeftWidth:U.px,borderRadius:U.px,radius:U.px,borderTopLeftRadius:U.px,borderTopRightRadius:U.px,borderBottomRightRadius:U.px,borderBottomLeftRadius:U.px,width:U.px,maxWidth:U.px,height:U.px,maxHeight:U.px,top:U.px,right:U.px,bottom:U.px,left:U.px,padding:U.px,paddingTop:U.px,paddingRight:U.px,paddingBottom:U.px,paddingLeft:U.px,margin:U.px,marginTop:U.px,marginRight:U.px,marginBottom:U.px,marginLeft:U.px,backgroundPositionX:U.px,backgroundPositionY:U.px},q={rotate:U.uj,rotateX:U.uj,rotateY:U.uj,rotateZ:U.uj,scale:L.hs,scaleX:L.hs,scaleY:L.hs,scaleZ:L.hs,skew:U.uj,skewX:U.uj,skewY:U.uj,distance:U.px,translateX:U.px,translateY:U.px,translateZ:U.px,x:U.px,y:U.px,z:U.px,perspective:U.px,transformPerspective:U.px,opacity:L.X4,originX:U.gQ,originY:U.gQ,originZ:U.px},V={...L.ai,transform:Math.round},W={...F,...q,zIndex:V,size:U.px,fillOpacity:L.X4,strokeOpacity:L.X4,numOctaves:V},H={...W,color:B.y,backgroundColor:B.y,outlineColor:B.y,fill:B.y,stroke:B.y,borderColor:B.y,borderTopColor:B.y,borderRightColor:B.y,borderBottomColor:B.y,borderLeftColor:B.y,filter:D,WebkitFilter:D},G=t=>H[t];function K(t,r){let i=G(t);return i!==D&&(i=M.f),i.getAnimatableNone?i.getAnimatableNone(r):void 0}
2783let Y=new Set(["auto","none","0"]);var Q=i(67798),X=i(37605);let Z=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t);var J=i(40597);let ee=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;var et=i(47137);let er=t=>r=>r.test(t),ei=[L.ai,U.px,U.KN,U.uj,U.vw,U.vh,{test:t=>"auto"===t,parse:t=>t}],ea=t=>ei.find(er(t));class en extends Q.h{constructor(t,r,i,a,n){super(t,r,i,a,n,!0)}readKeyframes(){let{unresolvedKeyframes:t,element:r,name:i}=this;if(!r||!r.current)return;super.readKeyframes();for(let i=0;i<t.length;i++){let a=t[i];if("string"==typeof a&&(a=a.trim(),(0,J.p)(a))){let n=function t(r,i,a=1){(0,X.V)(a<=4,`Max CSS variable fallback depth detected in property "${r}". This may indicate a circular fallback dependency.`);let[n,s]=function(t){let r=ee.exec(t);if(!r)return[,];let[,i,a,n]=r;return[`--${null!=i?i:a}`,n]}(r);if(!n)return;let o=window.getComputedStyle(i).getPropertyValue(n);if(o){let t=o.trim();return Z(t)?parseFloat(t):t}return(0,J.p)(s)?t(s,i,a+1):s}(a,r.current);void 0!==n&&(t[i]=n),i===t.length-1&&(this.finalKeyframe=a)}}if(this.resolveNoneKeyframes(),!b.has(i)||2!==t.length)return;let[a,n]=t,s=ea(a),o=ea(n);if(s!==o)if((0,et.E4)(s)&&(0,et.E4)(o))for(let r=0;r<t.length;r++){let i=t[r];"string"==typeof i&&(t[r]=parseFloat(i))}else this.needsMeasurement=!0}resolveNoneKeyframes(){let{unresolvedKeyframes:t,name:r}=this,i=[];for(let r=0;r<t.length;r++){var a;("number"==typeof(a=t[r])?0===a:null===a||"none"===a||"0"===a||O(a))&&i.push(r)}i.length&&function(t,r,i){let a,n=0;for(;n<t.length&&!a;){let r=t[n];"string"==typeof r&&!Y.has(r)&&(0,M.V)(r).values.length&&(a=t[n]),n++}if(a&&i)for(let n of r)t[n]=K(i,a)}(t,i,r)}measureInitialState(){let{element:t,unresolvedKeyframes:r,name:i}=this;if(!t||!t.current)return;"height"===i&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=et.Hr[i](t.measureViewportBox(),window.getComputedStyle(t.current)),r[0]=this.measuredOrigin;let a=r[r.length-1];void 0!==a&&t.getValue(i,a).jump(a,!1)}measureEndState(){var t;let{element:r,name:i,unresolvedKeyframes:a}=this;if(!r||!r.current)return;let n=r.getValue(i);n&&n.jump(this.measuredOrigin,!1);let s=a.length-1,o=a[s];a[s]=et.Hr[i](r.measureViewportBox(),window.getComputedStyle(r.current)),null!==o&&void 0===this.finalKeyframe&&(this.finalKeyframe=o),(null==(t=this.removedTransforms)?void 0:t.length)&&this.removedTransforms.forEac
2783h(([t,i])=>{r.getValue(t).set(i)}),this.resolveNoneKeyframes()}}var es=i(72924),eo=i(55472);let el=new Set(["opacity","clipPath","filter","transform"]);var eu=i(50005);let ed=(0,i(7862).p)(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),ec={anticipate:I.b,backInOut:A.ZZ,circInOut:N.tn};class eh extends es.i{constructor(t){super(t);let{name:r,motionValue:i,element:a,keyframes:n}=this.options;this.resolver=new en(n,(t,r)=>this.onKeyframesResolved(t,r),r,i,a),this.resolver.scheduleResolve()}initPlayback(t,r){var i;let{duration:a=300,times:n,ease:s,type:o,motionValue:l,name:u,startTime:d}=this.options;if(!l.owner||!l.owner.current)return!1;if("string"==typeof s&&(0,m.nL)()&&s in ec&&(s=ec[s]),i=this.options,(0,m.WH)(i.type)||"spring"===i.type||!(0,m.yL)(i.ease)){let{onComplete:r,onUpdate:i,motionValue:l,element:u,...d}=this.options,c=function(t,r){let i=new eo.o({...r,keyframes:t,repeat:0,delay:0,isGenerator:!0}),a={done:!1,value:t[0]},n=[],s=0;for(;!a.done&&s<2e4;)n.push((a=i.sample(s)).value),s+=10;return{times:void 0,keyframes:n,duration:s-10,ease:"linear"}}(t,d);1===(t=c.keyframes).length&&(t[1]=t[0]),a=c.duration,n=c.times,s=c.ease,o="keyframes"}let c=function(t,r,i,{delay:a=0,duration:n=300,repeat:s=0,repeatType:o="loop",ease:l="easeInOut",times:u}={}){let d={[r]:i};u&&(d.offset=u);let c=(0,m.TU)(l,n);return Array.isArray(c)&&(d.easing=c),t.animate(d,{delay:a,duration:n,easing:Array.isArray(c)?"linear":c,fill:"both",iterations:s+1,direction:"reverse"===o?"alternate":"normal"})}(l.owner.current,u,t,{...this.options,duration:a,times:n,ease:s});return c.startTime=null!=d?d:this.calcStartTime(),this.pendingTimeline?((0,m.vG)(c,this.pendingTimeline),this.pendingTimeline=void 0):c.onfinish=()=>{let{onComplete:i}=this.options;l.set((0,eu.X)(t,this.options,r)),i&&i(),this.cancel(),this.resolveFinishedPromise()},{animation:c,duration:a,times:n,type:o,ease:s,keyframes:t}}get duration(){let{resolved:t}=this;if(!t)return 0;let{duration:r}=t;return(0,S.X)(r)}get time(){let{resolved:t}=this;if(!t)return 0;let{animation:r}=t;return(0,S.X)(r.currentTime||0)}set time(t){let{resolved:r}=this;if(!r)return;let{animation:i}=r;i.currentTime=(0,S.f)(t)}get speed(){let{resolved:t}=this;if(!t)return 1;let{animation:r}=t;return r.playbackRate}set speed(t){let{resolved:r}=this;if(!r)return;let{animation:i}=r;i.playbackRate=t}get state(){let{resolved:t}=this;if(!t)return"idle";let{animation:r}=t;return r.playState}get startTime(){let{resolved:t}=this;if(!t)return null;let{animation:r}=t;return r.startTime}attachTimeline(t){if(this._resolved){let{resolved:r}=this;if(!r)return T.l;let{animation:i}=r;(0,m.vG)(i,t)}else this.pendingTimeline=t;return T.l}play(){if(this.isStopped)return;let{resolved:t}=this;if(!t)return;let{animation:r}=t;"finished"===r.playState&&this.updateFinishedPromise(),r.play()}pause(){let{resolved:t}=this;if(!t)return;let{animation:r}=t;r.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,"idle"===this.state)return;this.resolveFinishedPromise(),this.updateFinishedPromise();let{resolved:t}=this;if(!t)return;let{animation:r,keyframes:i,duration:a,type:n,ease:s,times:o}=t;if("idle"===r.playState||"finished"===r.playState)return;if(this.time){let{motionValue:t,onUpdate:r,onComplete:l,element:u,...d}=this.options,c=new eo.o({...d,keyframes:i,duration:a,type:n,ease:s,times:o,isGenerator:!0}),h=(0,S.f)(this.time);t.setWithVelocity(c.sample(h-10).value,c.sample(h).value,10)}let{onStop:l}=this.options;l&&l(),this.cancel()}complete(){let{resolved:t}=this;t&&t.animation.finish()}cancel(){let{resolved:t}=this;t&&t.animation.cancel()}static supports(t){let{motionValue:r,name:i,repeatDelay:a,repeatType:n,damping:s,type:o}=t;if(!r||!r.owner||!(r.owner.current instanceof HTMLElement))return!1;let{onUpdate:l,transformTemplate:u}=r.owner.getProps();return ed()&&i&&el.has(i)&&!l&&!u&&!a&&"mirror"!==n&&0!==s&&"inertia"!==o}}let ef={type:"spring",stiffness:500,damping:25,restSpeed:10},ep={type:"keyframes",duration:.8},em={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},eg=(t,r,i,a={},n,s)=>o=>{let l=(0,m.rU)(a,t)||{},u=l.delay||a.delay||0,{elapsed:d=0}=a;d-=(0,S.f)(u);let c={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:r.getVelocity(),...l,delay:-d,onUpdate:t=>{r.set(t),l.onUpdate&&l.onUpdate(t)},onComplete:()=>{o(),l.onComplete&&l.onComplete()},name:t,motionValue:r,element:s?void 0:n};!function({when:t,delay:r,delayChildren:i,staggerChildren:a,staggerDirection:n,repeat:s,repeatType:
2783o,repeatDelay:l,from:u,elapsed:d,...c}){return!!Object.keys(c).length}(l)&&(c={...c,...((t,{keyframes:r})=>r.length>2?ep:g.f.has(t)?t.startsWith("scale")?{type:"spring",stiffness:550,damping:0===r[1]?2*Math.sqrt(550):30,restSpeed:10}:ef:em)(t,c)}),c.duration&&(c.duration=(0,S.f)(c.duration)),c.repeatDelay&&(c.repeatDelay=(0,S.f)(c.repeatDelay)),void 0!==c.from&&(c.keyframes[0]=c.from);let h=!1;if(!1!==c.type&&(0!==c.duration||c.repeatDelay)||(c.duration=0,0===c.delay&&(h=!0)),(E.d.current||C.W.skipAnimations)&&(h=!0,c.duration=0,c.delay=0),h&&!s&&void 0!==r.get()){let t=(0,eu.X)(c.keyframes,l);if(void 0!==t)return k.Gt.update(()=>{c.onUpdate(t),c.onComplete()}),new m.P6([])}return!s&&eh.supports(c)?new eh(c):new eo.o(c)};function eb(t,r,{delay:i=0,transitionOverride:a,type:n}={}){var s;let{transition:o=t.getDefaultTransition(),transitionEnd:l,...u}=r;a&&(o=a);let c=[],h=n&&t.animationState&&t.animationState.getState()[n];for(let r in u){let a=t.getValue(r,null!=(s=t.latestValues[r])?s:null),n=u[r];if(void 0===n||h&&function({protectedKeys:t,needsAnimating:r},i){let a=t.hasOwnProperty(i)&&!0!==r[i];return r[i]=!1,a}(h,r))continue;let l={delay:i,...(0,m.rU)(o||{},r)},d=!1;if(window.MotionHandoffAnimation){let i=t.props[$];if(i){let t=window.MotionHandoffAnimation(i,r,k.Gt);null!==t&&(l.startTime=t,d=!0)}}w(t,r),a.start(eg(r,a,n,t.shouldReduceMotion&&b.has(r)?{type:!1}:l,t,d));let f=a.animation;f&&c.push(f)}return l&&Promise.all(c).then(()=>{k.Gt.update(()=>{l&&function(t,r){let{transitionEnd:i={},transition:a={},...n}=d(t,r)||{};for(let r in n={...n,...i}){let i=y(n[r]);t.hasValue(r)?t.getValue(r).set(i):t.addValue(r,(0,v.OQ)(i))}}(t,l)})}),c}function ey(t,r,i={}){var a;let n=d(t,r,"exit"===i.type?null==(a=t.presenceContext)?void 0:a.custom:void 0),{transition:s=t.getDefaultTransition()||{}}=n||{};i.transitionOverride&&(s=i.transitionOverride);let o=n?()=>Promise.all(eb(t,n,i)):()=>Promise.resolve(),l=t.variantChildren&&t.variantChildren.size?(a=0)=>{let{delayChildren:n=0,staggerChildren:o,staggerDirection:l}=s;return function(t,r,i=0,a=0,n=1,s){let o=[],l=(t.variantChildren.size-1)*a,u=1===n?(t=0)=>t*a:(t=0)=>l-t*a;return Array.from(t.variantChildren).sort(ev).forEach((t,a)=>{t.notify("AnimationStart",r),o.push(ey(t,r,{...s,delay:i+u(a)}).then(()=>t.notify("AnimationComplete",r)))}),Promise.all(o)}(t,r,n+a,o,l,i)}:()=>Promise.resolve(),{when:u}=s;if(!u)return Promise.all([o(),l(i.delay)]);{let[t,r]="beforeChildren"===u?[o,l]:[l,o];return t().then(()=>r())}}function ev(t,r){return t.sortNodePosition(r)}let e_=h.length,ew=[...c].reverse(),ex=c.length;function e$(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function eS(){return{animate:e$(!0),whileInView:e$(),whileHover:e$(),whileTap:e$(),whileDrag:e$(),whileFocus:e$(),exit:e$()}}class ek{constructor(t){this.isMounted=!1,this.node=t}update(){}}class eC extends ek{constructor(t){super(t),t.animationState||(t.animationState=function(t){let r=r=>Promise.all(r.map(({animation:r,options:i})=>(function(t,r,i={}){let a;if(t.notify("AnimationStart",r),Array.isArray(r))a=Promise.all(r.map(r=>ey(t,r,i)));else if("string"==typeof r)a=ey(t,r,i);else{let n="function"==typeof r?d(t,r,i.custom):r;a=Promise.all(eb(t,n,i))}return a.then(()=>{t.notify("AnimationComplete",r)})})(t,r,i))),i=eS(),l=!0,u=r=>(i,a)=>{var n;let s=d(t,a,"exit"===r?null==(n=t.presenceContext)?void 0:n.custom:void 0);if(s){let{transition:t,transitionEnd:r,...a}=s;i={...i,...a,...r}}return i};function c(d){let{props:c}=t,f=function t(r){if(!r)return;if(!r.isControllingVariants){let i=r.parent&&t(r.parent)||{};return void 0!==r.props.initial&&(i.initial=r.props.initial),i}let i={};for(let t=0;t<e_;t++){let a=h[t],n=r.props[a];(o(n)||!1===n)&&(i[a]=n)}return i}(t.parent)||{},p=[],m=new Set,g={},b=1/0;for(let r=0;r<ex;r++){var y,v;let h=ew[r],_=i[h],w=void 0!==c[h]?c[h]:f[h],x=o(w),$=h===d?_.isActive:null;!1===$&&(b=r);let S=w===f[h]&&w!==c[h]&&x;if(S&&l&&t.manuallyAnimateOnMount&&(S=!1),_.protectedKeys={...g},!_.isActive&&null===$||!w&&!_.prevProp||a(w)||"boolean"==typeof w)continue;let k=(y=_.prevProp,"string"==typeof(v=w)?v!==y:!!Array.isArray(v)&&!s(v,y)),C=k||h===d&&_.isActive&&!S&&x||r>b&&x,E=!1,T=Array.isArray(w)?w:[w],I=T.reduce(u(h),{});!1===$&&(I={});let{prevResolvedValues:A={}}=_,N={...A,...I},O=r=>{C=!0,m.has(r)&&(E=!0,m.delete(r)),_.needsAnimating[r]=!0;let i=t.getValue(r);i&&(i.liveStyle=!1)};for(let t in N){let r=I[t],i=A[t];if(!g.hasOwnProperty(t))(n(r)&&n(i)?s(r,i):r===i)?void 0!==r&&m.has(t)?O(t):_.protectedKeys[t]=!0:null!=r?O(t):m.add(t)}_.prevProp=w,_.prevResolvedValues=I,_.isActive&&(g={...g,...I}),l&&t.blockInitialAnimation&&(C=!1);let M=!(S&&k)||E;C&&M&&p.push(...T.map(t=>({animation:t,options:{type:h}})))}if(m.size){let r={};m.forEach(i=>
2783{let a=t.getBaseTarget(i),n=t.getValue(i);n&&(n.liveStyle=!0),r[i]=null!=a?a:null}),p.push({animation:r})}let _=!!p.length;return l&&(!1===c.initial||c.initial===c.animate)&&!t.manuallyAnimateOnMount&&(_=!1),l=!1,_?r(p):Promise.resolve()}return{animateChanges:c,setActive:function(r,a){var n;if(i[r].isActive===a)return Promise.resolve();null==(n=t.variantChildren)||n.forEach(t=>{var i;return null==(i=t.animationState)?void 0:i.setActive(r,a)}),i[r].isActive=a;let s=c(r);for(let t in i)i[t].protectedKeys={};return s},setAnimateFunction:function(i){r=i(t)},getState:()=>i,reset:()=>{i=eS(),l=!0}}}(t))}updateAnimationControlsSubscription(){let{animate:t}=this.node.getProps();a(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){let{animate:t}=this.node.getProps(),{animate:r}=this.node.prevProps||{};t!==r&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),null==(t=this.unmountControls)||t.call(this)}}let eE=0;class eT extends ek{constructor(){super(...arguments),this.id=eE++}update(){if(!this.node.presenceContext)return;let{isPresent:t,onExitComplete:r}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;let a=this.node.animationState.setActive("exit",!t);r&&!t&&a.then(()=>r(this.id))}mount(){let{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}function eI(t,r,i,a={passive:!0}){return t.addEventListener(r,i,a),()=>t.removeEventListener(r,i)}function eA(t){return{point:{x:t.pageX,y:t.pageY}}}function eN(t,r,i,a){return eI(t,r,t=>(0,m.Mc)(t)&&i(t,eA(t)),a)}let eO=(t,r)=>Math.abs(t-r);var eM=i(2926);class eP{constructor(t,r,{transformPagePoint:i,contextWindow:a,dragSnapToOrigin:n=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;let t=ez(this.lastMoveEventInfo,this.history),r=null!==this.startEvent,i=function(t,r){return Math.sqrt(eO(t.x,r.x)**2+eO(t.y,r.y)**2)}(t.offset,{x:0,y:0})>=3;if(!r&&!i)return;let{point:a}=t,{timestamp:n}=k.uv;this.history.push({...a,timestamp:n});let{onStart:s,onMove:o}=this.handlers;r||(s&&s(this.lastMoveEvent,t),this.startEvent=this.lastMoveEvent),o&&o(this.lastMoveEvent,t)},this.handlePointerMove=(t,r)=>{this.lastMoveEvent=t,this.lastMoveEventInfo=eR(r,this.transformPagePoint),k.Gt.update(this.updatePoint,!0)},this.handlePointerUp=(t,r)=>{this.end();let{onEnd:i,onSessionEnd:a,resumeAnimation:n}=this.handlers;if(this.dragSnapToOrigin&&n&&n(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;let s=ez("pointercancel"===t.type?this.lastMoveEventInfo:eR(r,this.transformPagePoint),this.history);this.startEvent&&i&&i(t,s),a&&a(t,s)},!(0,m.Mc)(t))return;this.dragSnapToOrigin=n,this.handlers=r,this.transformPagePoint=i,this.contextWindow=a||window;let s=eR(eA(t),this.transformPagePoint),{point:o}=s,{timestamp:l}=k.uv;this.history=[{...o,timestamp:l}];let{onSessionStart:u}=r;u&&u(t,ez(s,this.history)),this.removeListeners=(0,eM.F)(eN(this.contextWindow,"pointermove",this.handlePointerMove),eN(this.contextWindow,"pointerup",this.handlePointerUp),eN(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),(0,k.WG)(this.updatePoint)}}function eR(t,r){return r?{point:r(t.point)}:t}function ej(t,r){return{x:t.x-r.x,y:t.y-r.y}}function ez({point:t},r){return{point:t,delta:ej(t,eD(r)),offset:ej(t,r[0]),velocity:function(t,r){if(t.length<2)return{x:0,y:0};let i=t.length-1,a=null,n=eD(t);for(;i>=0&&(a=t[i],!(n.timestamp-a.timestamp>(0,S.f)(.1)));)i--;if(!a)return{x:0,y:0};let s=(0,S.X)(n.timestamp-a.timestamp);if(0===s)return{x:0,y:0};let o={x:(n.x-a.x)/s,y:(n.y-a.y)/s};return o.x===1/0&&(o.x=0),o.y===1/0&&(o.y=0),o}(r,.1)}}function eD(t){return t[t.length-1]}function eB(t){return t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,"current")}var eL=i(2589),eU=i(90360);function eF(t){return t.max-t.min}function eq(t,r,i,a=.5){t.origin=a,t.originPoint=(0,eU.k)(r.min,r.max,t.origin),t.scale=eF(i)/eF(r),t.translate=(0,eU.k)(i.min,i.max,t.origin)-t.originPoint,(t.scale>=.9999&&t.scale<=1.0001||isNaN(t.scale))&&(t.scale=1),(t.translate>=-.01&&t.translate<=.01||isNaN(t.translate))&&(t.translate=0)}function eV(t,r,i,a){eq(t.x,r.x,i.x,a?a.originX:void 0),eq(t.y,r.y,i.y,a?a.originY:void 0)}function eW(t,r,i){t.min=i.min+r.min,t.max=t.min+eF(r)}function eH(t,r,i){t.min=r.min-i.min,t.max=t.min+eF(r)}function eG(t,r,i){eH(t.x,r.x,i.x),eH(t.y,r.y,i.y)}var eK=i(94349);function eY(t,r,i){return{min:void 0!==r?t.min+r:void 0,max:void 0!==i?t.max+i-(t.max-t.min):void 0}}function eQ(t,r){let i=r.min-t.min,a=r.max-t.max;return r.max-r.min<t.max-t.min&&([i,a]=[a,i]),{min:i,max:a}}function eX(t,r,i){return{min:eZ(t,r),max:eZ(t,i)}}function eZ(t,r){return"number"==typeof t?t:t[r]||0}let eJ=()=>({translate:0,scale:1,origin:0,originPoint:0}),e1=()=>({x:eJ(),y:eJ()}),e0=()=>({min:0,max:0}),e2=()=>({x:e0(),y:e0()});function e3(t){return[t("x"),t("y")]}function e4({top:t,left:r,right:i,bottom:a}){return{x:{min:r,max:i},y:{min:t,max:a}}}function e8(t){return void 0===t||1===t}function e7({scale:t,scaleX:r,scaleY:i}){return!e8(t)||!e8(r)||!e8(i)}function e6(t){return e7(t)||e5(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function e5(t){var r,i;return(r=t.x)&&"0%"!==r||(i=t.y)&&"0%"!==i}function e9(t,r,i,a,n){return void 0!==n&&(t=a+n*(t-a)),a+i*(t-a)+r}function te(t,r=0,i=1,a,n){t.min=e9(t.min,r,i,a,n),t.max=e9(t.max,r,i,a,n)}function tt(t,{x:r,y:i}){te(t.x,r.translate,r.scale,r.originPoint),te(t.y,i.translate,i.scale,i.originPoint)}function tr(t,r){t.min=t.min+r,t.max=t.max+r}function ti(t,r,i,a,n=.5){let s=(0,eU.k)(t.min,t.max,n);te(t,r,i,s,a)}function ta(t,r){ti(t.x,r.x,r.scaleX,r.scale,r.originX),ti(t.y,r.y,r.scaleY,r.scale,r.originY)}function tn(t,r){return e4(function(t,r){if(!r)return t;let i=r({x:t.left,y:t.top}),a=r({x:t.right,y:t.bottom});return{top:i.y,left:i.x,bottom:a.y,right:a.x}}(t.getBoundingClientRect(),r))}let ts=({current:t})=>t?t.ownerDocument.defaultView:null,to=new WeakMap;class tl{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=e2(),this.visualElement=t}start(t,{snapToCursor:r=!1}={}){let{presenceContext:i}=this.visualElement;if(i&&!1===i.isPresent)return;let a=t=>{let{dragSnapToOrigin:i}=this.getProps();i?this.pauseAnimation():this.stopAnimation(),r&&this.snapToCursor(eA(t).point)},n=(t,r)=>{let{drag:i,dragPropagation:a,onDragStart:n}=this.getProps();if(i&&!a&&(this.openDragLock&&this.openDragLock(),this.openDragLock=(0,m.Wp)(i),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),e3(t=>{let r=this.getAxisMotionValue(t).get()||0;if(U.KN.test(r)){let{projection:i}=this.visualElement;if(i&&i.layout){let a=i.layout.layoutBox[t];a&&(r=eF(a)*(parseFloat(r)/100))}}this.originPoint[t]=r}),n&&k.Gt.postRender(()=>n(t,r)),w(this.visualElement,"transform");let{animationState:s}=this.visualElement;s&&s.setActive("whileDrag",!0)},s=(t,r)=>{let{dragPropagation:i,dragDirectionLock:a,onDirectionLock:n,onDrag:s}=this.getProps();if(!i&&!this.openDragLock)return;let{offset:o}=r;if(a&&null===this.currentDirection){this.currentDirection=function(t,r=10){let i=null;return Math.abs(t.y)>r?i="y":Math.abs(t.x)>r&&(i="x"),i}(o),null!==this.currentDirection&&n&&n(this.currentDirection);return}this.updateAxis("x",r.point,o),this.updateAxis("y",r.point,o),this.visualElement.render(),s&&s(t,r)},o=(t,r)=>this.stop(t,r),l=()=>e3(t=>{var r;return"paused"===this.getAnimationState(t)&&(null==(r=this.getAxisMotionValue(t).animation)?void 0:r.play())}),{dragSnapToOrigin:u}=this.getProps();this.panSession=new eP(t,{onSessionStart:a,onStart:n,onMove:s,onSessionEnd:o,resumeAnimation:l},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:u,contextWindow:ts(this.visualElement)})}stop(t,r){let i=this.isDragging;if(this.cancel(),!i)return;let{velocity:a}=r;this.startAnimation(a);let{onDragEnd:n}=this.getProps();n&&k.Gt.postRender(()=>n(t,r))}cancel(){this.isDragging=!1;let{projection:t,animationState:r}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;let{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),r&&r.setActive("whileDrag",!1)}updateAxis(t,r,i){let{drag:a}=this.getProps();if(!i||!tu(t,a,this.currentDirection))return;let n=this.getAxisMotionValue(t),s=this.originPoint[t]+i[t];this.constraints&&this.constraints[t]&&(s=function(t,{min:r,max:i},a){return void 0!==r&&t<r?t=a?(0,eU.k)(r,t,a.min):Math.max(t,r):void 0!==i&&t>i&&(t=a?(0,eU.k)(i,t,a.max):Math.min(t,i)),t}(s,this.constraints[t],this.elastic[t])),n.set(s)}resolveConstraints(){var t;let{dragConstraints:r,dragElastic:i}=this.getProps(),a=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):null==(t=this.visualElement.projection)?void 0:t.layout,n=this.constraints;r&&eB(r)?this.constraints||(this.constraints=this.resolveRefConstraints()):r&&a?this.constraints=function(t,{top:r,left:i,bottom:a,right:n}){return{x:eY(t.x,i,n),y:eY(t.y,r,a)}}(a.layoutBox,r):this.constraints=!1,this.elastic=function(t=.35){return!1===t?t=0:!0===t&&(t=.35),{x:eX(t,"left","right"),y:eX(t,"top","bottom")}}(i),n!==this.constraints&&a&&this.constraints&&!this.hasMutatedConstraints&&e3(t=>{!1!==this.constraints&&this.getAxisMotionValue(t)&&(this.constraints[t]=function(t,r){let i={};return void 0!==r.min&&(i.min=r.min-t.min),void 0!==r.max&&(i.max=r.max-t.min),i}(a.layoutBox[t],this.constraints[t]))})}resolveRefConstraints(){var t;let{dragConstraints:r,onMeasureDragConstraints:i}=this.getProps();if(!r||!eB(r))return!1;let a=r.current;(0,X.V)(null!==a,"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.");let{projection:n}=this.visualElement;if(!n||!n.layout)return!1;let s=function(t,r,i){let a=tn(t,i),{scroll:n}=r;return n&&(tr(a.x,n.offset.x),tr(a.y,n.offset.y)),a}(a,n.root,this.visualElement.getTransformPagePoint()),o=(t=n.layout.layoutBox,{x:eQ(t.x,s.x),y:eQ(t.y,s.y)});if(i){let t=i(function({x:t,y:r}){return{top:r.min,right:t.max,bottom:r.max,left:t.min}}(o));this.hasMutatedConstraints=!!t,t&&(o=e4(t))}return o}startAnimation(t){let{drag:r,dragMomentum:i,dragElastic:a,dragTransition:n,dragSnapToOrigin:s,onDragTransitionEnd:o}=this.getProps(),l=this.constraints||{};return Promise.all(e3(o=>{if(!tu(o,r,this.currentDirection))return;let u=l&&l[o]||{};s&&(u={min:0,max:0});let d={type:"inertia",velocity:i?t[o]:0,bounceStiffness:a?200:1e6,bounceDamping:a?40:1e7,timeConstant:750,restDelta:1,restSpeed:10,...n,...u};return this.startAxisValueAnimation(o,d)})).then(o)}startAxisValueAnimation(t,r){let i=this.getAxisMotionValue(t);return w(this.visualElement,t),i.start(eg(t,i,0,r,this.visualElement,!1))}stopAnimation(){e3(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){e3(t=>{var r;return null==(r=this.getAxisMotionValue(t).animation)?void 0:r.pause()})}getAnimationState(t){var r;return null==(r=this.getAxisMotionValue(t).animation)?void 0:r.state}getAxisMotionValue(t){let r=`_drag${t.toUpperCase()}`,i=this.visualElement.getProps();return i[r]||this.visualElement.getValue(t,(i.initial?i.initial[t]:void 0)||0)}snapToCursor(t){e3(r=>{let{drag:i}=this.getProps();if(!tu(r,i,this.currentDirection))return;let{projection:a}=this.visualElement,n=this.getAxisMotionValue(r);if(a&&a.layout){let{min:i,max:s}=a.layout.layoutBox[r];n.set(t[r]-(0,eU.k)(i,s,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;let{drag:t,dragConstraints:r}=this.getProps(),{projection:i}=this.visualElement;if(!eB(r)||!i||!this.constraints)return;this.stopAnimation();let a={x:0,y:0};e3(t=>{let r=this.getAxisMotionValue(t);if(r&&!1!==this.constraints){let i=r.get();a[t]=function(t,r){let i=.5,a=eF(t),n=eF(r);return n>a?i=(0,eL.q)(r.min,r.max-a,t.min):a>n&&(i=(0,eL.q)(t.min,t.max-n,r.min)),(0,eK.q)(0,1,i)}({min:i,max:i},this.constraints[t])}});let{transformTemplate:n}=this.visualElement.getProps();this.visualElement.current.style.transform=n?n({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),e3(r=>{if(!tu(r,t,null))return;let i=this.getAxisMotionValue(r),{min:n,max:s}=this.constraints[r];i.set((0,eU.k)(n,s,a[r]))})}addListeners(){if(!this.visualElement.current)return;to.set(this.visualElement,this);let t=eN(this.visualElement.current,"pointerdown",t=>{let{drag:r,dragListener:i=!0}=this.getProps();r&&i&&this.start(t)}),r=()=>{let{dragConstraints:t}=this.getProps();eB(t)&&t.current&&(this.constraints=this.resolveRefConstraints())},{projection:i}=this.visualElement,a=i.addEventListener("measure",r);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),k.Gt.read(r);let n=eI(window,"resize",()=>this.scalePositionWithinConstraints()),s=i.addEventListener("didUpdate",({delta:t,hasLayoutChanged:r})=>{this.isDragging&&r&&(e3(r=>{let i=this.getAxisMotionValue(r);i&&(this.originPoint[r]+=t[r].translate,i.set(i.get()+t[r].translate))}),this.visualElement.render())});return()=>{n(),t(),a(),s&&s()}}getProps(){let t=this.visualElement.getProps(),{drag:r=!1,dragDirectionLock:i=!1,dragPropagation:a=!1,dragConstraints:n=!1,dragElastic:s=.35,dragMomentum:o=!0}=t;return{...t,drag:r,dragDirectionLock:i,dragPropagation:a,dragConstraints:n,dragElastic:s,dragMomentum:o}}}function tu(t,r,i){return(!0===r||r===t)&&(null===i||i===t)}class td extends ek{constructor(t){super(t),this.removeGroupControls=T.l,this.removeListeners=T.l,this.controls=new tl(t)}mount(){let{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||T.l}unmount(){this.removeGroupControls(),this.removeListeners()}}let tc=t=>(r,i)=>{t&&k.Gt.postRender(()=>t(r,i))};class th extends ek{constructor(){super(...arguments),this.removePointerDownListener=T.l}onPointerDown(t){this.session=new eP(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:ts(this.node)})}createPanHandlers(){let{onPanSessionStart:t,onPanStart:r,onPan:i,onPanEnd:a}=this.node.getProps();return{onSessionStart:tc(t),onStart:tc(r),onMove:i,onEnd:(t,r)=>{delete this.session,a&&k.Gt.postRender(()=>a(t,r))}}}mount(){this.removePointerDownListener=eN(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}var tf=i(37876),tp=i(14232),tm=i(83885),tg=i(5048);let tb=(0,tp.createContext)({}),ty={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function tv(t,r){return r.max===r.min?0:t/(r.max-r.min)*100}let t_={correct:(t,r)=>{if(!r.target)return t;if("string"==typeof t)if(!U.px.test(t))return t;else t=parseFloat(t);let i=tv(t,r.target.x),a=tv(t,r.target.y);return`${i}% ${a}%`}},tw={},{schedule:tx,cancel:t$}=(0,i(53746).I)(queueMicrotask,!1);class tS extends tp.Component{componentDidMount(){let{visualElement:t,layoutGroup:r,switchLayoutGroup:i,layoutId:a}=this.props,{projection:n}=t;Object.assign(tw,tC),n&&(r.group&&r.group.add(n),i&&i.register&&a&&i.register(n),n.root.didUpdate(),n.addEventListener("animationComplete",()=>{this.safeToRemove()}),n.setOptions({...n.options,onExitComplete:()=>this.safeToRemove()})),ty.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){let{layoutDependency:r,visualElement:i,drag:a,isPresent:n}=this.props,s=i.projection;return s&&(s.isPresent=n,a||t.layoutDependency!==r||void 0===r?s.willUpdate():this.safeToRemove(),t.isPresent!==n&&(n?s.promote():s.relegate()||k.Gt.postRender(()=>{let t=s.getStack();t&&t.members.length||this.safeToRemove()}))),null}componentDidUpdate(){let{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),tx.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){let{visualElement:t,layout
2783Group:r,switchLayoutGroup:i}=this.props,{projection:a}=t;a&&(a.scheduleCheckAfterUnmount(),r&&r.group&&r.group.remove(a),i&&i.deregister&&i.deregister(a))}safeToRemove(){let{safeToRemove:t}=this.props;t&&t()}render(){return null}}function tk(t){let[r,i]=(0,tm.xQ)(),a=(0,tp.useContext)(tg.L);return(0,tf.jsx)(tS,{...t,layoutGroup:a,switchLayoutGroup:(0,tp.useContext)(tb),isPresent:r,safeToRemove:i})}let tC={borderRadius:{...t_,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:t_,borderTopRightRadius:t_,borderBottomLeftRadius:t_,borderBottomRightRadius:t_,boxShadow:{correct:(t,{treeScale:r,projectionDelta:i})=>{let a=M.f.parse(t);if(a.length>5)return t;let n=M.f.createTransformer(t),s=+("number"!=typeof a[0]),o=i.x.scale*r.x,l=i.y.scale*r.y;a[0+s]/=o,a[1+s]/=l;let u=(0,eU.k)(o,l,.5);return"number"==typeof a[2+s]&&(a[2+s]/=u),"number"==typeof a[3+s]&&(a[3+s]/=u),n(a)}}};var tE=i(21623),tT=i(40215);let tI=(t,r)=>t.depth-r.depth;class tA{constructor(){this.children=[],this.isDirty=!1}add(t){(0,tT.Kq)(this.children,t),this.isDirty=!0}remove(t){(0,tT.Ai)(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(tI),this.isDirty=!1,this.children.forEach(t)}}var tN=i(10223);function tO(t){let r=(0,_.S)(t)?t.get():t;return r&&"object"==typeof r&&r.mix&&r.toValue?r.toValue():r}let tM=["TopLeft","TopRight","BottomLeft","BottomRight"],tP=tM.length,tR=t=>"string"==typeof t?parseFloat(t):t,tj=t=>"number"==typeof t||U.px.test(t);function tz(t,r){return void 0!==t[r]?t[r]:t.borderRadius}let tD=tL(0,.5,N.yT),tB=tL(.5,.95,T.l);function tL(t,r,i){return a=>a<t?0:a>r?1:i((0,eL.q)(t,r,a))}function tU(t,r){t.min=r.min,t.max=r.max}function tF(t,r){tU(t.x,r.x),tU(t.y,r.y)}function tq(t,r){t.translate=r.translate,t.scale=r.scale,t.originPoint=r.originPoint,t.origin=r.origin}function tV(t,r,i,a,n){return t-=r,t=a+1/i*(t-a),void 0!==n&&(t=a+1/n*(t-a)),t}function tW(t,r,[i,a,n],s,o){!function(t,r=0,i=1,a=.5,n,s=t,o=t){if(U.KN.test(r)&&(r=parseFloat(r),r=(0,eU.k)(o.min,o.max,r/100)-o.min),"number"!=typeof r)return;let l=(0,eU.k)(s.min,s.max,a);t===s&&(l-=r),t.min=tV(t.min,r,i,l,n),t.max=tV(t.max,r,i,l,n)}(t,r[i],r[a],r[n],r.scale,s,o)}let tH=["x","scaleX","originX"],tG=["y","scaleY","originY"];function tK(t,r,i,a){tW(t.x,r,tH,i?i.x:void 0,a?a.x:void 0),tW(t.y,r,tG,i?i.y:void 0,a?a.y:void 0)}function tY(t){return 0===t.translate&&1===t.scale}function tQ(t){return tY(t.x)&&tY(t.y)}function tX(t,r){return t.min===r.min&&t.max===r.max}function tZ(t,r){return Math.round(t.min)===Math.round(r.min)&&Math.round(t.max)===Math.round(r.max)}function tJ(t,r){return tZ(t.x,r.x)&&tZ(t.y,r.y)}function t1(t){return eF(t.x)/eF(t.y)}function t0(t,r){return t.translate===r.translate&&t.scale===r.scale&&t.originPoint===r.originPoint}class t2{constructor(){this.members=[]}add(t){(0,tT.Kq)(this.members,t),t.scheduleRender()}remove(t){if((0,tT.Ai)(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){let t=this.members[this.members.length-1];t&&this.promote(t)}}relegate(t){let r,i=this.members.findIndex(r=>t===r);if(0===i)return!1;for(let t=i;t>=0;t--){let i=this.members[t];if(!1!==i.isPresent){r=i;break}}return!!r&&(this.promote(r),!0)}promote(t,r){let i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,r&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);let{crossfade:a}=t.options;!1===a&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{let{options:r,resumingFrom:i}=t;r.onExitComplete&&r.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}let t3={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},t4="undefined"!=typeof window&&void 0!==window.MotionDebug,t8=["","X","Y","Z"],t7={visibility:"hidden"},t6=0;function t5(t,r,i,a){let{latestValues:n}=r;n[t]&&(i[t]=n[t],r.setStaticValue(t,0),a&&(a[t]=0))}function t9({attachResizeListener:t,defaultParent:r,measureScroll:i,checkIsScrollRoot:a,resetTransform:n}){return class{constructor(t={},i=null==r?void 0:r()){this.id=t6++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,t4&&(t3.totalNodes=t3.resolvedTargetDeltas=t3.recalculatedProjection=0),this.nodes.forEac
2783h(rr),this.nodes.forEach(ru),this.nodes.forEach(rd),this.nodes.forEach(ri),t4&&window.MotionDebug.record(t3)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=t,this.root=i?i.root||i:this,this.path=i?[...i.path,i]:[],this.parent=i,this.depth=i?i.depth+1:0;for(let t=0;t<this.path.length;t++)this.path[t].shouldResetTransform=!0;this.root===this&&(this.nodes=new tA)}addEventListener(t,r){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new tN.v),this.eventHandlers.get(t).add(r)}notifyListeners(t,...r){let i=this.eventHandlers.get(t);i&&i.notify(...r)}hasListeners(t){return this.eventHandlers.has(t)}mount(r,i=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=r instanceof SVGElement&&"svg"!==r.tagName,this.instance=r;let{layoutId:a,layout:n,visualElement:s}=this.options;if(s&&!s.current&&s.mount(r),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),i&&(n||a)&&(this.isLayoutDirty=!0),t){let i,a=()=>this.root.updateBlockedByResize=!1;t(r,()=>{this.root.updateBlockedByResize=!0,i&&i(),i=function(t,r){let i=tE.k.now(),a=({timestamp:r})=>{let n=r-i;n>=250&&((0,k.WG)(a),t(n-250))};return k.Gt.read(a,!0),()=>(0,k.WG)(a)}(a,250),ty.hasAnimatedSinceResize&&(ty.hasAnimatedSinceResize=!1,this.nodes.forEach(rl))})}a&&this.root.registerSharedNode(a,this),!1!==this.options.animate&&s&&(a||n)&&this.addEventListener("didUpdate",({delta:t,hasLayoutChanged:r,hasRelativeTargetChanged:i,layout:a})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}let n=this.options.transition||s.getDefaultTransition()||rg,{onLayoutAnimationStart:o,onLayoutAnimationComplete:l}=s.getProps(),u=!this.targetLayout||!tJ(this.targetLayout,a)||i,d=!r&&i;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||d||r&&(u||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(t,d);let r={...(0,m.rU)(n,"layout"),onPlay:o,onComplete:l};(s.shouldReduceMotion||this.options.layoutRoot)&&(r.delay=0,r.type=!1),this.startAnimation(r)}else r||rl(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=a})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);let t=this.getStack();t&&t.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,(0,k.WG)(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){!this.isUpdateBlocked()&&(this.isUpdating=!0,this.nodes&&this.nodes.forEach(rc),this.animationId++)}getTransformTemplate(){let{visualElement:t}=this.options;return t&&t.getProps().transformTemplate}willUpdate(t=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&function t(r){if(r.hasCheckedOptimisedAppear=!0,r.root===r)return;let{visualElement:i}=r.options;if(!i)return;let a=i.props[$];if(window.MotionHasOptimisedAnimation(a,"transform")){let{layout:t,layoutId:i}=r.options;window.MotionCancelOptimisedAnimation(a,"transform",k.Gt,!(t||i))}let{parent:n}=r;n&&!n.hasCheckedOptimisedAppear&&t(n)}(this),this.root.isUpdating||this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let t=0;t<this.path.length;t++){let r=this.path[t];r.shouldResetTransform=!0,r.updateScroll("snapshot"),r.options.layoutRoot&&r.willUpdate(!1)}let{layoutId:r,layout:i}=this.options;if(void 0===r&&!i)return;let a=this.getTransformTemplate();this.prevTransformTemplateValue=a?a(this.latestValues,""):void 0,this.updateSnapshot(),t&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEac
2783h(rn);return}this.isUpdating||this.nodes.forEach(rs),this.isUpdating=!1,this.nodes.forEach(ro),this.nodes.forEach(re),this.nodes.forEach(rt),this.clearAllSnapshots();let t=tE.k.now();k.uv.delta=(0,eK.q)(0,1e3/60,t-k.uv.timestamp),k.uv.timestamp=t,k.uv.isProcessing=!0,k.PP.update.process(k.uv),k.PP.preRender.process(k.uv),k.PP.render.process(k.uv),k.uv.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,tx.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(ra),this.sharedNodes.forEach(rh)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,k.Gt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){k.Gt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){!this.snapshot&&this.instance&&(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let t=0;t<this.path.length;t++)this.path[t].updateScroll();let t=this.layout;this.layout=this.measure(!1),this.layoutCorrected=e2(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);let{visualElement:r}=this.options;r&&r.notify("LayoutMeasure",this.layout.layoutBox,t?t.layoutBox:void 0)}updateScroll(t="measure"){let r=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===t&&(r=!1),r){let r=a(this.instance);this.scroll={animationId:this.root.animationId,phase:t,isRoot:r,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:r}}}resetTransform(){if(!n)return;let t=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,r=this.projectionDelta&&!tQ(this.projectionDelta),i=this.getTransformTemplate(),a=i?i(this.latestValues,""):void 0,s=a!==this.prevTransformTemplateValue;t&&(r||e6(this.latestValues)||s)&&(n(this.instance,a),this.shouldResetTransform=!1,this.scheduleRender())}measure(t=!0){var r;let i=this.measurePageBox(),a=this.removeElementScroll(i);return t&&(a=this.removeTransform(a)),rv((r=a).x),rv(r.y),{animationId:this.root.animationId,measuredBox:i,layoutBox:a,latestValues:{},source:this.id}}measurePageBox(){var t;let{visualElement:r}=this.options;if(!r)return e2();let i=r.measureViewportBox();if(!((null==(t=this.scroll)?void 0:t.wasRoot)||this.path.some(rw))){let{scroll:t}=this.root;t&&(tr(i.x,t.offset.x),tr(i.y,t.offset.y))}return i}removeElementScroll(t){var r;let i=e2();if(tF(i,t),null==(r=this.scroll)?void 0:r.wasRoot)return i;for(let r=0;r<this.path.length;r++){let a=this.path[r],{scroll:n,options:s}=a;a!==this.root&&n&&s.layoutScroll&&(n.wasRoot&&tF(i,t),tr(i.x,n.offset.x),tr(i.y,n.offset.y))}return i}applyTransform(t,r=!1){let i=e2();tF(i,t);for(let t=0;t<this.path.length;t++){let a=this.path[t];!r&&a.options.layoutScroll&&a.scroll&&a!==a.root&&ta(i,{x:-a.scroll.offset.x,y:-a.scroll.offset.y}),e6(a.latestValues)&&ta(i,a.latestValues)}return e6(this.latestValues)&&ta(i,this.latestValues),i}removeTransform(t){let r=e2();tF(r,t);for(let t=0;t<this.path.length;t++){let i=this.path[t];if(!i.instance||!e6(i.latestValues))continue;e7(i.latestValues)&&i.updateSnapshot();let a=e2();tF(a,i.measurePageBox()),tK(r,i.latestValues,i.snapshot?i.snapshot.layoutBox:void 0,a)}return e6(this.latestValues)&&tK(r,this.latestValues),r}setTargetDelta(t){this.targetDelta=t,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(t){this.options={...this.options,...t,crossfade:void 0===t.crossfade||t.crossfade}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==k.uv.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(t=!1){var r,i,a,n;let s=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=s.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=s.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=s.isS
2783haredProjectionDirty);let o=!!this.resumingFrom||this!==s;if(!(t||o&&this.isSharedProjectionDirty||this.isProjectionDirty||(null==(r=this.parent)?void 0:r.isProjectionDirty)||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;let{layout:l,layoutId:u}=this.options;if(this.layout&&(l||u)){if(this.resolvedRelativeTargetAt=k.uv.timestamp,!this.targetDelta&&!this.relativeTarget){let t=this.getClosestProjectingParent();t&&t.layout&&1!==this.animationProgress?(this.relativeParent=t,this.forceRelativeParentToResolveTarget(),this.relativeTarget=e2(),this.relativeTargetOrigin=e2(),eG(this.relativeTargetOrigin,this.layout.layoutBox,t.layout.layoutBox),tF(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(this.relativeTarget||this.targetDelta){if((this.target||(this.target=e2(),this.targetWithTransforms=e2()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target)?(this.forceRelativeParentToResolveTarget(),i=this.target,a=this.relativeTarget,n=this.relativeParent.target,eW(i.x,a.x,n.x),eW(i.y,a.y,n.y)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):tF(this.target,this.layout.layoutBox),tt(this.target,this.targetDelta)):tF(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;let t=this.getClosestProjectingParent();t&&!!t.resumingFrom==!!this.resumingFrom&&!t.options.layoutScroll&&t.target&&1!==this.animationProgress?(this.relativeParent=t,this.forceRelativeParentToResolveTarget(),this.relativeTarget=e2(),this.relativeTargetOrigin=e2(),eG(this.relativeTargetOrigin,this.target,t.target),tF(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}t4&&t3.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||e7(this.parent.latestValues)||e5(this.parent.latestValues)))if(this.parent.isProjecting())return this.parent;else return this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var t;let r=this.getLead(),i=!!this.resumingFrom||this!==r,a=!0;if((this.isProjectionDirty||(null==(t=this.parent)?void 0:t.isProjectionDirty))&&(a=!1),i&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(a=!1),this.resolvedRelativeTargetAt===k.uv.timestamp&&(a=!1),a)return;let{layout:n,layoutId:s}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(n||s))return;tF(this.layoutCorrected,this.layout.layoutBox);let o=this.treeScale.x,l=this.treeScale.y;!function(t,r,i,a=!1){let n,s,o=i.length;if(o){r.x=r.y=1;for(let l=0;l<o;l++){s=(n=i[l]).projectionDelta;let{visualElement:o}=n.options;(!o||!o.props.style||"contents"!==o.props.style.display)&&(a&&n.options.layoutScroll&&n.scroll&&n!==n.root&&ta(t,{x:-n.scroll.offset.x,y:-n.scroll.offset.y}),s&&(r.x*=s.x.scale,r.y*=s.y.scale,tt(t,s)),a&&e6(n.latestValues)&&ta(t,n.latestValues))}r.x<1.0000000000001&&r.x>.999999999999&&(r.x=1),r.y<1.0000000000001&&r.y>.999999999999&&(r.y=1)}}(this.layoutCorrected,this.treeScale,this.path,i),r.layout&&!r.target&&(1!==this.treeScale.x||1!==this.treeScale.y)&&(r.target=r.layout.layoutBox,r.targetWithTransforms=e2());let{target:u}=r;if(!u){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}this.projectionDelta&&this.prevProjectionDelta?(tq(this.prevProjectionDelta.x,this.projectionDelta.x),tq(this.prevProjectionDelta.y,this.projectionDelta.y)):this.createProjectionDeltas(),eV(this.projectionDelta,this.layoutCorrected,u,this.latestValues),this.treeScale.x===o&&this.treeScale.y===l&&t0(this.projectionDelta.x,this.prevProjectionDelta.x)&&t0(this.projectionDelta.y,this.prevProjectionDelta.y)||(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",u)),t4&&t3.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(t=!0){var r;if(null==(r=this.options.visualElement)||r.scheduleRender(),t){let t=this.getStack();t&&t.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=e1(),this.projectionDelta=e1(),this.projectionDeltaWithTransform=e1()}setAnimationOrigin(t,r=!1){let i,a=this.snapshot,n=a?a.latestValues:{},s={...this.latestValues},o=e1();this.relativeParent&&this.relativeParent.options.layoutRoot||(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!r;let l=e2(),u=(a?a.source:void 0)!==(this.layout?this.layout.source:void 0),d=this.getStack(),c=!d||d.members.length<=1,h=!!(u&&!c&&!0===this.options.crossfade&&!this.path.some(rm));this.animationProgress=0,this.mixTargetDelta=r=>{let a=r/1e3;if(rf(o.x,t.x,a),rf(o.y,t.y,a),this.setTargetDelta(o),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout){var d,f,p,m,g,b;eG(l,this.layout.layoutBox,this.relativeParent.layout.layoutBox),p=this.relativeTarget,m=this.relativeTargetOrigin,g=l,b=a,rp(p.x,m.x,g.x,b),rp(p.y,m.y,g.y,b),i&&(d=this.relativeTarget,f=i,tX(d.x,f.x)&&tX(d.y,f.y))&&(this.isProjectionDirty=!1),i||(i=e2()),tF(i,this.relativeTarget)}u&&(this.animationValues=s,function(t,r,i,a,n,s){n?(t.opacity=(0,eU.k)(0,void 0!==i.opacity?i.opacity:1,tD(a)),t.opacityExit=(0,eU.k)(void 0!==r.opacity?r.opacity:1,0,tB(a))):s&&(t.opacity=(0,eU.k)(void 0!==r.opacity?r.opacity:1,void 0!==i.opacity?i.opacity:1,a));for(let n=0;n<tP;n++){let s=`border${tM[n]}Radius`,o=tz(r,s),l=tz(i,s);(void 0!==o||void 0!==l)&&(o||(o=0),l||(l=0),0===o||0===l||tj(o)===tj(l)?(t[s]=Math.max((0,eU.k)(tR(o),tR(l),a),0),(U.KN.test(l)||U.KN.test(o))&&(t[s]+="%")):t[s]=l)}(r.rotate||i.rotate)&&(t.rotate=(0,eU.k)(r.rotate||0,i.rotate||0,a))}(s,n,this.latestValues,a,h,c)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=a},this.mixTargetDelta(1e3*!!this.options.layoutRoot)}startAnimation(t){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&((0,k.WG)(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=k.Gt.update(()=>{ty.hasAnimatedSinceResize=!0,this.currentAnimation=function(t,r,i){let a=(0,_.S)(0)?0:(0,v.OQ)(t);return a.start(eg("",a,1e3,i)),a.animation}(0,0,{...t,onUpdate:r=>{this.mixTargetDelta(r),t.onUpdate&&t.onUpdate(r)},onComplete:()=>{t.onComplete&&t.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);let t=this.getStack();t&&t.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(1e3),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){let t=this.getLead(),{targetWithTransforms:r,target:i,layout:a,latestValues:n}=t;if(r&&i&&a){if(this!==t&&this.layout&&a&&r_(this.options.animationType,this.layout.layoutBox,a.layoutBox)){i=this.target||e2();let r=eF(this.layout.layoutBox.x);i.x.min=t.target.x.min,i.x.max=i.x.min+r;let a=eF(this.layout.layoutBox.y);i.y.min=t.target.y.min,i.y.max=i.y.min+a}tF(r,i),ta(r,n),eV(this.projectionDeltaWithTransform,this.layoutCorrected,r,n)}}registerSharedNode(t,r){this.sharedNodes.has(t)||this.sharedNodes.set(t,new t2),this.sharedNodes.get(t).add(r);let i=r.options.initialPromotionConfig;r.promote({transition:i?i.transition:void 0,preserveFollowOpacity:i&&i.shouldPreserveFollowOpacity?i.shouldPreserveFollowOpacity(r):void 0})}isLead(){let t=this.getStack();return!t||t.lead===this}getLead(){var t;let{layoutId:r}=this.options;return r&&(null==(t=this.getStack())?void 0:t.lead)||this}getPrevLead(){var t;let{layoutId:r}=this.options;return r?null==(t=this.getStack())?void 0:t.prevLead:void 0}getStack(){let{layoutId:t}=this.options;if(t)return this.root.sharedNodes.get(t)}promote({needsReset:t,transition:r,preserveFollowOpacity:i}={}){let a=this.getStack();a&&a.promote(this,i),t&&(this.projectionDelta=void 0,this.needsReset=!0),r&&this.setOptions({transition:r})}relegate(){let t=this.getStack();return!!t&&t.relegate(this)}
2783resetSkewAndRotation(){let{visualElement:t}=this.options;if(!t)return;let r=!1,{latestValues:i}=t;if((i.z||i.rotate||i.rotateX||i.rotateY||i.rotateZ||i.skewX||i.skewY)&&(r=!0),!r)return;let a={};i.z&&t5("z",t,a,this.animationValues);for(let r=0;r<t8.length;r++)t5(`rotate${t8[r]}`,t,a,this.animationValues),t5(`skew${t8[r]}`,t,a,this.animationValues);for(let r in t.render(),a)t.setStaticValue(r,a[r]),this.animationValues&&(this.animationValues[r]=a[r]);t.scheduleRender()}getProjectionStyles(t){var r,i;if(!this.instance||this.isSVG)return;if(!this.isVisible)return t7;let a={visibility:""},n=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,a.opacity="",a.pointerEvents=tO(null==t?void 0:t.pointerEvents)||"",a.transform=n?n(this.latestValues,""):"none",a;let s=this.getLead();if(!this.projectionDelta||!this.layout||!s.target){let r={};return this.options.layoutId&&(r.opacity=void 0!==this.latestValues.opacity?this.latestValues.opacity:1,r.pointerEvents=tO(null==t?void 0:t.pointerEvents)||""),this.hasProjected&&!e6(this.latestValues)&&(r.transform=n?n({},""):"none",this.hasProjected=!1),r}let o=s.animationValues||s.latestValues;this.applyTransformsToTarget(),a.transform=function(t,r,i){let a="",n=t.x.translate/r.x,s=t.y.translate/r.y,o=(null==i?void 0:i.z)||0;if((n||s||o)&&(a=`translate3d(${n}px, ${s}px, ${o}px) `),(1!==r.x||1!==r.y)&&(a+=`scale(${1/r.x}, ${1/r.y}) `),i){let{transformPerspective:t,rotate:r,rotateX:n,rotateY:s,skewX:o,skewY:l}=i;t&&(a=`perspective(${t}px) ${a}`),r&&(a+=`rotate(${r}deg) `),n&&(a+=`rotateX(${n}deg) `),s&&(a+=`rotateY(${s}deg) `),o&&(a+=`skewX(${o}deg) `),l&&(a+=`skewY(${l}deg) `)}let l=t.x.scale*r.x,u=t.y.scale*r.y;return(1!==l||1!==u)&&(a+=`scale(${l}, ${u})`),a||"none"}(this.projectionDeltaWithTransform,this.treeScale,o),n&&(a.transform=n(o,a.transform));let{x:l,y:u}=this.projectionDelta;for(let t in a.transformOrigin=`${100*l.origin}% ${100*u.origin}% 0`,s.animationValues?a.opacity=s===this?null!=(i=null!=(r=o.opacity)?r:this.latestValues.opacity)?i:1:this.preserveOpacity?this.latestValues.opacity:o.opacityExit:a.opacity=s===this?void 0!==o.opacity?o.opacity:"":void 0!==o.opacityExit?o.opacityExit:0,tw){if(void 0===o[t])continue;let{correct:r,applyTo:i}=tw[t],n="none"===a.transform?o[t]:r(o[t],s);if(i){let t=i.length;for(let r=0;r<t;r++)a[i[r]]=n}else a[t]=n}return this.options.layoutId&&(a.pointerEvents=s===this?tO(null==t?void 0:t.pointerEvents)||"":"none"),a}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(t=>{var r;return null==(r=t.currentAnimation)?void 0:r.stop()}),this.root.nodes.forEach(rn),this.root.sharedNodes.clear()}}}function re(t){t.updateLayout()}function rt(t){var r;let i=(null==(r=t.resumeFrom)?void 0:r.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&i&&t.hasListeners("didUpdate")){let{layoutBox:r,measuredBox:a}=t.layout,{animationType:n}=t.options,s=i.source!==t.layout.source;"size"===n?e3(t=>{let a=s?i.measuredBox[t]:i.layoutBox[t],n=eF(a);a.min=r[t].min,a.max=a.min+n}):r_(n,i.layoutBox,r)&&e3(a=>{let n=s?i.measuredBox[a]:i.layoutBox[a],o=eF(r[a]);n.max=n.min+o,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[a].max=t.relativeTarget[a].min+o)});let o=e1();eV(o,r,i.layoutBox);let l=e1();s?eV(l,t.applyTransform(a,!0),i.measuredBox):eV(l,r,i.layoutBox);let u=!tQ(o),d=!1;if(!t.resumeFrom){let a=t.getClosestProjectingParent();if(a&&!a.resumeFrom){let{snapshot:n,layout:s}=a;if(n&&s){let o=e2();eG(o,i.layoutBox,n.layoutBox);let l=e2();eG(l,r,s.layoutBox),tJ(o,l)||(d=!0),a.options.layoutRoot&&(t.relativeTarget=l,t.relativeTargetOrigin=o,t.relativeParent=a)}}}t.notifyListeners("didUpdate",{layout:r,snapshot:i,delta:l,layoutDelta:o,hasLayoutChanged:u,hasRelativeTargetChanged:d})}else if(t.isLead()){let{onExitComplete:r}=t.options;r&&r()}t.options.transition=void 0}function rr(t){t4&&t3.totalNodes++,t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function ri(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function ra(t){t.clearSnapshot()}function rn(t){t.clearMeasurements()}function rs(t){t.isLayoutDirty=!1}function ro(t){let{visualElement:r}=t.options;r&&r.getProps().onBeforeLayoutMeasure&&r.notify("BeforeLayoutMeasure"),t.resetTransform()}function rl(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function ru(t){t.resolveTargetDelta()}function rd(t){t.calcProjection()}
2783function rc(t){t.resetSkewAndRotation()}function rh(t){t.removeLeadSnapshot()}function rf(t,r,i){t.translate=(0,eU.k)(r.translate,0,i),t.scale=(0,eU.k)(r.scale,1,i),t.origin=r.origin,t.originPoint=r.originPoint}function rp(t,r,i,a){t.min=(0,eU.k)(r.min,i.min,a),t.max=(0,eU.k)(r.max,i.max,a)}function rm(t){return t.animationValues&&void 0!==t.animationValues.opacityExit}let rg={duration:.45,ease:[.4,0,.1,1]},rb=t=>"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),ry=rb("applewebkit/")&&!rb("chrome/")?Math.round:T.l;function rv(t){t.min=ry(t.min),t.max=ry(t.max)}function r_(t,r,i){return"position"===t||"preserve-aspect"===t&&!(.2>=Math.abs(t1(r)-t1(i)))}function rw(t){var r;return t!==t.root&&(null==(r=t.scroll)?void 0:r.wasRoot)}let rx=t9({attachResizeListener:(t,r)=>eI(t,"resize",r),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),r$={current:void 0},rS=t9({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!r$.current){let t=new rx({});t.mount(window),t.setOptions({layoutScroll:!0}),r$.current=t}return r$.current},resetTransform:(t,r)=>{t.style.transform=void 0!==r?r:"none"},checkIsScrollRoot:t=>"fixed"===window.getComputedStyle(t).position});function rk(t,r,i){let{props:a}=t;t.animationState&&a.whileHover&&t.animationState.setActive("whileHover","Start"===i);let n=a["onHover"+i];n&&k.Gt.postRender(()=>n(r,eA(r)))}class rC extends ek{mount(){let{current:t}=this.node;t&&(this.unmount=(0,m.PT)(t,t=>(rk(this.node,t,"Start"),t=>rk(this.node,t,"End"))))}unmount(){}}class rE extends ek{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch(r){t=!0}t&&this.node.animationState&&(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){this.isActive&&this.node.animationState&&(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=(0,eM.F)(eI(this.node.current,"focus",()=>this.onFocus()),eI(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function rT(t,r,i){let{props:a}=t;t.animationState&&a.whileTap&&t.animationState.setActive("whileTap","Start"===i);let n=a["onTap"+("End"===i?"":i)];n&&k.Gt.postRender(()=>n(r,eA(r)))}class rI extends ek{mount(){let{current:t}=this.node;t&&(this.unmount=(0,m.c$)(t,t=>(rT(this.node,t,"Start"),(t,{success:r})=>rT(this.node,t,r?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}let rA=new WeakMap,rN=new WeakMap,rO=t=>{let r=rA.get(t.target);r&&r(t)},rM=t=>{t.forEach(rO)},rP={some:0,all:1};class rR extends ek{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();let{viewport:t={}}=this.node.getProps(),{root:r,margin:i,amount:a="some",once:n}=t,s={root:r?r.current:void 0,rootMargin:i,threshold:"number"==typeof a?a:rP[a]},o=t=>{let{isIntersecting:r}=t;if(this.isInView===r||(this.isInView=r,n&&!r&&this.hasEnteredView))return;r&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",r);let{onViewportEnter:i,onViewportLeave:a}=this.node.getProps(),s=r?i:a;s&&s(t)};var l=this.node.current;let u=function({root:t,...r}){let i=t||document;rN.has(i)||rN.set(i,{});let a=rN.get(i),n=JSON.stringify(r);return a[n]||(a[n]=new IntersectionObserver(rM,{root:t,...r})),a[n]}(s);return rA.set(l,o),u.observe(l),()=>{rA.delete(l),u.unobserve(l)}}mount(){this.startObserver()}update(){if("undefined"==typeof IntersectionObserver)return;let{props:t,prevProps:r}=this.node;["amount","margin","root"].some(function({viewport:t={}},{viewport:r={}}={}){return i=>t[i]!==r[i]}(t,r))&&this.startObserver()}unmount(){}}let rj=(0,tp.createContext)({strict:!1});var rz=i(39751);let rD=(0,tp.createContext)({});function rB(t){return a(t.animate)||h.some(r=>o(t[r]))}function rL(t){return!!(rB(t)||t.variants)}function rU(t){return Array.isArray(t)?t.join(" "):t}var rF=i(2205);let rq={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},rV={};for(let t in rq)rV[t]={isEnabled:r=>rq[t].some(t=>!!r[t])};let rW=Symbol.for("motionComponentSymbol");var rH=i(3866),rG=i(50181);let rK=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function rY(t){if("string"!=typeof t||t.includes("-"));else if(rK.indexOf(t)>-1||/[A-Z]/u.test(t))return!0;return!1}var rQ=i(91200);let rX=t=>(r,i)=>{let n=(0,tp.useContext)(rD),s=(0,tp.useContext)(rH.t),o=()=>(function({scrapeMotionValuesFromProps:t,createRenderState:r,onUpdate:i},n,s,o){let l={latestValues:function(t,r,i,n){let s={},o=n(t,{});for(let t in o)s[t]=tO(o[t]);let{initial:l,animate:d}=t,c=rB(t),h=rL(t);r&&h&&!c&&!1!==t.inherit&&(void 0===l&&(l=r.initial),void 0===d&&(d=r.animate));let f=!!i&&!1===i.initial,p=(f=f||!1===l)?d:l;if(p&&"boolean"!=typeof p&&!a(p)){let r=Array.isArray(p)?p:[p];for(let i=0;i<r.length;i++){let a=u(t,r[i]);if(a){let{transitionEnd:t,transition:r,...i}=a;for(let t in i){let r=i[t];if(Array.isArray(r)){let t=f?r.length-1:0;r=r[t]}null!==r&&(s[t]=r)}for(let r in t)s[r]=t[r]}}}return s}(n,s,o,t),renderState:r()};return i&&(l.onMount=t=>i({props:n,current:t,...l}),l.onUpdate=t=>i(t)),l})(t,r,n,s);return i?o():(0,rQ.M)(o)},rZ=(t,r)=>r&&"number"==typeof t?r.transform(t):t,rJ={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},r1=g.U.length;function r0(t,r,i){let{style:a,vars:n,transformOrigin:s}=t,o=!1,l=!1;for(let t in r){let i=r[t];if(g.f.has(t)){o=!0;continue}if((0,J.j)(t)){n[t]=i;continue}{let r=rZ(i,W[t]);t.startsWith("origin")?(l=!0,s[t]=r):a[t]=r}}if(!r.transform&&(o||i?a.transform=function(t,r,i){let a="",n=!0;for(let s=0;s<r1;s++){let o=g.U[s],l=t[o];if(void 0===l)continue;let u=!0;if(!(u="number"==typeof l?l===+!!o.startsWith("scale"):0===parseFloat(l))||i){let t=rZ(l,W[o]);if(!u){n=!1;let r=rJ[o]||o;a+=`${r}(${t}) `}i&&(r[o]=t)}}return a=a.trim(),i?a=i(r,n?"":a):n&&(a="none"),a}(r,t.transform,i):a.transform&&(a.transform="none")),l){let{originX:t="50%",originY:r="50%",originZ:i=0}=s;a.transformOrigin=`${t} ${r} ${i}`}}let r2={offset:"stroke-dashoffset",array:"stroke-dasharray"},r3={offset:"strokeDashoffset",array:"strokeDasharray"};function r4(t,r,i){return"string"==typeof t?t:U.px.transform(r+i*t)}function r8(t,{attrX:r,attrY:i,attrScale:a,originX:n,originY:s,pathLength:o,pathSpacing:l=1,pathOffset:u=0,...d}
2783,c,h){if(r0(t,d,h),c){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};let{attrs:f,style:p,dimensions:m}=t;f.transform&&(m&&(p.transform=f.transform),delete f.transform),m&&(void 0!==n||void 0!==s||p.transform)&&(p.transformOrigin=function(t,r,i){let a=r4(r,t.x,t.width),n=r4(i,t.y,t.height);return`${a} ${n}`}(m,void 0!==n?n:.5,void 0!==s?s:.5)),void 0!==r&&(f.x=r),void 0!==i&&(f.y=i),void 0!==a&&(f.scale=a),void 0!==o&&function(t,r,i=1,a=0,n=!0){t.pathLength=1;let s=n?r2:r3;t[s.offset]=U.px.transform(-a);let o=U.px.transform(r),l=U.px.transform(i);t[s.array]=`${o} ${l}`}(f,o,l,u,!1)}let r7=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),r6=()=>({...r7(),attrs:{}}),r5=t=>"string"==typeof t&&"svg"===t.toLowerCase();function r9(t,{style:r,vars:i},a,n){for(let s in Object.assign(t.style,r,n&&n.getProjectionStyles(a)),i)t.style.setProperty(s,i[s])}let ie=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function it(t,r,i,a){for(let i in r9(t,r,void 0,a),r.attrs)t.setAttribute(ie.has(i)?i:x(i),r.attrs[i])}function ir(t,{layout:r,layoutId:i}){return g.f.has(t)||t.startsWith("origin")||(r||void 0!==i)&&(!!tw[t]||"opacity"===t)}function ii(t,r,i){var a;let{style:n}=t,s={};for(let o in n)((0,_.S)(n[o])||r.style&&(0,_.S)(r.style[o])||ir(o,t)||(null==(a=null==i?void 0:i.getValue(o))?void 0:a.liveStyle)!==void 0)&&(s[o]=n[o]);return s}function ia(t,r,i){let a=ii(t,r,i);for(let i in t)((0,_.S)(t[i])||(0,_.S)(r[i]))&&(a[-1!==g.U.indexOf(i)?"attr"+i.charAt(0).toUpperCase()+i.substring(1):i]=t[i]);return a}let is=["x","y","width","height","cx","cy","r"],io={useVisualState:rX({scrapeMotionValuesFromProps:ia,createRenderState:r6,onUpdate:({props:t,prevProps:r,current:i,renderState:a,latestValues:n})=>{if(!i)return;let s=!!t.drag;if(!s){for(let t in n)if(g.f.has(t)){s=!0;break}}if(!s)return;let o=!r;if(r)for(let i=0;i<is.length;i++){let a=is[i];t[a]!==r[a]&&(o=!0)}o&&k.Gt.read(()=>{!function(t,r){try{r.dimensions="function"==typeof t.getBBox?t.getBBox():t.getBoundingClientRect()}catch(t){r.dimensions={x:0,y:0,width:0,height:0}}}(i,a),k.Gt.render(()=>{r8(a,n,r5(i.tagName),t.transformTemplate),it(i,a)})})}})},il={useVisualState:rX({scrapeMotionValuesFromProps:ii,createRenderState:r7})};function iu(t,r,i){for(let a in r)(0,_.S)(r[a])||ir(a,i)||(t[a]=r[a])}let id=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function ic(t){return t.startsWith("while")||t.startsWith("drag")&&"draggable"!==t||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||id.has(t)}let ih=t=>!ic(t);try{!function(t){t&&(ih=r=>r.startsWith("on")?!ic(r):t(r))}(require("@emotion/is-prop-valid").default)}catch(t){}let ip={current:null},im={current:!1},ig=[...ei,B.y,M.f],ib=new WeakMap,iy=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class iv{scrapeMotionValuesFromProps(t,r,i){return{}}constructor({parent:t,props:r,presenceContext:i,reducedMotionConfig:a,blockInitialAnimation:n,visualState:s},o={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=Q.h,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{let t=tE.k.now();this.renderScheduledAt<t&&(this.renderScheduledAt=t,k.Gt.render(this.render,!1,!0))};let{latestValues:l,renderState:u,onUpdate:d}=s;this.onUpdate=d,this.latestValues=l,this.baseTarget={...l},this.initialValues=r.initial?{...l}:{},this.renderState=u,this.parent=t,this.props=r,this.presenceContext=i,this.depth=t?t.depth+1:0,this.reducedMotionConfig=a,this.options=o,this.blockInitialAnimation=!!n,this.isControllingVariants=rB(r),this.isVariantNode=rL(r),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);let{willChange:c,...h}=this.scrapeMotionValuesFromProps(r,{},this);for(let t in h){let r=h[t];void 0!==l[t]&&(0,_.S)(r)&&r.set(l[t],!1)}}mount(t){this.current=t,ib.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEac
2783h((t,r)=>this.bindToMotionValue(r,t)),im.current||function(){if(im.current=!0,rF.B)if(window.matchMedia){let t=window.matchMedia("(prefers-reduced-motion)"),r=()=>ip.current=t.matches;t.addListener(r),r()}else ip.current=!1}(),this.shouldReduceMotion="never"!==this.reducedMotionConfig&&("always"===this.reducedMotionConfig||ip.current),this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){for(let t in ib.delete(this.current),this.projection&&this.projection.unmount(),(0,k.WG)(this.notifyUpdate),(0,k.WG)(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this),this.events)this.events[t].clear();for(let t in this.features){let r=this.features[t];r&&(r.unmount(),r.isMounted=!1)}this.current=null}bindToMotionValue(t,r){let i;this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)();let a=g.f.has(t),n=r.on("change",r=>{this.latestValues[t]=r,this.props.onUpdate&&k.Gt.preRender(this.notifyUpdate),a&&this.projection&&(this.projection.isTransformDirty=!0)}),s=r.on("renderRequest",this.scheduleRender);window.MotionCheckAppearSync&&(i=window.MotionCheckAppearSync(this,t,r)),this.valueSubscriptions.set(t,()=>{n(),s(),i&&i(),r.owner&&r.stop()})}sortNodePosition(t){return this.current&&this.sortInstanceNodePosition&&this.type===t.type?this.sortInstanceNodePosition(this.current,t.current):0}updateFeatures(){let t="animation";for(t in rV){let r=rV[t];if(!r)continue;let{isEnabled:i,Feature:a}=r;if(!this.features[t]&&a&&i(this.props)&&(this.features[t]=new a(this)),this.features[t]){let r=this.features[t];r.isMounted?r.update():(r.mount(),r.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):e2()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,r){this.latestValues[t]=r}update(t,r){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=r;for(let r=0;r<iy.length;r++){let i=iy[r];this.propEventSubscriptions[i]&&(this.propEventSubscriptions[i](),delete this.propEventSubscriptions[i]);let a=t["on"+i];a&&(this.propEventSubscriptions[i]=this.on(i,a))}this.prevMotionValues=function(t,r,i){for(let a in r){let n=r[a],s=i[a];if((0,_.S)(n))t.addValue(a,n);else if((0,_.S)(s))t.addValue(a,(0,v.OQ)(n,{owner:t}));else if(s!==n)if(t.hasValue(a)){let r=t.getValue(a);!0===r.liveStyle?r.jump(n):r.hasAnimated||r.set(n)}else{let r=t.getStaticValue(a);t.addValue(a,(0,v.OQ)(void 0!==r?r:n,{owner:t}))}}for(let a in i)void 0===r[a]&&t.removeValue(a);return r}(this,this.scrapeMotionValuesFromProps(t,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){let r=this.getClosestVariantNode();if(r)return r.variantChildren&&r.variantChildren.add(t),()=>r.variantChildren.delete(t)}addValue(t,r){let i=this.values.get(t);r!==i&&(i&&this.removeValue(t),this.bindToMotionValue(t,r),this.values.set(t,r),this.latestValues[t]=r.get())}removeValue(t){this.values.delete(t);let r=this.valueSubscriptions.get(t);r&&(r(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,r){if(this.props.values&&this.props.values[t])return this.props.values[t];let i=this.values.get(t);return void 0===i&&void 0!==r&&(i=(0,v.OQ)(null===r?void 0:r,{owner:this}),this.addValue(t,i)),i}readValue(t,r){var i;let a=void 0===this.latestValues[t]&&this.current?null!=(i=this.getBaseTargetFromProps(this.props,t))?i:this.readValueFromInstance(this.current,t,this.options):this.latestValues[t];
2783if(null!=a){if("string"==typeof a&&(Z(a)||O(a)))a=parseFloat(a);else{let i;i=a,!ig.find(er(i))&&M.f.test(r)&&(a=K(t,r))}this.setBaseTarget(t,(0,_.S)(a)?a.get():a)}return(0,_.S)(a)?a.get():a}setBaseTarget(t,r){this.baseTarget[t]=r}getBaseTarget(t){var r;let i,{initial:a}=this.props;if("string"==typeof a||"object"==typeof a){let n=u(this.props,a,null==(r=this.presenceContext)?void 0:r.custom);n&&(i=n[t])}if(a&&void 0!==i)return i;let n=this.getBaseTargetFromProps(this.props,t);return void 0===n||(0,_.S)(n)?void 0!==this.initialValues[t]&&void 0===i?void 0:this.baseTarget[t]:n}on(t,r){return this.events[t]||(this.events[t]=new tN.v),this.events[t].add(r)}notify(t,...r){this.events[t]&&this.events[t].notify(...r)}}class i_ extends iv{constructor(){super(...arguments),this.KeyframeResolver=en}sortInstanceNodePosition(t,r){return 2&t.compareDocumentPosition(r)?1:-1}getBaseTargetFromProps(t,r){return t.style?t.style[r]:void 0}removeValueFromRenderState(t,{vars:r,style:i}){delete r[t],delete i[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);let{children:t}=this.props;(0,_.S)(t)&&(this.childSubscription=t.on("change",t=>{this.current&&(this.current.textContent=`${t}`)}))}}class iw extends i_{constructor(){super(...arguments),this.type="html",this.renderInstance=r9}readValueFromInstance(t,r){if(g.f.has(r)){let t=G(r);return t&&t.default||0}{let i=window.getComputedStyle(t),a=((0,J.j)(r)?i.getPropertyValue(r):i[r])||0;return"string"==typeof a?a.trim():a}}measureInstanceViewportBox(t,{transformPagePoint:r}){return tn(t,r)}build(t,r,i){r0(t,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,r,i){return ii(t,r,i)}}class ix extends i_{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=e2}getBaseTargetFromProps(t,r){return t[r]}readValueFromInstance(t,r){if(g.f.has(r)){let t=G(r);return t&&t.default||0}return r=ie.has(r)?r:x(r),t.getAttribute(r)}scrapeMotionValuesFromProps(t,r,i){return ia(t,r,i)}build(t,r,i){r8(t,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,r,i,a){it(t,r,i,a)}mount(t){this.isSVGTag=r5(t.tagName),super.mount(t)}}let i$=function(t){if("undefined"==typeof Proxy)return t;let r=new Map;return new Proxy((...r)=>t(...r),{get:(i,a)=>"create"===a?t:(r.has(a)||r.set(a,t(a)),r.get(a))})}((f={animation:{Feature:eC},exit:{Feature:eT},inView:{Feature:rR},tap:{Feature:rI},focus:{Feature:rE},hover:{Feature:rC},pan:{Feature:th},drag:{Feature:td,ProjectionNode:rS,MeasureLayout:tk},layout:{ProjectionNode:rS,MeasureLayout:tk}},p=(t,r)=>rY(t)?new ix(r):new iw(r,{allowProjection:t!==tp.Fragment}),function(t,{forwardMotionProps:r}={forwardMotionProps:!1}){return function({preloadedFeatures:t,createVisualElement:r,useRender:i,useVisualState:a,Component:n}){var s,l;function u(t,s){var l;let u,d={...(0,tp.useContext)(rz.Q),...t,layoutId:function({layoutId:t}){let r=(0,tp.useContext)(tg.L).id;return r&&void 0!==t?r+"-"+t:t}(t)},{isStatic:c}=d,h=function(t){let{initial:r,animate:i}=function(t,r){if(rB(t)){let{initial:r,animate:i}=t;return{initial:!1===r||o(r)?r:void 0,animate:o(i)?i:void 0}}return!1!==t.inherit?r:{}}(t,(0,tp.useContext)(rD));return(0,tp.useMemo)(()=>({initial:r,animate:i}),[rU(r),rU(i)])}(t),f=a(t,c);if(!c&&rF.B){(0,tp.useContext)(rj).strict;let t=function(t){let{drag:r,layout:i}=rV;if(!r&&!i)return{};let a={...r,...i};return{MeasureLayout:(null==r?void 0:r.isEnabled(t))||(null==i?void 0:i.isEnabled(t))?a.MeasureLayout:void 0,ProjectionNode:a.ProjectionNode}}(d);u=t.MeasureLayout,h.visualElement=function(t,r,i,a,n){var s,o;let{visualElement:l}=(0,tp.useContext)(rD),u=(0,tp.useContext)(rj),d=(0,tp.useContext)(rH.t),c=(0,tp.useContext)(rz.Q).reducedMotion,h=(0,tp.useRef)(null);a=a||u.renderer,!h.current&&a&&(h.current=a(t,{visualState:r,parent:l,props:i,presenceContext:d,blockInitialAnimation:!!d&&!1===d.initial,reducedMotionConfig:c}));let f=h.current,p=(0,tp.useContext)(tb);f&&!f.projection&&n&&("html"===f.type||"svg"===f.type)&&function(t,r,i,a){let{layoutId:n,layout:s,drag:o,dragConstraints:l,layoutScroll:u,layoutRoot:d}=r;t.projection=new i(t.latestValues,r["data-framer-portal-id"]?void 0:function t(r){if(r)return!1!==r.options.allowProjection?r.projection:t(r.parent)}(t.parent)),t.projection.setOptions({layoutId:n,layout:s,alwaysMeasureLayout:!!o||l&&eB(l),visualElement:t,animationType:"string"==typeof s?s:"both",initialPromotionConfig:a,layoutScroll:u,layoutRoot:d})}(h.current,i,n,p);let m=(0,tp.useRef)(!1);(0,tp.useInsertionEffect)(()=>{f&&m.current&&f.update(i,d)});let g=i[$],b=(0,tp.useRef)(!!g&&!(null==(s=window.MotionHandoffIsComplete)?void 0:s.call(window,g))&&(null==(o=window.MotionHasOptimisedAnimation)?void 0:o.call(window,g)));return(0,rG.E)(()=>{f&&(m.current=!0,window.MotionIsMounted=!0,f.updateFeatures(),tx.render(f.render),b.current&&f.animationState&&f.animationState.animateChanges())}),(0,tp.useEffect)(()=>{f&&(!b.current&&f.animationState&&f.animationState.animateChanges(),b.current&&(queueMicrotask(()=>{var t;null==(t=window.MotionHandoffMarkAsComplete)||t.call(window,g)}
2783),b.current=!1))}),f}(n,f,d,r,t.ProjectionNode)}return(0,tf.jsxs)(rD.Provider,{value:h,children:[u&&h.visualElement?(0,tf.jsx)(u,{visualElement:h.visualElement,...d}):null,i(n,t,(l=h.visualElement,(0,tp.useCallback)(t=>{t&&f.onMount&&f.onMount(t),l&&(t?l.mount(t):l.unmount()),s&&("function"==typeof s?s(t):eB(s)&&(s.current=t))},[l])),f,c,h.visualElement)]})}t&&function(t){for(let r in t)rV[r]={...rV[r],...t[r]}}(t),u.displayName=`motion.${"string"==typeof n?n:`create(${null!=(l=null!=(s=n.displayName)?s:n.name)?l:""})`}`;let d=(0,tp.forwardRef)(u);return d[rW]=n,d}({...rY(t)?io:il,preloadedFeatures:f,useRender:function(t=!1){return(r,i,a,{latestValues:n},s)=>{let o=(rY(r)?function(t,r,i,a){let n=(0,tp.useMemo)(()=>{let i=r6();return r8(i,r,r5(a),t.transformTemplate),{...i.attrs,style:{...i.style}}},[r]);if(t.style){let r={};iu(r,t.style,t),n.style={...r,...n.style}}return n}:function(t,r){let i={},a=function(t,r){let i=t.style||{},a={};return iu(a,i,t),Object.assign(a,function({transformTemplate:t},r){return(0,tp.useMemo)(()=>{let i=r7();return r0(i,r,t),Object.assign({},i.vars,i.style)},[r])}(t,r)),a}(t,r);return t.drag&&!1!==t.dragListener&&(i.draggable=!1,a.userSelect=a.WebkitUserSelect=a.WebkitTouchCallout="none",a.touchAction=!0===t.drag?"none":`pan-${"x"===t.drag?"y":"x"}`),void 0===t.tabIndex&&(t.onTap||t.onTapStart||t.whileTap)&&(i.tabIndex=0),i.style=a,i})(i,n,s,r),l=function(t,r,i){let a={};for(let n in t)("values"!==n||"object"!=typeof t.values)&&(ih(n)||!0===i&&ic(n)||!r&&!ic(n)||t.draggable&&n.startsWith("onDrag"))&&(a[n]=t[n]);return a}(i,"string"==typeof r,t),u=r!==tp.Fragment?{...l,...o,ref:a}:{},{children:d}=i,c=(0,tp.useMemo)(()=>(0,_.S)(d)?d.get():d,[d]);return(0,tp.createElement)(r,{...u,children:c})}}(r),createVisualElement:p,Component:t})}))},54587:(t,r,i)=>{t.exports=i(24468)},55472:(t,r,i)=>{"use strict";i.d(r,{o:()=>U,L:()=>F});var a=i(93563),n=i(91750),s=i(67798),o=i(94349),l=i(30287),u=i(2926),d=i(1856);function c(t,r,i){let a=Math.max(r-5,0);
2783return(0,d.f)(i-t(a),r-a)}let h={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};var f=i(37605);function p(t,r){return t*Math.sqrt(1-r*r)}let m=["duration","bounce"],g=["stiffness","damping","mass"];function b(t,r){return r.some(r=>void 0!==t[r])}function y(t=h.visualDuration,r=h.bounce){let i,s="object"!=typeof t?{visualDuration:t,keyframes:[0,1],bounce:r}:t,{restSpeed:l,restDelta:u}=s,d=s.keyframes[0],v=s.keyframes[s.keyframes.length-1],_={done:!1,value:d},{stiffness:w,damping:x,mass:$,duration:S,velocity:k,isResolvedFromDuration:C}=function(t){let r={velocity:h.velocity,stiffness:h.stiffness,damping:h.damping,mass:h.mass,isResolvedFromDuration:!1,...t};if(!b(t,g)&&b(t,m))if(t.visualDuration){let i=2*Math.PI/(1.2*t.visualDuration),a=i*i,n=2*(0,o.q)(.05,1,1-(t.bounce||0))*Math.sqrt(a);r={...r,mass:h.mass,stiffness:a,damping:n}}else{let i=function({duration:t=h.duration,bounce:r=h.bounce,velocity:i=h.velocity,mass:a=h.mass}){let s,l;(0,f.$)(t<=(0,n.f)(h.maxDuration),"Spring duration must be 10 seconds or less");let u=1-r;u=(0,o.q)(h.minDamping,h.maxDamping,u),t=(0,o.q)(h.minDuration,h.maxDuration,(0,n.X)(t)),u<1?(s=r=>{let a=r*u,n=a*t;return .001-(a-i)/p(r,u)*Math.exp(-n)},l=r=>{let a=r*u*t,n=Math.pow(u,2)*Math.pow(r,2)*t,o=Math.exp(-a),l=p(Math.pow(r,2),u);return(a*i+i-n)*o*(-s(r)+.001>0?-1:1)/l}):(s=r=>-.001+Math.exp(-r*t)*((r-i)*t+1),l=r=>t*t*(i-r)*Math.exp(-r*t));let d=function(t,r,i){let a=i;for(let i=1;i<12;i++)a-=t(a)/r(a);return a}(s,l,5/t);if(t=(0,n.f)(t),isNaN(d))return{stiffness:h.stiffness,damping:h.damping,duration:t};{let r=Math.pow(d,2)*a;return{stiffness:r,damping:2*u*Math.sqrt(a*r),duration:t}}}(t);(r={...r,...i,mass:h.mass}).isResolvedFromDuration=!0}return r}({...s,velocity:-(0,n.X)(s.velocity||0)}),E=k||0,T=x/(2*Math.sqrt(w*$)),I=v-d,A=(0,n.X)(Math.sqrt(w/$)),N=5>Math.abs(I);if(l||(l=N?h.restSpeed.granular:h.restSpeed.default),u||(u=N?h.restDelta.granular:h.restDelta.default),T<1){let t=p(A,T);i=r=>v-Math.exp(-T*A*r)*((E+T*A*I)/t*Math.sin(t*r)+I*Math.cos(t*r))}else if(1===T)i=t=>v-Math.exp(-A*t)*(I+(E+A*I)*t);else{let t=A*Math.sqrt(T*T-1);i=r=>{let i=Math.exp(-T*A*r),a=Math.min(t*r,300);return v-i*((E+T*A*I)*Math.sinh(a)+t*I*Math.cosh(a))/t}}let O={calculatedDuration:C&&S||null,next:t=>{let r=i(t);if(C)_.done=t>=S;else{let a=0;T<1&&(a=0===t?(0,n.f)(E):c(i,t,r));let s=Math.abs(v-r)<=u;_.done=Math.abs(a)<=l&&s}return _.value=_.done?v:r,_},toString:()=>{let t=Math.min((0,a.tu)(O),a.YE),r=(0,a.KZ)(r=>O.next(t*r).value,t,30);return t+"ms "+r}};return O}function v({keyframes:t,velocity:r=0,power:i=.8,timeConstant:a=325,bounceDamping:n=10,bounceStiffness:s=500,modifyTarget:o,min:l,max:u,restDelta:d=.5,restSpeed:h}){let f,p,m=t[0],g={done:!1,value:m},b=i*r,v=m+b,_=void 0===o?v:o(v);_!==v&&(b=_-m);let w=t=>-b*Math.exp(-t/a),x=t=>_+w(t),$=t=>{let r=w(t),i=x(t);g.done=Math.abs(r)<=d,g.value=g.done?_:i},S=t=>{let r;if(r=g.value,void 0!==l&&r<l||void 0!==u&&r>u){var i;f=t,p=y({keyframes:[g.value,(i=g.value,void 0===l?u:void 0===u||Math.abs(l-i)<Math.abs(u-i)?l:u)],velocity:c(x,t,g.value),damping:n,stiffness:s,restDelta:d,restSpeed:h})}};return S(0),{calculatedDuration:null,next:t=>{let r=!1;return(p||void 0!==f||(r=!0,$(t),S(t)),void 0!==f&&t>=f)?p.next(t-f):(r||$(t),g)}}}var _=i(55886);let w=(0,_.A)(.42,0,1,1),x=(0,_.A)(0,0,.58,1),$=(0,_.A)(.42,0,.58,1);var S=i(90620),k=i(28404),C=i(24237),E=i(77801);let T={linear:S.l,easeIn:w,easeInOut:$,easeOut:x,circIn:E.po,circInOut:E.tn,circOut:E.yT,backIn:C.dg,backInOut:C.ZZ,backOut:C.Sz,anticipate:k.b},I=t=>{if((0,a.DW)(t)){(0,f.V)(4===t.length,"Cubic bezier arrays must contain four numerical values.");let[r,i,a,n]=t;return(0,_.A)(r,i,a,n)}return"string"==typeof t?((0,f.V)(void 0!==T[t],`Invalid easing type '${t}'`),T[t]):t};var A=i(99489),N=i(2589),O=i(90360);function M({duration:t=300,keyframes:r,times:i,ease:a="easeInOut"}){var n;let s=Array.isArray(a)&&"number"!=typeof a[0]?a.map(I):I(a),o={done:!1,value:r[0]}
2783,l=(n=i&&i.length===r.length?i:function(t){let r=[0];return!function(t,r){let i=t[t.length-1];for(let a=1;a<=r;a++){let n=(0,N.q)(0,r,a);t.push((0,O.k)(i,1,n))}}(r,t.length-1),r}(r),n.map(r=>r*t)),u=(0,A.G)(l,r,{ease:Array.isArray(s)?s:r.map(()=>s||$).splice(0,r.length-1)});return{calculatedDuration:t,next:r=>(o.value=u(r),o.done=r>=t,o)}}var P=i(72924),R=i(21623),j=i(81461);let z=t=>{let r=({timestamp:r})=>t(r);return{start:()=>j.Gt.update(r,!0),stop:()=>(0,j.WG)(r),now:()=>j.uv.isProcessing?j.uv.timestamp:R.k.now()}};var D=i(50005);let B={decay:v,inertia:v,tween:M,keyframes:M,spring:y},L=t=>t/100;class U extends P.i{constructor(t){super(t),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,"idle"===this.state)return;this.teardown();let{onStop:t}=this.options;t&&t()};let{name:r,motionValue:i,element:a,keyframes:n}=this.options,o=(null==a?void 0:a.KeyframeResolver)||s.h,l=(t,r)=>this.onKeyframesResolved(t,r);this.resolver=new o(n,l,r,i,a),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(t){let r,i,{type:n="keyframes",repeat:s=0,repeatDelay:o=0,repeatType:d,velocity:c=0}=this.options,h=(0,a.WH)(n)?n:B[n]||M;h!==M&&"number"!=typeof t[0]&&(r=(0,u.F)(L,(0,l.j)(t[0],t[1])),t=[0,100]);let f=h({...this.options,keyframes:t});"mirror"===d&&(i=h({...this.options,keyframes:[...t].reverse(),velocity:-c})),null===f.calculatedDuration&&(f.calculatedDuration=(0,a.tu)(f));let{calculatedDuration:p}=f,m=p+o;return{generator:f,mirroredGenerator:i,mapPercentToKeyframes:r,calculatedDuration:p,resolvedDuration:m,totalDuration:m*(s+1)-o}}onPostResolved(){let{autoplay:t=!0}=this.options;this.play(),"paused"!==this.pendingPlayState&&t?this.state=this.pendingPlayState:this.pause()}tick(t,r=!1){let{resolved:i}=this;if(!i){let{keyframes:t}=this.options;return{done:!0,value:t[t.length-1]}}let{finalKeyframe:a,generator:n,mirroredGenerator:s,mapPercentToKeyframes:l,keyframes:u,calculatedDuration:d,totalDuration:c,resolvedDuration:h}=i;if(null===this.startTime)return n.next(0);let{delay:f,repeat:p,repeatType:m,repeatDelay:g,onUpdate:b}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-c/this.speed,this.startTime)),r?this.currentTime=t:null!==this.holdTime?this.currentTime=this.holdTime:this.currentTime=Math.round(t-this.startTime)*this.speed;let y=this.currentTime-f*(this.speed>=0?1:-1),v=this.speed>=0?y<0:y>c;this.currentTime=Math.max(y,0),"finished"===this.state&&null===this.holdTime&&(this.currentTime=c);let _=this.currentTime,w=n;if(p){let t=Math.min(this.currentTime,c)/h,r=Math.floor(t),i=t%1;!i&&t>=1&&(i=1),1===i&&r--,(r=Math.min(r,p+1))%2&&("reverse"===m?(i=1-i,g&&(i-=g/h)):"mirror"===m&&(w=s)),_=(0,o.q)(0,1,i)*h}let x=v?{done:!1,value:u[0]}:w.next(_);l&&(x.value=l(x.value));let{done:$}=x;v||null===d||($=this.speed>=0?this.currentTime>=c:this.currentTime<=0);let S=null===this.holdTime&&("finished"===this.state||"running"===this.state&&$);return S&&void 0!==a&&(x.value=(0,D.X)(u,this.options,a)),b&&b(x.value),S&&this.finish(),x}get duration(){let{resolved:t}=this;return t?(0,n.X)(t.calculatedDuration):0}get time(){return(0,n.X)(this.currentTime)}set time(t){t=(0,n.f)(t),this.currentTime=t,null!==this.holdTime||0===this.speed?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.speed)}get speed(){return this.playbackSpeed}set speed(t){let r=this.playbackSpeed!==t;this.playbackSpeed=t,r&&(this.time=(0,n.X)(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;let{driver:t=z,onPlay:r,startTime:i}=this.options;this.driver||(this.driver=t(t=>this.tick(t))),r&&r();let a=this.driver.now();null!==this.holdTime?this.startTime=a-this.holdTime:this.startTime?"finished"===this.state&&(this.startTime=a):this.startTime=null!=i?i:this.calcStartTime(),"finished"===this.state&&this.updateFinishedProm
2783ise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var t;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=null!=(t=this.currentTime)?t:0}complete(){"running"!==this.state&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";let{onComplete:t}=this.options;t&&t()}cancel(){null!==this.cancelTime&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}}function F(t){return new U(t)}},55886:(t,r,i)=>{"use strict";i.d(r,{A:()=>s});var a=i(90620);let n=(t,r,i)=>(((1-3*i+3*r)*t+(3*i-6*r))*t+3*r)*t;function s(t,r,i,s){return t===r&&i===s?a.l:a=>0===a||1===a?a:n(function(t,r,i,a,s){let o,l,u=0;do(o=n(l=r+(i-r)/2,a,s)-t)>0?i=l:r=l;while(Math.abs(o)>1e-7&&++u<12);return l}(a,0,1,t,i),r,s)}},55892:(t,r,i)=>{"use strict";i.d(r,{c:()=>o,h:()=>l});var a=i(37876),n=i(14232),s=i(32872);let o=n.createContext({user:null,connectLichess:()=>{throw Error("poorly provided AuthContext, missing connectLichess")},logout:()=>{throw Error("poorly provided AuthContext, missing logout")}}),l=t=>{let{children:r}
2783=t,[i,l]=(0,n.useState)(null);(0,n.useEffect)(()=>{!async function(){l(await (0,s.mb)())}()},[]);let u=(0,n.useCallback)(()=>{window.location.assign(s.nI+"?redirect_url="+encodeURIComponent(window.location.toString()))},[]),d=(0,n.useCallback)(async()=>{l(await (0,s.BH)())},[]);return(0,a.jsx)(o.Provider,{value:{user:i,logout:d,connectLichess:u},children:r})}},56154:(t,r,i)=>{"use strict";i.d(r,{S:()=>u});var a=i(14232),n=i(32711),s=i(62207);let o=()=>{throw Error("PlayTreeControllerContext not provided")},l=new s.lr(new n.d$().fen()),u=a.createContext({game:{id:"",turn:"black",tree:l},playType:"againstMaia",timeControl:"unlimited",player:"white",maiaVersion:"maia_kdd_1100",playerActive:!1,toPlay:"black",moves:[],availableMoves:[],pieces:{},moveList:[],whiteClock:0,blackClock:0,lastMoveTime:0,plyCount:0,orientation:"white",setOrientation:o,stats:{lifetime:void 0,session:{gamesWon:0,gamesPlayed:0},lastRating:void 0,rating:0},setResigned:o,reset:o,makePlayerMove:o,updateClock:o,updateClockForColor:o,gameTree:l,currentNode:l.getRoot(),setCurrentNode:o,goToNode:o,goToNextNode:o,goToPreviousNode:o,goToRootNode:o,addMoveWithTime:o,premovesEnabled:!1,queuedPremove:null,setPremove:o,clearPremove:o,premoveResetKey:0})},57076:(t,r,i)=>{"use strict";i.d(r,{l:()=>n});let a="maia-rapid-model";class n{async openDB(){return this.db?this.db:new Promise((t,r)=>{let i=indexedDB.open(this.dbName,this.version);i.onerror=()=>r(i.error),i.onsuccess=()=>{this.db=i.result,t(i.result)},i.onupgradeneeded=t=>{let r=t.target.result;r.objectStoreNames.contains(this.storeName)||r.createObjectStore(this.storeName,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})}})}async storeModel(t,r,i){try{let n=(await this.openDB()).transaction([this.storeName],"readwrite").objectStore(this.storeName),s={id:a,url:t,version:r,data:new Blob([i]),timestamp:Date.now(),size:i.byteLength};await new Promise((t,r)=>{let i=n.put(s);i.onsuccess=()=>t(),i.onerror=()=>r(i.error)}),console.log("Maia model stored in IndexedDB")}catch(t){throw console.error("Failed to store model in IndexedDB:",t),t}}async getModel(t,r){console.log("Storage: getModel called with URL:",t);try{console.log("Storage: Opening IndexedDB...");let i=(await this.openDB()).transaction([this.storeName],"readonly").objectStore(this.storeName);console.log("Storage: Requesting model data...");let n=await new Promise((t,r)=>{let n=i.get(a);n.onsuccess=()=>{console.log("Storage: IndexedDB request successful, result:",n.result?"Found":"Not found"),t(n.result||null)},n.onerror=()=>{console.log("Storage: IndexedDB request error:",n.error),r(n.error)}});if(!n)return console.log("Storage: No model data found in IndexedDB (normal for first time)"),null;if(n.version!==r||n.url!==t)return console.log("Storage: Cached Maia model is incompatible, clearing old cache"),console.log("Storage: Cached URL:",n.url||"(missing)"),console.log("Storage: Cached version:",n.version||"(missing)"),console.log("Storage: Required URL:",t),console.log("Storage: Required version:",r),await this.deleteModel(),null;console.log("Storage: Converting Blob to ArrayBuffer...");let s=await n.data.arrayBuffer();return console.log("Storage: Successfully retrieved model, size:",s.byteLength),s}catch(t){return console.error("Storage: IndexedDB operation failed:",t),null}}async deleteModel(){try{let t=(await this.openDB()).transaction([this.storeName],"readwrite").objectStore(this.storeName);await new Promise((r,i)=>{let n=t.delete(a);n.onsuccess=()=>r(),n.onerror=()=>i(n.error)})}catch(t){console.error("Failed to delete model from IndexedDB:",t)}}async getStorageInfo(){try{let t,r;if(!("indexedDB"in window))return{supported:!1};if("storage"in navigator&&"estimate"in navigator.storage){let i=await navigator.storage.estimate();t=i.quota,r=i.usage}let i=(await this.openDB()).transaction([this.storeName],"readonly").objectStore(this.storeName),n=await new Promise((t,r)=>{let n=i.get(a);n.onsuccess=()=>t(n.result||null),n.onerror=()=>r(n.error)});return{supported:!0,quota:t,usage:r,modelSize:null==n?void 0:n.size,modelTimestamp:null==n?void 0:n.timestamp}}catch(t){return console.error("Failed to get storage info:",t),{supported:!1}}}async requestPersistentStorage(){try{if("storage"in navigator&&"persist"in navigator.storage){let t=await navigator.storage.persist();return console.log(t?"Persistent storage granted":"Persistent storage denied"),t}return!1}catch(t){return console.error("Failed to request persistent storage:",t),!1}}async clearAllStorage(){try{await this.deleteModel(),console.log("Maia storage cleared")}catch(t){console.warn("Failed to clear storage:",t)}}constructor(){this.dbName="MaiaModels",this.storeName="models",this.version=1,this.db=null}}},58323:function(t,r){var i,a;void 0===(a="function"==typeof(i=function(){return function(t){if(t instanceof HTMLElement||t instanceof SVGElement){for(var r=t.parentNode;r.parentNode;){if(function(t){var r=getComputedStyle(t,null).getPropertyValue("overflow");return r.indexOf("scroll")>-1||r.indexOf("auto")>-1}(r))return r;r=r.parentNode}return document.scrollingElement||document.documentElement}}})?i.apply(r,[]):i)||(t.exports=a)},59425:(t,r,i)=>{"use strict";i.d(r,{Fr:()=>l,GT:()=>o,P0:()=>u,XR:()=>f});var a=i(84547);let n="maia_favorite_games",s=t=>{switch(t){case"play":return"play";
2783case"hand":return"hand";case"brain":return"brain";default:return"custom"}},o=async(t,r)=>{try{let i=s(t.type);return await (0,a.p7)(i,t.id,{is_favorited:!0,custom_name:r||t.label}),{id:t.id,type:t.type,originalLabel:t.label,customName:r||t.label,result:t.result,addedAt:new Date().toISOString(),pgn:t.pgn}}catch(o){console.warn("Failed to favorite via API, falling back to localStorage:",o);let i=d(),a=i.findIndex(r=>r.id===t.id);if(-1!==a)i[a]={...i[a],customName:r||i[a].customName};else{let a={id:t.id,type:t.type,originalLabel:t.label,customName:r||t.label,result:t.result,addedAt:new Date().toISOString(),pgn:t.pgn};i.unshift(a)}let s=i.slice(0,100);return localStorage.setItem(n,JSON.stringify(s)),i[a]||i[0]}},l=async(t,r)=>{try{if(r){let i=s(r);await (0,a.p7)(i,t,{is_favorited:!1});return}let i=d().find(r=>r.id===t);if(i){let r=s(i.type);await (0,a.p7)(r,t,{is_favorited:!1});return}throw Error("Game type required for API call")}catch(i){console.warn("Failed to unfavorite via API, falling back to localStorage:",i);let r=d().filter(r=>r.id!==t);localStorage.setItem(n,JSON.stringify(r))}},u=async(t,r,i)=>{try{if(i){let n=s(i);await (0,a.p7)(n,t,{custom_name:r});return}let n=d().find(r=>r.id===t);if(n){let i=s(n.type);await (0,a.p7)(i,t,{custom_name:r});return}throw Error("Game type required for API call")}catch(s){console.warn("Failed to update name via API, falling back to localStorage:",s);let i=d(),a=i.findIndex(r=>
2783r.id===t);-1!==a&&(i[a].customName=r,localStorage.setItem(n,JSON.stringify(i)))}},d=()=>{try{let t=localStorage.getItem(n);return t?JSON.parse(t):[]}catch(t){return console.warn("Failed to parse stored favorite games:",t),[]}},c=async()=>{try{let t=await (0,a.tY)("favorites",1);if(t.games&&Array.isArray(t.games))return t.games.map(t=>({id:t.id,type:t.game_type||t.type,originalLabel:t.label||t.custom_name||"Untitled",customName:t.custom_name||t.label||"Untitled",result:t.result||"*",addedAt:t.created_at||new Date().toISOString(),pgn:t.pgn}));return[]}catch(t){return console.warn("Failed to fetch favorites from API, falling back to localStorage:",t),d()}},h=t=>({id:t.id,type:t.type,label:t.customName,result:t.result,pgn:t.pgn}),f=async()=>(await c()).map(h)},62207:(t,r,i)=>{"use strict";i.d(r,{RV:()=>o.R,lr:()=>s.l,SA:()=>n,f9:()=>a});let a=["3+0","5+2","10+0","15+10","unlimited"],n=["3+0","5+2","10+0","15+10","Unlimited"];var s=i(9186),o=i(98082)},63163:()=>{},63786:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useIntersection",{enumerable:!0,get:function(){return u}});let a=i(14232),n=i(43273),s="function"==typeof IntersectionObserver,o=new Map,l=[];function u(t){let{rootRef:r,rootMargin:i,disabled:u}=t,d=u||!s,[c,h]=(0,a.useState)(!1),f=(0,a.useRef)(null),p=(0,a.useCallback)(t=>{f.current=t},[]);return(0,a.useEffect)(()=>{if(s){if(d||c)return;let t=f.current;if(t&&t.tagName)return function(t,r,i){let{id:a,observer:n,elements:s}=function(t){let r,i={root:t.root||null,margin:t.rootMargin||""},a=l.find(t=>t.root===i.root&&t.margin===i.margin);if(a&&(r=o.get(a)))return r;let n=new Map;return r={id:i,observer:new IntersectionObserver(t=>{t.forEach(t=>{let r=n.get(t.target),i=t.isIntersecting||t.intersectionRatio>0;r&&i&&r(i)})},t),elements:n},l.push(i),o.set(i,r),r}(i);return s.set(t,r),n.observe(t),function(){if(s.delete(t),n.unobserve(t),0===s.size){n.disconnect(),o.delete(a);let t=l.findIndex(t=>t.root===a.root&&t.margin===a.margin);t>-1&&l.splice(t,1)}}}(t,t=>t&&h(t),{root:null==r?void 0:r.current,rootMargin:i})}else if(!c){let t=(0,n.requestIdleCallback)(()=>h(!0));return()=>(0,n.cancelIdleCallback)(t)}},[d,i,r,c,f.current]),[p,c,(0,a.useCallback)(()=>{h(!1)},[])]}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},65364:(t,r,i)=>{"use strict";var a,n;t.exports=(null==(a=i.g.process)?void 0:a.env)&&"object"==typeof(null==(n=i.g.process)?void 0:n.env)?i.g.process:i(15861)},67427:(t,r,i)=>{"use strict";i.d(r,{OK:()=>s,QY:()=>l,Z3:()=>u,q3:()=>o,zj:()=>n});var a=i(42034);let n=async function(t,r,i,n,s){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0,l=o?{maia_name:r,maia_friendly_name:o,player_color:t,game_type:i,sample_moves:n.toString(),time_control:s}:{maia_name:r,player_color:t,game_type:i,sample_moves:n.toString(),time_control:s},u=await fetch((0,a.c)("play/start_game?"+new URLSearchParams(l)),{method:"GET",headers:{Accept:"application/json"}});if(401===u.status)throw Error("Unauthorized");let d=await u.json();return{gameId:d.game_id,opponentElo:d.opponent_elo}},s=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"maia_kdd_1900",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;return(await fetch((0,a.c)("play/get_move?"+new URLSearchParams(n?i?{fen:i||"",maia_name:r,piece:n||"",initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"}:{maia_name:r,piece:n||"",initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"}:i?{fen:i||"",maia_name:r,initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"}:{maia_name:r,initial_clock:s.toString(),current_clock:o.toString(),maia_version:"maia3"})),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)})).json()},o=async t=>{let r=(t=>{let r=t.trim().split(/\s+/);return r.length>=4?r.slice(0,4).join(" "):t.trim()})(t);return(await fetch((0,a.c)("play/get_book_moves?"+new URLSearchParams({fen:r})),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({moves:[],maia_names:["maia_kdd_1100","maia_kdd_1200","maia_kdd_1300","maia_kdd_1400","maia_kdd_1500","maia_kdd_1600","maia_kdd_1700","maia_kdd_1800","maia_kdd_1900"]})})).json()},l=async function(t,r,i,n,s){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:void 0,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:void 0,u=arguments.length>7&&void 0!==arguments[7]?arguments[7]:[];return(await fetch((0,a.c)("play/submit_move"),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({game_id:t,moves:r,game_over_state:n,game_type:s,move_times:i,fen:o,brain_moves:u,...l&&"none"!==l?{winner:l}:{}})})).json()},u=async()=>{let t=await fetch((0,a.c)("play/get_player_stats")),r=await t.json();return{playGamesPlayed:r.play_games_played,handGamesPlayed:r.hand_games_played,brainGamesPlayed:r.brain_games_played,playWon:r.play_won,playDrawn:r.play_drawn,handWon:r.hand_won,handDrawn:r.hand_drawn,brainWon:r.brain_won,brainDrawn:r.brain_drawn,playElo:r.play_elo,handElo:r.hand_elo,brainElo:r.brain_elo}}},67798:(t,r,i)=>{"use strict";i.d(r,{h:()=>h,q:()=>c});var a=i(47137),n=i(81461);let s=new Set,o=!1,l=!1;function u(){if(l){let t=Array.from(s).filter(t=>t.needsMeasurement),r=new Set(t.map(t=>t.element)),i=new Map;r.forEach(t=>{let r=(0,a.W9)(t);r.length&&(i.set(t,r),t.render())}),t.forEach(t=>t.measureInitialState()),r.forEach(t=>{t.render();let r=i.get(t);r&&r.forEach(([r,i])=>{var a;null==(a=t.getValue(r))||a.set(i)})}),t.forEach(t=>t.measureEndState()),t.forEach(t=>{void 0!==t.suspendedScrollY&&window.scrollTo(0,t.suspendedScrollY)})}
2783l=!1,o=!1,s.forEach(t=>t.complete()),s.clear()}function d(){s.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(l=!0)})}function c(){d(),u()}class h{constructor(t,r,i,a,n,s=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...t],this.onComplete=r,this.name=i,this.motionValue=a,this.element=n,this.isAsync=s}scheduleResolve(){this.isScheduled=!0,this.isAsync?(s.add(this),o||(o=!0,n.Gt.read(d),n.Gt.resolveKeyframes(u))):(this.readKeyframes(),this.complete())}readKeyframes(){let{unresolvedKeyframes:t,name:r,element:i,motionValue:a}=this;for(let n=0;n<t.length;n++)if(null===t[n])if(0===n){let n=null==a?void 0:a.get(),s=t[t.length-1];if(void 0!==n)t[0]=n;else if(i&&r){let a=i.readValue(r,s);null!=a&&(t[0]=a)}void 0===t[0]&&(t[0]=s),a&&void 0===n&&a.set(t[0])}else t[n]=t[n-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),s.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,s.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}},69441:(t,r,i)=>{"use strict";i.d(r,{BL:()=>o,I3:()=>u,Js:()=>d,Ms:()=>l,R9:()=>s,ek:()=>n});var a=i(32711);let n=async()=>{let t=await fetch("https://lichess.org/api/broadcast",{headers:{Accept:"application/x-ndjson"}});if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));if(!t.body)throw Error("No response body");let r=[];return new Promise((i,a)=>{(t=>r=>{let i=r.body.getReader(),a=/\r?\n/,n=new TextDecoder,s="",o=()=>i.read().then(r=>{let{done:i,value:l}=r;if(i)s.length>0&&t(JSON.parse(s));else{let r=n.decode(l,{stream:!0}),i=((s+=r)||"").split(a);for(let r of(s=i.pop(),i.filter(t=>t)))t(JSON.parse(r));return o()}});return o()})(t=>{try{r.push(t)}catch(t){console.error("Error parsing broadcast message:",t)}})(t).then(()=>{i(r)}).catch(a)})},s=async t=>{try{var r,i,a;console.log("Fetching broadcast by ID:",t);let n=await fetch("https://lichess.org/api/broadcast/".concat(t),{headers:{Accept:"application/json"}});if(!n.ok)return console.error("Failed to fetch broadcast: ".concat(n.status)),null;let s=await n.json();if(console.log("Broadcast data received:",{name:null==(r=s.tour)?void 0:r.name,rounds:null==(i=s.rounds)?void 0:i.length,roundNames:null==(a=s.rounds)?void 0:a.map(t=>t.name)}),s.tour&&s.rounds)return s;return console.error("Invalid broadcast data structure"),null}catch(t){return console.error("Error fetching broadcast by ID:",t),null}},o=async()=>{let t=await fetch("https://lichess.org/api/broadcast/top",{headers:{Accept:"application/json"}});if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));return t.json()},l=t=>({tour:t.tour,rounds:[t.round],defaultRoundId:t.round.id}),u=async(t,r,i,a)=>{let n=fetch("https://lichess.org/api/stream/broadcast/round/".concat(t,".pgn"),{signal:a,headers:{Accept:"application/x-chess-pgn"}}),s=t=>{t.trim()&&r(t)};try{let t=await n;if(!t.ok)throw Error("HTTP ".concat(t.status,": ").concat(t.statusText));if(!t.body)throw Error("No response body");let r=t.body.getReader(),a=new TextDecoder,o="";for(;;){let{done:t,value:i}=await r.read();if(t){o.trim()&&s(o);break}let n=a.decode(i,{stream:!0}),l=(o+=n).split("\n\n\n");for(let t of(o=l.pop()||"",l))t.trim()&&s(t)}i()}catch(t){if(null==a?void 0:a.aborted)console.log("Broadcast stream aborted");else throw console.error("Broadcast stream error:",t),t}},d=t=>{let r=[],i=[];try{let a=t.split(/\n\n\[Event/).filter(t=>t.trim());for(let t=0;t<a.length;t++){let n=a[t];t>0&&!n.startsWith("[Event")&&(n="[Event"+n);try{let t=c(n);t&&r.push(t)}catch(r){i.push("Error parsing game ".concat(t+1,": ").concat(r))}}}catch(t){i.push("Error splitting PGN data: ".concat(t))}return{games:r,errors:i}},c=t=>{let r=t.trim().split("\n"),i={},a="",n=!1;for(let t of r){let r=t.trim();if(r.startsWith("[")&&r.endsWith("]")){let t=r.match(/^\[(\w+)\s+"([^"]*)"\]$/);t&&(i[t[1]]=t[2])}else r&&!n?(n=!0,a=r):n&&r&&(a+=" "+r)}let s=i.White||"Unknown",o=i.Black||"Unknown",l=i.Result||"*",u=i.Event||"",d=i.Site||"",c=i.Date||i.UTCDate||"",m=i.Round||"";console.log("Parsing PGN for ".concat(s," vs ").concat(o));let g=h(t),b=g.moves,{whiteClock:y,blackClock:v}=g,_=f();return(y||v)&&console.log("Clock data for ".concat(s," vs ").concat(o,":"),{whiteClock:y,blackClock:v,movesSection:a.substring(0,200)+"..."}),{id:p(s,o,u,d),white:s,black:o,result:l,moves:b,pgn:t,fen:_||"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",event:u,site:d,date:c,round:m,eco:i.ECO,opening:i.Opening,whiteElo:i.WhiteElo?parseInt(i.WhiteElo):void 0,blackElo:i.BlackElo?parseInt(i.BlackElo):void 0,timeControl:i.TimeControl,termination:i.Termination,annotator:i.Annotator,studyName:i.StudyName,chapterName:i.ChapterName,utcDate:i.UTCDate,utcTime:i.UTCTime,whiteClock:y,blackClock:v}},h=t=>{let r,i,n=[];try{let s=new a.d$;if(!s.loadPgn(t))return console.warn("Failed to parse PGN with chess.js, falling back to manual parsing"),{moves:n};for(let t of s.history({verbose:!0}))n.push(t.san);let o=s.getComments(),l=null,u=null;for(let t of o){let r=t.comment.match(/\[%clk\s+(\d+):(\d+)(?::(\d+))?\]/);if(r){let i=r[3]?parseInt(r[1]):0,n=r[3]?parseInt(r[2]):parseInt(r[1]),s=r[3]?parseInt(r[3]):parseInt(r[2]),o=3600*i+60*n+s,d={timeInSeconds:o,isActive:!1,lastUpdateTime:
2783Date.now()},c=new a.d$(t.fen),h="b"===c.turn();h?l=d:u=d,console.log("Found clock for ".concat(h?"white":"black",": ").concat(i,":").concat(String(n).padStart(2,"0"),":").concat(String(s).padStart(2,"0")," = ").concat(o,"s"))}}if(r=l,i=u,n.length>0){let n=new a.d$;n.loadPgn(t);let s="w"===n.turn();r&&(r.isActive=s),i&&(i.isActive=!s)}}catch(t){console.warn("Error parsing PGN with chess.js:",t)}return{moves:n,whiteClock:r,blackClock:i}},f=()=>null,p=(t,r,i,a)=>{let n="".concat(t,"-").concat(r,"-").concat(i,"-").concat(a),s=0;for(let t=0;t<n.length;t++)s=(s<<5)-s+n.charCodeAt(t),s&=s;return Math.abs(s).toString(36).substring(0,12)}},69942:(t,r,i)=>{"use strict";i.d(r,{J0:()=>n,N6:()=>l,Pe:()=>o,Px:()=>s,eX:()=>d,qN:()=>u,zF:()=>h});var a=i(32711);function n(t,r,i){let a=t.getRoot();for(let t=0;t<r.length&&a;t++){let n=i[t]?function(t,r){let i={},a={},n=-1/0,s="",o={};for(let r in t){let a,l=t[r];if(Math.abs(l)>=1e4){let t=Math.abs(1e4-Math.abs(l));a=l>0?Math.max(1,Math.floor(t/100)+1):-Math.max(1,Math.floor(t/100)+1),o[r]=a}i[r]=l,l>n&&(n=l,s=r)}for(let r in i){let i=t[r];a[r]=i-n}let l=Object.fromEntries(Object.entries(i).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i})),u=Object.fromEntries(Object.entries(a).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i})),d={},c=-1/0;for(let t in l){let r=l[t],i=Math.abs(r)>=1e4?+(r>0):h(r,!1);d[t]=i,d[t]>c&&(c=d[t])}let f={};for(let t in d)f[t]=d[t]-c;let p=Object.fromEntries(Object.entries(d).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i})),m=Object.fromEntries(Object.entries(f).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}));if("b"===r){for(let t in n*=-1,l)l[t]*=-1;for(let t in o)o[t]*=-1}let g=Object.keys(o).length>0?Object.fromEntries(Object.keys(l).filter(t=>void 0!==o[t]).map(t=>[t,o[t]])):void 0;return{sent:!0,depth:20,model_move:s,model_optimal_cp:n,cp_vec:l,cp_relative_vec:u,winrate_vec:p,winrate_loss_vec:m,mate_vec:g,is_checkmate:void 0}}(i[t],r[t].board.split(" ")[1]):void 0;n&&a.addStockfishAnalysis(n),a=null==a?void 0:a.mainChild}}let s=t=>{let r=[];return t.getMainLine().forEach((t,i)=>{if(!t.analysis.maia&&!t.analysis.stockfish)return;let a={ply:i,fen:t.fen};t.analysis.maia&&(a.maia=t.analysis.maia),t.analysis.stockfish&&(a.stockfish={depth:t.analysis.stockfish.depth,cp_vec:t.analysis.stockfish.cp_vec,mate_vec:t.analysis.stockfish.mate_vec}),r.push(a)}),r},o=(t,r)=>{let i=t.getMainLine();r.forEach(t=>{let{ply:r,maia:n,stockfish:s}=t;if(r>=0&&r<i.length){let o=i[r];if(o.fen===t.fen&&(n&&o.addMaiaAnalysis(n),s)){let t=((t,r,i,n)=>{let s="b"===new a.d$(i).turn(),o=s?1/0:-1/0,l="";for(let r in t){let i=t[r];s?i<o&&(o=i,l=r):i>o&&(o=i,l=r)}let u={};for(let r in t){let i=t[r];u[r]=s?o-i:i-o}let d={};for(let r in t){let i=h(t[r]*(s?-1:1),!1);d[r]=i}let c=-1/0;for(let t in d){let r=d[t];r>c&&(c=r)}let f={};for(let t in d)f[t]=d[t]-c;let p=Object.entries(d).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i});return{sent:!0,depth:r,model_move:l,model_optimal_cp:o,cp_vec:t,cp_relative_vec:u,winrate_vec:Object.fromEntries(p),winrate_loss_vec:Object.fromEntries(p.map(t=>{let[r]=t;return[r,f[r]]})),mate_vec:n}})(s.cp_vec,s.depth,o.fen,s.mate_vec);(!o.analysis.stockfish||o.analysis.stockfish.depth<s.depth)&&o.addStockfishAnalysis(t)}}})},l=t=>JSON.stringify(t.map(t=>{var r;return{ply:t.ply,fen:t.fen,hasStockfish:!!t.stockfish,stockfishDepth:(null==(r=t.stockfish)?void 0:r.depth)||0,hasMaia:!!t.maia,maiaModels:t.maia?Object.keys(t.maia).sort():[]}}));function u(t,r){let i=t.getMainLine(),n=[];for(let t=1;t<i.length;t++){let s=i[t];if(s.turn===("white"===r?"b":"w")&&(s.blunder||s.inaccuracy)&&s.move&&s.san){let i=s.parent;if(!i)continue;let o=i.analysis.stockfish;if(!o||!o.model_move)continue;let l=new a.d$(i.fen).move(o.model_move,{sloppy:!0});if(!l)continue;n.push({nodeId:"move-".concat(t),moveIndex:t,fen:i.fen,playedMove:s.move,san:s.san,type:s.blunder?"blunder":"inaccuracy",bestMove:o.model_move,bestMoveSan:l.san,playerColor:r})}}return n}function d(t,r){let i=function(t){let r=t.analysis.stockfish;if(!r||!r.model_move)return null;let i=new a.d$(t.fen).move(r.model_move,{sloppy:!0});return i?{move:r.model_move,san:i.san}:null}(t);return!!i&&i.move===r}let c={"-10.0":.16874792794783955,"-9.9":.16985049833887045,"-9.8":.17055738720598324,"-9.7":.17047675058336964,"-9.6":.17062880930380164,"-9.5":.17173295708238823,"-9.4":.1741832515174232,"-9.3":.17496583875894223,"-9.2":.17823840614328434,"-9.1":.17891311823785128,"-9.0":.18001756037367211,"-8.9":.18238828856575562,"-8.8":.18541818422621015,"-8.7":.187321278512311
278373,"-8.6":.188595528612019,"-8.5":.19166809721845357,"-8.4":.18989033973470404,"-8.3":.19357848980722225,"-8.2":.195212660943061,"-8.1":.1985674406526584,"-8.0":.20401430566976098,"-7.9":.2053494594581885,"-7.8":.2095001157139551,"-7.7":.2127603864858716,"-7.6":.21607609694057794,"-7.5":.21973060624595708,"-7.4":.2228248514176221,"-7.3":.22299885811455433,"-7.2":.22159517034121434,"-7.1":.2253474128373214,"-7.0":.22700275966883976,"-6.9":.2277978270416834,"-6.8":.23198254537369023,"-6.7":.23592594616253237,"-6.6":.24197398088661215,"-6.5":.24743721350483228,"-6.4":.2504634951693775,"-6.3":.25389828445048646,"-6.2":.2553693799097443,"-6.1":.2574747677153313,"-6.0":.26099610941165985,"-5.9":.26359484469524885,"-5.8":.26692516804140987,"-5.7":.269205898445802,"-5.6":.2716602975482676,"-5.5":.2762577909143481,"-5.4":.27686670371314326,"-5.3":.2811527494908349,"-5.2":.2842962444080047,"-5.1":.28868260131133583,"-5.0":.2914459750278813,"-4.9":.29552500948265914,"-4.8":.29889111624248266,"-4.7":.30275330907688625,"-4.6":.30483684697544633,"-4.5":.3087308954422261,"-4.4":.3119607377503364,"-4.3":.3149431542506458,"-4.2":.31853131804955126,"-4.1":.320778152372042,"-4.0":.32500585429582063,"-3.9":.3287550205647155,"-3.8":.3302152905962328,"-3.7":.3337414440782651,"-3.6":.3371096329087784,"-3.5":.3408372806176929,"-3.4":.3430467389812629,"-3.3":.345358794898586,"-3.2":.3488968896485116,"-3.1":.35237319918137733,"-3.0":.354602162593592,"-2.9":.35921288506416393,"-2.8":.3620978187487768,"-2.7":.36570889434391574,"-2.6":.36896483582772577,"-2.5":.3738375709360098,"-2.4":.37755946149735364,"-2.3":.38083501393471353,"-2.2":.3841356210618174,"-2.1":.38833097169521236,"-2.0":.3913569664390527,"-1.9":.39637664590926824,"-1.8":.4006706381318188,"-1.7":.40568723118901173,"-1.6":.4112309032143989,"-1.5":.4171285506703859,"-1.4":.422533096069275,"-1.3":.4301262113278628,"-1.2":.4371930420830884,"-1.1":.44297556987180564,"-1.0":.4456913220302985,"-0.9":.4524847690277852,"-0.8":.4589667426852546,"-0.7":.46660356893847554,"-0.6":.47734553584312966,"-0.5":.4838742651753062,"-0.4":.4949662422107537,"-0.3":.5052075551297714,"-0.2":.5134173311516534,"-0.1":.5243603487770374,"0.0":.526949638981131,"0.1":.5295389291852245,"0.2":.5664296189371014,"0.3":.5748717155242605,"0.4":.5869360163496304,"0.5":.5921709270831235,"0.6":.6012651707026009,"0.7":.6088638279243903,"0.8":.6153816495064385,"0.9":.6213113677421394,"1.0":.6271095095579187,"1.1":.632804166473034,"1.2":.6381911052846212,"1.3":.6442037744916549,"1.4":.649365491330027,"1.5":.6541269394628821,"1.6":.6593775707102116,"1.7":.6642844357446305,"1.8":.6680323879474359,"1.9":.6719097160994534,"2.0":.6748374005101319,"2.1":.6783363422342483,"2.2":.6801467867275195,"2.3":.684829276628467,"2.4":.6867513620895516,"2.5":.6905527274606579,"2.6":.6926332976777145,"2.7":.6952680187678887,"2.8":.7001656575385784,"2.9":.7010142788018504,"3.0":.7047537668053925,"3.1":.7073295468984271,"3.2":.7106392738949507,"3.3":.7116862871579852,"3.4":.7149981105354425,"3.5":.7168150290640533,"3.6":.7181645290803663,"3.7":.7215706104143079,"3.8":.7257548871790502,"3.9":.7266799478667236,"4.0":.7312566255649167,"4.1":.7338343990993276,"4.2":.7363492332937249,"4.3":.7374945601492073,"4.4":.7413387385114591,"4.5":.7466896678519318,"4.6":.7461156227069248,"4.7":.7500348334958896,"4.8":.7525591569082364,"4.9":.7567349424376287,"5.0":.7596581998583797,"5.1":.7621623413577621,"5.2":.7644432506942895,"5.3":.7668438338565464,"5.4":.7697341715213551,"5.5":.7718264040129471,"5.6":.774903252738822,"5.7":.777338112750803,"5.8":.7782543748612702,"5.9":.7815446531238023,"6.0":.7817240741095305,"6.1":.7843444714897749,"6.2":.7879064312243436,"6.3":.7894336918448414,"6.4":.7906807160826923,"6.5":.7958175057898639,"6.6":.799001778895725,"6.7":.8059773285734155,"6.8":.8073085278260186,"6.9":.8079169497726442,"7.0":.8094553564231399,"7.1":.812049156586624,"7.2":.8080964608399982,"7.3":.8089371589128438,"7.4":.811884066397279,"7.5":.8139355726992591,"7.6":.8176447870147248,"7.7":.8205118056812014,"7.8":.8239310183322626,"7.9":.8246215704824976,"8.0":.8282444028473858,"8.1":.8307566922119521,"8.2":.8299970989266028,"8.3":.8329910434137715,"8.4":.8348790035853562,"8.5":.8354299179013772,"8.6":.838042734118834,"8.7":.8386288753155167,"8.8":.8403357337021318,"8.9":.8438203836486884,"9.0":.8438217313242881,"9.1":.8451134380453753,"9.2":.8456384082100551,"9.3":.844182520663178,"9.4":.8463847100484717,"9.5":.8479706716538067,"9.6":.8511321531494442,"9.7":.8506127153603494,"9.8":.8490128260556276,"9.9":.8522167487684729,"10.0":.8518353443061348},h=function(t){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{let i=("string"==typeof t?parseFloat(t):t)/100,a=Math.max(-10,Math.min(10,i)),n=Math.round(10*a)/10,s=n.toFixed(1);if(s in c)return c[s];if(n<-10)return c["-10.0"];if(n>10)return c["10.0"];return r?NaN:.5}catch(t){if(r)return NaN;throw t}}},72924:(t,r,i)=>{"use strict";i.d(r,{i:()=>h});var a=i(21623),n=i(67798),s=i(6249),o=i(93563),l=i(37605),u=i(34474);let d=(t,r)=>"zIndex"!==r&&!!("number"==typeof t||Array.isArray(t)||"string"==typeof t&&(u.f.test(t)||"0"===t)&&!t.startsWith("url("));var c=i(50005);class h{constructor({autoplay:t=!0,delay:r=0,type:i="keyframes",repeat:n=0,repeatDelay:s=0,repeatType:
2783o="loop",...l}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=a.k.now(),this.options={autoplay:t,delay:r,type:i,repeat:n,repeatDelay:s,repeatType:o,...l},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt&&this.resolvedAt-this.createdAt>40?this.resolvedAt:this.createdAt}get resolved(){return this._resolved||this.hasAttemptedResolve||(0,n.q)(),this._resolved}onKeyframesResolved(t,r){this.resolvedAt=a.k.now(),this.hasAttemptedResolve=!0;let{name:i,type:n,velocity:u,delay:h,onComplete:f,onUpdate:p,isGenerator:m}=this.options;if(!m&&!function(t,r,i,a){let n=t[0];if(null===n)return!1;if("display"===r||"visibility"===r)return!0;let s=t[t.length-1],u=d(n,r),c=d(s,r);return(0,l.$)(u===c,`You are trying to animate ${r} from "${n}" to "${s}". ${n} is not an animatable value - to enable this animation set ${n} to a value animatable to ${s} via the \`style\` property.`),!!u&&!!c&&(function(t){let r=t[0];if(1===t.length)return!0;for(let i=0;i<t.length;i++)if(t[i]!==r)return!0}(t)||("spring"===i||(0,o.WH)(i))&&a)}(t,i,n,u))if(s.d.current||!h){p&&p((0,c.X)(t,this.options,r)),f&&f(),this.resolveFinishedPromise();return}else this.options.duration=0;let g=this.initPlayback(t,r);!1!==g&&(this._resolved={keyframes:t,finalKeyframe:r,...g},this.onPostResolved())}onPostResolved(){}then(t,r){return this.currentFinishedPromise.then(t,r)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(t=>{this.resolveFinishedPromise=t})}}},72975:(t,r,i)=>{"use strict";i.d(r,{YH:()=>a,hB:()=>s,kJ:()=>n});let a=Array.from({length:21},(t,r)=>"maia_kdd_".concat(600+100*r)),n=a.map(t=>parseInt(t.replace("maia_kdd_","")));a.map(t=>({id:t,name:t.replace("maia_kdd_","Maia ")}));let s=Array.from({length:21},(t,r)=>{let i=600+100*r;return{id:"maia_kdd_".concat(i),name:"Maia-3 ".concat(i)}})},73198:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.State=void 0;var a=i(6162),n=i(29610);r.State=function(){function t(t,r,i,n,s,o,l){this.board=t||Array(128),this.kings=r||{w:a.EMPTY,b:a.EMPTY},this.turn=i||a.WHITE,this.castling=n||{w:0,b:0},this.ep_square=s||a.EMPTY,this.half_moves=o||0,this.move_number=l||1}return t.prototype.clone=function(){return new t(this.board.slice(),{w:this.kings.w,b:this.kings.b},this.turn,{w:this.castling.w,b:this.castling.b},this.ep_square,this.half_moves,this.move_number)},Object.defineProperty(t.prototype,"fen",{get:function(){return n.getFen(this)},enumerable:!1,configurable:!0}),t}()},74279:(t,r,i)=>{"use strict";i.d(r,{u:()=>n});var a=i(14232);let n=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"white",[i,n]=(0,a.useState)(t.getRoot()),[s,o]=(0,a.useState)(r);(0,a.useEffect)(()=>{n(t.getRoot())},[t]);let l=(0,a.useMemo)(()=>t.getMainLine().length,[t]),u=(0,a.useCallback)(t=>{n(t)},[n]),d=(0,a.useCallback)(()=>{(null==i?void 0:i.mainChild)&&n(i.mainChild)},[i,n]),c=(0,a.useCallback)(()=>{(null==i?void 0:i.parent)&&n(i.parent)},[i,n]),h=(0,a.useCallback)(()=>{t&&n(t.getRoot())},[t,n]);return(0,a.useEffect)(()=>{o(r)},[r]),{tree:t,currentNode:i,setCurrentNode:n,orientation:s,setOrientation:o,goToNode:u,goToNextNode:d,goToPreviousNode:c,goToRootNode:h,plyCount:l}}},75540:(t,r)=>{"use strict";function i(t){var r;let{config:i,src:a,width:n,quality:s}=t,o=s||(null==(r=i.qualities)?void 0:r.reduce((t,r)=>Math.abs(r-75)<Math.abs(t-75)?r:t))||75;return i.path+"?url="+encodeURIComponent(a)+"&w="+n+"&q="+o+(a.startsWith("/_next/static/media/"),"")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return a}}),i.__next_img_default=!0;let a=i},76084:(t,r,i)=>{"use strict";i.d(r,{Q0:()=>a.Q0,Mj:()=>o,T9:()=>S,u8:()=>h.u,lW:()=>k});var a=i(53068),n=i(43687),s=i(14232);let o=(t,r)=>{let[i,a]=(0,s.useState)(()=>{try{let i=window.localStorage.getItem(t);return i?JSON.parse(i):r}catch(t){return console.error(t),r}});return[i,r=>{try{let n=r instanceof Function?r(i):r;a(n),window.localStorage.setItem(t,JSON.stringify(n))}catch(t){console.error(t)}}]};var l=i(32711),u=i(67427),d=i(24044),c=i(62207),h=i(74279),f=i(72975),p=i(94598);let m=f.YH.map(t=>parseInt(t.replace("maia_kdd_",""),10)),g="[DRILL_BOOK]",b=t=>{let r=Object.entries(t).filter(t=>{let[,r]=t;return Number.isFinite(r)&&r>0});if(!r.length)return null;let i=r.reduce((t,r)=>{let[,i]=r;return t+i},0);if(i<=0)return r[0][0];let a=Math.random()*i;for(let[t,i]of r)if((a-=i)<=0)return t;return r[r.length-1][0]},y=t=>{let r=t.trim();if(!r)return r;let i=r.split(/\s+/);if(i.length>=6)return i.slice(0,6).join(" ");let a={1:"w",2:"-",3:"-",4:"0",5:"1"},n=[...i];for(let t=i.length;t<6;t+=1){var s;n[t]=null!=(s=a[t])?s:"0"}return n[1]||(n[1]="w"),n[2]||(n[2]="-"),n[3]||(n[3]="-"),n.slice(0,6).join(" ")},v=t=>t.gameOver()?t.inCheckmate()?"checkmate":t.inThreefoldRepetition()?"threefold_repetition":t.insufficientMaterial()?"insufficient_material":t.inStalemate()?"stalemate":t.inDraw()?"draw":"game_over":null,_=(t,r)=>{if("insufficient_material"===t)return"Drill ended: draw by insufficient material.";if("threefold_repetition"===t)return"Drill ended: draw by threefold repetition.";if("stalemate"===t)return"Drill ended: draw by stalemate.";if("checkmate"===t)return"Drill ended: checkmate.";if("manual_end"===t)return"Drill ended early by you.";if("draw"===t)return"Drill ended: draw by rule (for example, 50-move rule).";if("game_over"===t)return"Drill ended: game over.";let i=r.selection.targetMoveNumber;return null!==i?"Drill ended: target reached (".concat(r.playerMoveCount,"/").concat(i," moves)."):"Drill ended: target reached."},w=()=>({currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!1,isCancelled:!1}),x=t=>new Promise(r=>{setTimeout(r,t)}),$=(t,r)=>{let i=r.getRoot();if(!t||""===t.trim())return i;let a=new l.d$;(null==i?void 0:i.fen)&&a.fen()!==i.fen&&a.load(i.fen);let n=i;for(let i of t.replace(/\d+\./g,"").trim().split(/\s+/).filter(t=>t&&""!==t))try{let t=a.move(i);if(!t)break;let s=t.from+t.to+(t.promotion||""),o=n.children.find(t=>t.move===s);if(o)n=o;else{let i=r.addMainlineNode(n,a.fen(),s,t.san);if(i)n=i;else break}}catch(t){console.error("Error parsing move:",i,t);break}return n},S=t=>{let{playMoveSound:r}
2783=(0,n.f)(),[i,a]=(0,s.useState)(null),[S,k]=(0,s.useState)(null),[C,E]=(0,s.useState)(!1),[T,I]=(0,s.useState)([]),[A,N]=(0,s.useState)(0),O=(0,s.useRef)({}),M=(0,s.useMemo)(()=>(t=>{let r=[];return t.forEach(t=>{var i;if("endgame"===t.opening.categoryType&&(null==(i=t.endgamePositions)?void 0:i.length)){let i=t.variation?"".concat(t.opening.name," → ").concat(t.variation.name):t.opening.name;t.endgamePositions.forEach(a=>{let n=y(a.fen),s="w"===n.split(" ")[1]?"white":"black",o={id:"".concat(t.id,"__").concat(a.trait,"-").concat(a.index),name:a.traitLabel&&i?"".concat(i," (").concat(a.traitLabel,")"):i,description:"".concat(a.traitLabel," endgame drill"),fen:n,pgn:"",variations:[],categoryType:"endgame",isCustom:t.opening.isCustom,setupFen:n},l={...t,id:"".concat(t.id,"__").concat(a.trait,"-").concat(a.index),opening:o,variation:null,playerColor:s,targetMoveNumber:null,endgameMeta:{categoryName:a.categoryName,categorySlug:a.categorySlug,subcategoryName:a.subcategoryName,subcategorySlug:a.subcategorySlug,trait:a.trait,traitLabel:a.traitLabel,positionIndex:a.index,groupId:t.id,groupLabel:i},endgamePositions:void 0,endgameTraits:[a.trait],endgameScope:t.endgameScope};r.push(l)})}else r.push(t)}),r})(t.selections),[t.selections]),P=(0,s.useRef)(M),[R,j]=(0,s.useState)(!1),[z,D]=(0,s.use
2783State)(-1),[B,L]=(0,s.useState)(!1),[U,F]=(0,s.useState)(null),[q,V]=(0,s.useState)(!1),[W,H]=(0,s.useState)(null),[G,K]=(0,s.useState)(!1),[Y,Q]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[J,ee]=(0,s.useState)(!1),et=(0,s.useRef)(null),er=(0,s.useRef)(null),ei=(0,s.useRef)(null),ea=(0,s.useContext)(p.Mb),{maia:en,status:es}=(0,s.useContext)(p.ul),eo=(0,s.useRef)(!1),[el,eu]=(0,s.useState)(w()),[ed,ec]=o("currentMaiaModel",f.YH[0]),eh=(0,s.useCallback)(t=>{var r;let i=t.id,a=(null!=(r=O.current[i])?r:0)+1;O.current[i]=a;let n="".concat(i,"__attempt_").concat(a);return{...t,id:n}},[]),ef=(0,s.useCallback)(()=>{let t=P.current;if(!t.length)return a(null),N(0),D(-1),null;if(!R&&z<t.length-1){let r=z+1,i=eh(t[r]);return a(i),D(r),N(t=>t<=0?1:t+1),i}R||j(!0);let r=Math.floor(Math.random()*t.length),i=eh(t[r]);return a(i),N(t=>t+1),i},[eh,R,z]);(0,s.useEffect)(()=>{f.YH.includes(ed)||ec(f.YH[0])},[ed,ec]),(0,s.useEffect)(()=>{if(P.current=M,O.current={},eE.current=!0,ek.current=Promise.resolve(),eC.current=new Set,eT.current=null,ea.stopEvaluation(),I([]),j(!1),D(-1),N(0),L(!1),F(null),k(null),H(null),Z(!1),ee(!1),eo.current=!1,eu(w()),!M.length)return void a(null);a(eh(M[0])),D(0),N(1),K(!1),Q(!1)},[M,eh,ea]),(0,s.useEffect)(()=>{var t;if(!i)return void k(null);let r=et.current;if(r&&r.selection.id===i.id){k(r),K(!1),Q(!0),Z(!1),ee(!1),et.current=null;return}let a=y((null==(t=i.variation)?void 0:t.setupFen)||i.opening.setupFen||"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"),n=new c.lr(a),s=$(i.variation?i.variation.pgn:i.opening.pgn,n),o=y((null==s?void 0:s.fen)||a);k({id:i.id,selection:i,moves:[],tree:n,currentFen:o,toPlay:"w"===new l.d$(o).turn()?"white":"black",openingEndNode:s,playerMoveCount:0}),K(!1),Q(!1),Z(!1),ee(!1),H(null)},[i]);let ep=(0,s.useMemo)(()=>new c.lr(new l.d$().fen()),[]),em=(null==S?void 0:S.tree)||ep,eg=(0,h.u)(em,(null==i?void 0:i.playerColor)||"white");(0,s.useEffect)(()=>{S&&0===S.moves.length&&(S.openingEndNode?eg.setCurrentNode(S.openingEndNode):S.tree&&eg.setCurrentNode(S.tree.getRoot()))},[null==S?void 0:S.id,eg]),(0,s.useEffect)(()=>{if(!S)return;let t=er.current,r=ei.current;t&&r&&S.selection.id===r&&(eg.setCurrentNode(t),er.current=null,ei.current=null)},[null==S?void 0:S.id,eg]);let eb=(0,s.useMemo)(()=>!S||!eg.currentNode||("w"===new l.d$(eg.currentNode.fen).turn()?"white":"black")===(null==i?void 0:i.playerColor),[S,eg.currentNode,null==i?void 0:i.playerColor]),ey=(0,s.useMemo)(()=>!!S&&!!i&&!Y&&!X&&!J&&(!!v(em.toChess())||null!==i.targetMoveNumber&&S.playerMoveCount>=i.targetMoveNumber),[Y,i,S,em,X,J,eg.currentNode]),ev=(0,s.useMemo)(()=>!!S&&!!eg.currentNode&&eg.currentNode===S.openingEndNode,[S,eg.currentNode]),e_=(0,s.useMemo)(()=>{if(!eg.currentNode||!eb)return new Map;let t=new Map;return new l.d$(eg.currentNode.fen).moves({verbose:!0}).forEach(r=>{var i;let{from:a,to:n}=r;t.set(a,(null!=(i=t.get(a))?i:[]).concat([n]))}),t},[eg.currentNode,eb]),ew=(0,s.useCallback)(async(t,r)=>{let i=0;for(;"ready"!==es&&i<30&&!eo.current;)await x(100),i++;if("ready"!==es||!en||eo.current)return null;let a=parseInt(r.replace("maia_kdd_",""),10);if(!Number.isFinite(a))return null;try{var n,s;let{result:r}=await en.batchEvaluateMaia3([t],[a],[a]);return null!=(s=null==r||null==(n=r[0])?void 0:n.policy)?s:null}catch(t){return console.warn(g,"Failed to evaluate Maia policy for drill:",t),null}},[en,es]),ex=(0,s.useCallback)(async t=>{var r,i;let{selection:a}=t,n=eg.currentNode||t.tree.getRoot(),s=[],o=[],u=function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=[...r,t];if(t.move&&t.san){var n,d,h,f,p;i.length;let r=i[i.length-2],u=(r?"w"===new l.d$(r.fen).turn()?"white":"black":null)===a.playerColor,m=null==(n=t.analysis)?void 0:n.stockfish,g=null==(h=t.analysis)||null==(d=h.maia)?void 0:d[ed];m&&m.depth<18&&console.warn("Stockfish analysis depth ".concat(m.depth," is below target depth ").concat(18," for position ").concat(t.fen)),g||console.warn("Missing Maia analysis for position ".concat(t.fen));let b=null==m?void 0:m.model_optimal_cp,y=Math.abs(b-(null==r||null==(p=r.analysis)||null==(f=p.stockfish)?void 0:f.model_optimal_cp)),v=null==m?void 0:m.model_move,_=(null==g?void 0:g.policy)?Object.keys(g.policy).sort((t,r)=>g.policy[r]-g.policy[t])[0]:void 0,w="good";if(u&&r&&t.move){let i=c.RV.classifyMove(r,t.move,ed);w=i.blunder?"blunder":i.inaccuracy?"inaccuracy":i.excellent?"excellent":"good"}let x={move:t.move,san:t.san,fen:t.fen,fenBeforeMove:null==r?void 0:r.fen,moveNumber:r&&parseInt(r.fen.split(" ")[5],10)||1,isPlayerMove:u,evaluation:b,classification:w,evaluationLoss:y,bestMove:v||_,bestEvaluation:null==m?void 0:m.model_optimal_cp,stockfishBestMove:v,maiaBestMove:_};s.push(x);let $={moveNumber:x.moveNumber,evaluation:b,isPlayerMove:u,moveClassification:w};o.push($)}t.children.length>0&&u(t.children[0],i)};u(t.openingEndNode||t.tree.getRoot());let d=s.filter(t=>t.isPlayerMove),h=d.filter(t=>"excellent"===t.classification),p=d.filter(t=>"good"===t.classification),m=d.filter(t=>"inaccuracy"===t.classification),g=d.filter(t=>"mistake"===t.classification),b=d.filter(t=>"blunder"===t.classification),y=d.length>0?(h.length+p.length)/d.length*100:100,v=d.length>0?d.reduce((t,r)=>t+r.evaluationLoss,0)/d.length:0,_={selection:a,finalNode:n,playerMoves:d.map(t=>t.move),allMoves:s.map(t=>t.move),totalMoves:d.length,blunders:b.map(t=>t.move),goodMoves:[...h,...p].map(t=>t.move),finalEvaluation:null!=(i=null==(r=o[o.length-1])?void 0:r.evaluation)?i:0,completedAt:new Date,moveAnalyses:s,accuracyPercentage:y,averageEvaluationLoss:v},w=[];y>=90?w.push("Excellent performance! You played very accurately."):y>=70?w.push("Good job! Most of your moves were strong."):w.push("This opening needs more practice."),b.length>0&&w.push("Watch out for ".concat(b.length," critical mistake").concat(b.length>
27831?"s":"","."));let x=new Map,$=t=>{x.set(t.fen,t),t.children.forEach($)};$(t.tree.getRoot());let S=f.YH.map(t=>{let r=parseInt(t.replace("maia_kdd_","")),i=0,a=0,n=0;for(let r of d){var s,o;let l=r.fenBeforeMove?x.get(r.fenBeforeMove):null,u=null==l||null==(o=l.analysis)||null==(s=o.maia)?void 0:s[t];if((null==u?void 0:u.policy)&&r.move in u.policy){let t=u.policy[r.move];a+=t,i+=Math.log(Math.max(t,.001)),n++}}let l=n>0?a/n:0,u=n>0?i/n:-10,c=Math.max(0,Math.min(1,(u+8)/8));return{rating:r,probability:l,moveMatch:!1,logLikelihood:u,likelihoodProbability:c,averageMoveProb:l}}),k={predictedRating:S.reduce((t,r)=>r.likelihoodProbability>t.likelihoodProbability?r:t).rating,standardDeviation:150,sampleSize:d.length,ratingDistribution:S};return{drill:_,evaluationChart:o,accuracy:y,blunderCount:b.length,goodMoveCount:p.length+h.length,inaccuracyCount:m.length,mistakeCount:g.length,excellentMoveCount:h.length,feedback:w,moveAnalyses:s,ratingComparison:[],ratingPrediction:k,bestPlayerMoves:d.filter(t=>"excellent"===t.classification).slice(0,3),worstPlayerMoves:[...b,...g].slice(0,3),averageEvaluationLoss:v,openingKnowledge:Math.max(0,Math.min(100,y))}},[eg.currentNode]),e$=(0,s.useCallback)(async t=>{let r=t.analysis.maia;if(r&&f.YH.every(t=>r[t])||eo.current)return;let i=0;for(;"ready"!==es&&i<50&&!eo.current;)await x(100),i++;if("ready"===es&&en&&!eo.current)try{let r=Array(f.YH.length).fill(t.fen),{result:i}=await en.batchEvaluateMaia3(r,m,m),a={};f.YH.forEach((t,r)=>{a[t]=i[r]}),t.addMaiaAnalysis(a,ed)}catch(t){console.error("Failed to compute Maia analysis for drill node:",t)}},[ed,en,es]),eS=(0,s.useCallback)(async t=>{var r,i,a;let n=t.analysis.stockfish;if(n&&n.depth>=18||eo.current)return;let s=new l.d$(t.fen).moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||"")),o=new Set(s);if(0===s.length)return;let u=0;for(;!ea.isReady()&&u<50&&!eo.current;)await x(100),u++;if(!ea.isReady()||eo.current)return;let d=null==(i=t.analysis.maia)||null==(r=i[ed])?void 0:r.policy,c=[];if(d){let t=0;for(let[r,i]of Object.entries(d).filter(t=>{let[,r]=t;return Number.isFinite(r)&&r>0}).sort((t,r)=>{let[,i]=t,[,a]=r;return a-i}))if(o.has(r)&&(c.push(r),(t+=i)>=.95))break}let h=null==(a=t.mainChild)?void 0:a.move,f=h&&o.has(h)?[h]:[],p=ea.streamEvaluations(t.fen,s.length,18,{maiaCandidateMoves:c,forcedCandidateMoves:f,maiaPolicy:d});if(p)try{for await(let r of p){if(eo.current)break;t.addStockfishAnalysis(r,ed)}}catch(t){console.error("Failed to compute Stockfish analysis for drill node:",t)}},[ed,ea]),ek=(0,s.useRef)(Promise.resolve()),eC=(0,s.useRef)(new Set),eE=(0,s.useRef)(!1),eT=(0,s.useRef)(null),eI=(0,s.useRef)(e$),eA=(0,s.useRef)(eS);(0,s.useEffect)(()=>{eI.current=e$},[e$]),(0,s.useEffect)(()=>{eA.current=eS},[eS]),(0,s.useEffect)(()=>{if(!S||q)return;S.id!==eT.current&&(eE.current=!0,ea.stopEvaluation(),ek.current=Promise.resolve(),eC.current=new Set,eT.current=S.id,eE.current=!1);let t=em.getMainLine(),r=S.openingEndNode,i=r?Math.max(t.indexOf(r),0):0,a=t.slice(i),n=S.id;for(let t of a)eC.current.has(t.fen)||(eC.current.add(t.fen),ek.current=ek.current.then(async()=>{try{var r,i;if(eE.current||eT.current!==n)return;console.log("[bg] maia start:",t.san||t.move||"?"),await eI.current(t);let a=!!(t.analysis.maia&&f.YH.every(r=>{var i;return null==(i=t.analysis.maia)?void 0:i[r]}));if(console.log("[bg] maia done:",a,"| sf start"),eE.current||eT.current!==n)return;await eA.current(t),console.log("[bg] sf done, depth:",null!=(i=null==(r=t.analysis.stockfish)?void 0:r.depth)?i:0)}catch(t){console.error("[bg] error analyzing node:",t)}}))},[S,em,q,ea,eg.currentNode]);let eN=(0,s.useCallback)(()=>{eE.current=!0,ea.stopEvaluation()},[ea]),eO=(0,s.useCallback)(async t=>{eN(),await x(50);let r=t.tree.getMainLine(),i=t.openingEndNode||r[0],a=i?Math.max(r.indexOf(i),0):0,n=r.slice(a).filter(t=>{let r=t.analysis.maia,i=!r||f.YH.some(t=>!r[t]),a=t.analysis.stockfish,n=!a||a.depth<18;return i||n});if(0===n.length)return eu(t=>({...t,currentMoveIndex:0,totalMoves:0,currentMove:"",isAnalyzing:!1,isComplete:!0,isCancelled:!1})),!0;eo.current=!1,eu({...w(),totalMoves:n.length,isAnalyzing:!0});for(let t=0;t<n.length&&!eo.current;t++){let r=n[t],i=r.san||r.move||"Position ".concat(a+t+1);if(eu(r=>({...r,currentMoveIndex:t+1,currentMove:i})),await e$(r),eo.current)break;await eS(r)}let s=eo.current;return eu(t=>({...t,isAnalyzing:!1,isComplete:!s,isCancelled:s})),eo.current=!1,!s},[e$,eS,eu,eN]),eM=(0,s.useCallback)(()=>{eo.current=!0,ea.stopEvaluation(),eu(t=>({...t,isAnalyzing:!1,isCancelled:!0})),V(!1)}
2783,[V,ea]),eP=(0,s.useCallback)(t=>{I(r=>{let i=r.findIndex(r=>r.selection.id===t.selection.id&&r.finalNode.fen===t.finalNode.fen);if(-1===i)return[...r,t];let a=[...r];return a[i]={...a[i],...t},a})},[]),eR=(0,s.useCallback)((t,r)=>{if(r)return r;let i=v(t.tree.toChess());return i||(!J&&null!==t.selection.targetMoveNumber&&t.playerMoveCount>=t.selection.targetMoveNumber?"target_moves_reached":null)},[J]),ej=(0,s.useCallback)(async(t,r)=>{let i=eR(t,r),a=i?_(i,t):null;try{await (0,d.i)({opening_fen:t.selection.variation?t.selection.variation.fen:t.selection.opening.fen,side_played:t.selection.playerColor,opponent:t.selection.maiaVersion,num_moves:t.moves.length,moves_played_uci:t.moves})}catch(t){console.error("Failed to log opening drill:",t)}if(!await eO(t))return null;let n=await ex(t),s=a?[a,...n.feedback.filter(t=>t!==a)]:n.feedback,o={...n.drill,feedback:s},l={...n,drill:o,feedback:s};return eP(o),l},[eO,ex,eP,eR]),ez=(0,s.useCallback)(t=>{let r=t.selection.targetMoveNumber;Z(!0),ee(!1),V(!1),K(!1),H(null!==r?"Target reached (".concat(t.playerMoveCount,"/").concat(r," moves). Extend drill or end with feedback."):"Target reached. Extend drill or end with feedback.")},[]),eD=(0,s.useCallback)(async(t,r)=>{let i=t||S;if(!i)return;let a=eR(i,r),n=a?_(a,i):null;n&&H(n);try{Z(!1),V(!0);let t=await ej(i,r);if(!t)return;F(t),L(!0)}catch(t){console.error("Error completing drill analysis:",t),L(!0)}finally{V(!1)}},[ej,S,eR]),eB=(0,s.useCallback)((t,r)=>{let i=eR(t,r);i&&H(_(i,t)),V(!0),K(!1),setTimeout(()=>{eD(t,r)},1500)},[eD,eR]),eL=(0,s.useCallback)(async()=>{if(null==U?void 0:U.drill)eP(U.drill);else if(S){var t;let r=X?"target_moves_reached":null!=(t=eR(S))?t:void 0;if(r)try{V(!0),await ej(S,r)}catch(t){console.error("Error persisting completed drill:",t)}finally{V(!1)}}L(!1),F(null),Q(!1),E(!1),Z(!1),ee(!1),H(null),K(!1),eo.current=!1,eu(w()),k(null),ef()},[ef,ej,S,U,X,eP,eR]),eU=(0,s.useCallback)(()=>{let t=(null==S?void 0:S.openingEndNode)||(null==S?void 0:S.tree.getRoot());t&&eg.setCurrentNode(t),L(!1),E(!0),Q(!0),Z(!1),K(!1)},[S,eg]),eF=(0,s.useCallback)(()=>{S&&X&&(ee(!0),Z(!1),H(null),K(!0))},[S,X]),eq=(0,s.useCallback)(async()=>{if(S)try{var t;V(!0);let r=X?"target_moves_reached":null!=(t=eR(S))?t:void 0;if(r){let t=await ej(S,r);if(!t)return;F(t)}else{if(!await eO(S))return;let t=await ex(S);F(t)}L(!0)}catch(t){console.error("Error analyzing current drill performance:",t)}finally{V(!1)}},[ej,S,eO,ex,X,eR]),eV=(0,s.useCallback)(()=>{if(U)return void L(!0);eq()},[U,eq]),eW=(0,s.useCallback)(t=>{let r=(t=>{let r=new c.lr(t.fen);return r.root=t,r})((t=>{let r=t;for(;r.parent;)r=r.parent;return r})(t.finalNode)),i=t.finalNode.getPath(),n=Math.max(0,i.length-t.allMoves.length-1),s=i[n]||r.getRoot(),o={id:t.selection.id,selection:t.selection,moves:t.allMoves,tree:r,currentFen:t.finalNode.fen,toPlay:"w"===new l.d$(t.finalNode.fen).turn()?"white":"black",openingEndNode:s,playerMoveCount:t.totalMoves};et.current=o,er.current=t.finalNode,ei.current=t.selection.id,a(t.selection),k(o),E(!0),Q(!0),Z(!1),ee(!1),L(!1),F(null),K(!1),H(null)},[]),eH=(0,s.useCallback)(()=>{O.current={},eE.current=!0,ek.current=Promise.resolve(),eC.current=new Set,eT.current=null,ea.stopEvaluation(),I([]),j(!1),D(-1),N(0),a(null),k(null),E(!1),Q(!1),Z(!1),ee(!1),L(!1),F(null),H(null),K(!1),eo.current=!1,eu(w()),P.current.length&&(a(eh(P.current[0])),D(0),N(1))},[eh,ea]),eG=(0,s.useCallback)(async(t,r)=>{if(S&&eg.currentNode&&eb&&!ey&&!q)try{let n=r||eg.currentNode,s=new l.d$(n.fen),o=s.move(t,{sloppy:!0});if(!o)return;let u=null,d=n.children.find(r=>r.move===t);if(d)u=d;else{var a;u=(null==(a=n.mainChild)?void 0:a.move)===t?n.mainChild:n.mainChild?n.addChild(s.fen(),t,o.san,!1,ed):n.addChild(s.fen(),t,o.san,!0,ed)}if(u){eg.setCurrentNode(u);let t=S.playerMoveCount+1,r=em.getMainLine(),a=S.openingEndNode?S.openingEndNode.getPath().length:1,n=r.slice(a),s={...S,moves:n.map(t=>t.move).filter(Boolean),currentFen:u.fen,playerMoveCount:t};if(k(s),console.log("After player move - game tree state:",{mainLineLength:em.getMainLine().length,updatedGameMovesLength:s.moves.length,currentNodeFen:u.fen,playerMoveCount:t}),!Y){let t=v(em.toChess());t?eB(s,t):!J&&i&&null!==i.targetMoveNumber&&s.playerMoveCount>=i.targetMoveNumber?ez(s):(console.log("Setting waitingForMaiaResponse to true after player move"),K(!0))}}}catch(t){console.error("Error making player move:",t)}},[S,eg.currentNode,em,eb,i,eB,Y,J,ey,q,ez,eg]),eK=(0,s.useCallback)(async t=>{if(S&&i)try{var a;let t=em.getLastMainlineNode(),n=(null==(a=S.openingEndNode)?void 0:a.fen)||S.tree.getRoot().fen,s=new l.d$(t.fen),o=new Set(s.moves({verbose:!0}).map(t=>"".concat(t.from).concat(t.to).concat(t.promotion||""))),d=null;if(S.moves.length<6)try{let r=await (0,u.q3)(t.fen),a=null==r?void 0:r[i.maiaVersion];if(console.log(g,{source:"opening-book",fen:t.fen,drillStartFen:n,maiaVersion:i.maiaVersion,moveCount:S.moves.length,moves:S.moves,distribution:a||null}),a&&Object.keys(a).length>0){let r=Object.entries(a).reduce((t,r)=>{let[i,a]=r;return o.has(i)&&"number"==typeof a&&(t[i]=a),t},{});d=b(r),console.log(g,{source:"opening-book-sampled",fen:t.fen,maiaVersion:i.maiaVersion,sampledMove:d,filteredDistribution:r})}}catch(t){console.warn(g,"Failed to fetch opening book moves for drill:",t)}if(!d&&S.moves.length<6){let r=await ew(t.fen,i.maiaVersion),a=r?Object.entries(r).reduce((t,r)=>{let[i,a]=r;return o.has(i)&&"number"==typeof a&&a>0&&(t[i]=a),t},{}):null;console.log(g,{source:"maia-policy",fen:t.fen,drillStartFen:n,maiaVersion:i.maiaVersion,moveCount:S.moves.length,moves:S.moves,distribution:a}),a&&Object.keys(a).length>0&&(d=b(a),console.log(g,{source:"maia-policy-sampled",fen:t.fen,maiaVersion:i.maiaVersion,sampledMove:d}))}if(!d){let r=await (0,u.OK)(S.moves,i.maiaVersion,n,null,0,0);console.log(g,{source:"fetch-game-move-fallback",fen:t.fen,drillStartFen:n,maiaVersion:i.maiaVersion,moveCount:S.moves.length,moves:S.moves,response:r}),d=r.top_move}if(d&&d.length>=4){let i=null,a=new l.d$(t.fen),n=t.children.find(t=>t.move===d);if(n)i=n;else{let r=a.move(d,{sloppy:!0});r&&(i=t.addChild(a.fen(),d,r.san,!0))}if(i){eg.setCurrentNode(i);let a=new l.d$(t.fen).move(d,{sloppy:!0}),n=(null==a?void 0:a.captured)!==void 0;r(n);let s=em.getMainLine(),o=S.openingEndNode?S.openingEndNode.getPath().length:1,u=s.slice(o),c={...S,moves:u.map(t=>
2783t.move).filter(Boolean),currentFen:i.fen,playerMoveCount:S.playerMoveCount};if(k(c),K(!1),console.log("After Maia move - game tree state:",{mainLineLength:em.getMainLine().length,updatedGameMovesLength:c.moves.length,currentNodeFen:i.fen}),!Y){let t=v(em.toChess());t&&eB(c,t)}}}}catch(t){console.error("Error making Maia move:",t)}},[S,em,i,Y,eB,r,eg]),eY=(0,s.useCallback)(()=>{!S||Y||q||B||(K(!1),eD(S,"manual_end"))},[eD,Y,S,q,B]),eQ=(0,s.useRef)(eK);(0,s.useEffect)(()=>{eQ.current=eK}),(0,s.useEffect)(()=>{if(console.log("Maia response useEffect triggered:",{currentDrillGame:!!S,currentNode:!!eg.currentNode,isPlayerTurn:eb,waitingForMaiaResponse:G,isDrillComplete:ey,continueAnalyzingMode:Y}),S&&G&&!ey&&!Y){let t=em.getLastMainlineNode(),r=new l.d$(t.fen),a=(null==i?void 0:i.playerColor)==="white"?"w":"b";if(r.turn()!==a){console.log("Scheduling Maia move at tip in 1500ms");let r=setTimeout(()=>{console.log("Executing Maia move at tip"),eQ.current(t)},1500);return()=>clearTimeout(r)}}},[S,G,ey,Y,em,i]),(0,s.useEffect)(()=>{if(S&&eg.currentNode&&!eb&&0===S.moves.length&&S.openingEndNode&&eg.currentNode===S.openingEndNode&&!ey&&!Y){K(!0);let t=setTimeout(()=>{let t=em.getLastMainlineNode();eQ.current(t)},1e3);return()=>clearTimeout(t)}},[S,eg.currentNode,eb,ey,Y,em]);let eX=(0,s.useCallback)(()=>{if(!i)return;let t="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",r=new c.lr(t),a=$(i.variation?i.variation.pgn:i.opening.pgn,r);k({id:i.id,selection:i,moves:[],tree:r,currentFen:(null==a?void 0:a.fen)||t,toPlay:a?"w"===new l.d$(a.fen).turn()?"white":"black":"white",openingEndNode:a,playerMoveCount:0}),E(!1),H(null),K(!1),Q(!1),Z(!1),ee(!1)},[i]);return{currentDrill:i,currentDrillGame:S,currentDrillNumber:A,selectionPool:t.selections,completedDrills:T,hasCompletedInitialCycle:R,isPlayerTurn:eb,isDrillComplete:ey,isAtOpeningEnd:ev,isAwaitingExtensionDecision:X,isCurrentDrillExtended:J,drillEndReasonMessage:W,gameTree:em,currentNode:eg.currentNode,setCurrentNode:eg.setCurrentNode,goToNode:eg.goToNode,goToNextNode:eg.goToNextNode,goToPreviousNode:eg.goToPreviousNode,goToRootNode:eg.goToRootNode,plyCount:eg.plyCount,orientation:eg.orientation,setOrientation:eg.setOrientation,availableMoves:e_,makePlayerMove:eG,resetCurrentDrill:eX,completeDrill:eD,moveToNextDrill:eL,continueAnalyzing:eU,extendCurrentDrill:eF,endCurrentDrillWithFeedback:eY,analysisEnabled:C,setAnalysisEnabled:E,continueAnalyzingMode:Y,drillAnalysisProgress:el,cancelDrillAnalysis:eM,showPerformanceModal:B,currentPerformanceData:U,isAnalyzingDrill:q,resetDrillSession:eH,showCurrentPerformance:eV,loadCompletedDrill:eW}};i(76129),i(2703),i(36101),i(36072),i(99207);let k=()=>{let[t,r]=(0,s.useState)({width:0,height:0});return(0,s.useEffect)(()=>{function t(){var t,i;r({width:null==(t=window)?void 0:t.innerWidth,height:null==(i=window)?void 0:i.innerHeight})}return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[!0]),t}},76123:(t,r,i)=>{"use strict";i.d(r,{d:()=>l,j:()=>o});var a=i(37876),n=i(14232),s=i(11391);let o=(0,n.createContext)(void 0),l=t=>{let{children:r}=t,{settings:i}=(0,s.t)(),l=(0,n.useRef)(null),u=(0,n.useRef)(null),d=(0,n.useRef)(new Map),c=(0,n.useRef)(null),h=(0,n.useRef)(0),f=(0,n.useRef)(!1),[p,m]=(0,n.use
2783State)(!1);(0,n.useEffect)(()=>{if(f.current)return;f.current=!0;let t=!1;return(async()=>{try{let r=window.AudioContext||window.webkitAudioContext;if(!r){console.warn("Web Audio API not supported; sounds disabled"),m(!1);return}let i=new r,a=i.createGain();a.connect(i.destination),l.current=i,u.current=a;let n=async t=>{try{let r=await fetch(t),a=await r.arrayBuffer();return await i.decodeAudioData(a)}catch(r){return console.warn("Failed to load sound:",t,r),null}},[s,o]=await Promise.all([n("/assets/sound/move.mp3"),n("/assets/sound/capture.mp3")]);s&&d.current.set("move",s),o&&d.current.set("capture",o),t||m(d.current.size>0)}catch(r){console.warn("Failed to initialize sound:",r),t||m(!1)}})(),()=>{t=!0;let r=u.current,i=l.current;try{r&&r.disconnect()}catch(t){}u.current=null;try{i&&i.close()}catch(t){}l.current=null,d.current.clear(),m(!1),f.current=!1}},[]);let g=(0,n.useCallback)(function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!i.soundEnabled)return;let r=l.current,a=u.current;if(!r||!a)return;"running"!==r.state&&r.resume();let n=t?"capture":"move",s=d.current.get(n);if(!s)return;let o=1e3*r.currentTime;if(c.current!==n||!(o-h.current<30)){c.current=n,h.current=o;try{let t=r.createBufferSource();t.buffer=s,t.connect(a),t.start(0)}catch(t){console.warn("Failed to play sound:",n,t)}}},[i.soundEnabled]),b=(0,n.useMemo)(()=>({playMoveSound:g,ready:p}),[g,p]);return(0,a.jsx)(o.Provider,{value:b,children:r})}},76129:(t,r,i)=>{"use strict";i.d(r,{c:()=>a.c});var a=i(47240)},77328:(t,r,i)=>{t.exports=i(29269)},77801:(t,r,i)=>{"use strict";i.d(r,{po:()=>s,tn:()=>l,yT:()=>o});var a=i(30904),n=i(21419);let s=t=>1-Math.sin(Math.acos(t)),o=(0,n.G)(s),l=(0,a.V)(s)},78637:(t,r)=>{"use strict";function i(t){let{widthInt:r,heightInt:i,blurWidth:a,blurHeight:n,blurDataURL:s,objectFit:o}=t,l=a?40*a:r,u=n?40*n:i,d=l&&u?"viewBox='0 0 "+l+" "+u+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+d+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(d?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+s+"'/%3E%3C/svg%3E"}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},79706:(t,r,i)=>{"use strict";var a=i(3717);function n(){}function s(){}
2783s.resetWarningCache=n,t.exports=function(){function t(t,r,i,n,s,o){if(o!==a){var l=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function r(){return t}t.isRequired=t;var i={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:r,element:t,elementType:t,instanceOf:r,node:t,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:s,resetWarningCache:n};return i.PropTypes=i,i}},81461:(t,r,i)=>{"use strict";i.d(r,{Gt:()=>n,PP:()=>l,WG:()=>s,uv:()=>o});var a=i(90620);let{schedule:n,cancel:s,state:o,steps:l}=(0,i(53746).I)("undefined"!=typeof requestAnimationFrame?requestAnimationFrame:a.l,!0)},82981:(t,r,i)=>{"use strict";i.d(r,{S:()=>a});let a=t=>!!(t&&t.getVelocity)},83885:(t,r,i)=>{"use strict";i.d(r,{xQ:()=>s});var a=i(14232),n=i(3866);function s(t=!0){let r=(0,a.useContext)(n.t);if(null===r)return[!0,null];let{isPresent:i,onExitComplete:o,register:l}=r,u=(0,a.useId)();(0,a.useEffect)(()=>{t&&l(u)},[t]);let d=(0,a.useCallback)(()=>t&&o&&o(u),[u,o,t]);return!i&&o?[!1,d]:[!0]}},84547:(t,r,i)=>{"use strict";i.d(r,{C:()=>p,Mi:()=>c,fD:()=>f,jm:()=>y,l2:()=>m,mn:()=>h,p7:()=>g,pG:()=>u,s4:()=>o,sd:()=>d,tY:()=>l,xD:()=>b});var a=i(88831),n=i(42034),s=i(32711);let o=async()=>{let t=await fetch((0,n.c)("analysis/list"));return await t.json()},l=async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"play",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2?arguments[2]:void 0,a=(0,n.c)("analysis/user/list/".concat(t,"/").concat(r)),s=new URLSearchParams;i&&s.append("lichess_id",i);let o=s.toString()?"".concat(a,"?").concat(s.toString()):a,l=await fetch(o);return await l.json()},u=async(t,r)=>{fetch("https://lichess.org/api/games/user/".concat(t,"?max=100&pgnInJson=true"),{headers:{Accept:"application/x-ndjson"}}).then((0,a.g2)(r))},d=async t=>(await fetch("https://lichess.org/game/export/".concat(t),{headers:{Accept:"application/x-chess-pgn"}})).text(),c=async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["FkgYSri1"],r=await fetch((0,n.c)("analysis/analysis_list/".concat(t.join("/")))),i=await r.json(),s=i.id,o={...i.termination,condition:"Normal"},l=i.black_player,u=i.white_player,d={},c=i.stockfish_evals,h=[];for(let t of i.maia_versions)d[t]=i.maia_evals[t];for(let t of i.move_maps){let r={};for(let i of t){let t=i.move.join(""),a=i.move_san,{check:n,fen:s}=i;r[t]={board:s,check:n,san:a,lastMove:i.move}}h.push(r)}let f=i.game_states,p=(0,a.$u)(f),m=(0,a.Oq)(p,p[0].board);return(0,a.J0)(m,p,c),{id:s,blackPlayer:l,whitePlayer:u,availableMoves:h,gameType:"blitz",termination:o,tree:m}},h=async(t,r)=>{let i=await fetch((0,n.c)("analysis/analyze_user_game"),{method:"POST",body:r,headers:{"Content-Type":"text/plain"}}),s=await i.json(),o={...s.termination,condition:"Normal"},l=s.black_player,u=s.white_player,d={},c=[];for(let t of s.maia_versions)d[t]=s.maia_evals[t];for(let t of s.move_maps){let r={};for(let i of t){let t=i.move.join(""),a=i.move_san,{check:n,fen:s}=i;r[t]={board:s,check:n,san:a,lastMove:i.move}}c.push(r)}let h=s.game_states,f=(0,a.$u)(h);return{id:t,blackPlayer:l,whitePlayer:u,availableMoves:c,gameType:"blitz",termination:o,tree:(0,a.Oq)(f,f[0].board)}},f=async(t,r)=>{let i=await fetch((0,n.c)("analysis/user/analyze_user_maia_game/".concat(t,"?")+new URLSearchParams({game_type:r})),{method:"GET",headers:{"Content-Type":"text/plain"}}),o=await i.json(),l={...o.termination,condition:"Normal"},u=o.black_player,d=o.white_player,c=/maia_kdd_\d{3,4}/;u.name&&c.test(u.name)&&(u.name=u.name.replace("maia_kdd_","Maia ")),d.name&&c.test(d.name)&&(d.name=d.name.replace("maia_kdd_","Maia "));let h={},f=[];for(let t of o.maia_versions)h[t]=o.maia_evals[t];for(let t of o.move_maps){let r={};for(let i of t){let t=i.move.join(""),a=i.move_san,{check:n,fen:s}=i;r[t]={board:s,check:n,san:a,lastMove:i.move}}f.push(r)}let p=o.game_states,m=(0,a.$u)(p),g=(0,a.Oq)(m,m.length?m[0].board:new s.d$().fen());return{id:t,type:r,blackPlayer:u,whitePlayer:d,moves:m,availableMoves:f,gameType:"blitz",termination:l,tree:g}},p=async(t,r)=>{(await fetch((0,n.c)("analysis/store_engine_analysis/".concat(t)),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})).ok||console.error("Failed to cache engine analysis")},m=async t=>{let r=await fetch((0,n.c)("analysis/get_engine_analysis/".concat(t)));return 404===r.status?null:(r.ok||console.error("Failed to retrieve engine analysis"),await r.json())},g=async(t,r,i)=>{(await fetch((0,n.c)("analysis/update_metadata/".concat(t,"/").concat(r)),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})).ok||console.error("Failed to update game metadata")},b=async t=>{let r=await fetch((0,n.c)("analysis/store_custom_game"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),i=await r.text();if(!r.ok)throw console.error("Failed to store custom game: ".concat(i)),Error("Failed to store custom game (".concat(r.status," ").concat(r.statusText,")").concat(i?": ".concat(i):""));return JSON.parse(i)},y=async t=>{let r=await fetch((0,n.c)("analysis/delete_custom_game/".concat(t)),{method:"DELETE"});r.ok||console.error("Failed to delete custom game: ".concat(await r.text()))}},84659:(t,r,i)=>{"use strict";
2783t.exports=i.p+"static/media/ort-wasm-simd-threaded.jsep.0d2d5542.wasm"},85888:(t,r,i)=>{"use strict";i.d(r,{g:()=>u,h:()=>d});var a=i(37876),n=i(89099),s=i(94598),o=i(14232),l=i(32872);let u=o.createContext({analysisTournamentList:null,analysisLichessList:[],analysisPlayList:[],analysisHandList:[],analysisBrainList:[],analysisCustomList:[]}),d=t=>{let{children:r}=t,i=(0,n.useRouter)(),{user:d}=(0,o.useContext)(s.cy),[c,h]=(0,o.useState)(null),[f,p]=(0,o.useState)([]),[m,g]=(0,o.useState)([]),[b,y]=(0,o.useState)([]),[v,_]=(0,o.useState)([]),[w,x]=(0,o.useState)([]);return(0,o.useEffect)(()=>{!async function(){let t;try{t=await (0,l.s4)()}catch(t){i.push("/401");return}h(new Map(Object.entries(t)))}()},[i]),(0,o.useEffect)(()=>{(null==d?void 0:d.lichessId)&&(0,l.pG)(null==d?void 0:d.lichessId,t=>{var r,i;let a=t.pgn.match(/\[Result\s+"(.+?)"\]/)[1]||"?",n={id:t.id,type:"lichess",label:"".concat((null==(r=t.players.white.user)?void 0:r.id)||"Unknown"," vs. ").concat((null==(i=t.players.black.user)?void 0:i.id)||"Unknown"),result:a,pgn:t.pgn};p(t=>[...t,n])})},[null==d?void 0:d.lichessId]),(0,o.useEffect)(()=>{if(null==d?void 0:d.lichessId){let t=(0,l.tY)("play",1),r=(0,l.tY)("hand",1);Promise.all([t,r,(0,l.tY)("brain",1),(0,l.tY)("custom",1)]).then(t=>{let[r,i,a,n]=t,s=(t,r)=>{let i=t.maia_name.replace("_kdd_"," "),a=i.charAt(0).toUpperCase()+i.slice(1);return{id:t.game_id,label:"white"===t.player_color?"You vs. ".concat(a):"".concat(a," vs. You"),result:t.result,type:r}};g(r.games.map(t=>s(t,"play"))),y(i.games.map(t=>s(t,"hand"))),_(a.games.map(t=>s(t,"brain"))),x(n.games.map(t=>s(t,"custom")))})}},[null==d?void 0:d.lichessId]),(0,a.jsx)(u.Provider,{value:{analysisTournamentList:c,analysisLichessList:f,analysisPlayList:m,analysisHandList:b,analysisBrainList:v,analysisCustomList:w},children:r})}},86493:(t,r,i)=>{"use strict";i.d(r,{EI:()=>u,FN:()=>d,FW:()=>s,Gg:()=>o,Nb:()=>l,Sx:()=>n});var a=i(37876);let n=()=>(0,a.jsx)("img",{src:"/assets/icons/brain_icon.svg",alt:"Brain Icon"}),s=()=>(0,a.jsx)("img",{src:"/assets/icons/turing_icon.svg",alt:"Bot-or-Not Icon"}),o=()=>(0,a.jsx)("img",{src:"/assets/icons/star_icon.svg",alt:"Star Icon"}),l=(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"1em",viewBox:"0 0 496 512",children:(0,a.jsx)("path",{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"})}),u=(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 127.14 96.36",children:(0,a.jsx)("path",{d:"M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"})}),d=(0,a.jsx)("svg",{fill:"white",xmlns:"http://www.w3.org/2000/svg",viewBox:"1 1 22 22",width:"14px",height:"14px",children:(0,a.jsx)("path",{d:"M 7.1601562 3 L 8.7617188 5 L 18 5 C 18.551 5 19 5.448 19 6 L 19 15 L 16 15 L 20 20 L 24 15 L 21 15 L 21 6 C 21 4.346 19.654 3 18 3 L 7.1601562 3 z M 4 4 L 0 9 L 3 9 L 3 18 C 3 19.654 4.346 21 6 21 L 16.839844 21 L 15.238281 19 L 6 19 C 5.449 19 5 18.552 5 18 L 5 9 L 8 9 L 4 4 z"})})},86581:(t,r,i)=>{"use strict";
2783Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"LoadableContext",{enumerable:!0,get:function(){return a}});let a=i(64252)._(i(14232)).default.createContext(null)},87003:(t,r,i)=>{"use strict";i.d(r,{A:()=>rn,M:()=>ra});var a=i(37876),n=i(14232);function s(t){return r=>typeof r===t}var o=s("function"),l=t=>"RegExp"===Object.prototype.toString.call(t).slice(8,-1),u=t=>!d(t)&&null!==t&&(o(t)||"object"==typeof t),d=s("undefined");function c(t,r){if(t===r)return!0;if(t&&u(t)&&r&&u(r)){if(t.constructor!==r.constructor)return!1;if(Array.isArray(t)&&Array.isArray(r)){let{length:i}=t;if(i!==r.length)return!1;for(let a=i;0!=a--;)if(!c(t[a],r[a]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(let i of t.entries())if(!r.has(i[0]))return!1;for(let i of t.entries())if(!c(i[1],r.get(i[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(let i of t.entries())if(!r.has(i[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(t.byteLength!==r.byteLength)return!1;let i=new DataView(t.buffer),a=new DataView(r.buffer),n=t.byteLength;for(;n--;)if(i.getUint8(n)!==a.getUint8(n))return!1;return!0}if(l(t)&&l(r))return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();let i=Object.keys(t),a=Object.keys(r);if(i.length!==a.length)return!1;for(let t=i.length;0!=t--;)if(!Object.prototype.hasOwnProperty.call(r,i[t]))return!1;for(let a=i.length;0!=a--;){let n=i[a];if(("_owner"!==n||!t.$$typeof)&&!c(t[n],r[n]))return!1}return!0}return!!(Number.isNaN(t)&&Number.isNaN(r))||t===r}var h=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],f=["bigint","boolean","null","number","string","symbol","undefined"];function p(t){var r;let i=Object.prototype.toString.call(t).slice(8,-1);return/HTML\w+Element/.test(i)?"HTMLElement":(r=i,h.includes(r))?i:void 0}function m(t){return r=>p(r)===t}function g(t){return r=>typeof r===t}var b=["innerHTML","ownerDocument","style","attributes","nodeValue"];function y(t){if(null===t)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(y.array(t))return"Array";if(y.plainFunction(t))return"Function";let r=p(t);return r||"Object"}function v(t,r,i){let{actual:a,key:n,previous:s,type:o}=i,l=E(t,n),u=E(r,n),d=[l,u].every(y.number)&&("increased"===o?l<u:l>u);return y.undefined(a)||(d=d&&u===a),y.undefined(s)||(d=d&&l===s),d}function _(t,r,i){var a;let{key:n,type:s,value:o}=i,l=E(t,n),u=E(r,n),d="added"===s?l:u,h="added"===s?u:l;if(!y.nullOrUndefined(o)){if(!y.defined(d))return c(h,o);if(y.array(d)||y.plainObject(d))return!!C(d,h)&&([d,h].every(y.array)?!d.some($(o))&&h.some($(o)):[d,h].every(y.plainObject)?!Object.entries(d).some(x(o))&&Object.entries(h).some(x(o)):h===o);return!1}return[l,u].every(y.array)?!h.every(k(d)):[l,u].every(y.plainObject)?(a=Object.keys(d),Object.keys(h).some(t=>!a.includes(t))):![l,u].every(t=>y.primitive(t)&&y.defined(t))&&("added"===s?!y.defined(l)&&y.defined(u):y.defined(l)&&!y.defined(u))}function w(t,r,{key:i}={}){let a=E(t,i),n=E(r,i);if(!C(a,n))throw TypeError("Inputs have different types");if(!function(...t){return t.every(t=>y.string(t)||y.array(t)||y.plainObject(t))}(a,n))throw TypeError("Inputs don't have length");return[a,n].every(y.plainObject)&&(a=Object.keys(a),n=Object.keys(n)),[a,n]}function x(t){return([r,i])=>y.array(t)?c(t,i)||t.some(t=>c(t,i)||y.array(i)&&k(i)(t)):y.plainObject(t)&&t[r]?!!t[r]&&c(t[r],i):c(t,i)}function $(t){return r=>y.array(t)?t.some(t=>c(t,r)||y.array(r)&&k(r)(t)):c(t,r)}function S(t,r){return y.array(t)?t.some(t=>c(t,r)):c(t,r)}function k(t){return r=>t.some(t=>c(t,r))}function C(...t){return t.every(y.array)||t.every(y.number)||t.every(y.plainObject)||t.every(y.string)}function E(t,r){if(y.plainObject(t)||y.array(t)){if(y.string(r))return r.split(".").reduce((t,r)=>t&&t[r],t);if(y.number(r))return t[r]}return t}function T(t,r){if([t,r].some(y.nullOrUndefined))throw Error("Missing required parameters");if(![t,r].every(t=>y.plainObject(t)||y.array(t)))throw Error("Expected plain objects or array");return{added:(i,a)=>{try{return _(t,r,{key:i,type:"added",value:a})}catch{return!1}},changed:(i,a,n)=>{try{let s=E(t,i),o=E(r,i),l=y.defined(a),u=y.defined(n);if(l||u){let t=u?S(n,s):!S(a,s),r=S(a,o);return t&&r}if([s,o].every(y.array)||[s,o].every(y.plainObject))return!c(s,o);return s!==o}catch{return!1}},changedFrom:(i,a,n)=>{if(!y.defined(i))return!1;try{let s=E(t,i),o=E(r,i),l=y.defined(n);return S(a,s)&&(l?S(n,o):!l)}catch{return!1}},decreased:(i,a,n)=>{if(!y.defined(i))return!1;try{return v(t,r,{key:i,actual:a,previous:n,type:"decreased"})}catch{return!1}},emptied:i=>{try{let[a,n]=w(t,r,{key:i});return!!a.length&&!n.length}catch{return!1}},filled:i=>{try{let[a,n]=w(t,r,{key:i});return!a.length&&!!n.length}catch{return!1}},increased:(i,a,n)=>{if(!y.defined(i))return!1;try{return v(t,r,{key:i,actual:a,previous:n,type:"increased"})}catch{return!1}},removed:(i,a)=>{try{return _(t,r,{key:i,type:"removed",value:a})}catch{return!1}}}}y.array=Array.isArray,y.arrayOf=(t,r)=>(!!y.array(t)||!!y.function(r))&&t.every(t=>r(t)),y.asyncGeneratorFunction=t=>"AsyncGeneratorFunction"===p(t),y.asyncFunction=m("AsyncFunction"),y.bigint=g("bigint"),y.boolean=t=>!0===t||!1===t,y.date=m("Date"),y.defined=t=>!y.undefined(t),y.domElement=t=>
2783y.object(t)&&!y.plainObject(t)&&1===t.nodeType&&y.string(t.nodeName)&&b.every(r=>r in t),y.empty=t=>y.string(t)&&0===t.length||y.array(t)&&0===t.length||y.object(t)&&!y.map(t)&&!y.set(t)&&0===Object.keys(t).length||y.set(t)&&0===t.size||y.map(t)&&0===t.size,y.error=m("Error"),y.function=g("function"),y.generator=t=>y.iterable(t)&&y.function(t.next)&&y.function(t.throw),y.generatorFunction=m("GeneratorFunction"),y.instanceOf=(t,r)=>!!t&&!!r&&Object.getPrototypeOf(t)===r.prototype,y.iterable=t=>!y.nullOrUndefined(t)&&y.function(t[Symbol.iterator]),y.map=m("Map"),y.nan=t=>Number.isNaN(t),y.null=t=>null===t,y.nullOrUndefined=t=>y.null(t)||y.undefined(t),y.number=t=>g("number")(t)&&!y.nan(t),y.numericString=t=>y.string(t)&&t.length>0&&!Number.isNaN(Number(t)),y.object=t=>!y.nullOrUndefined(t)&&(y.function(t)||"object"==typeof t),y.oneOf=(t,r)=>!!y.array(t)&&t.indexOf(r)>-1,y.plainFunction=m("Function"),y.plainObject=t=>{if("Object"!==p(t))return!1;let r=Object.getPrototypeOf(t);return null===r||r===Object.getPrototypeOf({})},y.primitive=t=>{var r;return y.null(t)||(r=typeof t,f.includes(r))},y.promise=m("Promise"),y.propertyOf=(t,r,i)=>{if(!y.object(t)||!r)return!1;let a=t[r];return y.function(i)?i(a):y.defined(a)},y.regexp=m("RegExp"),y.set=m("Set"),y.string=g("string"),y.symbol=g("symbol"),y.undefined=g("undefined"),y.weakMap=m("WeakMap"),y.weakSet=m("WeakSet");var I=i(45534),A=i(58323),N=i(98477),O=i(52266),M=i(94410),P=i.n(M),R=i(95062),j=i.n(R),z="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,D=function(){for(var t=["Edge","Trident","Firefox"],r=0;r<t.length;r+=1)if(z&&navigator.userAgent.indexOf(t[r])>=0)return 1;return 0}(),B=z&&window.Promise?function(t){var r=!1;return function(){r||(r=!0,window.Promise.resolve().then(function(){r=!1,t()}))}}:function(t){var r=!1;return function(){r||(r=!0,setTimeout(function(){r=!1,t()},D))}};function L(t){return t&&"[object Function]"===({}).toString.call(t)}function U(t,r){if(1!==t.nodeType)return[];var i=t.ownerDocument.defaultView.getComputedStyle(t,null);return r?i[r]:i}function F(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function q(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var r=U(t),i=r.overflow,a=r.overflowX,n=r.overflowY;return/(auto|scroll|overlay)/.test(i+n+a)?t:q(F(t))}function V(t){return t&&t.referenceNode?t.referenceNode:t}var W=z&&!!(window.MSInputMethodContext&&document.documentMode),H=z&&/MSIE 10/.test(navigator.userAgent);function G(t){return 11===t?W:10===t?H:W||H}function K(t){if(!t)return document.documentElement;for(var r=G(10)?document.body:null,i=t.offsetParent||null;i===r&&t.nextElementSibling;)i=(t=t.nextElementSibling).offsetParent;var a=i&&i.nodeName;return a&&"BODY"!==a&&"HTML"!==a?-1!==["TH","TD","TABLE"].indexOf(i.nodeName)&&"static"===U(i,"position")?K(i):i:t?t.ownerDocument.documentElement:document.documentElement}function Y(t){return null!==t.parentNode?Y(t.parentNode):t}function Q(t,r){if(!t||!t.nodeType||!r||!r.nodeType)return document.documentElement;var i,a=t.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_FOLLOWING,n=a?t:r,s=a?r:t,o=document.createRange();o.setStart(n,0),o.setEnd(s,0);var l=o.commonAncestorContainer;if(t!==l&&r!==l||n.contains(s))return"BODY"!==(i=l.nodeName)&&("HTML"===i||K(l.firstElementChild)===l)?l:K(l);var u=Y(t);return u.host?Q(u.host,r):Q(t,Y(r).host)}function X(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",i="top"===r?"scrollTop":"scrollLeft",a=t.nodeName;if("BODY"===a||"HTML"===a){var n=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||n)[i]}return t[i]}function Z(t,r){var i="x"===r?"Left":"Top";return parseFloat(t["border"+i+"Width"])+parseFloat(t["border"+("Left"===i?"Right":"Bottom")+"Width"])}function J(t,r,i,a){return Math.max(r["offset"+t],r["scroll"+t],i["client"+t],i["offset"+t],i["scroll"+t],G(10)?parseInt(i["offset"+t])+parseInt(a["margin"+("Height"===t?"Top":"Left")])+parseInt(a["margin"+("Height"===t?"Bottom":"Right")]):0)}function ee(t){var r=t.body,i=t.documentElement,a=G(10)&&getComputedStyle(i);return{height:J("Height",r,i,a),width:J("Width",r,i,a)}}var et=function(t,r){if(!(t instanceof r))throw TypeError("Cannot call a class as a function")},er=function(){function t(t,r){for(var i=0;i<r.length;i++){var a=r[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}
vendor: 4,232 bytes, line 2783
2783return function(r,i,a){return i&&t(r.prototype,i),a&&t(r,a),r}}(),ei=function(t,r,i){return r in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,t},ea=Object.assign||function(t){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(t[a]=i[a])}return t};function en(t){return ea({},t,{right:t.left+t.width,bottom:t.top+t.height})}function es(t){var r={};try{if(G(10)){r=t.getBoundingClientRect();var i=X(t,"top"),a=X(t,"left");r.top+=i,r.left+=a,r.bottom+=i,r.right+=a}else r=t.getBoundingClientRect()}catch(t){}var n={left:r.left,top:r.top,width:r.right-r.left,height:r.bottom-r.top},s="HTML"===t.nodeName?ee(t.ownerDocument):{},o=s.width||t.clientWidth||n.width,l=s.height||t.clientHeight||n.height,u=t.offsetWidth-o,d=t.offsetHeight-l;if(u||d){var c=U(t);u-=Z(c,"x"),d-=Z(c,"y"),n.width-=u,n.height-=d}return en(n)}function eo(t,r){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=G(10),n="HTML"===r.nodeName,s=es(t),o=es(r),l=q(t),u=U(r),d=parseFloat(u.borderTopWidth),c=parseFloat(u.borderLeftWidth);i&&n&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var h=en({top:s.top-o.top-d,left:s.left-o.left-c,width:s.width,height:s.height});if(h.marginTop=0,h.marginLeft=0,!a&&n){var f=parseFloat(u.marginTop),p=parseFloat(u.marginLeft);h.top-=d-f,h.bottom-=d-f,h.left-=c-p,h.right-=c-p,h.marginTop=f,h.marginLeft=p}return(a&&!i?r.contains(l):r===l&&"BODY"!==l.nodeName)&&(h=function(t,r){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=X(r,"top"),n=X(r,"left"),s=i?-1:1;return t.top+=a*s,t.bottom+=a*s,t.left+=n*s,t.right+=n*s,t}(h,r)),h}function el(t){if(!t||!t.parentElement||G())return document.documentElement;for(var r=t.parentElement;r&&"none"===U(r,"transform");)r=r.parentElement;return r||document.documentElement}function eu(t,r,i,a){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s={top:0,left:0},o=n?el(t):Q(t,V(r));if("viewport"===a)s=function(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t.ownerDocument.documentElement,a=eo(t,i),n=Math.max(i.clientWidth,window.innerWidth||0),s=Math.max(i.clientHeight,window.innerHeight||0),o=r?0:X(i),l=r?0:X(i,"left");return en({top:o-a.top+a.marginTop,left:l-a.left+a.marginLeft,width:n,height:s})}(o,n);else{var l=void 0;"scrollParent"===a?"BODY"===(l=q(F(r))).nodeName&&(l=t.ownerDocument.documentElement):l="window"===a?t.ownerDocument.documentElement:a;var u=eo(l,o,n);if("HTML"===l.nodeName&&!function t(r){var i=r.nodeName;if("BODY"===i||"HTML"===i)return!1;if("fixed"===U(r,"position"))return!0;var a=F(r);return!!a&&t(a)}(o)){var d=ee(t.ownerDocument),c=d.height,h=d.width;s.top+=u.top-u.marginTop,s.bottom=c+u.top,s.left+=u.left-u.marginLeft,s.right=h+u.left}else s=u}var f="number"==typeof(i=i||0);return s.left+=f?i:i.left||0,s.top+=f?i:i.top||0,s.right-=f?i:i.right||0,s.bottom-=f?i:i.bottom||0,s}function ed(t,r,i,a,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var o=eu(i,a,s,n),l={top:{width:o.width,height:r.top-o.top},right:{width:o.right-r.right,height:o.height},bottom:{width:o.width,height:o.bottom-r.bottom},left:{width:r.left-o.left,height:o.height}},u=Object.keys(l).map(function(t){var r;return ea({key:t},l[t],{area:(r=l[t]).width*r.height})}).sort(function(t,r){return r.area-t.area}),d=u.filter(function(t){var r=t.width,a=t.height;return r>=i.clientWidth&&a>=i.clientHeight}),c=d.length>0?d[0].key:u[0].key,h=t.split("-")[1];return c+(h?"-"+h:"")}function ec(t,r,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,n=a?el(r):Q(r,V(i));return eo(i,n,a)}function eh(t){var r=t.ownerDocument.defaultView.getComputedStyle(t),i=parseFloat(r.marginTop||0)+parseFloat(r.marginBottom||0),a=parseFloat(r.marginLeft||0)+parseFloat(r.marginRight||0);return{width:t.offsetWidth+a,height:t.offsetHeight+i}}function ef(t){var r={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return r[t]})}function ep(t,r,i){i=i.split("-")[0];var a=eh(t),n={width:a.width,height:a.height},s=-1!==["right","left"].indexOf(i),o=s?"top":"left",l=s?"left":"top",u=s?"height":"width";
2783return n[o]=r[o]+r[u]/2-a[u]/2,i===l?n[l]=r[l]-a[s?"width":"height"]:n[l]=r[ef(l)],n}function em(t,r){return Array.prototype.find?t.find(r):t.filter(r)[0]}function eg(t,r,i){return(void 0===i?t:t.slice(0,function(t,r,i){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[r]===i});var a=em(t,function(t){return t[r]===i});return t.indexOf(a)}(t,"name",i))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=t.function||t.fn;t.enabled&&L(i)&&(r.offsets.popper=en(r.offsets.popper),r.offsets.reference=en(r.offsets.reference),r=i(r,t))}),r}function eb(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ec(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=ed(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=ep(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=eg(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function ey(t,r){return t.some(function(t){var i=t.name;return t.enabled&&i===r})}function ev(t){for(var r=[!1,"ms","Webkit","Moz","O"],i=t.charAt(0).toUpperCase()+t.slice(1),a=0;a<r.length;a++){var n=r[a],s=n?""+n+i:t;if(void 0!==document.body.style[s])return s}return null}function e_(){return this.state.isDestroyed=!0,ey(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[ev("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function ew(t){var r=t.ownerDocument;return r?r.defaultView:window}function ex(){var t,r,i;this.state.eventsEnabled||(this.state=(t=this.reference,this.options,(r=this.state).updateBound=this.scheduleUpdate,ew(t).addEventListener("resize",r.updateBound,{passive:!0}),!function t(r,i,a,n){var s="BODY"===r.nodeName,o=s?r.ownerDocument.defaultView:r;o.addEventListener(i,a,{passive:!0}),s||t(q(o.parentNode),i,a,n),n.push(o)}(i=q(t),"scroll",r.updateBound,r.scrollParents),r.scrollElement=i,r.eventsEnabled=!0,r))}function e$(){if(this.state.eventsEnabled){var t,r;cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,r=this.state,ew(t).removeEventListener("resize",r.updateBound),r.scrollParents.forEach(function(t){t.removeEventListener("scroll",r.updateBound)}),r.updateBound=null,r.scrollParents=[],r.scrollElement=null,r.eventsEnabled=!1,r)}}function eS(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function ek(t,r){Object.keys(r).forEach(function(i){var a="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&eS(r[i])&&(a="px"),t.style[i]=r[i]+a})}var eC=z&&/Firefox/i.test(navigator.userAgent);function eE(t,r,i){var a=em(t,function(t){return t.name===r}),n=!!a&&t.some(function(t){return t.name===i&&t.enabled&&t.order<a.order});if(!n){var s="`"+r+"`";console.warn("`"+i+"` modifier is required by "+s+" modifier in order to work, be sure to include it before "+s+"!")}return n}var eT=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],eI=eT.slice(3);function eA(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=eI.indexOf(t),a=eI.slice(i+1).concat(eI.slice(0,i));return r?a.reverse():a}var eN={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"},eO=function(){function t(r,i){var a=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};et(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(a.update)},this.update=B(this.update.bind(this)),this.options=ea({},t.Defaults,n),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=r&&r.jquery?r[0]:r,this.popper=i&&i.jquery?i[0]:i,this.options.modifiers={},Object.keys(ea({}
2783,t.Defaults.modifiers,n.modifiers)).forEach(function(r){a.options.modifiers[r]=ea({},t.Defaults.modifiers[r]||{},n.modifiers?n.modifiers[r]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return ea({name:t},a.options.modifiers[t])}).sort(function(t,r){return t.order-r.order}),this.modifiers.forEach(function(t){t.enabled&&L(t.onLoad)&&t.onLoad(a.reference,a.popper,a.options,t,a.state)}),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return er(t,[{key:"update",value:function(){return eb.call(this)}},{key:"destroy",value:function(){return e_.call(this)}},{key:"enableEventListeners",value:function(){return ex.call(this)}},{key:"disableEventListeners",value:function(){return e$.call(this)}}]),t}();eO.Utils=("undefined"!=typeof window?window:i.g).PopperUtils,eO.placements=eT,eO.Defaults={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var r=t.placement,i=r.split("-")[0],a=r.split("-")[1];if(a){var n=t.offsets,s=n.reference,o=n.popper,l=-1!==["bottom","top"].indexOf(i),u=l?"left":"top",d=l?"width":"height",c={start:ei({},u,s[u]),end:ei({},u,s[u]+s[d]-o[d])};t.offsets.popper=ea({},o,c[a])}return t}},offset:{order:200,enabled:!0,fn:function(t,r){var i,a,n,s,o,l=r.offset,u=t.placement,d=t.offsets,c=d.popper,h=d.reference,f=u.split("-")[0],p=void 0;return eS(+l)?p=[+l,0]:(i=[0,0],a=-1!==["right","left"].indexOf(f),s=(n=l.split(/(\+|\-)/).map(function(t){return t.trim()})).indexOf(em(n,function(t){return -1!==t.search(/,|\s/)})),n[s]&&-1===n[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead."),o=/\s*,\s*|\s+/,(-1!==s?[n.slice(0,s).concat([n[s].split(o)[0]]),[n[s].split(o)[1]].concat(n.slice(s+1))]:[n]).map(function(t,r){var i=(1===r?!a:a)?"height":"width",n=!1;return t.reduce(function(t,r){return""===t[t.length-1]&&-1!==["+","-"].indexOf(r)?(t[t.length-1]=r,n=!0,t):n?(t[t.length-1]+=r,n=!1,t):t.concat(r)},[]).map(function(t){return function(t,r,i,a){var n=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),s=+n[1],o=n[2];if(!s)return t;if(0===o.indexOf("%"))return en("%p"===o?i:a)[r]/100*s;if("vh"!==o&&"vw"!==o)return s;return("vh"===o?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*s}(t,i,c,h)})}).forEach(function(t,r){t.forEach(function(a,n){eS(a)&&(i[r]+=a*("-"===t[n-1]?-1:1))})}),p=i),"left"===f?(c.top+=p[0],c.left-=p[1]):"right"===f?(c.top+=p[0],c.left+=p[1]):"top"===f?(c.left+=p[0],c.top-=p[1]):"bottom"===f&&(c.left+=p[0],c.top+=p[1]),t.popper=c,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,r){var i=r.boundariesElement||K(t.instance.popper);t.instance.reference===i&&(i=K(i));var a=ev("transform"),n=t.instance.popper.style,s=n.top,o=n.left,l=n[a];n.top="",n.left="",n[a]="";var u=eu(t.instance.popper,t.instance.reference,r.padding,i,t.positionFixed);n.top=s,n.left=o,n[a]=l,r.boundaries=u;var d=r.priority,c=t.offsets.popper,h={primary:function(t){var i=c[t];return c[t]<u[t]&&!r.escapeWithReference&&(i=Math.max(c[t],u[t])),ei({},t,i)},secondary:function(t){var i="right"===t?"left":"top",a=c[i];return c[t]>u[t]&&!r.escapeWithReference&&(a=Math.min(c[i],u[t]-("right"===t?c.width:c.height))),ei({},i,a)}};return d.forEach(function(t){var r=-1!==["left","top"].indexOf(t)?"primary":"secondary";c=ea({},c,h[r](t))}),t.offsets.popper=c,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var r=t.offsets,i=r.popper,a=r.reference,n=t.placement.split("-")[0],s=Math.floor,o=-1!==["top","bottom"].indexOf(n),l=o?"right":"bottom",u=o?"left":"top";return i[l]<s(a[u])&&(t.offsets.popper[u]=s(a[u])-i[o?"width":"height"]),i[u]>s(a[l])&&(t.offsets.popper[u]=s(a[l])),t}},arrow:{order:500,enabled:!0,fn:function(t,r){if(!eE(t.instance.modifiers,"arrow","keepTogether"))return t;var i,a=r.element;if("string"==typeof a){if(!(a=t.instance.popper.querySelector(a)))return t}else if(!t.instance.popper.contains(a))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var n=t.placement.split("-")[0],s=t.offsets,o=s.popper,l=s.reference,u=-1!==["left","right"].indexOf(n),d=u?"height":"width",c=u?"Top":"Left",h=c.toLowerCase(),f=u?"bottom":"right",p=eh(a)[d];
2783l[f]-p<o[h]&&(t.offsets.popper[h]-=o[h]-(l[f]-p)),l[h]+p>o[f]&&(t.offsets.popper[h]+=l[h]+p-o[f]),t.offsets.popper=en(t.offsets.popper);var m=l[h]+l[d]/2-p/2,g=U(t.instance.popper),b=parseFloat(g["margin"+c]),y=parseFloat(g["border"+c+"Width"]),v=m-t.offsets.popper[h]-b-y;return v=Math.max(Math.min(o[d]-p,v),0),t.arrowElement=a,t.offsets.arrow=(ei(i={},h,Math.round(v)),ei(i,u?"left":"top",""),i),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,r){if(ey(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var i=eu(t.instance.popper,t.instance.reference,r.padding,r.boundariesElement,t.positionFixed),a=t.placement.split("-")[0],n=ef(a),s=t.placement.split("-")[1]||"",o=[];switch(r.behavior){case eN.FLIP:o=[a,n];break;case eN.CLOCKWISE:o=eA(a);break;case eN.COUNTERCLOCKWISE:o=eA(a,!0);break;default:o=r.behavior}return o.forEach(function(l,u){if(a!==l||o.length===u+1)return t;n=ef(a=t.placement.split("-")[0]);var d,c=t.offsets.popper,h=t.offsets.reference,f=Math.floor,p="left"===a&&f(c.right)>f(h.left)||"right"===a&&f(c.left)<f(h.right)||"top"===a&&f(c.bottom)>f(h.top)||"bottom"===a&&f(c.top)<f(h.bottom),m=f(c.left)<f(i.left),g=f(c.right)>f(i.right),b=f(c.top)<f(i.top),y=f(c.bottom)>f(i.bottom),v="left"===a&&m||"right"===a&&g||"top"===a&&b||"bottom"===a&&y,_=-1!==["top","bottom"].indexOf(a),w=!!r.flipVariations&&(_&&"start"===s&&m||_&&"end"===s&&g||!_&&"start"===s&&b||!_&&"end"===s&&y),x=!!r.flipVariationsByContent&&(_&&"start"===s&&g||_&&"end"===s&&m||!_&&"start"===s&&y||!_&&"end"===s&&b),$=w||x;(p||v||$)&&(t.flipped=!0,(p||v)&&(a=o[u+1]),$&&(s="end"===(d=s)?"start":"start"===d?"end":d),t.placement=a+(s?"-"+s:""),t.offsets.popper=ea({},t.offsets.popper,ep(t.instance.popper,t.offsets.reference,t.placement)),t=eg(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var r=t.placement,i=r.split("-")[0],a=t.offsets,n=a.popper,s=a.reference,o=-1!==["left","right"].indexOf(i),l=-1===["top","left"].indexOf(i);return n[o?"left":"top"]=s[i]-(l?n[o?"width":"height"]:0),t.placement=ef(r),t.offsets.popper=en(n),t}},hide:{order:800,enabled:!0,fn:function(t){if(!eE(t.instance.modifiers,"hide","preventOverflow"))return t;var r=t.offsets.reference,i=em(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(r.bottom<i.top||r.left>i.right||r.top>i.bottom||r.right<i.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,r){var i,a,n,s,o,l,u,d,c,h,f,p,m,g=r.x,b=r.y,y=t.offsets.popper,v=em(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==v&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var _=void 0!==v?v:r.gpuAcceleration,w=K(t.instance.popper),x=es(w),$={position:y.position},S=(i=window.devicePixelRatio<2||!eC,n=(a=t.offsets).popper,s=a.reference,o=Math.round,l=Math.floor,u=function(t){return t},d=o(s.width),c=o(n.width),h=-1!==["left","right"].indexOf(t.placement),f=-1!==t.placement.indexOf("-"),p=i?h||f||d%2==c%2?o:l:u,m=i?o:u,{left:p(d%2==1&&c%2==1&&!f&&i?n.left-1:n.left),top:m(n.top),bottom:m(n.bottom),right:p(n.right)}),k="bottom"===g?"top":"bottom",C="right"===b?"left":"right",E=ev("transform"),T=void 0,I=void 0;I="bottom"===k?"HTML"===w.nodeName?-w.clientHeight+S.bottom:-x.height+S.bottom:S.top,T="right"===C?"HTML"===w.nodeName?-w.clientWidth+S.right:-x.width+S.right:S.left,_&&E?($[E]="translate3d("+T+"px, "+I+"px, 0)",$[k]=0,$[C]=0,$.willChange="transform"):($[k]=I*("bottom"===k?-1:1),$[C]=T*("right"===C?-1:1),$.willChange=k+", "+C);var A={"x-placement":t.placement};return t.attributes=ea({},A,t.attributes),t.styles=ea({},$,t.styles),t.arrowStyles=ea({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var r,i;return ek(t.instance.popper,t.styles),r=t.instance.popper,Object.keys(i=t.attributes).forEac
2783h(function(t){!1!==i[t]?r.setAttribute(t,i[t]):r.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&ek(t.arrowElement,t.arrowStyles),t},onLoad:function(t,r,i,a,n){var s=ec(n,r,t,i.positionFixed),o=ed(i.placement,s,r,t,i.modifiers.flip.boundariesElement,i.modifiers.flip.padding);return r.setAttribute("x-placement",o),ek(r,{position:i.positionFixed?"fixed":"absolute"}),i},gpuAcceleration:void 0}}};var eM=["innerHTML","ownerDocument","style","attributes","nodeValue"],eP=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],eR=["bigint","boolean","null","number","string","symbol","undefined"];function ej(t){var r,i=Object.prototype.toString.call(t).slice(8,-1);return/HTML\w+Element/.test(i)?"HTMLElement":(r=i,eP.includes(r))?i:void 0}function ez(t){return function(r){return ej(r)===t}}function eD(t){return function(r){return typeof r===t}}function eB(t){if(null===t)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(eB.array(t))return"Array";if(eB.plainFunction(t))return"Function";var r=ej(t);return r||"Object"}function eL(t){return function(r){return typeof r===t}}eB.array=Array.isArray,eB.arrayOf=function(t,r){return(!!eB.array(t)||!!eB.function(r))&&t.every(function(t){return r(t)})},eB.asyncGeneratorFunction=function(t){return"AsyncGeneratorFunction"===ej(t)},eB.asyncFunction=ez("AsyncFunction"),eB.bigint=eD("bigint"),eB.boolean=function(t){return!0===t||!1===t},eB.date=ez("Date"),eB.defined=function(t){return!eB.undefined(t)},eB.domElement=function(t){return eB.object(t)&&!eB.plainObject(t)&&1===t.nodeType&&eB.string(t.nodeName)&&eM.every(function(r){return r in t})},eB.empty=function(t){return eB.string(t)&&0===t.length||eB.array(t)&&0===t.length||eB.object(t)&&!eB.map(t)&&!eB.set(t)&&0===Object.keys(t).length||eB.set(t)&&0===t.size||eB.map(t)&&0===t.size},eB.error=ez("Error"),eB.function=eD("function"),eB.generator=function(t){return eB.iterable(t)&&eB.function(t.next)&&eB.function(t.throw)},eB.generatorFunction=ez("GeneratorFunction"),eB.instanceOf=function(t,r){return!!t&&!!r&&Object.getPrototypeOf(t)===r.prototype},eB.iterable=function(t){return!eB.nullOrUndefined(t)&&eB.function(t[Symbol.iterator])},eB.map=ez("Map"),eB.nan=function(t){return Number.isNaN(t)},eB.null=function(t){return null===t},eB.nullOrUndefined=function(t){return eB.null(t)||eB.undefined(t)},eB.number=function(t){return eD("number")(t)&&!eB.nan(t)},eB.numericString=function(t){return eB.string(t)&&t.length>0&&!Number.isNaN(Number(t))},eB.object=function(t){return!eB.nullOrUndefined(t)&&(eB.function(t)||"object"==typeof t)},eB.oneOf=function(t,r){return!!eB.array(t)&&t.indexOf(r)>-1},eB.plainFunction=ez("Function"),eB.plainObject=function(t){if("Object"!==ej(t))return!1;var r=Object.getPrototypeOf(t);return null===r||r===Object.getPrototypeOf({})},eB.primitive=function(t){var r;return eB.null(t)||(r=typeof t,eR.includes(r))},eB.promise=ez("Promise"),eB.propertyOf=function(t,r,i){if(!eB.object(t)||!r)return!1;var a=t[r];return eB.function(i)?i(a):eB.defined(a)},eB.regexp=ez("RegExp"),eB.set=ez("Set"),eB.string=eD("string"),eB.symbol=eD("symbol"),eB.undefined=eD("undefined"),eB.weakMap=ez("WeakMap"),eB.weakSet=ez("WeakSet");var eU=eL("function"),eF=function(t){return"RegExp"===Object.prototype.toString.call(t).slice(8,-1)},eq=function(t){return!eV(t)&&null!==t&&(eU(t)||"object"==typeof t)},eV=eL("undefined"),eW=function(t){var r="function"==typeof Symbol&&Symbol.iterator,i=r&&t[r],a=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&a>=t.length&&(t=void 0),{value:t&&t[a++],done:!t}}};throw TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")};function eH(t,r){if(t===r)return!0;if(t&&eq(t)&&r&&eq(r)){if(t.constructor!==r.constructor)return!1;if(Array.isArray(t)&&Array.isArray(r)){var i=t.length;if(i!==r.length)return!1;for(var a=i;0!=a--;)if(!eH(t[a],r[a]))return!1;return!0}if(t instanceof Map&&r instanceof Map)return function(t,r){var i,a,n,s;if(t.size!==r.size)return!1;try{for(var o=eW(t.entries()),l=o.next();!l.done;l=o.next()){var u=l.value;if(!r.has(u[0]))return!1}}catch(t){i={error:t}}finally{try{l&&!l.done&&(a=o.return)&&a.call(o)}finally{if(i)throw i.error}}try{for(var d=eW(t.entries()),c=d.next();!c.done;c=d.next()){var u=c.value;if(!eH(u[1],r.get(u[0])))return!1}}catch(t){n={error:t}}finally{try{c&&!c.done&&(s=d.return)&&s.call(d)}finally{if(n)throw n.error}}return!0}(t,r);if(t instanceof Set&&r instanceof Set)return function(t,r){var i,a;if(t.size!==r.size)return!1;try{for(var n=eW(t.entries()),s=n.next();!s.done;s=n.next()){var o=s.value;if(!r.has(o[0]))return!1}}catch(t){i={error:t}}finally{try{s&&!s.done&&(a=n.return)&&a.call(n)}finally{if(i)throw i.error}}return!0}(t,r);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(t.byteLength!==r.byteLength)return!1;for(var n=new DataView(t.buffer),s=new DataView(r.buffer),o=t.byteLength;o--;)if(n.getUint8(o)!==s.getUint8(o))return!1;return!0}if(eF(t)&&eF(r))return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();var l=Object.keys(t),u=Object.keys(r);if(l.length!==u.length)return!1;for(var d=l.length;0!=d--;)if(!Object.prototype.hasOwnProperty.call(r,l[d]))return!1;for(var d=l.length;0!=d--;){var c=l[d];if(("_owner"!==c||!t.$$typeof)&&!eH(t[c],r[c]))return!1}return!0}return!!(Number.isNaN(t)&&Number.isNaN(r))||t===r}
2783function eG(t,r,i){var a=i.actual,n=i.key,s=i.previous,o=i.type,l=e0(t,n),u=e0(r,n),d=[l,u].every(eB.number)&&("increased"===o?l<u:l>u);return eB.undefined(a)||(d=d&&u===a),eB.undefined(s)||(d=d&&l===s),d}function eK(t,r,i){var a,n=i.key,s=i.type,o=i.value,l=e0(t,n),u=e0(r,n),d="added"===s?l:u,c="added"===s?u:l;if(!eB.nullOrUndefined(o))return eB.defined(d)?!!(eB.array(d)||eB.plainObject(d))&&!!e1(d,c)&&([d,c].every(eB.array)?!d.some(eX(o))&&c.some(eX(o)):[d,c].every(eB.plainObject)?!Object.entries(d).some(eQ(o))&&Object.entries(c).some(eQ(o)):c===o):eH(c,o);return[l,u].every(eB.array)?!c.every(eJ(d)):[l,u].every(eB.plainObject)?(a=Object.keys(d),Object.keys(c).some(function(t){return!a.includes(t)})):![l,u].every(function(t){return eB.primitive(t)&&eB.defined(t)})&&("added"===s?!eB.defined(l)&&eB.defined(u):eB.defined(l)&&!eB.defined(u))}function eY(t,r,i){var a=(void 0===i?{}:i).key,n=e0(t,a),s=e0(r,a);if(!e1(n,s))throw TypeError("Inputs have different types");if(!function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return t.every(function(t){return eB.string(t)||eB.array(t)||eB.plainObject(t)})}(n,s))throw TypeError("Inputs don't have length");return[n,s].every(eB.plainObject)&&(n=Object.keys(n),s=Object.keys(s)),[n,s]}function eQ(t){return function(r){var i=r[0],a=r[1];return eB.array(t)?eH(t,a)||t.some(function(t){return eH(t,a)||eB.array(a)&&eJ(a)(t)}):eB.plainObject(t)&&t[i]?!!t[i]&&eH(t[i],a):eH(t,a)}}function eX(t){return function(r){return eB.array(t)?t.some(function(t){return eH(t,r)||eB.array(r)&&eJ(r)(t)}):eH(t,r)}}function eZ(t,r){return eB.array(t)?t.some(function(t){return eH(t,r)}):eH(t,r)}function eJ(t){return function(r){return t.some(function(t){return eH(t,r)})}}function e1(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return t.every(eB.array)||t.every(eB.number)||t.every(eB.plainObject)||t.every(eB.string)}function e0(t,r){if(eB.plainObject(t)||eB.array(t)){if(eB.string(r))return r.split(".").reduce(function(t,r){return t&&t[r]},t);if(eB.number(r))return t[r]}return t}function e2(t,r){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);r&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),i.push.apply(i,a)}return i}function e3(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?e2(Object(i),!0).forEach(function(r){e6(t,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e2(Object(i)).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(i,r))})}return t}function e4(t,r){if(!(t instanceof r))throw TypeError("Cannot call a class as a function")}function e8(t,r){for(var i=0;i<r.length;i++){var a=r[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,ta(a.key),a)}}function e7(t,r,i){return r&&e8(t.prototype,r),i&&e8(t,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function e6(t,r,i){return(r=ta(r))in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,t}function e5(t,r){if("function"!=typeof r&&null!==r)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&te(t,r)}function e9(t){return(e9=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function te(t,r){return(te=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t})(t,r)}function tt(t,r){if(null==t)return{};var i,a,n=function(t,r){if(null==t)return{};var i,a,n={},s=Object.keys(t);for(a=0;a<s.length;a++)i=s[a],r.indexOf(i)>=0||(n[i]=t[i]);return n}(t,r);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(a=0;a<s.length;a++)i=s[a],!(r.indexOf(i)>=0)&&Object.prototype.propertyIsEnumerable.call(t,i)&&(n[i]=t[i])}return n}function tr(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function ti(t){var r=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var i,a=e9(t);
2783i=r?Reflect.construct(a,arguments,e9(this).constructor):a.apply(this,arguments);if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw TypeError("Derived constructors may only return object or undefined");return tr(this)}}function ta(t){var r=function(t,r){if("object"!=typeof t||null===t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var a=i.call(t,r||"default");if("object"!=typeof a)return a;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==typeof r?r:String(r)}var tn={flip:{padding:20},preventOverflow:{padding:10}};function ts(t,r,i){if("function"!=typeof t)throw TypeError("The typeValidator argument must be a function with the signature function(props, propName, componentName).");if(i&&"string"!=typeof i)throw TypeError("The error message is optional, but must be a string if provided.");return function(a,n,s){for(var o=arguments.length,l=Array(o>3?o-3:0),u=3;u<o;u++)l[u-3]=arguments[u];if("boolean"==typeof r?r:"function"==typeof r?r(a,n,s):!0==!!r&&!!r)return Object.hasOwnProperty.call(a,n)?t.apply(void 0,[a,n,s].concat(l)):i?Error(i):Error("Required ".concat(a[n]," `").concat(n,"` was not specified in `").concat(s,"`."));return t.apply(void 0,[a,n,s].concat(l))}}var to={INIT:"init",IDLE:"idle",OPENING:"opening",OPEN:"open",CLOSING:"closing"},tl=void 0!==N.createPortal;function tu(){return!!("undefined"!=typeof window&&window.document&&window.document.createElement)}function td(){return"ontouchstart"in window&&/Mobi/.test(navigator.userAgent)}function tc(t){var r=t.title,i=t.data,a=t.warn,n=t.debug,s=void 0!==a&&a?console.warn||console.error:console.log;void 0!==n&&n&&r&&i&&(console.groupCollapsed("%creact-floater: ".concat(r),"color: #9b00ff; font-weight: bold; font-size: 12px;"),Array.isArray(i)?i.forEach(function(t){eB.plainObject(t)&&t.key?s.apply(console,[t.key,t.value]):s.apply(console,[t])}):s.apply(console,[i]),console.groupEnd())}function th(){}var tf=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"componentDidMount",value:function(){tu()&&(this.node||this.appendNode(),tl||this.renderPortal())}},{key:"componentDidUpdate",value:function(){tu()&&(tl||this.renderPortal())}},{key:"componentWillUnmount",value:function(){tu()&&this.node&&(tl||N.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var t=this.props,r=t.id,i=t.zIndex;this.node||(this.node=document.createElement("div"),r&&(this.node.id=r),i&&(this.node.style.zIndex=i),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!tu())return null;var t=this.props,r=t.children,i=t.setRef;return(this.node||this.appendNode(),tl)?N.createPortal(r,this.node):(i(N.unstable_renderSubtreeIntoContainer(this,r.length>1?n.createElement("div",null,r):r[0],this.node)),null)}},{key:"renderReact16",value:function(){var t=this.props,r=t.hasChildren,i=t.placement,a=t.target;return r?this.renderPortal():a||"center"===i?this.renderPortal():null}},{key:"render",value:function(){return tl?this.renderReact16():null}}]),i}(n.Component);e6(tf,"propTypes",{children:j().oneOfType([j().element,j().array]),hasChildren:j().bool,id:j().oneOfType([j().string,j().number]),placement:j().string,setRef:j().func.isRequired,target:j().oneOfType([j().object,j().string]),zIndex:j().number});var tp=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"parentStyle",get:function(){var t=this.props,r=t.placement,i=t.styles.arrow.length,a={pointerEvents:"none",position:"absolute",width:"100%"};return r.startsWith("top")?(a.bottom=0,a.left=0,a.right=0,a.height=i):r.startsWith("bottom")?(a.left=0,a.right=0,a.top=0,a.height=i):r.startsWith("left")?(a.right=0,a.top=0,a.bottom=0):r.startsWith("right")&&(a.left=0,a.top=0),a}},{key:"render",value:function(){var t,r=this.props,i=r.placement,a=r.setArrowRef,s=r.styles.arrow,o=s.color,l=s.display,u=s.length,d=s.margin,c=s.position,h=s.spread,f={display:l,position:c},p=h,m=u;return i.startsWith("top")?(t="0,0 ".concat(p/2,",").concat(m," ").concat(p,",0"),f.bottom=0,f.marginLeft=d,f.marginRight=d):i.startsWith("bottom")?(t="".concat(p,",").concat(m," ").concat(p/2,",0 0,").concat(m),f.top=0,f.marginLeft=d,f.marginRight=d):i.startsWith("left")?(m=h,p=u,t="0,0 ".concat(p,",").concat(m/2," 0,").concat(m),f.right=0,f.marginTop=d,f.marginBottom=d):i.startsWith("right")&&(m=h,p=u,t="".concat(p,",").concat(m," ").concat(p,",0 0,").concat(m/2),f.left=0,f.marginTop=d,f.marginBottom=d),n.createElement("div",{className:"__floater__arrow",style:this.parentStyle},n.createElement("span",{ref:a,style:f},n.createElement("svg",{width:p,height:m,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},n.createElement("polygon",{points:t,fill:o}))))}}]),i}(n.Component);
2783e6(tp,"propTypes",{placement:j().string.isRequired,setArrowRef:j().func.isRequired,styles:j().object.isRequired});var tm=["color","height","width"];function tg(t){var r=t.handleClick,i=t.styles,a=i.color,s=i.height,o=i.width,l=tt(i,tm);return n.createElement("button",{"aria-label":"close",onClick:r,style:l,type:"button"},n.createElement("svg",{width:"".concat(o,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},n.createElement("g",null,n.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:a}))))}function tb(t){var r=t.content,i=t.footer,a=t.handleClick,s=t.open,o=t.positionWrapper,l=t.showCloseButton,u=t.title,d=t.styles,c={content:n.isValidElement(r)?r:n.createElement("div",{className:"__floater__content",style:d.content},r)};return u&&(c.title=n.isValidElement(u)?u:n.createElement("div",{className:"__floater__title",style:d.title},u)),i&&(c.footer=n.isValidElement(i)?i:n.createElement("div",{className:"__floater__footer",style:d.footer},i)),(l||o)&&!eB.boolean(s)&&(c.close=n.createElement(tg,{styles:d.close,handleClick:a})),n.createElement("div",{className:"__floater__container",style:d.container},c.close,c.title,c.content,c.footer)}tg.propTypes={handleClick:j().func.isRequired,styles:j().object.isRequired},tb.propTypes={content:j().node.isRequired,footer:j().node,handleClick:j().func.isRequired,open:j().bool,positionWrapper:j().bool.isRequired,showCloseButton:j().bool.isRequired,styles:j().object.isRequired,title:j().node};var ty=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"style",get:function(){var t=this.props,r=t.disableAnimation,i=t.component,a=t.placement,n=t.hideArrow,s=t.status,o=t.styles,l=o.arrow.length,u=o.floater,d=o.floaterCentered,c=o.floaterClosing,h=o.floaterOpening,f=o.floaterWithAnimation,p=o.floaterWithComponent,m={};return!n&&(a.startsWith("top")?m.padding="0 0 ".concat(l,"px"):a.startsWith("bottom")?m.padding="".concat(l,"px 0 0"):a.startsWith("left")?m.padding="0 ".concat(l,"px 0 0"):a.startsWith("right")&&(m.padding="0 0 0 ".concat(l,"px"))),-1!==[to.OPENING,to.OPEN].indexOf(s)&&(m=e3(e3({},m),h)),s===to.CLOSING&&(m=e3(e3({},m),c)),s!==to.OPEN||r||(m=e3(e3({},m),f)),"center"===a&&(m=e3(e3({},m),d)),i&&(m=e3(e3({},m),p)),e3(e3({},u),m)}},{key:"render",value:function(){var t=this.props,r=t.component,i=t.handleClick,a=t.hideArrow,s=t.setFloaterRef,o=t.status,l={},u=["__floater"];return r?n.isValidElement(r)?l.content=n.cloneElement(r,{closeFn:i}):l.content=r({closeFn:i}):l.content=n.createElement(tb,this.props),o===to.OPEN&&u.push("__floater__open"),a||(l.arrow=n.createElement(tp,this.props)),n.createElement("div",{ref:s,className:u.join(" "),style:this.style},n.createElement("div",{className:"__floater__body"},l.content,l.arrow))}}]),i}(n.Component);e6(ty,"propTypes",{component:j().oneOfType([j().func,j().element]),content:j().node,disableAnimation:j().bool.isRequired,footer:j().node,handleClick:j().func.isRequired,hideArrow:j().bool.isRequired,open:j().bool,placement:j().string.isRequired,positionWrapper:j().bool.isRequired,setArrowRef:j().func.isRequired,setFloaterRef:j().func.isRequired,showCloseButton:j().bool,status:j().string.isRequired,styles:j().object.isRequired,title:j().node});var tv=function(t){e5(i,t);var r=ti(i);function i(){return e4(this,i),r.apply(this,arguments)}return e7(i,[{key:"render",value:function(){var t,r=this.props,i=r.children,a=r.handleClick,s=r.handleMouseEnter,o=r.handleMouseLeave,l=r.setChildRef,u=r.setWrapperRef,d=r.style,c=r.styles;if(i)if(1===n.Children.count(i))if(n.isValidElement(i)){var h=eB.function(i.type)?"innerRef":"ref";t=n.cloneElement(n.Children.only(i),e6({},h,l))}else t=n.createElement("span",null,i);else t=i;return t?n.createElement("span",{ref:u,style:e3(e3({},c),d),onClick:a,onMouseEnter:s,onMouseLeave:o},t):null}}]),i}(n.Component);e6(tv,"propTypes",{children:j().node,handleClick:j().func.isRequired,handleMouseEnter:j().func.isRequired,handleMouseLeave:j().func.isRequired,setChildRef:j().func.isRequired,setWrapperRef:j().func.isRequired,style:j().object,styles:j().object.isRequired});var t_={zIndex:100},tw=["arrow","flip","offset"],tx=["position","top","right","bottom","left"],t$
2783=function(t){e5(i,t);var r=ti(i);function i(t){var a;return e4(this,i),e6(tr(a=r.call(this,t)),"setArrowRef",function(t){a.arrowRef=t}),e6(tr(a),"setChildRef",function(t){a.childRef=t}),e6(tr(a),"setFloaterRef",function(t){a.floaterRef=t}),e6(tr(a),"setWrapperRef",function(t){a.wrapperRef=t}),e6(tr(a),"handleTransitionEnd",function(){var t=a.state.status,r=a.props.callback;a.wrapperPopper&&a.wrapperPopper.instance.update(),a.setState({status:t===to.OPENING?to.OPEN:to.IDLE},function(){r(a.state.status===to.OPEN?"open":"close",a.props)})}),e6(tr(a),"handleClick",function(){var t=a.props,r=t.event,i=t.open;if(!eB.boolean(i)){var n=a.state,s=n.positionWrapper,o=n.status;("click"===a.event||"hover"===a.event&&s)&&(tc({title:"click",data:[{event:r,status:o===to.OPEN?"closing":"opening"}],debug:a.debug}),a.toggle())}}),e6(tr(a),"handleMouseEnter",function(){var t=a.props,r=t.event,i=t.open;if(!(eB.boolean(i)||td())){var n=a.state.status;"hover"===a.event&&n===to.IDLE&&(tc({title:"mouseEnter",data:[{key:"originalEvent",value:r}],debug:a.debug}),clearTimeout(a.eventDelayTimeout),a.toggle())}}),e6(tr(a),"handleMouseLeave",function(){var t=a.props,r=t.event,i=t.eventDelay,n=t.open;if(!(eB.boolean(n)||td())){var s=a.state,o=s.status,l=s.positionWrapper;"hover"===a.event&&(tc({title:"mouseLeave",data:[{key:"originalEvent",value:r}],debug:a.debug}),i?-1===[to.OPENING,to.OPEN].indexOf(o)||l||a.eventDelayTimeout||(a.eventDelayTimeout=setTimeout(function(){delete a.eventDelayTimeout,a.toggle()},1e3*i)):a.toggle(to.IDLE))}}),a.state={currentPlacement:t.placement,needsUpdate:!1,positionWrapper:t.wrapperOptions.position&&!!t.target,status:to.INIT,statusWrapper:to.INIT},a._isMounted=!1,a.hasMounted=!1,tu()&&window.addEventListener("load",function(){a.popper&&a.popper.instance.update(),a.wrapperPopper&&a.wrapperPopper.instance.update()}),a}return e7(i,[{key:"componentDidMount",value:function(){if(tu()){var t=this.state.positionWrapper,r=this.props,i=r.children,a=r.open,n=r.target;this._isMounted=!0,tc({title:"init",data:{hasChildren:!!i,hasTarget:!!n,isControlled:eB.boolean(a),positionWrapper:t,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!i&&n&&eB.boolean(a)}}},{key:"componentDidUpdate",value:function(t,r){if(tu()){var i,a=this.props,n=a.autoOpen,s=a.open,o=a.target,l=a.wrapperOptions,u=function(t,r){if([t,r].some(eB.nullOrUndefined))throw Error("Missing required parameters");if(![t,r].every(function(t){return eB.plainObject(t)||eB.array(t)}))throw Error("Expected plain objects or array");var i=function(i,a,n){try{var s=e0(t,i),o=e0(r,i),l=eB.defined(a),u=eB.defined(n);if(l||u){var d=u?eZ(n,s):!eZ(a,s),c=eZ(a,o);return d&&c}if([s,o].every(eB.array)||[s,o].every(eB.plainObject))return!eH(s,o);return s!==o}catch(t){return!1}};return{added:function(i,a){try{return eK(t,r,{key:i,type:"added",value:a})}catch(t){return!1}}
2783,changed:i,changedFrom:function(i,a,n){if(!eB.defined(i))return!1;try{var s=e0(t,i),o=e0(r,i),l=eB.defined(n);return eZ(a,s)&&(l?eZ(n,o):!l)}catch(t){return!1}},changedTo:function(t,r){return!!eB.defined(t)&&i(t,r)},decreased:function(i,a,n){if(!eB.defined(i))return!1;try{return eG(t,r,{key:i,actual:a,previous:n,type:"decreased"})}catch(t){return!1}},emptied:function(i){try{var a=eY(t,r,{key:i}),n=a[0],s=a[1];return!!n.length&&!s.length}catch(t){return!1}},filled:function(i){try{var a=eY(t,r,{key:i}),n=a[0],s=a[1];return!n.length&&!!s.length}catch(t){return!1}},increased:function(i,a,n){if(!eB.defined(i))return!1;try{return eG(t,r,{key:i,actual:a,previous:n,type:"increased"})}catch(t){return!1}},removed:function(i,a){try{return eK(t,r,{key:i,type:"removed",value:a})}catch(t){return!1}}}}(r,this.state),d=u.changedFrom,c=u.changed;t.open!==s&&(eB.boolean(s)&&(i=s?to.OPENING:to.CLOSING),this.toggle(i)),(t.wrapperOptions.position!==l.position||t.target!==o)&&this.changeWrapperPosition(this.props),c("status",to.IDLE)&&s?this.toggle(to.OPEN):d("status",to.INIT,to.IDLE)&&n&&this.toggle(to.OPEN),this.popper&&c("status",to.OPENING)&&this.popper.instance.update(),this.floaterRef&&(c("status",to.OPENING)||c("status",to.CLOSING))&&function(t,r,i){var a,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];a=function(n){i(n),function(t,r,i){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.removeEventListener(r,i,a)}(t,r,a)},function(t,r,i){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.addEventListener(r,i,a)}(t,r,a,n)}(this.floaterRef,"transitionend",this.handleTransitionEnd),c("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){tu()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var t=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.target,i=this.state.positionWrapper,a=this.props,n=a.disableFlip,s=a.getPopper,o=a.hideArrow,l=a.offset,u=a.placement,d=a.wrapperOptions;if("center"===u)this.setState({status:to.IDLE});else if(r&&this.floaterRef){var c=this.options,h=c.arrow,f=c.flip,p=c.offset,m=tt(c,tw);new eO(r,this.floaterRef,{placement:u,modifiers:e3({arrow:e3({enabled:!o,element:this.arrowRef},h),flip:e3({enabled:!n,behavior:"top"===u||"bottom"===u?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"]},f),offset:e3({offset:"0, ".concat(l,"px")},p)},m),onCreate:function(r){var i;if(t.popper=r,!(null!=(i=t.floaterRef)&&i.isConnected))return void t.setState({needsUpdate:!0});s(r,"floater"),t._isMounted&&t.setState({currentPlacement:r.placement,status:to.IDLE}),u!==r.placement&&setTimeout(function(){r.instance.update()},1)},onUpdate:function(r){t.popper=r;var i=t.state.currentPlacement;t._isMounted&&r.placement!==i&&t.setState({currentPlacement:r.placement})}})}if(i){var g=eB.undefined(d.offset)?0:d.offset;new eO(this.target,this.wrapperRef,{placement:d.placement||u,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(g,"px")},flip:{enabled:!1}},onCreate:function(r){t.wrapperPopper=r,t._isMounted&&t.setState({statusWrapper:to.IDLE}),s(r,"wrapper"),u!==r.placement&&setTimeout(function(){r.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var t=this;this.floaterRefInterval=setInterval(function(){var r;null!=(r=t.floaterRef)&&r.isConnected&&(clearInterval(t.floaterRefInterval),t.setState({needsUpdate:!1}),t.initPopper())},50)}},{key:"changeWrapperPosition",value:function(t){var r=t.target,i=t.wrapperOptions;this.setState({positionWrapper:i.position&&!!r})}},{key:"toggle",value:function(t){var r=this.state.status===to.OPEN?to.CLOSING:to.OPENING;eB.undefined(t)||(r=t),this.setState({status:r})}},{key:"debug",get:function(){return this.props.debug||tu()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var t=this.props,r=t.disableHoverToClick,i=t.event;return"hover"===i&&td()&&!r?"click":i}},{key:"options",get:function(){var t=this.props.options;return P()(tn,t||{})}},{key:"styles",get:function(){var t,r,i=this,a=this.state,n=a.status,s=a.positionWrapper,o=a.statusWrapper,l=this.props.styles,u=P()({wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:(t=P()(t_,l.options||{})).zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:t.zIndex}
2783,floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:t},l);if(s&&(r=-1===[to.IDLE].indexOf(n)||-1===[to.IDLE].indexOf(o)?u.wrapperPosition:this.wrapperPopper.styles,u.wrapper=e3(e3({},u.wrapper),r)),this.target){var d=window.getComputedStyle(this.target);this.wrapperStyles?u.wrapper=e3(e3({},u.wrapper),this.wrapperStyles):-1===["relative","static"].indexOf(d.position)&&(this.wrapperStyles={},s||(tx.forEach(function(t){i.wrapperStyles[t]=d[t]}),u.wrapper=e3(e3({},u.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return u}},{key:"target",get:function(){if(!tu())return null;var t=this.props.target;return t?eB.domElement(t)?t:document.querySelector(t):this.childRef||this.wrapperRef}},{key:"render",value:function(){var t=this.state,r=t.currentPlacement,i=t.positionWrapper,a=t.status,s=this.props,o=s.children,l=s.component,u=s.content,d=s.disableAnimation,c=s.footer,h=s.hideArrow,f=s.id,p=s.open,m=s.showCloseButton,g=s.style,b=s.target,y=s.title,v=n.createElement(tv,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:g,styles:this.styles.wrapper},o),_={};return i?_.wrapperInPortal=v:_.wrapperAsChildren=v,n.createElement("span",null,n.createElement(tf,{hasChildren:!!o,id:f,placement:r,setRef:this.setFloaterRef,target:b,zIndex:this.styles.options.zIndex},n.createElement(ty,{component:l,content:u,disableAnimation:d,footer:c,handleClick:this.handleClick,hideArrow:h||"center"===r,open:p,placement:r,positionWrapper:i,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:m,status:a,styles:this.styles,title:y}),_.wrapperInPortal),_.wrapperAsChildren)}}]),i}(n.Component);e6(t$,"propTypes",{autoOpen:j().bool,callback:j().func,children:j().node,component:ts(j().oneOfType([j().func,j().element]),function(t){return!t.content}),content:ts(j().node,function(t){return!t.component}),debug:j().bool,disableAnimation:j().bool,disableFlip:j().bool,disableHoverToClick:j().bool,event:j().oneOf(["hover","click"]),eventDelay:j().number,footer:j().node,getPopper:j().func,hideArrow:j().bool,id:j().oneOfType([j().string,j().number]),offset:j().number,open:j().bool,options:j().object,placement:j().oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:j().bool,style:j().object,styles:j().object,target:j().oneOfType([j().object,j().string]),title:j().node,wrapperOptions:j().shape({offset:j().number,placement:j().oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:j().bool})}),e6(t$,"defaultProps",{autoOpen:!1,callback:th,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:th,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var tS=Object.defineProperty,tk=(t,r,i)=>((t,r,i)=>r in t?tS(t,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[r]=i)(t,"symbol"!=typeof r?r+"":r,i),tC={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},tE={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},tT={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},tI={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function tA(){var t;return!!("undefined"!=typeof window&&(null==(t=window.document)?void 0:t.createElement))}function tN(t){return t?t.getBoundingClientRect():null}function tO(t){if("string"==typeof t)try{return document.querySelector(t)}catch(t){return null}return t}function tM(t,r,i){if(!t)return tj();let a=A(t);if(a){if(a.isSameNode(tj()))return i?document:tj();if(!(a.scrollHeight>a.offsetHeight)&&!r)return a.style.overflow="initial",tj()}return a}function tP(t,r){if(!t)return!1;let i=tM(t,r);return!!i&&!i.isSameNode(tj())}function tR(t,r="fixed"){if(!t||!(t instanceof HTMLElement))return!1;let{nodeName:i}=t,a=t&&1===t.nodeType?getComputedStyle(t):null;return"BODY"!==i&&"HTML"!==i&&(!!a&&a.position===r||!!t.parentNode&&tR(t.parentNode,r))}function tj(){var t;return null!=(t=document.scrollingElement)?t:document.documentElement}var tz=void 0!==N.createPortal;function tD(t=navigator.userAgent){let r=t;return"undefined"==typeof window?r="node":document.documentMode?r="ie":/Edge/.test(t)?r="edge":window.opera||t.includes(" OPR/")?r="opera":void 0!==window.InstallTrigger?r="firefox":window.chrome?r="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(r="safari"),r}function tB(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function tL(t,r={}){let{defaultValue:i,step:a,steps:s}
2783=r,o=O(t);return o?(o.includes("{step}")||o.includes("{steps}"))&&a&&s&&(o=o.replace("{step}",a.toString()).replace("{steps}",s.toString())):o=(0,n.isValidElement)(t)&&!Object.values(t.props).length&&"function"===tB(t.type)?tL(t.type({}),r):O(i),o}function tU(t){return t.disableBeacon||"center"===t.placement}function tF(){return!["chrome","safari","firefox","opera"].includes(tD())}function tq({data:t,debug:r=!1,title:i,warn:a=!1}){let n=a?console.warn||console.error:console.log;r&&(i&&t?(console.groupCollapsed(`%creact-joyride: ${i}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(t=>{y.plainObject(t)&&t.key?n.apply(console,[t.key,t.value]):n.apply(console,[t])}):n.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function tV(t,...r){if(!y.plainObject(t))throw TypeError("Expected an object");let i={};for(let a in t)({}).hasOwnProperty.call(t,a)&&!r.includes(a)&&(i[a]=t[a]);return i}var tW={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},tH={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},tG={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:tH,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},tK={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},tY={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},tQ={borderRadius:4,position:"absolute"};function tX(t,r){var i,a,n,s,o,l;let u=M.all([tG,function(t,...r){if(!y.plainObject(t))throw TypeError("Expected an object");if(!r.length)return t;let i={};for(let a in t)({}).hasOwnProperty.call(t,a)&&r.includes(a)&&(i[a]=t[a]);return i}(t,"beaconComponent","disableCloseOnEsc","disableOverlay","disableOverlayClose","disableScrolling","disableScrollParentFix","floaterProps","hideBackButton","hideCloseButton","locale","showProgress","showSkipButton","spotlightClicks","spotlightPadding","styles","tooltipComponent"),null!=r?r:{}],{isMergeableObject:y.plainObject}),d=function(t,r){var i,a,n,s,o;let{floaterProps:l,styles:u}=t,d=M(null!=(i=r.floaterProps)?i:{},null!=l?l:{}),c=M(null!=u?u:{},null!=(a=r.styles)?a:{}),h=M(tK,c.options||{}),f="center"===r.placement||r.disableBeacon,{width:p}=h;window.innerWidth>480&&(p=380),"width"in h&&(p="number"==typeof h.width&&window.innerWidth<h.width?window.innerWidth-30:h.width);let m={bottom:0,left:0,overflow:"hidden",position:"absolute",right:0,top:0,zIndex:h.zIndex};return M({beacon:{...tY,display:f?"none":"inline-block",height:h.beaconSize,position:"relative",width:h.beaconSize,zIndex:h.zIndex},beaconInner:{animation:"joyride-beacon-inner 1.2s infinite ease-in-out",backgroundColor:h.primaryColor,borderRadius:"50%",display:"block",height:"50%",left:"50%",opacity:.7,position:"absolute",top:"50%",transform:"translate(-50%, -50%)",width:"50%"},beaconOuter:{animation:"joyride-beacon-outer 1.2s infinite ease-in-out",backgroundColor:`rgba(${(function(t){let r=t.replace(/^#?([\da-f])([\da-f])([\da-f])$/i,(t,r,i,a)=>r+r+i+i+a+a),i=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(r);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:[]})(h.primaryColor).join(",")}, 0.2)`,border:`2px solid ${h.primaryColor}`,borderRadius:"50%",boxSizing:"border-box",display:"block",height:"100%",left:0,opacity:.9,position:"absolute",top:0,transformOrigin:"center",width:"100%"},tooltip:{backgroundColor:h.backgroundColor,borderRadius:5,boxSizing:"border-box",color:h.textColor,fontSize:16,maxWidth:"100%",padding:15,position:"relative",width:p},tooltipContainer:{lineHeight:1.4,textAlign:"center"},tooltipTitle:{fontSize:18,margin:0},tooltipContent:{padding:"20px 10px"},tooltipFooter:{alignItems:"center",display:"flex",justifyContent:"flex-end",marginTop:15},tooltipFooterSpacer:{flex:1},buttonNext:{...tY,backgroundColor:h.primaryColor,borderRadius:4,color:"#fff"},buttonBack:{...tY,color:h.primaryColor,marginLeft:"auto",marginRight:5},buttonClose:{...tY,color:h.textColor,height:14,padding:15,position:"absolute",right:0,top:0,width:14},buttonSkip:{...tY,color:h.textColor,fontSize:14},overlay:{...m,backgroundColor:h.overlayColor,mixBlendMode:"hard-light"},overlayLegacy:{...m},overlayLegacyCenter:{...m,backgroundColor:h.overlayColor},spotlight:{...tQ,backgroundColor:"gray"},spotlightLegacy:{...tQ,boxShadow:`0 0 0 9999px ${h.overlayColor}, ${h.spotlightShadow}`},floaterStyles:{arrow:{color:null!=(o=null==(s=null==(n=null==d?void 0:d.styles)?void 0:n.arrow)?void 0:s.color)?o:h.arrowColor},options:{zIndex:h.zIndex+100}},options:h},c)}(t,u),c=tP(tO(u.target),u.disableScrollParentFix),h=M.all([tW,null!=(i=t.floaterProps)?i:{},null!=(a=u.floaterProps)?a:{}]);return h.offset=u.offset,h.styles=M(null!=(n=h.styles)?n:{},d.floaterStyles),h.offset+=null!=(o=null!=(s=t.spotlightPadding)?s:u.spotlightPadding)?o:0,u.placementBeacon&&h.wrapperOptions&&(h.wrapperOptions.placement=u.placementBeacon),c&&h.options.preventOverflow&&(h.options.preventOverflow.boundariesElement="window"),{...u,locale:M.all([tH,null!=(l=t.locale)?l:{},u.locale||{}]),floaterProps:h,styles:tV(d,"floaterStyles")}}function tZ(t,r=!1){return y.plainObject(t)?!!t.target||(tq({title:"validateStep",data:"target is missing from the step",warn:!0,debug:r}),!1):(tq({title:"validateStep",data:"step must be an object",warn:!0,debug:r}),!1)}function tJ(t,r=!1){return y.array(t)?t.every(t=>tZ(t,r)):(tq({title:"validateSteps",data:"steps must be an array",warn:!0,debug:r}),!1)}var t1={action:"init",controlled:!1,index:0,lifecycle:tT.INIT,origin:null,size:0,status:tI.IDLE},t0=Object.keys(tV(t1,"controlled","size")),t2=class{constructor(t){tk(this,"beaconPopper"),tk(this,"tooltipPopper"),tk(this,"data",new Map),tk(this,"listener"),tk(this,"store",new Map),tk(this,"addListener",t=>{this.listener=t}),tk(this,"setSteps",t=>{let{size:r,status:i}=this.getState(),a={size:t.length,status:i};this.data.set("steps",t),i===tI.WAITING&&!r&&t.length&&(a.status=tI.RUNNING),this.setState(a)}),tk(this,"getPopper",t=>"beacon"===t?this.beaconPopper:this.tooltipPopper),tk(this,"setPopper",(t,r)=>{"beacon"===t?this.beaconPopper=r:this.tooltipPopper=r}),tk(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),tk(this,"close",(t=null)=>{let{index:r,status:i}=this.getState();i===tI.RUNNING&&this.setState({...this.getNextState({action:tC.CLOSE,index:r+1,origin:t})})}),tk(this,"go",t=>{let{controlled:r,status:i}=this.getState();if(r||i!==tI.RUNNING)return;let a=this.getSteps()[t];this.setState({...this.getNextState({action:tC.GO,index:t}),status:a?i:tI.FINISHED})}),tk(this,"info",()=>this.getState()),tk(this,"next",()=>{let{index:t,status:r}=this.getState();r===tI.RUNNING&&this.setState(this.getNextState({action:tC.NEXT,index:t+1}))}),tk(this,"open",()=>{let{status:t}=this.getState();t===tI.RUNNING&&this.setState({...this.getNextState({action:tC.UPDATE,lifecycle:tT.TOOLTIP})})}),tk(this,"prev",()=>{let{index:t,status:r}=this.getState();r===tI.RUNNING&&this.setState({...this.getNextState({action:tC.PREV,index:t-1})})}),tk(this,"reset",(t=!1)=>{let{controlled:r}=this.getState();r||this.setState({...this.getNextState({action:tC.RESET,index:0}),status:t?tI.RUNNING:tI.READY})}),tk(this,"skip",()=>{let{status:t}=this.getState();t===tI.RUNNING&&this.setState({action:tC.SKIP,lifecycle:tT.INIT,status:tI.SKIPPED})}),tk(this,"start",t=>{let{index:r,size:i}=this.getState();this.setState({...this.getNextState({action:tC.START,index:y.number(t)?t:r},!0),status:i?tI.RUNNING:tI.WAITING})}),tk(this,"stop",(t=!1)=>{let{index:r,status:i}=this.getState();[tI.FINISHED,tI.SKIPPED].includes(i)||this.setState({...this.getNextState({action:tC.STOP,index:r+ +!!t}),status:tI.PAUSED})}),tk(this,"update",t=>{var r,i;if(!function(t,r){return!!y.plainObject(t)&&!!y.array(r)&&Object.keys(t).every(t=>r.includes(t))}
2783(t,t0))throw Error(`State is not valid. Valid keys: ${t0.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...t,action:null!=(r=t.action)?r:tC.UPDATE,origin:null!=(i=t.origin)?i:null},!0)})});let{continuous:r=!1,stepIndex:i,steps:a=[]}=null!=t?t:{};this.setState({action:tC.INIT,controlled:y.number(i),continuous:r,index:y.number(i)?i:0,lifecycle:tT.INIT,origin:null,status:a.length?tI.READY:tI.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(a)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...t1}}getNextState(t,r=!1){var i,a,n,s,o;let{action:l,controlled:u,index:d,size:c,status:h}=this.getState(),f=y.number(t.index)?t.index:d,p=u&&!r?d:Math.min(Math.max(f,0),c);return{action:null!=(i=t.action)?i:l,controlled:u,index:p,lifecycle:null!=(a=t.lifecycle)?a:tT.INIT,origin:null!=(n=t.origin)?n:null,size:null!=(s=t.size)?s:c,status:p===c?tI.FINISHED:null!=(o=t.status)?o:h}}getSteps(){let t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){return JSON.stringify(t)!==JSON.stringify(this.getState())}setState(t,r=!1){let i=this.getState(),{action:a,index:n,lifecycle:s,origin:o=null,size:l,status:u}={...i,...t};this.store.set("action",a),this.store.set("index",n),this.store.set("lifecycle",s),this.store.set("origin",o),this.store.set("size",l),this.store.set("status",u),r&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(i)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}},t3=function({styles:t}){return n.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})},t4=class extends n.Component{constructor(){super(...arguments),tk(this,"isActive",!1),tk(this,"resizeTimeout"),tk(this,"scrollTimeout"),tk(this,"scrollParent"),tk(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),tk(this,"hideSpotlight",()=>{let{continuous:t,disableOverlay:r,lifecycle:i}=this.props,a=[tT.INIT,tT.BEACON,tT.COMPLETE,tT.ERROR];return r||(t?a.includes(i):i!==tT.TOOLTIP)}),tk(this,"handleMouseMove",t=>{let{mouseOverSpotlight:r}=this.state,{height:i,left:a,position:n,top:s,width:o}=this.spotlightStyles,l="fixed"===n?t.clientY:t.pageY,u="fixed"===n?t.clientX:t.pageX,d=u>=a&&u<=a+o&&l>=s&&l<=s+i;d!==r&&this.updateState({mouseOverSpotlight:d})}),tk(this,"handleScroll",()=>{let{target:t}=this.props,r=tO(t);if(this.scrollParent!==document){let{isScrolling:t}=this.state;t||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else tR(r,"sticky")&&this.updateState({})}),tk(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){let{debug:t,disableScrolling:r,disableScrollParentFix:i=!1,target:a}=this.props,n=tO(a);this.scrollParent=tM(null!=n?n:document.body,i,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var r;let{disableScrollParentFix:i,lifecycle:a,spotlightClicks:n,target:s}=this.props,{changed:o}=T(t,this.props);if(o("target")||o("disableScrollParentFix")){let t=tO(s);this.scrollParent=tM(null!=t?t:document.body,i,!0)}o("lifecycle",tT.TOOLTIP)&&(null==(r=this.scrollParent)||r.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{let{isScrolling:t}=this.state;t||this.updateState({showSpotlight:!0})},100)),(o("spotlightClicks")||o("disableOverlay")||o("lifecycle"))&&(n&&a===tT.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):a!==tT.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),null==(t=this.scrollParent)||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){let{mouseOverSpotlight:t}=this.state,{disableOverlayClose:r,placement:i,styles:a}=this.props,n=a.overlay;return tF()&&(n="center"===i?a.overlayLegacyCenter:a.overlayLegacy),{cursor:r?"default":"pointer",height:function(t=!1){let{body:r,documentElement:i}=document;if(!r||!i)return 0;if(t){let t=[r.scrollHeight,r.offsetHeight,i.clientHeight,i.scrollHeight,i.offsetHeight].sort((t,r)=>t-r),a=Math.floor(t.length/2);return t.length%2==0?(t[a-1]+t[a])/2:t[a]}return Math.max(r.scrollHeight,r.offsetHeight,i.clientHeight,i.scrollHeight,i.offsetHeight)}(),pointerEvents:t?"none":"auto",...n}}get spotlightStyles(){var t,r,i;let{showSpotlight:a}=this.state,{disableScrollParentFix:n=!1,spotlightClicks:s,spotlightPadding:o=0,styles:l,target:u}=this.props,d=tO(u),c=tN(d),h=tR(d),f=function(t,r,i){var a,n,s;let o=tN(t),l=tM(t,i),u=tP(t,i),d=tR(t),c=0,h=null!=(a=null==o?void 0:o.top)?a:0;return u&&d?h=(null!=(n=null==t?void 0:t.offsetTop)?n:0)-(null!=(s=null==l?void 0:l.scrollTop)?s:0):l instanceof HTMLElement&&(c=l.scrollTop,u||tR(t)||(h+=c),l.isSameNode(tj())||(h+=tj().scrollTop)),Math.floor(h-r)}
2783(d,o,n);return{...tF()?l.spotlightLegacy:l.spotlight,height:Math.round((null!=(t=null==c?void 0:c.height)?t:0)+2*o),left:Math.round((null!=(r=null==c?void 0:c.left)?r:0)-o),opacity:+!!a,pointerEvents:s?"none":"auto",position:h?"fixed":"absolute",top:f,transition:"opacity 0.2s",width:Math.round((null!=(i=null==c?void 0:c.width)?i:0)+2*o)}}updateState(t){this.isActive&&this.setState(r=>({...r,...t}))}render(){let{showSpotlight:t}=this.state,{onClickOverlay:r,placement:i}=this.props,{hideSpotlight:a,overlayStyles:s,spotlightStyles:o}=this;if(a())return null;let l="center"!==i&&t&&n.createElement(t3,{styles:o});if("safari"===tD()){let{mixBlendMode:t,zIndex:r,...i}=s;l=n.createElement("div",{style:{...i}},l),delete s.backgroundColor}return n.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:r,role:"presentation",style:s},l)}},t8=class extends n.Component{constructor(){super(...arguments),tk(this,"node",null)}componentDidMount(){let{id:t}=this.props;tA()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),tz||this.renderReact15())}componentDidUpdate(){tA()&&(tz||this.renderReact15())}componentWillUnmount(){tA()&&this.node&&(tz||N.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!tA())return;let{children:t}=this.props;this.node&&N.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!tA()||!tz)return null;let{children:t}=this.props;return this.node?N.createPortal(t,this.node):null}render(){return tz?this.renderReact16():null}},t7=class{constructor(t,r){if(tk(this,"element"),tk(this,"options"),tk(this,"canBeTabbed",t=>{let{tabIndex:r}=t;return null!==r&&!(r<0)&&this.canHaveFocus(t)}),tk(this,"canHaveFocus",t=>{let r=t.nodeName.toLowerCase();return(/input|select|textarea|button|object/.test(r)&&!t.getAttribute("disabled")||"a"===r&&!!t.getAttribute("href"))&&this.isVisible(t)}),tk(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),tk(this,"handleKeyDown",t=>{let{code:r="Tab"}=this.options;t.code===r&&this.interceptTab(t)}),tk(this,"interceptTab",t=>{t.preventDefault();let r=this.findValidTabElements(),{shiftKey:i}=t;if(!r.length)return;let a=document.activeElement?r.indexOf(document.activeElement):0;-1!==a&&(i||a+1!==r.length)?i&&0===a?a=r.length-1:a+=i?-1:1:a=0,r[a].focus()}),tk(this,"isHidden",t=>{let r=t.offsetWidth<=0&&t.offsetHeight<=0,i=window.getComputedStyle(t);return!!r&&!t.innerHTML||r&&"visible"!==i.getPropertyValue("overflow")||"none"===i.getPropertyValue("display")}),tk(this,"isVisible",t=>{let r=t;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),tk(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),tk(this,"checkFocus",t=>{document.activeElement!==t&&(t.focus(),window.requestAnimationFrame(()=>this.checkFocus(t)))}),tk(this,"setFocus",()=>{let{selector:t}=this.options;if(!t)return;let r=this.element.querySelector(t);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=r,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},t6=class extends n.Component{constructor(t){if(super(t),tk(this,"beacon",null),tk(this,"setBeaconRef",t=>{this.beacon=t}),t.beaconComponent)return;let r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.id="joyride-beacon-animation",t.nonce&&i.setAttribute("nonce",t.nonce);let a=`
2784        @keyframes joyride-beacon-inner {
2785          20% {
2786            opacity: 0.9;
2787          }
2788        
2789          90% {
2790            opacity: 0.7;
2791          }
2792        }
2793        
2794        @keyframes joyride-beacon-outer {
2795          0% {
2796            transform: scale(1);
2797          }
2798        
2799          45% {
2800            opacity: 0.7;
2801            transform: scale(0.75);
2802          }
2803        
2804          100% {
2805            opacity: 0.9;
2806            transform: scale(1);
2807          }
2808        }
2809      `;i.appendChild(document.createTextNode(a)),r.appendChild(i)}componentDidMount(){let{shouldFocus:t}=this.props;setTimeout(()=>{y.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){let t=document.getElementById("joyride-beacon-animation");(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}render(){let{beaconComponent:t,continuous:r,index:i,isLastStep:a,locale:s,onClickOrHover:o,size:l,step:u,styles:d}=this.props,c=tL(s.open),h={"aria-label":c,onClick:o,onMouseEnter:o,ref:this.setBeaconRef,title:c};return t?n.createElement(t,{continuous:r,index:i,isLastStep:a,size:l,step:u,...h}):n.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:d.beacon,type:"button",...h},n.createElement("span",{style:d.beaconInner}),n.createElement("span",{style:d.beaconOuter}))}},t5=function({styles:t,...r}){let{color:i,height:a,width:s,...o}=t;return n.createElement("button",{style:o,type:"button",...r},n.createElement("svg",{height:"number"==typeof a?`${a}px`:a,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:"number"==typeof s?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},n.createElement("g",null,n.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:i}))))},t9=function(t){let{backProps:r,closeProps:i,index:a,isLastStep:s,primaryProps:o,skipProps:l,step:u,tooltipProps:d}=t,{content:c,hideBackButton:h,hideCloseButton:f,hideFooter:p,showSkipButton:m,styles:g,title:b}=u,y={};return y.primary=n.createElement("button",{"data-test-id":"button-primary",style:g.buttonNext,type:"button",...o}),m&&!s&&(y.skip=n.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:g.buttonSkip,type:"button",...l})),!h&&a>0&&(y.back=n.createElement("button",{"data-test-id":"button-back",style:g.buttonBack,type:"button",...r})),y.close=!f&&n.createElement(t5,{"data-test-id":"button-close",styles:g.buttonClose,...i}),n.createElement("div",{key:"JoyrideTooltip","aria-label":tL(null!=b?b:c),className:"react-joyride__tooltip",style:g.tooltip,...d},n.createElement("div",{style:g.tooltipContainer},b&&n.createElement("h1",{"aria-label":tL(b),style:g.tooltipTitle},b),n.createElement("div",{style:g.tooltipContent},c)),!p&&n.createElement("div",{style:g.tooltipFooter},n.createElement("div",{style:g.tooltipFooterSpacer},y.skip),y.back,y.primary),y.close)},re=class extends n.Component{constructor(){super(...arguments),tk(this,"handleClickBack",t=>{t.preventDefault();let{helpers:r}=this.props;r.prev()}),tk(this,"handleClickClose",t=>{t.preventDefault();let{helpers:r}=this.props;r.close("button_close")}),tk(this,"handleClickPrimary",t=>{t.preventDefault();let{continuous:r,helpers:i}=this.props;if(!r)return void i.close("button_primary");i.next()}),tk(this,"handleClickSkip",t=>{t.preventDefault();let{helpers:r}=this.props;r.skip()}),tk(this,"getElementsProps",()=>{let{continuous:t,index:r,isLastStep:i,setTooltipRef:a,size:s,step:o}=this.props,{back:l,close:u,last:d,next:c,nextLabelWithProgress:h,skip:f}=o.locale,p=tL(l),m=tL(u),g=tL(d),b=tL(c),y=tL(f),v=u,_=m;if(t){if(v=c,_=b,o.showProgress&&!i){let t=tL(h,{step:r+1,steps:s});v=function t(r,i,a){let s=t=>t.replace("{step}",String(i)).replace("{steps}",String(a));if("string"===tB(r))return s(r);if(!(0,n.isValidElement)(r))return r;let{children:o}=r.props;return"string"===tB(o)&&o.includes("{step}")?(0,n.cloneElement)(r,{children:s(o)}):Array.isArray(o)?(0,n.cloneElement)(r,{children:o.map(r=>"string"==typeof r?s(r):t(r,i,a))}):"function"!==tB(r.type)||Object.values(r.props).length?r:t(r.type({}),i,a)}(h,r+1,s),_=t}i&&(v=d,_=g)}return{backProps:{"aria-label":p,children:l,"data-action":"back",onClick:this.handleClickBack,role:"button",title:p},closeProps:{"aria-label":m,children:u,"data-action":"close",onClick:this.handleClickClose,role:"button",title:m},primaryProps:{"aria-label":_,children:v,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:_},skipProps:{"aria-label":y,children:f,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:y},tooltipProps:{"aria-modal":!0,ref:a,role:"alertdialog"}}})}render(){let t,{continuous:r,index:i,isLastStep:a,setTooltipRef:s,size:o,step:l}=this.props,{beaconComponent:u,tooltipComponent:d,...c}=l;if(d){let l={...this.getElementsProps(),continuous:r,index:i,isLastStep:a,size:o,step:c,setTooltipRef:s};t=n.createElement(d,{...l})}else t=n.createElement(t9,{...this.getElementsProps(),continuous:r,index:i,isLastStep:a,size:o,step:l});return t}},rt=class extends n.Component{constructor(){super(...arguments),tk(this,"scope",null),tk(this,"tooltip",null),tk(this,"handleClickHoverBeacon",t=>{let{step:r,store:i}=this.props;("mouseenter"!==t.type||"hover"===r.event)&&i.update({lifecycle:tT.TOOLTIP})}),tk(this,"setTooltipRef",t=>{this.tooltip=t}),tk(this,"setPopper",(t,r)=>{var i;let{action:a,lifecycle:n,step:s,store:o}=this.props;
2809"wrapper"===r?o.setPopper("beacon",t):o.setPopper("tooltip",t),o.getPopper("beacon")&&(o.getPopper("tooltip")||"center"===s.placement)&&n===tT.INIT&&o.update({action:a,lifecycle:tT.READY}),(null==(i=s.floaterProps)?void 0:i.getPopper)&&s.floaterProps.getPopper(t,r)}),tk(this,"renderTooltip",t=>{let{continuous:r,helpers:i,index:a,size:s,step:o}=this.props;return n.createElement(re,{continuous:r,helpers:i,index:a,isLastStep:a+1===s,setTooltipRef:this.setTooltipRef,size:s,step:o,...t})})}componentDidMount(){let{debug:t,index:r}=this.props;tq({title:`step:${r}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var r;let{action:i,callback:a,continuous:n,controlled:s,debug:o,helpers:l,index:u,lifecycle:d,shouldScroll:c,status:h,step:f,store:p}=this.props,{changed:m,changedFrom:g}=T(t,this.props),b=l.info(),y=n&&i!==tC.CLOSE&&(u>0||i===tC.PREV),v=m("action")||m("index")||m("lifecycle")||m("status"),_=g("lifecycle",[tT.TOOLTIP,tT.INIT],tT.INIT),w=m("action",[tC.NEXT,tC.PREV,tC.SKIP,tC.CLOSE]),x=s&&u===t.index;if(w&&(_||x)&&a({...b,index:t.index,lifecycle:tT.COMPLETE,step:t.step,type:tE.STEP_AFTER}),"center"===f.placement&&h===tI.RUNNING&&m("index")&&i!==tC.START&&d===tT.INIT&&p.update({lifecycle:tT.READY}),v){let t=tO(f.target),r=!!t;r&&function(t){var r;if(!t)return!1;let i=t;for(;i&&i!==document.body;){if(i instanceof HTMLElement){let{display:t,visibility:r}=getComputedStyle(i);if("none"===t||"hidden"===r)return!1}i=null!=(r=i.parentElement)?r:null}return!0}(t)?(g("status",tI.READY,tI.RUNNING)||g("lifecycle",tT.INIT,tT.READY))&&a({...b,step:f,type:tE.STEP_BEFORE}):(console.warn(r?"Target not visible":"Target not mounted",f),a({...b,type:tE.TARGET_NOT_FOUND,step:f}),s||p.update({index:u+(i===tC.PREV?-1:1)}))}g("lifecycle",tT.INIT,tT.READY)&&p.update({lifecycle:tU(f)||y?tT.TOOLTIP:tT.BEACON}),m("index")&&tq({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:o}),m("lifecycle",tT.BEACON)&&a({...b,step:f,type:tE.BEACON}),m("lifecycle",tT.TOOLTIP)&&(a({...b,step:f,type:tE.TOOLTIP}),c&&this.tooltip&&(this.scope=new t7(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),g("lifecycle",[tT.TOOLTIP,tT.INIT],tT.INIT)&&(null==(r=this.scope)||r.removeScope(),p.cleanupPoppers())}componentWillUnmount(){var t;null==(t=this.scope)||t.removeScope()}get open(){let{lifecycle:t,step:r}=this.props;return tU(r)||t===tT.TOOLTIP}render(){let{continuous:t,debug:r,index:i,nonce:a,shouldScroll:s,size:o,step:l}=this.props,u=tO(l.target);return tZ(l)&&y.domElement(u)?n.createElement("div",{key:`JoyrideStep-${i}`,className:"react-joyride__step"},n.createElement(t$,{...l.floaterProps,component:this.renderTooltip,debug:r,getPopper:this.setPopper,id:`react-joyride-step-${i}`,open:this.open,placement:l.placement,target:l.target},n.createElement(t6,{beaconComponent:l.beaconComponent,continuous:t,index:i,isLastStep:i+1===o,locale:l.locale,nonce:a,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:o,step:l,styles:l.styles}))):null}},rr=class extends n.Component{constructor(t){super(t),tk(this,"helpers"),tk(this,"store"),tk(this,"callback",t=>{let{callback:r}=this.props;y.function(r)&&r(t)}),tk(this,"handleKeyboard",t=>{let{index:r,lifecycle:i}=this.state,{steps:a}=this.props,n=a[r];i===tT.TOOLTIP&&"Escape"===t.code&&n&&!n.disableCloseOnEsc&&this.store.close("keyboard")}),tk(this,"handleClickOverlay",()=>{let{index:t}=this.state,{steps:r}=this.props;tX(this.props,r[t]).disableOverlayClose||this.helpers.close("overlay")}),tk(this,"syncState",t=>{this.setState(t)});let{debug:r,getHelpers:i,run:a=!0,stepIndex:n}=t;this.store=new t2({...t,controlled:a&&y.number(n)}),this.helpers=this.store.getHelpers();let{addListener:s}=this.store;tq({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:r}),s(this.syncState),i&&i(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!tA())return;let{debug:t,disableCloseOnEsc:r,run:i,steps:a}=this.props,{start:n}=this.store;tJ(a,t)&&i&&n(),r||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}
2809componentDidUpdate(t,r){if(!tA())return;let{action:i,controlled:a,index:n,status:s}=this.state,{debug:o,run:l,stepIndex:u,steps:d}=this.props,{stepIndex:h,steps:f}=t,{reset:p,setSteps:m,start:g,stop:b,update:v}=this.store,{changed:_}=T(t,this.props),{changed:w,changedFrom:x}=T(r,this.state),$=tX(this.props,d[n]),S=!c(f,d),k=y.number(u)&&_("stepIndex"),C=tO($.target);if(S&&(tJ(d,o)?m(d):console.warn("Steps are not valid",d)),_("run")&&(l?g(u):b()),k){let t=y.number(h)&&h<u?tC.NEXT:tC.PREV;i===tC.STOP&&(t=tC.START),[tI.FINISHED,tI.SKIPPED].includes(s)||v({action:i===tC.CLOSE?tC.CLOSE:t,index:u,lifecycle:tT.INIT})}a||s!==tI.RUNNING||0!==n||C||(this.store.update({index:n+1}),this.callback({...this.state,type:tE.TARGET_NOT_FOUND,step:$}));let E={...this.state,index:n,step:$};if(w("action",[tC.NEXT,tC.PREV,tC.SKIP,tC.CLOSE])&&w("status",tI.PAUSED)){let t=tX(this.props,d[r.index]);this.callback({...E,index:r.index,lifecycle:tT.COMPLETE,step:t,type:tE.STEP_AFTER})}if(w("status",[tI.FINISHED,tI.SKIPPED])){let t=tX(this.props,d[r.index]);a||this.callback({...E,index:r.index,lifecycle:tT.COMPLETE,step:t,type:tE.STEP_AFTER}),this.callback({...E,type:tE.TOUR_END,step:t,index:r.index}),p()}else x("status",[tI.IDLE,tI.READY],tI.RUNNING)?this.callback({...E,type:tE.TOUR_START}):(w("status")||w("action",tC.RESET))&&this.callback({...E,type:tE.TOUR_STATUS});this.scrollToStep(r)}componentWillUnmount(){let{disableCloseOnEsc:t}=this.props;t||document.body.removeEventListener("keydown",this.handleKeyboard)}scrollToStep(t){let{index:r,lifecycle:i,status:a}=this.state,{debug:n,disableScrollParentFix:s=!1,scrollDuration:o,scrollOffset:l=20,scrollToFirstStep:u=!1,steps:d}=this.props,c=tX(this.props,d[r]),h=tO(c.target),f=function(t){let{isFirstStep:r,lifecycle:i,previousLifecycle:a,scrollToFirstStep:n,step:s,target:o}=t;return!s.disableScrolling&&(!r||n||i===tT.TOOLTIP)&&"center"!==s.placement&&(!s.isFixed||!tR(o))&&a!==i&&[tT.BEACON,tT.TOOLTIP].includes(i)}({isFirstStep:0===r,lifecycle:i,previousLifecycle:t.lifecycle,scrollToFirstStep:u,step:c,target:h});if(a===tI.RUNNING&&f){let t=tP(h,s),u=tM(h,s),d=Math.floor(function(t,r,i){var a;if(!t)return 0;let{offsetTop:n=0,scrollTop:s=0}=null!=(a=A(t))?a:{},o=t.getBoundingClientRect().top+s;n&&(tP(t,i)||t.offsetParent!==document.body)&&(o-=n);let l=Math.floor(o-r);return l<0?0:l}(h,l,s))||0;tq({title:"scrollToStep",data:[{key:"index",value:r},{key:"lifecycle",value:i},{key:"status",value:a}],debug:n});let f=this.store.getPopper("beacon"),p=this.store.getPopper("tooltip");if(i===tT.BEACON&&f){let{offsets:r,placement:i}=f;["bottom"].includes(i)||t||(d=Math.floor(r.popper.top-l))}else if(i===tT.TOOLTIP&&p){let{flipped:r,offsets:i,placement:a}=p;!["top","right","left"].includes(a)||r||t?d-=c.spotlightPadding:d=Math.floor(i.popper.top-l)}d=d>=0?d:0,a===tI.RUNNING&&(function(t,r){let{duration:i,element:a}=r;return new Promise((r,n)=>{let{scrollTop:s}=a,o=t>s?t-s:s-t;I.top(a,t,{duration:o<100?50:i},t=>t&&"Element already at target scroll position"!==t.message?n(t):r())})})(d,{element:u,duration:o}).then(()=>{setTimeout(()=>{var t;null==(t=this.store.getPopper("tooltip"))||t.instance.update()},10)})}}render(){if(!tA())return null;let{index:t,lifecycle:r,status:i}=this.state,{continuous:a=!1,debug:s=!1,nonce:o,scrollToFirstStep:l=!1,steps:u}=this.props,d=i===tI.RUNNING,c={};if(d&&u[t]){let i=tX(this.props,u[t]);c.step=n.createElement(rt,{...this.state,callback:this.callback,continuous:a,debug:s,helpers:this.helpers,nonce:o,shouldScroll:!i.disableScrolling&&(0!==t||l),step:i,store:this.store}),c.overlay=n.createElement(t8,{id:"react-joyride-portal"},n.createElement(t4,{...i,continuous:a,debug:s,lifecycle:r,onClickOverlay:this.handleClickOverlay}))}return n.createElement("div",{className:"react-joyride"},c.step,c.overlay)}};tk(rr,"defaultProps",{continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]});let ri=(0,n.createContext)(void 0),ra=()=>{let t=(0,n.useContext)(ri);if(!t)throw Error("useTour must be used within a TourProvider");return t},rn=t=>{let{children:r}
2809=t,[i,s]=(0,n.useState)(!1),[o,l]=(0,n.useState)(!1),[u,d]=(0,n.useState)(!1),[c,h]=(0,n.useState)({isActive:!1,currentStep:0,steps:[],completedTours:[],currentTourId:void 0,ready:!1});(0,n.useEffect)(()=>{s(!0)},[]),(0,n.useEffect)(()=>{if(i){let t=JSON.parse(localStorage.getItem("maia-completed-tours")||"[]");h(r=>({...r,completedTours:t,ready:!0}))}},[i]),(0,n.useEffect)(()=>{if(!i)return;let t=()=>{let t=!!document.querySelector('[data-testid="download-modal"]');o&&!t&&(d(!0),setTimeout(()=>{d(!1)},500)),l(t)};t();let r=new MutationObserver(t);return r.observe(document.body,{childList:!0,subtree:!0}),()=>r.disconnect()},[i]);let[f,p]=(0,n.useState)([]),m=(0,n.useCallback)(t=>t.map(t=>{var r,i;return{target:"#".concat(t.targetId),content:t,placement:t.placement||"bottom",disableBeacon:!0,hideCloseButton:!0,showSkipButton:!1,offset:(null==(r=t.offset)?void 0:r.x)||(null==(i=t.offset)?void 0:i.y)?t.offset.x||0:10}}),[]),g=(0,n.useCallback)((t,r)=>{h(a=>({isActive:!0,currentStep:0,steps:r,completedTours:[...new Set([...a.completedTours,...i?JSON.parse(localStorage.getItem("maia-completed-tours")||"[]"):[]])],currentTourId:t,ready:a.ready}))},[i]),b=(0,n.useCallback)(function(t,r){let a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(i&&(a||c.ready)){if(!a&&([...new Set([...c.completedTours,...i?JSON.parse(localStorage.getItem("maia-completed-tours")||"[]"):[]])].includes(t)||c.isActive&&c.currentTourId===t))return;if(!a&&r.length>0){let i=r[0].targetId;if(!document.getElementById(i)){let a=0,n=setInterval(()=>{a++,document.getElementById(i)?(clearInterval(n),g(t,r)):a>=5&&clearInterval(n)},1e3);return}}g(t,r)}},[i,c.ready,c.completedTours,c.isActive,c.currentTourId,g]),y=(0,n.useCallback)(()=>{h(t=>t.currentStep<t.steps.length-1?{...t,currentStep:t.currentStep+1}:t)},[]),v=(0,n.useCallback)(()=>{h(t=>t.currentStep>0?{...t,currentStep:t.currentStep-1}:t)},[]),_=(0,n.useCallback)(()=>{h(t=>{let r=t.currentTourId||"analysis",a=t.completedTours.includes(r)?t.completedTours:[...t.completedTours,r];return i&&localStorage.setItem("maia-completed-tours",JSON.stringify(a)),{...t,isActive:!1,currentStep:0,steps:[],completedTours:a,currentTourId:void 0}})},[i]),w=(0,n.useCallback)(()=>{h(t=>{let r=t.currentTourId||"analysis",a=t.completedTours.includes(r)?t.completedTours:[...t.completedTours,r];return i&&localStorage.setItem("maia-completed-tours",JSON.stringify(a)),{...t,isActive:!1,currentStep:0,steps:[],completedTours:a,currentTourId:void 0}})},[i]),x=(0,n.useCallback)(t=>{var r;return c.isActive&&(null==(r=c.steps[c.currentStep])?void 0:r.id)===t},[c.isActive,c.currentStep,c.steps]),$=(0,n.useCallback)(()=>!c.isActive||c.currentStep>=c.steps.length?null:c.steps[c.currentStep],[c.isActive,c.currentStep,c.steps]),S=(0,n.useCallback)(t=>c.completedTours.includes(t),[c.completedTours]),k=(0,n.useCallback)(()=>{window.innerWidth<768&&setTimeout(()=>{let t=c.steps[c.currentStep],r=null;t&&(r=document.getElementById(t.targetId));let i=document.querySelector('[data-testid="react-joyride-tooltip"], .react-joyride__tooltip'),a=r||i;if(!a)return;let n=a.getBoundingClientRect(),s=window.pageYOffset+n.top-100;window.scrollTo({top:s,behavior:"smooth"})},200)},[c.steps,c.currentStep]),C=(0,n.useCallback)(t=>window.innerWidth<768?new Promise(r=>{let i=c.steps[t];if(!i)return void r();let a=document.getElementById(i.targetId);if(!a)return void r();let n=a.getBoundingClientRect(),s=window.pageYOffset+n.top-100;window.scrollTo({top:s,behavior:"smooth"}),setTimeout(r,300)}):Promise.resolve(),[c.steps]),E=(0,n.useCallback)(async()=>{if(c.currentStep<c.steps.length-1){let t=c.currentStep+1;await C(t),y()}else _()},[c.currentStep,c.steps.length,y,_,C]),T=(0,n.useCallback)(async()=>{if(c.currentStep>0){let t=c.currentStep-1;await C(t),v()}},[c.currentStep,v,C]);(0,n.useEffect)(()=>{c.isActive&&c.steps.length>0?p(m(c.steps)):p([])},[c.isActive,c.steps,m]),(0,n.useEffect)(()=>{if(!c.isActive)return;let t=t=>{("ArrowLeft"===t.key||"ArrowRight"===t.key||"Escape"===t.key)&&(t.preventDefault(),t.stopPropagation())};return document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("keydown",t,!0)}},[c.isActive]);let I=(0,n.useCallback)(t=>{let{status:r,type:i}=t;"tour:start"===i&&k(),(r===tI.FINISHED||r===tI.SKIPPED)&&_()},[_,k]),A=(0,n.useMemo)(()=>({tourState:c,startTour:b,nextStep:y,prevStep:v,endTour:_,skipTour:w,isStepActive:x,getCurrentStep:$,hasCompletedTour:S}),[c,b,y,v,_,w,x,$,S]),N=(0,n.useMemo)(()=>!!i&&!!c.isActive&&!o&&!u,[i,c.isActive,o,u]);return(0,a.jsxs)(ri.Provider,{value:A,children:[r,N&&(0,a.jsx)(rr,{run:c.isActive,steps:f,stepIndex:c.currentStep,callback:I,continuous:!1,showProgress:!1,showSkipButton:!1,disableCloseOnEsc:!0,disableScrollParentFix:!0,scrollToFirstStep:!0,scrollOffset:100,disableScrolling:!1,disableOverlayClose:!0,hideBackButton:!0,hideCloseButton:!0,tooltipComponent:t=>{let{step:r,tooltipProps:i,isLastStep:n,index:s,size:o}=t,l=r.content;return(0,a.jsxs)("div",{...i,className:"from-white/12/80 to-white/5/80 w-[320px] overflow-hidden rounded-xl border-2 border-glass-border bg-gradient-to-br backdrop-blur-xl",style:{fontFamily:"inherit"},children:[(0,a.jsxs)("div",{className:"bg-white/5/60 flex items-center justify-between border-b border-glass-border p-3 backdrop-blur sm:p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3",children:[(0,a.jsx)("div",{className:"flex h-6 w-6 items-center justify-center rounded-full border border-white/20 bg-human-4 sm:h-8 sm:w-8",children:(0,a.jsx)("span",{className:"text-xs font-bold text-white sm:text-sm",children:s+1})}),(0,a.jsx)("h3",{className:"text-base font-semibold text-white sm:text-lg",children:l.title})]}),(0,a.jsx)("button",{onClick:()=>w(),className:"bg-white/5/70 flex h-8 w-8 items-center justify-center rounded-full border border-glass-border p-1 text-white/70 transition-colors hover:border-white/20 hover:bg-white/10 hover:text-white",title:"Skip tour",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-lg sm:text-xl",children:"close"})})]}),(0,a.jsx)("div",{className:"bg-white/5/40 p-3 sm:p-4",children:(0,a.jsx)("p",{className:"text-xs leading-relaxed text-white/80 sm:text-sm",children:l.description})}),(0,a.jsxs)("div",{className:"bg-white/5/60 flex items-center justify-between border-t border-glass-border p-3 backdrop-blur sm:p-4",children:[(0,a.jsx)("div",{className:"flex items-center gap-1",children:Array.from({length:o}).map((t,r)=>(0,a.jsx)("div",{className:"h-1.5 w-1.5 rounded-full sm:h-2 sm:w-2 ".concat(r===s?"bg-human-4":r<s?"bg-human-4/60":"bg-white/20")},r))}),(0,a.jsxs)("div",{className:"flex items-center gap-1 sm:gap-2",children:[(0,a.jsxs)("button",{onClick:T,disabled:0===c.currentStep,className:"bg-white/5/60 flex items-center gap-1 rounded border border-glass-border px-2 py-1 text-xs text-white/75 backdrop-blur transition-colors hover:border-white/20 hover:bg-white/10 hover:text-white disabled:cursor-not-allowed disabled:border-white/5 disabled:bg-white/5 disabled:text-white/40 sm:px-3 sm:text-sm",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-xs sm:text-sm",children:"arrow_back"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Previous"})]}),(0,a.jsxs)("button",{onClick:E,className:"flex items-center gap-1 rounded bg-human-4 px-2 py-1 text-xs text-white transition-colors hover:bg-human-4/80 sm:px-3 sm:text-sm",children:[n?"Finish":"Next",!n&&(0,a.jsx)("span",{className:"material-symbols-outlined text-xs sm:text-sm",children:"arrow_forward"})]})]})]})]})},styles:{options:{arrowColor:"rgb(38, 36, 45)",backgroundColor:"rgb(38, 36, 45)",overlayColor:"rgba(0, 0, 0, 0.5)",spotlightShadow:"0 0 15px rgba(159, 79, 68, 0.3)",zIndex:30},spotlight:{borderRadius:"4px"},tooltip:{backgroundColor:"rgb(38, 36, 45)",color:"rgb(235, 235, 235)"}},locale:{back:"Previous",close:"Close",last:"Finish",next:"Next",skip:"Skip"},floaterProps:{disableAnimation:!1,styles:{floater:{filter:"none"},arrow:{spread:8,length:8,color:"rgb(38, 36, 45)"}}}})]})}},87192:(t,r,i)=>{"use strict";i.d(r,{GF:()=>l,Jf:()=>s,KD:()=>o,Kn:()=>p,N6:()=>v,R8:()=>h,RE:()=>b,SH:()=>$,Sj:()=>d,Xh:()=>g,Xs:()=>w,Z6:()=>c,cG:()=>m,kb:()=>u,kf:()=>_,u5:()=>x,v$:()=>f,zU:()=>y});var a=i(36854);let n=(t,r)=>{try{a.Ay.capture(t,r)}catch(r){console.error("Failed to track event ".concat(t,":"),r)}},s=(t,r)=>{n("download_model_modal_shown",{trigger:t,page:r})},o=t=>{n("download_model_initiated",{model_type:"maia2",model_size_mb:90,page:t})},l=(t,r)=>{n("download_model_completed",{model_type:"maia2",download_time_seconds:t,page:r})},u=(t,r,i)=>{n("download_model_failed",{error_type:t,retry_count:r,page:i})},d=(t,r)=>{n("opening_selection_modal_opened",{source:t,existing_selections_count:r})},c=(t,r)=>{n("opening_search_used",{search_term:t,results_count:r})},h=(t,r,i,a)=>{n("opening_preview_selected",{opening_name:t,opening_id:r,has_variation:i,variation_name:a})},f=(t,r,i,a,s)=>{n("opening_configured_and_added",{opening_name:t,variation_name:s,player_color:r,maia_version:i,target_moves:a})},p=(t,r)=>{n("opening_removed_from_selection",{opening_name:t,selection_id:r})},m=(t,r,i,a,s,o)=>{n("drill_configuration_completed",{total_openings_selected:t,total_drill_count:r,unique_openings:i,average_target_moves:a,maia_versions_used:s,color_distribution:o})},g=t=>{n("analysis_game_loaded",{game_source:t})},b=(t,r)=>{n("puzzle_started",{puzzle_id:t,user_rating:r})},y=(t,r,i,a)=>{n("puzzle_move_attempted",{puzzle_id:t,move_uci:r,attempt_number:i,is_correct:a})},v=(t,r,i,a,s,o)=>{n("puzzle_completed",{puzzle_id:t,result:r,attempts_made:i,time_taken_seconds:a,puzzle_rating:s,rating_change:o})},_=(t,r)=>{n("turing_game_started",{game_id:t,user_rating:r})},w=(t,r)=>{n("homepage_feature_clicked",{feature:t,user_authenticated:r})},x=t=>{n("lichess_connection_initiated",{source:t})},$=(t,r,i,a)=>{n("error_encountered",{error_type:t,page:r,user_action:i,error_message:a})}},87865:()=>{},88593:(t,r,i)=>{"use strict";i.d(r,{h_:()=>s,uT:()=>
2809o});let a="maia-user-settings",n={soundEnabled:!0,chessboardTheme:"brown"},s=()=>{try{let t=localStorage.getItem(a);if(!t)return n;let r=JSON.parse(t);return{...n,...r}}catch(t){return console.warn("Failed to parse user settings from localStorage:",t),n}},o=t=>{try{localStorage.setItem(a,JSON.stringify(t))}catch(t){console.warn("Failed to save user settings to localStorage:",t)}}},88831:(t,r,i)=>{"use strict";i.d(r,{Oq:()=>s,$u:()=>o,WG:()=>d,zF:()=>a.zF,xI:()=>c,J0:()=>a.J0,g2:()=>u});var a=i(69942);i(87192);var n=i(62207);function s(t,r){let i=new n.lr(r);i.getRoot();for(let r=0;r<t.length;r++){let a=t[r];if(a.lastMove){let[t,r,n]=a.lastMove,s=t&&r?"".concat(t).concat(r).concat(null!=n?n:""):"";i.getLastMainlineNode().addChild(a.board,s,a.san||"",!0)}}return i}function o(t){return t.map(t=>{let{last_move:r,fen:i,check:a,last_move_san:n}=t;return{board:i,lastMove:r,san:n,check:a}})}i(59425);var l=i(32711);let u=t=>r=>{let i=r.body.getReader(),a=/\r?\n/,n=new TextDecoder,s="",o=()=>i.read().then(r=>{let{done:i,value:l}=r;if(i)s.length>0&&t(JSON.parse(s));else{let r=n.decode(l,{stream:!0}),i=((s+=r)||"").split(a);for(let r of(s=i.pop(),i.filter(t=>t)))t(JSON.parse(r));return o()}});return o()},d=t=>{var r,i,a,s,o,l;let{players:u,id:d}=t,c={name:(null==u||null==(i=u.white)||null==(r=i.user)?void 0:r.id)||"White",rating:null==u||null==(a=u.white)?void 0:a.rating},h={name:(null==u||null==(o=u.black)||null==(s=o.user)?void 0:s.id)||"Black",rating:null==u||null==(l=u.black)?void 0:l.rating},f=t.initialFen||"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",p=[{board:f,lastMove:void 0,san:void 0,check:!1,maia_values:{}}],m=new n.lr(f);return{id:d,blackPlayer:h,whitePlayer:c,gameType:"stream",type:"stream",moves:p,availableMoves:Array(p.length).fill({}),termination:void 0,maiaEvaluations:[],stockfishEvaluations:[],loadedFen:t.fen,loaded:!1,tree:m}},c=(t,r)=>{let{uci:i,fen:a}=t;if(!i||!a||!r.tree)return r;let n=i;try{let t=r.tree.getRoot();for(;t.mainChild;)t=t.mainChild;let a=new l.d$(t.fen).move({from:i.slice(0,2),to:i.slice(2,4),promotion:i[4]?i[4]:void 0});a&&(n=a.san)}catch(t){console.warn("Could not convert UCI to SAN:",t)}let s=r.tree.getRoot();for(;s.mainChild;)s=s.mainChild;try{r.tree.getLastMainlineNode().addChild(a,i,n,!0)}catch(t){return console.error("Error adding move to tree:",t),r}let o=[...r.availableMoves,{}];return{...r,availableMoves:o}};i(38588),i(88593)},89099:(t,r,i)=>{t.exports=i(16296)},89203:(t,r,i)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let a=i(14232);function n(t,r){let i=(0,a.useRef)(null),n=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let t=i.current;t&&(i.current=null,t());let r=n.current;r&&(n.current=null,r())}else t&&(i.current=s(t,a)),r&&(n.current=s(r,a))},[t,r])}function s(t,r){if("function"!=typeof t)return t.current=r,()=>{t.current=null};{let i=t(r);return"function"==typeof i?i:()=>t(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90280:(t,r,i)=>{"use strict";i.d(r,{OQ:()=>d,bt:()=>l});var a=i(21623),n=i(10223),s=i(1856),o=i(81461);let l={current:void 0};class u{constructor(t,r={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(t,r=!0)=>{let i=a.k.now();this.updatedAt!==i&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(t),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),r&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(t),this.owner=r.owner}setCurrent(t){this.current=t,this.updatedAt=a.k.now(),null===this.canTrackVelocity&&void 0!==t&&(this.canTrackVelocity=!isNaN(parseFloat(this.current)))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,r){this.events[t]||(this.events[t]=new n.v);let i=this.events[t].add(r);return"change"===t?()=>{i(),o.Gt.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(let t in this.events)this.events[t].clear()}attach(t,r){this.passiveEffect=t,this.stopPassiveEffect=r}set(t,r=!0){r&&this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t,r)}setWithVelocity(t,r,i){this.set(r),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-i}jump(t,r=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,r&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return l.current&&l.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){let t=a.k.now();if(!this.canTrackVelocity||void 0===this.prevFrameValue||t-this.updatedAt>30)return 0;let r=Math.min(this.updatedAt-this.prevUpdatedAt,30);return(0,s.f)(parseFloat(this.current)-parseFloat(this.prevFrameValue),r)}start(t){return this.stop(),new Promise(r=>{this.hasAnimated=!0,this.animation=t(r),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function d(t,r){return new u(t,r)}},90295:(t,r,i)=>{"use strict";
2809Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return f}});let a=i(64252)._(i(14232)),n=i(86581),s=[],o=[],l=!1;function u(t){let r=t(),i={loading:!0,loaded:null,error:null};return i.promise=r.then(t=>(i.loading=!1,i.loaded=t,t)).catch(t=>{throw i.loading=!1,i.error=t,t}),i}class d{promise(){return this._res.promise}retry(){this._clearTimeouts(),this._res=this._loadFn(this._opts.loader),this._state={pastDelay:!1,timedOut:!1};let{_res:t,_opts:r}=this;t.loading&&("number"==typeof r.delay&&(0===r.delay?this._state.pastDelay=!0:this._delay=setTimeout(()=>{this._update({pastDelay:!0})},r.delay)),"number"==typeof r.timeout&&(this._timeout=setTimeout(()=>{this._update({timedOut:!0})},r.timeout))),this._res.promise.then(()=>{this._update({}),this._clearTimeouts()}).catch(t=>{this._update({}),this._clearTimeouts()}),this._update({})}_update(t){this._state={...this._state,error:this._res.error,loaded:this._res.loaded,loading:this._res.loading,...t},this._callbacks.forEach(t=>t())}_clearTimeouts(){clearTimeout(this._delay),clearTimeout(this._timeout)}getCurrentValue(){return this._state}subscribe(t){return this._callbacks.add(t),()=>{this._callbacks.delete(t)}}constructor(t,r){this._loadFn=t,this._opts=r,this._callbacks=new Set,this._delay=null,this._timeout=null,this.retry()}}function c(t){return function(t,r){let i=Object.assign({loader:null,loading:null,delay:200,timeout:null,webpack:null,modules:null},r),s=null;function u(){if(!s){let r=new d(t,i);s={getCurrentValue:r.getCurrentValue.bind(r),subscribe:r.subscribe.bind(r),retry:r.retry.bind(r),promise:r.promise.bind(r)}}return s.promise()}if(!l){let t=i.webpack&&1?i.webpack():i.modules;t&&o.push(r=>{for(let i of t)if(r.includes(i))return u()})}function c(t,r){u();let o=a.default.useContext(n.LoadableContext);o&&Array.isArray(i.modules)&&i.modules.forEach(t=>{o(t)});let l=a.default.useSyncExternalStore(s.subscribe,s.getCurrentValue,s.getCurrentValue);return a.default.useImperativeHandle(r,()=>({retry:s.retry}),[]),a.default.useMemo(()=>{var r;return l.loading||l.error?a.default.createElement(i.loading,{isLoading:l.loading,pastDelay:l.pastDelay,timedOut:l.timedOut,error:l.error,retry:s.retry}):l.loaded?a.default.createElement((r=l.loaded)&&r.default?r.default:r,t):null},[t,l])}return c.preload=()=>u(),c.displayName="LoadableComponent",a.default.forwardRef(c)}(u,t)}function h(t,r){let i=[];for(;t.length;){let a=t.pop();i.push(a(r))}return Promise.all(i).then(()=>{if(t.length)return h(t,r)})}c.preloadAll=()=>new Promise((t,r)=>{h(s).then(t,r)}),c.preloadReady=t=>(void 0===t&&(t=[]),new Promise(r=>{let i=()=>(l=!0,r());h(o,t).then(i,i)})),window.__NEXT_PRELOADREADY=c.preloadReady;let f=c},90360:(t,r,i)=>{"use strict";i.d(r,{k:()=>a});let a=(t,r,i)=>t+(r-t)*i},90620:(t,r,i)=>{"use strict";i.d(r,{l:()=>a});let a=t=>t},91200:(t,r,i)=>{"use strict";i.d(r,{M:()=>n});var a=i(14232);function n(t){let r=(0,a.useRef)(null);return null===r.current&&(r.current=t()),r.current}},91749:(t,r,i)=>{"use strict";i.d(r,{V:()=>u,i:()=>d});var a=i(37876),n=i(18847),s=i.n(n),o=i(14232);let l=s()(()=>i.e(433).then(i.bind(i,1433)).then(t=>t.PlaySetupModal),{loadableGenerated:{webpack:()=>[1433]},ssr:!1}),u=o.createContext({setPlaySetupModalProps:()=>{throw Error("poorly provided ModalContext")}}),d=t=>{let{children:r}=t,[i,n]=(0,o.useState)(void 0);return(0,a.jsxs)(u.Provider,{value:{playSetupModalProps:i,setPlaySetupModalProps:n},children:[i&&(0,a.jsx)(l,{...i}),r]})}},91750:(t,r,i)=>{"use strict";i.d(r,{X:()=>n,f:()=>a});let a=t=>1e3*t,n=t=>t/1e3},93563:(t,r,i)=>{"use strict";i.d(r,{P6:()=>o,vG:()=>h,tu:()=>d,KZ:()=>b,rU:()=>l,PT:()=>S,DW:()=>f,WH:()=>c,Mc:()=>C,yL:()=>y,TU:()=>function t(r,i){if(r)return"function"==typeof r&&m()?b(r,i):f(r)?v(r):Array.isArray(r)?r.map(r=>t(r,i)||_.easeOut):_[r]},YE:()=>u,c$:()=>O,Wp:()=>M,nL:()=>m});var a=i(7862);let n=(0,a.p)(()=>void 0!==window.ScrollTimeline);class s{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>"finished"in t?t.finished:t))}getAll(t){return this.animations[0][t]}setAll(t,r){for(let i=0;i<this.animations.length;i++)this.animations[i][t]=r}attachTimeline(t,r){let i=this.animations.map(i=>n()&&i.attachTimeline?i.attachTimeline(t):"function"==typeof r?r(i):void 0);return()=>
2809{i.forEach((t,r)=>{t&&t(),this.animations[r].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get startTime(){return this.getAll("startTime")}get duration(){let t=0;for(let r=0;r<this.animations.length;r++)t=Math.max(t,this.animations[r].duration);return t}runAll(t){this.animations.forEach(r=>r[t]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class o extends s{then(t,r){return Promise.all(this.animations).then(t).catch(r)}}function l(t,r){return t?t[r]||t.default||t:void 0}let u=2e4;function d(t){let r=0,i=t.next(r);for(;!i.done&&r<u;)r+=50,i=t.next(r);return r>=u?1/0:r}function c(t){return"function"==typeof t}function h(t,r){t.timeline=r,t.onfinish=null}let f=t=>Array.isArray(t)&&"number"==typeof t[0],p={linearEasing:void 0},m=function(t,r){let i=(0,a.p)(t);return()=>{var t;return null!=(t=p[r])?t:i()}}(()=>{try{document.createElement("div").animate({opacity:0}
2809,{easing:"linear(0, 1)"})}catch(t){return!1}return!0},"linearEasing");var g=i(2589);let b=(t,r,i=10)=>{let a="",n=Math.max(Math.round(r/i),2);for(let r=0;r<n;r++)a+=t((0,g.q)(0,n-1,r))+", ";return`linear(${a.substring(0,a.length-2)})`};function y(t){return!!("function"==typeof t&&m()||!t||"string"==typeof t&&(t in _||m())||f(t)||Array.isArray(t)&&t.every(y))}let v=([t,r,i,a])=>`cubic-bezier(${t}, ${r}, ${i}, ${a})`,_={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:v([0,.65,.55,1]),circOut:v([.55,0,1,.45]),backIn:v([.31,.01,.66,-.59]),backOut:v([.33,1.53,.69,.99])},w={x:!1,y:!1};function x(t,r){let i=function(t,r,i){if(t instanceof Element)return[t];if("string"==typeof t){let r=document.querySelectorAll(t);return r?Array.from(r):[]}return Array.from(t)}(t),a=new AbortController;return[i,{passive:!0,...r,signal:a.signal},()=>a.abort()]}function $(t){return r=>{"touch"===r.pointerType||w.x||w.y||t(r)}}function S(t,r,i={}){let[a,n,s]=x(t,i),o=$(t=>{let{target:i}=t,a=r(t);if("function"!=typeof a||!i)return;let s=$(t=>{a(t),i.removeEventListener("pointerleave",s)});i.addEventListener("pointerleave",s,n)});return a.forEach(t=>{t.addEventListener("pointerenter",o,n)}),s}let k=(t,r)=>!!r&&(t===r||k(t,r.parentElement)),C=t=>"mouse"===t.pointerType?"number"!=typeof t.button||t.button<=0:!1!==t.isPrimary,E=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]),T=new WeakSet;function I(t){return r=>{"Enter"===r.key&&t(r)}}function A(t,r){t.dispatchEvent(new PointerEvent("pointer"+r,{isPrimary:!0,bubbles:!0}))}function N(t){return C(t)&&!(w.x||w.y)}function O(t,r,i={}){let[a,n,s]=x(t,i),o=t=>{let a=t.currentTarget;if(!N(t)||T.has(a))return;T.add(a);let s=r(t),o=(t,r)=>{window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",u),N(t)&&T.has(a)&&(T.delete(a),"function"==typeof s&&s(t,{success:r}))},l=t=>{o(t,i.useGlobalTarget||k(a,t.target))},u=t=>{o(t,!1)};window.addEventListener("pointerup",l,n),window.addEventListener("pointercancel",u,n)};return a.forEach(t=>{E.has(t.tagName)||-1!==t.tabIndex||null!==t.getAttribute("tabindex")||(t.tabIndex=0),(i.useGlobalTarget?window:t).addEventListener("pointerdown",o,n),t.addEventListener("focus",t=>((t,r)=>{let i=t.currentTarget;if(!i)return;let a=I(()=>{if(T.has(i))return;A(i,"down");let t=I(()=>{A(i,"up")});i.addEventListener("keyup",t,r),i.addEventListener("blur",()=>A(i,"cancel"),r)});i.addEventListener("keydown",a,r),i.addEventListener("blur",()=>i.removeEventListener("keydown",a),r)})(t,n),n)}),s}function M(t){if("x"===t||"y"===t)if(w[t])return null;else return w[t]=!0,()=>{w[t]=!1};return w.x||w.y?null:(w.x=w.y=!0,()=>{w.x=w.y=!1})}i(91750),i(90620)},94139:(t,r,i)=>{"use strict";i.d(r,{Am:()=>d,Ay:()=>l,eA:()=>o,lh:()=>u});var a=i(37876),n=i(76084),s=i(14232);let o=670,l=1024,u=s.createContext({height:0,width:0,isMobile:!1}),d=t=>{let{children:r}=t,{width:i,height:o}=(0,n.lW)(),d=(0,s.useMemo)(()=>i>0&&i<=l,[i]);return(0,a.jsx)(u.Provider,{value:{width:i,height:o,isMobile:d},children:r})}},94349:(t,r,i)=>{"use strict";i.d(r,{q:()=>a});let a=(t,r,i)=>i>r?r:i<t?t:i},94410:t=>{"use strict";var r=function(t){var r,a,n;return!!(r=t)&&"object"==typeof r&&(a=t,"[object RegExp]"!==(n=Object.prototype.toString.call(a))&&"[object Date]"!==n&&a.$$typeof!==i)},i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function a(t,r){return!1!==r.clone&&r.isMergeableObject(t)?l(Array.isArray(t)?[]:{},t,r):t}function n(t,r,i){return t.concat(r).map(function(t){return a(t,i)})}function s(t){return Object.keys(t).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(r){return Object.propertyIsEnumerable.call(t,r)}):[])}function o(t,r){try{return r in t}catch(t){return!1}}function l(t,i,u){(u=u||{}).arrayMerge=u.arrayMerge||n,u.isMergeableObject=u.isMergeableObject||r,u.cloneUnlessOtherwiseSpecified=a;var d,c,h=Array.isArray(i);return h!==Array.isArray(t)?a(i,u):h?u.arrayMerge(t,i,u):(c={},(d=u).isMergeableObject(t)&&s(t).forEach(function(r){c[r]=a(t[r],d)}),s(i).forEach(function(r){o(t,r)&&!(Object.hasOwnProperty.call(t,r)&&Object.propertyIsEnumerable.call(t,r))||(o(t,r)&&d.isMergeableObject(i[r])?c[r]=(function(t,r){if(!r.customMerge)return l;var i=r.customMerge(t);return"function"==typeof i?i:l})(r,d)(t[r],i[r],d):c[r]=a(i[r],d))}),c)}l.all=function(t,r){if(!Array.isArray(t))throw Error("first argument should be an array");return t.reduce(function(t,i){return l(t,i,r)},{})},t.exports=l},94598:(t,r,i)=>{"use strict";i.d(r,{gW:()=>a.g,cy:()=>n.c,ul:()=>s.u,Vs:()=>o.V,eA:()=>b.eA,Mb:()=>l.M,Ay:()=>b.Ay,MR:()=>p,b8:()=>g,lh:()=>b.lh,Mw:()=>u.M});var a=i(85888),n=i(55892),s=i(9504),o=i(91749);i(56154),i(11391);var l=i(12152),u=i(87003);i(97038);var d=i(14232),c=i(32711),h=i(62207);let f=new h.lr(new c.d$().fen()),p=d.createContext({gameTree:f,currentNode:f.getRoot(),setCurrentNode:()=>{throw Error("TreeControllerContext not provided")},orientation:"white",setOrientation:()=>{throw Error("TreeControllerContext not provided")},goToNode:()=>{throw Error("TreeControllerContext not provided")},goToNextNode:()=>{throw Error("TreeControllerContext not provided")},goToPreviousNode:()=>{throw Error("TreeControllerContext not provided")},goToRootNode:()=>{throw Error("TreeControllerContext not provided")},plyCount:0}),m={gameTree:new h.lr(new c.d$().fen()),currentNode:new h.lr(new c.d$().fen()).getRoot(),setCurrentNode:()=>{},goToNode:()=>{},goToNextNode:()=>{},goToPreviousNode:()=>{},goToRootNode:()=>{},currentIndex:0,setCurrentIndex:()=>{},plyCount:0,orientation:"white",setOrientation:()=>{},game:void 0,games:[],loading:!1,gameIds:[],stats:{lifetime:void 0,session:{gamesWon:0,gamesPlayed:0},lastRating:void 0,rating:0},getNewGame:async()=>{},submitGuess:async()=>{},commentController:["",()=>{}]},g=(0,d.createContext)(m);var b=i(94139)},95062:(t,r,i)=>{t.exports=i(79706)()},97038:(t,r,i)=>{"use strict";i.d(r,{S:()=>l});var a=i(32711),n=i(14232),s=i(62207);let o={gameTree:new s.lr(new a.d$().fen()),currentNode:new s.lr(new a.d$().fen()).getRoot(),setCurrentNode:()=>{},goToNode:()=>{},goToNextNode:()=>{},goToPreviousNode:()=>{},goToRootNode:()=>{},plyCount:0,orientation:"white",setOrientation:()=>{},moves:void 0},l=(0,n.createContext)(o)},97685:(t,r,i)=>{"use strict";i.d(r,{l$:()=>Z,Ay:()=>J});var a,n=i(14232);let s={data:""},o=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,l=/\/\*[^]*?\*\/|  +/g,u=/\n+/g,d=(t,r)=>{let i="",a="",n="";for(let s in t){let o=t[s];"@"==s[0]?"i"==s[1]?i=s+" "+o+";":a+="f"==s[1]?d(o,s):s+"{"+d(o,"k"==s[1]?"":r)+"}":"object"==typeof o?a+=d(o,r?r.replace(/([^,])+/g,t=>s.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,r=>/&/.test(r)?r.replace(/&/g,t):t?t+" "+r:r)):s):null!=o&&(s=/^--/.test(s)?s:s.replace(/[A-Z]/g,"-$&").toLowerCase(),n+=d.p?d.p(s,o):s+":"+o+";")}return i+(r&&n?r+"{"+n+"}":n)+a},c={},h=t=>{if("object"==typeof t){let r="";for(let i in t)r+=i+h(t[i]);return r}return t};function f(t){let r,i,a,n=this||{},f=t.call?t(n.p):t;return((t,r,i,a,n)=>{var s,f,p,m;let g=h(t),b=c[g]||(c[g]=(t=>{let r=0,i=11;for(;r<t.length;)i=101*i+t.charCodeAt(r++)>>>0;return"go"+i})(g));if(!c[b]){let r=g!==t?t:(t=>{let r,i,a=[{}];for(;r=o.exec(t.replace(l,""));)r[4]?a.shift():r[3]?(i=r[3].replace(u," ").trim(),a.unshift(a[0][i]=a[0][i]||{})):a[0][r[1]]=r[2].replace(u," ").trim();return a[0]})(t);c[b]=d(n?{["@keyframes "+b]:r}:r,i?"":"."+b)}let y=i&&c.g?c.g:null;return i&&(c.g=c[b]),s=c[b],f=r,p=a,(m=y)?f.data=f.data.replace(m,s):-1===f.data.indexOf(s)&&(f.data=p?s+f.data:f.data+s),b}
2809)(f.unshift?f.raw?(r=[].slice.call(arguments,1),i=n.p,f.reduce((t,a,n)=>{let s=r[n];if(s&&s.call){let t=s(i),r=t&&t.props&&t.props.className||/^go/.test(t)&&t;s=r?"."+r:t&&"object"==typeof t?t.props?"":d(t,""):!1===t?"":t}return t+a+(null==s?"":s)},"")):f.reduce((t,r)=>Object.assign(t,r&&r.call?r(n.p):r),{}):f,(a=n.target,"object"==typeof window?((a?a.querySelector("#_goober"):window._goober)||Object.assign((a||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:a||s),n.g,n.o,n.k)}f.bind({g:1});let p,m,g,b=f.bind({k:1});function y(t,r){let i=this||{};return function(){let a=arguments;function n(s,o){let l=Object.assign({},s),u=l.className||n.className;i.p=Object.assign({theme:m&&m()},l),i.o=/ *go\d+/.test(u),l.className=f.apply(i,a)+(u?" "+u:""),r&&(l.ref=o);let d=t;return t[0]&&(d=l.as||t,delete l.as),g&&d[0]&&g(l),p(d,l)}return r?r(n):n}}var v=(t,r)=>"function"==typeof t?t(r):t,_=(()=>{let t=0;return()=>(++t).toString()})(),w=(()=>{let t;return()=>{if(void 0===t&&"u">typeof window){let r=matchMedia("(prefers-reduced-motion: reduce)");t=!r||r.matches}return t}})(),x=(t,r)=>{switch(r.type){case 0:return{...t,toasts:[r.toast,...t.toasts].slice(0,20)};case 1:return{...t,toasts:t.toasts.map(t=>t.id===r.toast.id?{...t,...r.toast}:t)};case 2:let{toast:i}=r;return x(t,{type:+!!t.toasts.find(t=>t.id===i.id),toast:i});case 3:let{toastId:a}=r;return{...t,toasts:t.toasts.map(t=>t.id===a||void 0===a?{...t,dismissed:!0,visible:!1}:t)};case 4:return void 0===r.toastId?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(t=>t.id!==r.toastId)};case 5:return{...t,pausedAt:r.time};case 6:let n=r.time-(t.pausedAt||0);return{...t,pausedAt:void 0,toasts:t.toasts.map(t=>({...t,pauseDuration:t.pauseDuration+n}))}}},$=[],S={toasts:[],pausedAt:void 0},k=t=>{S=x(S,t),$.forEach(t=>{t(S)})},C={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},E=t=>(r,i)=>{let a=((t,r="blank",i)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:r,ariaProps:{role:"status","aria-live":"polite"},message:t,pauseDuration:0,...i,id:(null==i?void 0:i.id)||_()}))(r,t,i);return k({type:2,toast:a}),a.id},T=(t,r)=>E("blank")(t,r);T.error=E("error"),T.success=E("success"),T.loading=E("loading"),T.custom=E("custom"),T.dismiss=t=>{k({type:3,toastId:t})},T.remove=t=>k({type:4,toastId:t}),T.promise=(t,r,i)=>{let a=T.loading(r.loading,{...i,...null==i?void 0:i.loading});return"function"==typeof t&&(t=t()),t.then(t=>{let n=r.success?v(r.success,t):void 0;return n?T.success(n,{id:a,...i,...null==i?void 0:i.success}):T.dismiss(a),t}).catch(t=>{let n=r.error?v(r.error,t):void 0;n?T.error(n,{id:a,...i,...null==i?void 0:i.error}):T.dismiss(a)}),t};var I=(t,r)=>{k({type:1,toast:{id:t,height:r}})},A=()=>{k({type:5,time:Date.now()})},N=new Map,O=1e3,M=b`
2810from {
2811  transform: scale(0) rotate(45deg);
2812	opacity: 0;
2813}
2814to {
2815 transform: scale(1) rotate(45deg);
2816  opacity: 1;
2817}`,P=b`
2818from {
2819  transform: scale(0);
2820  opacity: 0;
2821}
2822to {
2823  transform: scale(1);
2824  opacity: 1;
2825}`,R=b`
2826from {
2827  transform: scale(0) rotate(90deg);
2828	opacity: 0;
2829}
2830to {
2831  transform: scale(1) rotate(90deg);
2832	opacity: 1;
2833}`,j=y("div")`
2834  width: 20px;
2835  opacity: 0;
2836  height: 20px;
2837  border-radius: 10px;
2838  background: ${t=>t.primary||"#ff4b4b"};
2839  position: relative;
2840  transform: rotate(45deg);
2841
2842  animation: ${M} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
2843    forwards;
2844  animation-delay: 100ms;
2845
2846  &:after,
2847  &:before {
2848    content: '';
2849    animation: ${P} 0.15s ease-out forwards;
2850    animation-delay: 150ms;
2851    position: absolute;
2852    border-radius: 3px;
2853    opacity: 0;
2854    background: ${t=>t.secondary||"#fff"};
2855    bottom: 9px;
2856    left: 4px;
2857    height: 2px;
2858    width: 12px;
2859  }
2860
2861  &:before {
2862    animation: ${R} 0.15s ease-out forwards;
2863    animation-delay: 180ms;
2864    transform: rotate(90deg);
2865  }
2866`,z=b`
2867  from {
2868    transform: rotate(0deg);
2869  }
2870  to {
2871    transform: rotate(360deg);
2872  }
2873`,D=y("div")`
2874  width: 12px;
2875  height: 12px;
2876  box-sizing: border-box;
2877  border: 2px solid;
2878  border-radius: 100%;
2879  border-color: ${t=>t.secondary||"#e0e0e0"};
2880  border-right-color: ${t=>t.primary||"#616161"};
2881  animation: ${z} 1s linear infinite;
2882`,B=b`
2883from {
2884  transform: scale(0) rotate(45deg);
2885	opacity: 0;
2886}
2887to {
2888  transform: scale(1) rotate(45deg);
2889	opacity: 1;
2890}`,L=b`
28910% {
2892	height: 0;
2893	width: 0;
2894	opacity: 0;
2895}
289640% {
2897  height: 0;
2898	width: 6px;
2899	opacity: 1;
2900}
2901100% {
2902  opacity: 1;
2903  height: 10px;
2904}`,U=y("div")`
2905  width: 20px;
2906  opacity: 0;
2907  height: 20px;
2908  border-radius: 10px;
2909  background: ${t=>t.primary||"#61d345"};
2910  position: relative;
2911  transform: rotate(45deg);
2912
2913  animation: ${B} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
2914    forwards;
2915  animation-delay: 100ms;
2916  &:after {
2917    content: '';
2918    box-sizing: border-box;
2919    animation: ${L} 0.2s ease-out forwards;
2920    opacity: 0;
2921    animation-delay: 200ms;
2922    position: absolute;
2923    border-right: 2px solid;
2924    border-bottom: 2px solid;
2925    border-color: ${t=>t.secondary||"#fff"};
2926    bottom: 6px;
2927    left: 6px;
2928    height: 10px;
2929    width: 6px;
2930  }
2931`,F=y("div")`
2932  position: absolute;
2933`,q=y("div")`
2934  position: relative;
2935  display: flex;
2936  justify-content: center;
2937  align-items: center;
2938  min-width: 20px;
2939  min-height: 20px;
2940`,V=b`
2941from {
2942  transform: scale(0.6);
2943  opacity: 0.4;
2944}
2945to {
2946  transform: scale(1);
2947  opacity: 1;
2948}`,W=y("div")`
2949  position: relative;
2950  transform: scale(0.6);
2951  opacity: 0.4;
2952  min-width: 20px;
2953  animation: ${V} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)
2954    forwards;
2955`,H=({toast:t})=>{let{icon:r,type:i,iconTheme:a}=t;return void 0!==r?"string"==typeof r?n.createElement(W,null,r):r:"blank"===i?null:n.createElement(q,null,n.createElement(D,{...a}),"loading"!==i&&n.createElement(F,null,"error"===i?n.createElement(j,{...a}):n.createElement(U,{...a})))},G=y("div")`
2956  display: flex;
2957  align-items: center;
2958  background: #fff;
2959  color: #363636;
2960  line-height: 1.3;
2961  will-change: transform;
2962  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);
2963  max-width: 350px;
2964  pointer-events: auto;
2965  padding: 8px 10px;
2966  border-radius: 8px;
2967`,K=y("div")`
2968  display: flex;
2969  justify-content: center;
2970  margin: 4px 10px;
2971  color: inherit;
2972  flex: 1 1 auto;
2973  white-space: pre-line;
2974`,Y=n.memo(({toast:t,position:r,style:i,children:a})=>{let s=t.height?((t,r)=>{let i=t.includes("top")?1:-1,[a,n]=w()?["0%{opacity:0;} 100%{opacity:1;}","0%{opacity:1;} 100%{opacity:0;}"]:[`
29750% {transform: translate3d(0,${-200*i}%,0) scale(.6); opacity:.5;}
2976100% {transform: translate3d(0,0,0) scale(1); opacity:1;}
2977`,`
29780% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}
2979100% {transform: translate3d(0,${-150*i}%,-1px) scale(.6); opacity:0;}
2980`];return{animation:r?`${b(a)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${b(n)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}})(t.position||r||"top-center",t.visible):{opacity:0},o=n.createElement(H,{toast:t}),l=n.createElement(K,{...t.ariaProps},v(t.message,t));return n.createElement(G,{className:t.className,style:{...s,...i,...t.style}},"function"==typeof a?a({icon:o,message:l}):n.createElement(n.Fragment,null,o,l))});a=n.createElement,d.p=void 0,p=a,m=void 0,g=void 0;var Q=({id:t,className:r,style:i,onHeightUpdate:a,children:s})=>{let o=n.useCallback(r=>{if(r){let i=()=>{a(t,r.getBoundingClientRect().height)};i(),new MutationObserver(i).observe(r,{subtree:!0,childList:!0,characterData:!0})}},[t,a]);return n.createElement("div",{ref:o,className:r,style:i},s)},X=f`
2981  z-index: 9999;
2982  > * {
2983    pointer-events: auto;
2984  }
2985`,Z=({reverseOrder:t,position:r="top-center",toastOptions:i,gutter:a,children:s,containerStyle:o,containerClassName:l})=>{let{toasts:u,handlers:d}=(t=>{let{toasts:r,pausedAt:i}=((t={})=>{let[r,i]=(0,n.useState)(S),a=(0,n.useRef)(S);(0,n.useEffect)(()=>(a.current!==S&&i(S),$.push(i),()=>{let t=$.indexOf(i);t>-1&&$.splice(t,1)}),[]);let s=r.toasts.map(r=>{var i,a,n;return{...t,...t[r.type],...r,removeDelay:r.removeDelay||(null==(i=t[r.type])?void 0:i.removeDelay)||(null==t?void 0:t.removeDelay),duration:r.duration||(null==(a=t[r.type])?void 0:a.duration)||(null==t?void 0:t.duration)||C[r.type],style:{...t.style,...null==(n=t[r.type])?void 0:n.style,...r.style}}});return{...r,toasts:s}})(t);(0,n.useEffect)(()=>{if(i)return;let t=Date.now(),a=r.map(r=>{if(r.duration===1/0)return;let i=(r.duration||0)+r.pauseDuration-(t-r.createdAt);if(i<0){r.visible&&T.dismiss(r.id);return}return setTimeout(()=>T.dismiss(r.id),i)});return()=>{a.forEach(t=>t&&clearTimeout(t))}},[r,i]);let a=(0,n.useCallback)(()=>{i&&k({type:6,time:Date.now()})},[i]),s=(0,n.useCallback)((t,i)=>{let{reverseOrder:a=!1,gutter:n=8,defaultPosition:s}=i||{},o=r.filter(r=>(r.position||s)===(t.position||s)&&r.height),l=o.findIndex(r=>
2985r.id===t.id),u=o.filter((t,r)=>r<l&&t.visible).length;return o.filter(t=>t.visible).slice(...a?[u+1]:[0,u]).reduce((t,r)=>t+(r.height||0)+n,0)},[r]);return(0,n.useEffect)(()=>{r.forEach(t=>{if(t.dismissed)((t,r=O)=>{if(N.has(t))return;let i=setTimeout(()=>{N.delete(t),k({type:4,toastId:t})},r);N.set(t,i)})(t.id,t.removeDelay);else{let r=N.get(t.id);r&&(clearTimeout(r),N.delete(t.id))}})},[r]),{toasts:r,handlers:{updateHeight:I,startPause:A,endPause:a,calculateOffset:s}}})(i);return n.createElement("div",{id:"_rht_toaster",style:{position:"fixed",zIndex:9999,top:16,left:16,right:16,bottom:16,pointerEvents:"none",...o},className:l,onMouseEnter:d.startPause,onMouseLeave:d.endPause},u.map(i=>{let o=i.position||r,l=((t,r)=>{let i=t.includes("top"),a=t.includes("center")?{justifyContent:"center"}:t.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:w()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${r*(i?1:-1)}px)`,...i?{top:0}:{bottom:0},...a}})(o,d.calculateOffset(i,{reverseOrder:t,gutter:a,defaultPosition:r}));return n.createElement(Q,{id:i.id,key:i.id,onHeightUpdate:d.updateHeight,className:i.visible?X:"",style:l},"custom"===i.type?v(i.message,i):s?s(i):n.createElement(Y,{toast:i,position:o}))}))},J=T},97947:function(t,r,i){"use strict";var a=this&&this.__assign||function(){return(a=Object.assign||function(t){for(var r,i=1,a=arguments.length;i<a;i++)for(var n in r=arguments[i])Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}).apply(this,arguments)},n=this&&this.__spreadArrays||function(){for(var t=0,r=0,i=arguments.length;r<i;r++)t+=arguments[r].length;for(var a=Array(t),n=0,r=0;r<i;r++)for(var s=arguments[r],o=0,l=s.length;o<l;o++,n++)a[n]=s[o];return a};Object.defineProperty(r,"__esModule",{value:!0}),r.Chess=void 0;var s=i(29610),o=i(73198),l=i(18722),u=i(6162);r.Chess=function(){function t(t){if(void 0===t&&(t=u.DEFAULT_POSITION),this._state=new o.State,this._history=[],this._header={},this._comments={},!this.load(t))throw Error("Error loading fen")}return Object.defineProperty(t.prototype,"state",{get:function(){return this._state.clone()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"states",{get:function(){return n(this._history.map(function(t){return t.state.clone()}),[this.state])},enumerable:!1,configurable:!0}),t.prototype.load=function(t,r){void 0===r&&(r=!1);var i=s.loadFen(t);return!!i&&(this._state=i,this._history=[],r||(this._header={}),this._comments={},this.updateSetup(),!0)},t.prototype.clear=function(t){void 0===t&&(t=!1),this._state=new o.State,this._history=[],t||(this._header={}),this._comments={},this.updateSetup()},t.prototype.reset=function(){this.load(u.DEFAULT_POSITION)},t.prototype.get=function(t){return s.getPiece(this._state,t)},t.prototype.put=function(t,r){var i=s.putPiece(this._state,t,r);return!!i&&(this._state=i,this.updateSetup(),!0)},t.prototype.remove=function(t){var r=s.getPiece(this._state,t);if(!r)return null;var i=s.removePiece(this._state,t);return i?(this._state=i,r):null},t.prototype.moves=function(t){var r=this;void 0===t&&(t={});var i=t.square,a=t.verbose,n=s.generateMoves(this._state,{square:i});return void 0!==a&&a?n.map(function(t){return s.makePretty(r._state,t)}):n.map(function(t){return s.moveToSan(r._state,t)})},t.prototype.fen=function(){return this._state.fen},t.prototype.inCheck=function(){return s.inCheck(this._state)},t.prototype.inCheckmate=function(){return s.inCheckmate(this._state)},t.prototype.inStalemate=function(){return s.inStalemate(this._state)},t.prototype.insufficientMaterial=function(){return s.insufficientMaterial(this._state)},t.prototype.inThreefoldRepetition=function(){for(var t={},r=function(r){var i=r.fen.split(" ").slice(0,4).join(" ");return t[i]=i in t?t[i]+1:1,t[i]>=3},i=0,a=this._history;i<a.length;i++)if(r(a[i].state))return!0;return r(this._state)},t.prototype.inDraw=function(){return this._state.half_moves>=100||this.inStalemate()||this.insufficientMaterial()||this.inThreefoldRepetition()},t.prototype.gameOver=function(){return this.inCheckmate()||this.inDraw()},t.prototype.board=function(){return s.getBoard(this._state.board)},t.prototype.pgn=function(t){return void 0===t&&(t={}),s.getPgn(this._state,this._header,this._comments,this._history,t)},t.prototype.loadPgn=function(t,r){void 0===r&&(r={});var i=s.loadPgn(t,r);if(!i)return!1;var a=i[0],n=i[1],o=i[2],l=i[3];return this._state=a,this._header=n,this._comments=o,this._history=l,!0},t.prototype.header=function(){return this._header},t.prototype.setHeader=function(t){this._header=t},t.prototype.addHeader=function(t,r){this._header[t]=r},t.prototype.removeHeader=function(t){delete this._header[t]},t.prototype.clearHeader=function(){this._header={}},t.prototype.ascii=function(t){return void 0===t&&(t="\n"),s.ascii(this._state.board,t)},t.prototype.turn=function(){return this._state.turn},t.prototype.move=function(t,r){void 0===r&&(r={});var i=s.validateMove(this._state,t,r);if(!i)return null;var a=s.makePretty(this._state,i);return r.dry_run||this.makeMove(i),a},t.prototype.validateMoves=function(t,r){void 0===r&&(r={});for(var i=[],a=this._state,n=0;n<t.length;n++){var o=t[n],l=s.validateMove(a,o,r);if(!l)return null;i.push(s.makePretty(a,l)),a=s.makeMove(a,l)}return i},t.prototype.isPromotion=function(t,r){void 0===r&&(r={});var i=s.validateMove(this._state,t,a(a({},r),{checkPromotion:!1}));return!!i&&!!(i.flags&u.BITS.PROMOTION)},t.prototype.undo=function(){var t=this.undoMove();return t?s.makePretty(this._state,t):null},t.prototype.squareColor=function(t){if(l.isSquare(t)){var r=u.SQUARES[t];return(l.rank(r)+l.file(r))%2==0?"light":"dark"}return null},t.prototype.history=function(t){void 0===t&&(t={});var r,i=t.verbose;return this._history.length?void 0!==i&&i?this._history.map(function(t){var i=t.move;return r=t.state,s.makePretty(r,i)}):this._history.map(function(t){var i=t.move;return r=t.state,s.moveToSan(r,i)}):[]},t.prototype.getComment=function(t){return t=t||this.fen(),this._comments[t]},t.prototype.getComments=function(){var t=this;return this.pruneComments(),Object.keys(this._comments).map(function(r){return{fen:r,comment:t._comments[r]}})},t.prototype.setComment=function(t,r){r=r||this.fen(),this._comments[r]=t.replace("{","[").replace("}","]")},t.prototype.deleteComment=function(t){t=t||this.fen();var r=this._comments[t];return delete this._comments[t],r},t.prototype.deleteComments=function(){var t=this;return this.pruneComments(),Object.keys(this._comments).map(function(r){var i=t._comments[r];return delete t._comments[r],{fen:r,comment:i}})},t.prototype.validateFen=function(t){return l.validateFen(t)},t.prototype.clone=function(){var r=new t;return r._state=this._state,r._history=n(this._history),r._header=a({},this._header),r._comments=a({},this._comments),r},t.prototype.perft=function(t){for(var r=s.generateMoves(this._state,{legal:!1}),i=0,a=this._state.turn,n=0,o=r.length;n<o;n++)this.makeMove(r[n]),!this.kingAttacked(a)&&(t-1>0?i+=this.perft(t-1):i++),this.undoMove();return i},t.prototype.updateSetup=function(){var t=this._state.fen;this._history.length>0||(t!==u.DEFAULT_POSITION?(this._header.SetUp="1",this._header.FEN=t):(delete this._header.SetUp,delete this._header.FEN))},t.prototype.pruneComments=function(){var t=this,r={},i=function(i){i in t._comments&&(r[i]=t._comments[i])};
2985this._history.forEach(function(t){i((a=t.state).fen)});var a=this._state;i(a.fen),this._comments=r},t.prototype.strippedSan=function(t){return t.replace(/=/,"").replace(/[+#]?[?!]*$/,"")},t.prototype.attacked=function(t,r){return s.isAttacked(this._state,t,r)},t.prototype.kingAttacked=function(t){return this.attacked(l.swapColor(t),this._state.kings[t])},t.prototype.makeMove=function(t){this._history.push({move:t,state:this._state}),this._state=s.makeMove(this._state,t)},t.prototype.undoMove=function(){var t=this._history.pop();return null==t?null:(this._state=t.state,t.move)},t}()},98082:(t,r,i)=>{"use strict";i.d(r,{R:()=>o});var a=i(32711),n=i(36500),s=i(51024);class o{get fen(){return this._fen}get move(){return this._move}get san(){return this._san}get parent(){return this._parent}get children(){return this._children}get isMainline(){return this._mainline}get mainChild(){return this._mainChild}get analysis(){return this._analysis}get turn(){return this._turn}get check(){return this._check}get blunder(){return this._blunder}get inaccuracy(){return this._inaccuracy}get excellentMove(){return this._excellentMove}get bestMove(){return this._bestMove}get moveNumber(){return this._moveNumber}get time(){return this._time}get color(){return this._color}parseTurn(t){let r=t.split(" ");return"w"===r[1]||"b"===r[1]?r[1]:"w"}parseMoveNumber(t,r){let i=parseInt(t.split(" ")[5],10);return Number.isNaN(i)?1:i-("w"===r)}parseCheck(t){try{return new a.d$(t).inCheck()}catch(t){return!1}}performMoveClassification(t,r,i,a){if(!t||t.depth<12)return{blunder:!1,inaccuracy:!1,excellent:!1,bestMove:!1};let s=i===t.model_move,o=!1,l=!1,u=!1;if(t.winrate_loss_vec){let r=t.winrate_loss_vec[i];if(void 0!==r){let t=Math.abs(r);l=!(o=t>=n.ce.BLUNDER_THRESHOLD)&&t>=n.ce.INACCURACY_THRESHOLD}}else{var d;let r=null==(d=t.cp_relative_vec)?void 0:d[i];void 0!==r&&(o=r<-150)}if(r&&a&&r[a]&&t.winrate_vec){let s=r[a].policy;if(s&&i in s&&s[i]<=n.ce.MAIA_UNLIKELY_THRESHOLD){let r=this.calculateWeightedAverageWinrate(t.winrate_vec,s),a=t.winrate_vec[i];void 0!==a&&null!==r&&(u=a>=r+n.ce.EXCELLENT_WINRATE_ADVANTAGE_THRESHOLD)}}return{blunder:o,inaccuracy:l,excellent:u,bestMove:s}}calculateWeightedAverageWinrate(t,r){let i=0,a=0;for(let n in r){let s=r[n],o=t[n];void 0!==s&&void 0!==o&&(a+=s*o,i+=s)}return i>0?a/i:null}classifyMoveByWinrate(t,r,i,a){let n=this.performMoveClassification(i,this._analysis.maia,r,a);t._bestMove=n.bestMove,t._blunder=n.blunder,t._inaccuracy=n.inaccuracy,t._excellentMove=n.excellent}addChild(t,r,i){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4?arguments[4]:void 0,l=arguments.length>5?arguments[5]:void 0,u=new o(t,r,i,this,a,l||null);return this._children.push(u),a&&(this._mainChild=u),this._analysis.stockfish&&this._analysis.stockfish.depth>=12&&r&&(this.classifyMoveByWinrate(u,r,this._analysis.stockfish,n),u._color=(0,s.Tf)(this._analysis.stockfish,r)),u}addMaiaAnalysis(t,r){if(this._analysis.maia=t,this._analysis.stockfish&&this._analysis.stockfish.depth>=12)for(let t of this._children)t.move&&this.classifyMoveByWinrate(t,t.move,this._analysis.stockfish,r)}addStockfishAnalysis(t,r){let i=this._analysis.stockfish;if(i){if(i.depth>t.depth)return;if(i.depth===t.depth){var a,n,o,l;let r=i.diagnostics,s=t.diagnostics,u=null==(a=i.diagnostics)?void 0:a.strategy,d=null==(n=t.diagnostics)?void 0:n.strategy,c=null==(o=i.diagnostics)?void 0:o.positionId,h=null==(l=t.diagnostics)?void 0:l.positionId,f=!!d&&!!u&&d===u&&!!h&&!!c&&h===c&&!!s&&!!r&&s.totalTimeMs>=r.totalTimeMs;if(!(d&&u&&d!==u||h&&c&&h!==c||t.diagnostics&&!i.diagnostics||f))return}}if(this._analysis.stockfish=t,t.depth>=12)for(let i of this._children)i.move&&(this.classifyMoveByWinrate(i,i.move,t,r),i._color=(0,s.Tf)(t,i.move))}getMainLine(){return this._mainChild?[this,...this._mainChild.getMainLine()]:[this]}getVariations(){return this._children.filter(t=>!t.isMainline)}findVariation(t){return this._children.find(r=>r.move===t&&!r.isMainline)||null}getPath(){return this._parent?[...this._parent.getPath(),this]:[this]}removeVariation(t){let r=this._children.findIndex(r=>r.move===t&&!r.isMainline);return -1!==r&&(this._children.splice(r,1),!0)}removeAllChildren(){this._children=[],this._mainChild=null}setTime(t){this._time=t}static classifyMove(t,r,i){return new o("temp").performMoveClassification(t.analysis.stockfish||{}
2985,t.analysis.maia,r,i)}constructor(t,r=null,i=null,a=null,n=!0,s=null){this._fen=t,this._move=r,this._san=i,this._parent=a,this._children=[],this._mainChild=null,this._mainline=n,this._analysis={},this._blunder=!1,this._inaccuracy=!1,this._excellentMove=!1,this._bestMove=!1,this._turn=this.parseTurn(t),this._check=this.parseCheck(t),this._moveNumber=this.parseMoveNumber(t,this._turn),this._time=s,this._color=null}}},99207:(t,r,i)=>{"use strict";i.d(r,{b:()=>n});var a=i(14232);function n(t){let r=(0,a.useRef)(t);(0,a.useEffect)(()=>{r.current=t},[t]),(0,a.useEffect)(()=>{let t=t=>{let i;if("function"==typeof r.current&&(i=r.current(t)),t.defaultPrevented&&(t.returnValue=""),"string"==typeof i)return t.returnValue=i,i};return window.addEventListener("beforeunload",t),()=>{window.removeEventListener("beforeunload",t)}},[])}},99489:(t,r,i)=>{"use strict";i.d(r,{G:()=>d});var a=i(90620),n=i(37605),s=i(2589),o=i(94349),l=i(30287),u=i(2926);function d(t,r,{clamp:i=!0,ease:c,mixer:h}={}){let f=t.length;if((0,n.V)(f===r.length,"Both input and output ranges must be the same length"),1===f)return()=>r[0];if(2===f&&r[0]===r[1])return()=>r[1];let p=t[0]===t[1];t[0]>t[f-1]&&(t=[...t].reverse(),r=[...r].reverse());let m=function(t,r,i){let n=[],s=i||l.j,o=t.length-1;for(let i=0;i<o;i++){let o=s(t[i],t[i+1]);if(r){let t=Array.isArray(r)?r[i]||a.l:r;o=(0,u.F)(t,o)}n.push(o)}return n}(r,c,h),g=m.length,b=i=>{if(p&&i<t[0])return r[0];let a=0;if(g>1)for(;a<t.length-2&&!(i<t[a+1]);a++);let n=(0,s.q)(t[a],t[a+1],i);return m[a](n)};return i?r=>b((0,o.q)(t[0],t[f-1],r)):b}}},t=>{var r=r=>t(t.s=r);t.O(0,[593,792],()=>(r(92),r(16296))),_N_E=t.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.