diff --git a/docs/wvs/react/assets/index-C5aVwI6z.js b/docs/assets/index-CpA1DfjE.js similarity index 95% rename from docs/wvs/react/assets/index-C5aVwI6z.js rename to docs/assets/index-CpA1DfjE.js index 83be677..2271aef 100644 --- a/docs/wvs/react/assets/index-C5aVwI6z.js +++ b/docs/assets/index-CpA1DfjE.js @@ -6,6 +6,6 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r= `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ue=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?He(n):``}function Ge(e,t){switch(e.tag){case 26:case 27:case 5:return He(e.type);case 16:return He(`Lazy`);case 13:return e.child!==t&&t!==null?He(`Suspense Fallback`):He(`Suspense`);case 19:return He(`SuspenseList`);case 0:case 15:return We(e.type,!1);case 11:return We(e.type.render,!1);case 1:return We(e.type,!0);case 31:return He(`Activity`);case 30:return He(`ViewTransition`);default:return``}}function Ke(e){try{var t=``,n=null;do t+=Ge(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` `+e.stack}}var qe=Object.prototype.hasOwnProperty,Je=t.unstable_scheduleCallback,Ye=t.unstable_cancelCallback,Xe=t.unstable_shouldYield,Ze=t.unstable_requestPaint,Qe=t.unstable_now,$e=t.unstable_getCurrentPriorityLevel,et=t.unstable_ImmediatePriority,tt=t.unstable_UserBlockingPriority,nt=t.unstable_NormalPriority,rt=t.unstable_LowPriority,it=t.unstable_IdlePriority,at=t.log,ot=t.unstable_setDisableYieldValue,st=null,ct=null;function lt(e){if(typeof at==`function`&&ot(e),ct&&typeof ct.setStrictMode==`function`)try{ct.setStrictMode(st,e)}catch{}}var ut=Math.clz32?Math.clz32:pt,dt=Math.log,ft=Math.LN2;function pt(e){return e>>>=0,e===0?32:31-(dt(e)/ft|0)|0}var mt=256,ht=262144,gt=4194304;function _t(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=_t(n))):i=_t(o):i=_t(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=_t(n))):i=_t(o)):i=_t(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function yt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function bt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function wt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Tt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),zn=!1;if(Rn)try{var Bn={};Object.defineProperty(Bn,"passive",{get:function(){zn=!0}}),window.addEventListener(`test`,Bn,Bn),window.removeEventListener(`test`,Bn,Bn)}catch{zn=!1}var Vn=null,Hn=null,Un=null;function Wn(){if(Un)return Un;var e,t=Hn,n=t.length,r,i=`value`in Vn?Vn.value:Vn.textContent,a=i.length;for(e=0;e=Cr),Er=` `,Dr=!1;function Or(e,t){switch(e){case`keyup`:return xr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function kr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Ar=!1;function jr(e,t){switch(e){case`compositionend`:return kr(t);case`keypress`:return t.which===32?(Dr=!0,Er):null;case`textInput`:return e=t.data,e===Er&&Dr?null:e;default:return null}}function Mr(e,t){if(Ar)return e===`compositionend`||!Sr&&Or(e,t)?(e=Wn(),Un=Hn=Vn=null,Ar=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=ti(n)}}function ri(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ri(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ii(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ei(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=ei(e.document)}return t}function ai(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var oi=Rn&&`documentMode`in document&&11>=document.documentMode,si=null,ci=null,li=null,ui=!1;function di(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ui||si==null||si!==ei(r)||(r=si,`selectionStart`in r&&ai(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),li&&$r(li,r)||(li=r,r=Jf(ci,`onSelect`),0>=o,i-=o,sa=1<<32-ut(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),A&&la(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),A&&la(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return A&&la(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),A&&la(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===C&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case oe:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===C){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),vo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ge&&uo(l)===r.type){n(e,r.sibling),c=a(r,o.props),vo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===C?(c=Ji(o.props.children,e.mode,c,o.key),vo(c,o),c.return=e,e=c):(c=qi(o.type,o.key,o.props,null,e.mode,c),vo(c,o),c.return=e,e=c)}return s(e);case se:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Zi(o,e.mode,c),c.return=e,e=c}return s(e);case ge:return o=uo(o),_(e,r,o,c)}if(Ee(o))return h(e,r,o,c);if(Ce(o)){if(l=Ce(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,_o(o),c);if(o.$$typeof===de)return _(e,r,Ia(e,o),c);yo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Yi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{go=0;var i=_(e,t,n,r);return ho=null,i}catch(t){if(t===io||t===oo)throw t;var a=Ui(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var xo=bo(!0),So=bo(!1),Co=!1;function wo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function To(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Eo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Do(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Bi(e),zi(e,null,n),t}return Ii(e,r,t,n),Bi(e)}function Oo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}function ko(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ao=!1;function jo(){if(Ao){var e=Ya;if(e!==null)throw e}}function Mo(e,t,n,r){Ao=!1;var i=e.updateQueue;Co=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===Ja&&(Ao=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=S({},d,f);break a;case 2:Co=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),sd|=o,e.lanes=o,e.memoizedState=d}}function No(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Po(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=w.T,s={};s.types=o===null?null:o.types,w.T=s,_c(e,!1,t,n);try{var c=i(),l=w.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?gc(e,t,Qa(c,r),jd(e)):gc(e,t,r,jd(e))}catch(n){gc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{T.p=a,o!==null&&s.types!==null&&(o.types=s.types),w.T=o}}function oc(){}function sc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=cc(e).queue;ac(e,a,t,De,n===null?oc:function(){return lc(e),n(r)})}function cc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:De,baseState:De,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:De},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:vs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function lc(e){var t=cc(e);t.next===null&&(t=e.alternate.memoizedState),gc(e,t.next.queue,{},jd())}function uc(){return Fa(sh)}function dc(){return I().memoizedState}function fc(){return I().memoizedState}function pc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=Eo(n);var r=Do(t,e,n);r!==null&&(Pd(r,t,n),Oo(r,t,n)),t={cache:Va()},e.payload=t;return}t=t.return}}function mc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},vc(e)?yc(t,n):(n=Li(e,t,n,r),n!==null&&(Pd(n,e,r),bc(n,t,r)))}function hc(e,t,n){gc(e,t,n,jd())}function gc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(vc(e))yc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Qr(s,o))return Ii(e,t,i,0),G===null&&Fi(),!1}catch{}if(n=Li(e,t,i,r),n!==null)return Pd(n,e,r),bc(n,t,r),!0}return!1}function _c(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},vc(e)){if(t)throw Error(i(479))}else t=Li(e,n,r,2),t!==null&&Pd(t,e,2)}function vc(e){var t=e.alternate;return e===M||t!==null&&t===M}function yc(e,t){$o=Qo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function bc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}var xc={readContext:Fa,use:gs,useCallback:F,useContext:F,useEffect:F,useImperativeHandle:F,useLayoutEffect:F,useInsertionEffect:F,useMemo:F,useReducer:F,useRef:F,useState:F,useDebugValue:F,useDeferredValue:F,useTransition:F,useSyncExternalStore:F,useId:F,useHostTransitionStatus:F,useFormState:F,useActionState:F,useOptimistic:F,useMemoCache:F,useCacheRefresh:F,useEffectEvent:F},Sc={readContext:Fa,use:gs,useCallback:function(e,t){return ps().memoizedState=[e,t===void 0?null:t],e},useContext:Fa,useEffect:Ks,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ws(4194308,4,Qs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ws(4194308,4,e,t)},useInsertionEffect:function(e,t){Ws(4,2,e,t)},useMemo:function(e,t){var n=ps();t=t===void 0?null:t;var r=e();if(es){lt(!0);try{e()}finally{lt(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ps();if(n!==void 0){var i=n(t);if(es){lt(!0);try{n(t)}finally{lt(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=mc.bind(null,M,e),[r.memoizedState,e]},useRef:function(e){var t=ps();return e={current:e},t.memoizedState=e},useState:function(e){e=Os(e);var t=e.queue,n=hc.bind(null,M,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ec,useDeferredValue:function(e,t){return rc(ps(),e,t)},useTransition:function(){var e=Os(!1);return e=ac.bind(null,M,e.queue,!0,!1),ps().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=M,a=ps();if(A){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),G===null)throw Error(i(349));q&127||Cs(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Ks(Ts.bind(null,r,o,e),[e]),r.flags|=2048,Hs(9,{destroy:void 0},ws.bind(null,r,o,n,t),null),n},useId:function(){var e=ps(),t=G.identifierPrefix;if(A){var n=ca,r=sa;n=(r&~(1<<32-ut(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=ts++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Pt]=t,o[Ft]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&vl(t)}}return z(t),t.subtreeFlags&=-33554433,yl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&vl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Pe.current,xa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ma,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Pt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||va(t,!0)}else e=lp(e).createTextNode(r),e[Pt]=t,t.stateNode=e}return z(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=xa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Pt]=t}else Sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),e=!1}else n=Ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Ko(t),t):(Ko(t),null);if(t.flags&128)throw Error(i(558))}return z(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=xa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Pt]=t}else Sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;z(t),a=!1}else a=Ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Ko(t),t):(Ko(t),null)}return Ko(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),xl(t,t.updateQueue),z(t),null);case 4:return Le(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,z(t),null;case 10:return ka(t.type),z(t),null;case 19:if(Yo(t),r=t.memoizedState,r===null)return z(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)Sl(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Xo(e),o!==null){for(t.flags|=128,Sl(r,!1),e=o.updateQueue,t.updateQueue=e,xl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ki(n,e),n=n.sibling;return Jo(t,qo.current&1|2),A&&la(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Qe()>_d&&(t.flags|=128,a=!0,Sl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Xo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,xl(t,e),Sl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!A)return z(t),null}else 2*Qe()-r.renderingStartTime>_d&&n!==536870912&&(t.flags|=128,a=!0,Sl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Qe(),e.sibling=null,o=qo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||A?Jo(t,o):(n=o,E(Bo,t),E(qo,n),Vo===null&&(Vo=t)),A&&la(t,r.treeForkCount),e}return z(t),null;case 22:case 23:return Ko(t),zo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(z(t),t.subtreeFlags&6&&(t.flags|=8192)):z(t),n=t.updateQueue,n!==null&&xl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&je(eo),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ka(j),z(t),null;case 25:return null;case 30:return t.flags|=33554432,z(t),null}throw Error(i(156,t.tag))}function wl(e,t){switch(fa(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ka(j),Le(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ze(t),null;case 31:if(t.memoizedState!==null){if(Ko(t),t.alternate===null)throw Error(i(340));Sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ko(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Yo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Le(),null;case 10:return ka(t.type),null;case 22:case 23:return Ko(t),zo(),e!==null&&je(eo),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ka(j),null;case 25:return null;default:return null}}function Tl(e,t){switch(fa(t),t.tag){case 3:ka(j),Le();break;case 26:case 27:case 5:ze(t);break;case 4:Le();break;case 31:t.memoizedState!==null&&Ko(t);break;case 13:Ko(t);break;case 19:Yo(t);break;case 10:ka(t.type);break;case 22:case 23:Ko(t),zo(),e!==null&&je(eo);break;case 24:ka(j)}}function El(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Dl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Ol(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Po(t,n)}catch(t){Z(e,e.return,t)}}}function kl(e,t,n){n.props=kc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Al(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=Oi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function jl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Ml(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[Pt]=e,D(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=ni(s,h),v=ni(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,w.T=null,n=wd,wd=null;var o=bd,s=Sd;if(X=0,xd=bd=null,Sd=0,W&6)throw Error(i(331));var c=W;if(W|=4,Zu(o.current),Uu(o,o.current,s,n),W=c,Df(0,!1),ct&&typeof ct.onPostCommitFiberRoot==`function`)try{ct.onPostCommitFiberRoot(st,o)}catch{}return!0}finally{T.p=a,w.T=r,uf(e,t)}}function pf(e,t,n){t=$i(n,t),t=Fc(e.stateNode,t,2),e=Do(e,t,2),e!==null&&(wt(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(yd===null||!yd.has(r))){e=$i(n,e),n=Ic(2),r=Do(t,n,2),r!==null&&(Lc(n,r,t,e),wt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new td;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(ad=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>Qe()-hd?W&2?ld|=n:Vd(e,0):ld|=n,dd===q&&(dd=0)),Ef(e)}function gf(e,t){t===0&&(t=St()),e=Ri(e,t),e!==null&&(wt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Je(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ut(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=q,a=vt(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||yt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Qe(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}X!==0&&X!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=mn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),D(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+mn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+mn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+mn(n.imageSizes)+`"]`)):i+=`[href="`+mn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=S({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Ht]=!0,o.onload=o.onerror=function(){Jt(o)}),D(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+mn(r)+`"][href="`+mn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=S({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),D(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=qt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=S({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);D(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Pe.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=qt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=qt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=qt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+mn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ht]){r.loading=1;return}}else t=e.createElement(`link`),t[Ht]=!0,t.onload=t.onerror=Jt.bind(null,t),np(t,`link`,n),D(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+mn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+mn(n.href)+`"]`);if(r)return t.instance=r,D(r),r;var a=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),D(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,D(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),D(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,D(a),a):(r=n,(a=vm.get(o))&&(r=S({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),D(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,D(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),D(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y={width:1200,height:900,pad:{left:76,right:46,top:55,bottom:82}},b=[[0,-1],[0,1],[-1,0],[1,0],[-1,-1],[1,-1],[-1,1],[1,1]],ee=[22,34,48,64,82,104,130,160,196],te=(e,t,n,r)=>({cx:e,cy:t,width:n,height:r}),ne=(e,t)=>Math.abs(e.cx-t.cx)*2e.cx-e.width/2>=t.left&&e.cx+e.width/2<=t.right&&e.cy-e.height/2>=t.top&&e.cy+e.height/2<=t.bottom;function x(e){let t=[...e.countries,...e.models],n=Math.min(...t.map(e=>e.x)),r=Math.max(...t.map(e=>e.x)),i=Math.min(...t.map(e=>e.y)),a=Math.max(...t.map(e=>e.y)),o=(r-n)*.17,s=(a-i)*.17,c={x0:n-o,x1:r+o,y0:i-s,y1:a+s*1.22},l={left:y.pad.left,right:y.width-y.pad.right,top:y.pad.top,bottom:y.height-y.pad.bottom};return{x:e=>l.left+(e-c.x0)/(c.x1-c.x0)*(l.right-l.left),y:e=>l.bottom-(e-c.y0)/(c.y1-c.y0)*(l.bottom-l.top),bounds:l,limits:c}}function ie(e,t){let n=t===`zone`?15:t===`model`?13:11;return{width:e.length*n*.59+10,height:n+7}}function S(e,t){let{x:n,y:r,bounds:i}=t,a=[...e.countries.map(e=>te(n(e.x),r(e.y),10,10)),...e.models.map(e=>te(n(e.x),r(e.y),22,22))],o=[...e.models.filter(e=>e.label).map(e=>({id:`model:${e.name}`,point:e,text:e.label,kind:`model`})),...e.countries.filter(e=>e.label).map(e=>({id:`country:${e.name}`,point:e,text:e.name,kind:`country`})),...e.zone_hulls.map(e=>({id:`zone:${e.name}`,point:{x:e.label_anchor[0],y:e.label_anchor[1]},text:e.name,kind:`zone`}))],s={};for(let e of o){let t={x:n(e.point.x),y:r(e.point.y)},o=ie(e.text,e.kind),c=null;for(let e of ee){for(let[n,r]of b){let s=te(t.x+n*(e+o.width/3),t.y+r*e,o.width,o.height);if(re(s,i)&&!a.some(e=>ne(s,e))){c=s;break}}if(c)break}if(!c)throw Error(`no collision-free label location for ${e.id}`);s[e.id]={...c,anchor:t,kind:e.kind,text:e.text},a.push(c)}return s}function ae(e,t){let n=e.slice(0,-1).map(([e,n])=>({x:t.x(e),y:t.y(n)}));if(n.length<3)throw Error(`a closed hull needs three points`);let r=e=>n[(e+n.length)%n.length],i=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),a=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),o=e=>{let t=r(e-1),n=r(e),o=r(e+1),s=Math.min(.24,14/i(t,n),14/i(n,o));return{before:a(n,t,s),current:n,after:a(n,o,s)}},s=o(0),c=`M ${s.after.x} ${s.after.y}`;for(let e=1;e<=n.length;e+=1){let t=o(e%n.length);c+=` L ${t.before.x} ${t.before.y} Q ${t.current.x} ${t.current.y} ${t.after.x} ${t.after.y}`}return`${c} Z`}function oe(e){let t=x(e),n=S(e,t),r=Object.entries(n);for(let[e,n]of r)if(!re(n,t.bounds))throw Error(`label out of bounds: ${e}`);for(let e=0;e{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),C=o(((e,t)=>{t.exports=se()}))();function ce({active:e,geometry:t,data:n,id:r=`model-tooltip`}){if(!e)return null;let{provenance:i}=e,a=e.tooltipLeft??`${Math.min(86,t.x(e.x)/y.width*100)}%`,o=e.tooltipTop??`${Math.min(82,t.y(e.y)/y.height*100)}%`,s=i.items===null?`historical coordinate`:`${i.items} items x ${i.samples} samples`;return(0,C.jsxs)(`aside`,{id:r,className:`tooltip`,style:{left:a,top:o},role:`status`,children:[(0,C.jsx)(`strong`,{children:e.name}),(0,C.jsx)(`span`,{children:e.family}),(0,C.jsxs)(`span`,{children:[n.axis.x[0],` `,`->`,` `,n.axis.x[1],`: `,e.x.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[n.axis.y[0],` `,`->`,` `,n.axis.y[1],`: `,e.y.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[i.readout,`, `,s]}),(0,C.jsx)(`span`,{children:i.release_created?`release ${i.release_created}`:i.release_source})]})}function le({model:e,placement:t,geometry:n,setActive:r,clearActive:i,markerRef:a,logo:o}){let s=n.x(e.x),c=n.y(e.y),l=e.label?t[`model:${e.name}`]:null,u=l&&Math.hypot(l.cx-s,l.cy-c)>20;return(0,C.jsxs)(`g`,{ref:a,className:`model-mark`,"data-family":e.family,"data-model":e.name,"data-x":e.x,"data-y":e.y,tabIndex:`0`,role:`button`,"aria-label":`${e.name}, ${e.family}`,"aria-describedby":`model-tooltip`,onPointerEnter:()=>r(e),onPointerLeave:i,onFocus:()=>r(e),onBlur:i,children:[u&&(0,C.jsx)(`line`,{className:`leader`,x1:s,y1:c,x2:l.cx,y2:l.cy}),(0,C.jsx)(`circle`,{className:`model-ring`,cx:s,cy:c,r:`11`,stroke:e.color}),(0,C.jsx)(`image`,{href:`../${o}`,x:s-7,y:c-7,width:`14`,height:`14`,preserveAspectRatio:`xMidYMid meet`}),l&&(0,C.jsx)(`text`,{className:`model-label`,x:l.cx,y:l.cy+4,textAnchor:`middle`,children:e.label})]})}function ue({data:e,hidden:t,field:n,title:r}){let i=(0,_.useMemo)(()=>e.models.filter(e=>Number.isFinite(Date.parse(e.provenance.release_created??``))).toSorted((e,t)=>e.provenance.release_created.localeCompare(t.provenance.release_created)||e.name.localeCompare(t.name)),[e]),[a,o]=(0,_.useState)(null),s=1200,c=i.map(e=>Date.parse(e.provenance.release_created)),l=i.map(e=>e[n]),u=Math.min(...c),d=Math.max(...c),f=Math.min(...l),p=Math.max(...l),m=e=>74+(e-u)/(d-u)*1091,h=e=>42+(p-e)/(p-f||1)*230,g=(e,t)=>{let n=t.currentTarget.closest(`.scatter-shell`).getBoundingClientRect(),r=t.currentTarget.getBoundingClientRect();o({...e,tooltipLeft:`${Math.min(82,(r.left-n.left)/n.width*100)}%`,tooltipTop:`${Math.min(78,(r.top-n.top)/n.height*100)}%`})};return(0,C.jsxs)(`section`,{className:`release-panel`,"data-coordinate":n,"aria-labelledby":`release-${n}`,children:[(0,C.jsx)(`h2`,{id:`release-${n}`,children:r}),(0,C.jsx)(`p`,{children:`Dated releases only. Positions are descriptive, not a capability trend.`}),(0,C.jsxs)(`div`,{className:`scatter-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${s} 320`,role:`img`,"aria-label":r,"data-panel-model-count":i.length,children:[(0,C.jsx)(`rect`,{className:`canvas`,width:s,height:320}),(0,C.jsx)(`g`,{className:`scatter-grid`,children:Array.from({length:5},(e,t)=>(0,C.jsx)(`line`,{x1:74,x2:1165,y1:42+t*230/4,y2:42+t*230/4},t))}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:74,x2:1165,y1:272,y2:272}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:74,x2:74,y1:42,y2:272}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:74,y:302,children:new Date(u).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:1165,y:302,textAnchor:`end`,children:new Date(d).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:66,y:46,textAnchor:`end`,children:p.toFixed(2)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:66,y:272,textAnchor:`end`,children:f.toFixed(2)}),i.map(r=>(0,C.jsxs)(`g`,{className:`release-mark`,"data-family":r.family,"data-release-model":r.name,"data-release-date":r.provenance.release_created,display:t.has(r.family)?`none`:`inline`,tabIndex:`0`,role:`button`,"aria-label":`${r.name}, ${r.family}, ${r.provenance.release_created}`,"aria-describedby":`release-tooltip`,onPointerEnter:e=>g(r,e),onPointerLeave:()=>o(null),onFocus:e=>g(r,e),onBlur:()=>o(null),children:[(0,C.jsx)(`circle`,{className:`model-ring`,cx:m(Date.parse(r.provenance.release_created)),cy:h(r[n]),r:`10`,stroke:r.color}),(0,C.jsx)(`image`,{href:`../${e.logos[r.family]}`,x:m(Date.parse(r.provenance.release_created))-6.5,y:h(r[n])-6.5,width:`13`,height:`13`,preserveAspectRatio:`xMidYMid meet`})]},r.name))]}),(0,C.jsx)(ce,{active:a,geometry:null,data:e,id:`release-tooltip`})]})]})}function de({data:e,hidden:t}){return(0,C.jsxs)(`section`,{className:`release-panels`,"aria-label":`Release-date scatter panels`,children:[(0,C.jsx)(ue,{data:e,hidden:t,field:`y`,title:`Release date vs Secular-Rational`}),(0,C.jsx)(ue,{data:e,hidden:t,field:`x`,title:`Release date vs Self-expression`})]})}function fe({data:e}){let t=new URLSearchParams(location.search),[n,r]=(0,_.useState)(()=>new Set(t.get(`hide`)?.split(`,`).filter(Boolean))),[i,a]=(0,_.useState)(()=>e.models.find(e=>e.name===(t.get(`tooltip`)||t.get(`focus`)))??null),o=t.get(`focus`),s=(0,_.useRef)(null),c=(0,_.useMemo)(()=>Object.groupBy(e.models,e=>e.family),[e]),{labels:l,geometry:u}=(0,_.useMemo)(()=>oe(e),[e]);(0,_.useEffect)(()=>{o&&s.current?.focus()},[o]);let d=e=>{e.currentTarget.matches(`:focus`)||a(null)},f=e=>r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),p=u.x(e.median.x),m=u.y(e.median.y);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`section`,{className:`controls`,"aria-label":`Model-family visibility`,children:Object.entries(c).map(([t,r])=>{let i=!n.has(t);return(0,C.jsxs)(`button`,{className:`chip`,type:`button`,"aria-pressed":i,onClick:()=>f(t),children:[(0,C.jsx)(`img`,{src:`../${e.logos[t]}`,alt:``}),t]},t)})}),(0,C.jsxs)(`div`,{className:`chart-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${y.width} ${y.height}`,role:`img`,"aria-label":`Frontier LLMs on the World Values Survey`,"data-median-x":e.median.x,"data-median-y":e.median.y,children:[(0,C.jsx)(`defs`,{children:(0,C.jsx)(`marker`,{id:`arrow`,markerWidth:`8`,markerHeight:`8`,refX:`6`,refY:`3`,orient:`auto`,children:(0,C.jsx)(`path`,{d:`M0,0 L0,6 L6,3 z`,className:`arrow`})})}),(0,C.jsx)(`rect`,{className:`canvas`,width:y.width,height:y.height}),(0,C.jsxs)(`g`,{className:`grid`,children:[Array.from({length:8},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y1:u.bounds.top,x2:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y2:u.bounds.bottom},`v${t}`)),Array.from({length:6},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left,y1:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5,x2:u.bounds.right,y2:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5},`h${t}`))]}),(0,C.jsx)(`line`,{className:`median`,x1:u.bounds.left,y1:m,x2:u.bounds.right,y2:m}),(0,C.jsx)(`line`,{className:`median`,x1:p,y1:u.bounds.top,x2:p,y2:u.bounds.bottom}),e.zone_hulls.map(e=>(0,C.jsx)(`path`,{className:`zone`,d:ae(e.points,u),stroke:e.color},e.name)),e.countries.map(e=>(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`circle`,{className:`country`,"data-country":e.name,"data-x":e.x,"data-y":e.y,cx:u.x(e.x),cy:u.y(e.y),r:`3.5`,fill:e.color}),e.label&&(0,C.jsx)(`text`,{className:`country-label`,x:l[`country:${e.name}`].cx,y:l[`country:${e.name}`].cy+4,textAnchor:`middle`,children:e.name})]},e.name)),e.zone_hulls.map(e=>(0,C.jsx)(`text`,{className:`zone-label`,x:l[`zone:${e.name}`].cx,y:l[`zone:${e.name}`].cy+5,textAnchor:`middle`,fill:e.color,children:e.name},e.name)),Object.entries(c).map(([t,r])=>(0,C.jsx)(`g`,{"data-family":t,display:n.has(t)?`none`:`inline`,children:r.map(t=>(0,C.jsx)(le,{model:t,placement:l,geometry:u,setActive:a,clearActive:d,markerRef:t.name===o?s:null,logo:e.logos[t.family]},t.name))},t)),(0,C.jsxs)(`g`,{className:`poles`,children:[(0,C.jsx)(`line`,{x1:p,y1:`62`,x2:p,y2:u.bounds.top,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:p,y1:u.bounds.bottom,x2:p,y2:`838`,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:`64`,y1:m,x2:u.bounds.left,y2:m,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:u.bounds.right,y1:m,x2:`1184`,y2:m,markerEnd:`url(#arrow)`}),(0,C.jsx)(`text`,{x:p,y:`40`,textAnchor:`middle`,children:e.axis.y[1]}),(0,C.jsx)(`text`,{x:p,y:`870`,textAnchor:`middle`,children:e.axis.y[0]}),(0,C.jsx)(`text`,{x:`25`,y:m+7,children:e.axis.x[0]}),(0,C.jsx)(`text`,{x:`1136`,y:m+7,textAnchor:`end`,children:e.axis.x[1]})]}),(0,C.jsx)(`text`,{className:`map-title`,x:u.bounds.left+8,y:u.bounds.bottom-34,children:e.title.split(` +`).replace(Qf,``)}function ep(e,t){return t=$f(t),$f(e)===t}function $(e,t,n,r,a,o){switch(n){case`children`:if(typeof r==`string`)t===`body`||t===`textarea`&&r===``||xn(e,r);else if(typeof r==`number`||typeof r==`bigint`)t!==`body`&&xn(e,``+r);else return;break;case`className`:on(e,`class`,r);break;case`tabIndex`:on(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:on(e,n,r);break;case`style`:wn(e,r,o);return;case`data`:if(t!==`object`){on(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=On(r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,a.name,a,null),$(e,t,`formEncType`,a.formEncType,a,null),$(e,t,`formMethod`,a.formMethod,a,null),$(e,t,`formTarget`,a.formTarget,a,null)):($(e,t,`encType`,a.encType,a,null),$(e,t,`method`,a.method,a,null),$(e,t,`target`,a.target,a,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=On(r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=kn);return;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));o?.__html!==n&&(e.innerHTML=n)}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=On(r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`credentialless`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Q(`beforetoggle`,e),Q(`toggle`,e),an(e,`popover`,r);break;case`xlinkActuate`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:sn(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:sn(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:sn(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:sn(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:an(e,`is`,r);break;case`innerText`:case`textContent`:return;default:if(!(2s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=mn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),D(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+mn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+mn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+mn(n.imageSizes)+`"]`)):i+=`[href="`+mn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=S({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Ht]=!0,o.onload=o.onerror=function(){Jt(o)}),D(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+mn(r)+`"][href="`+mn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=S({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),D(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=qt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=S({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);D(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=qt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=S({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),D(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Pe.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=qt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=qt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=qt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+mn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ht]){r.loading=1;return}}else t=e.createElement(`link`),t[Ht]=!0,t.onload=t.onerror=Jt.bind(null,t),np(t,`link`,n),D(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+mn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+mn(n.href)+`"]`);if(r)return t.instance=r,D(r),r;var a=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),D(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,D(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),D(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,D(a),a):(r=n,(a=vm.get(o))&&(r=S({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),D(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,D(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),D(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=c(u(),1),v=g(),y={width:1200,height:900,pad:{left:76,right:46,top:55,bottom:82}},b=[[0,-1],[0,1],[-1,0],[1,0],[-1,-1],[1,-1],[-1,1],[1,1]],ee=[22,34,48,64,82,104,130,160,196],te=(e,t,n,r)=>({cx:e,cy:t,width:n,height:r}),ne=(e,t)=>Math.abs(e.cx-t.cx)*2e.cx-e.width/2>=t.left&&e.cx+e.width/2<=t.right&&e.cy-e.height/2>=t.top&&e.cy+e.height/2<=t.bottom;function x(e){let t=[...e.countries,...e.models],n=Math.min(...t.map(e=>e.x)),r=Math.max(...t.map(e=>e.x)),i=Math.min(...t.map(e=>e.y)),a=Math.max(...t.map(e=>e.y)),o=(r-n)*.17,s=(a-i)*.17,c={x0:n-o,x1:r+o,y0:i-s,y1:a+s*1.22},l={left:y.pad.left,right:y.width-y.pad.right,top:y.pad.top,bottom:y.height-y.pad.bottom};return{x:e=>l.left+(e-c.x0)/(c.x1-c.x0)*(l.right-l.left),y:e=>l.bottom-(e-c.y0)/(c.y1-c.y0)*(l.bottom-l.top),bounds:l,limits:c}}function ie(e,t){let n=t===`zone`?15:t===`model`?13:11;return{width:e.length*n*.59+10,height:n+7}}function S(e,t){let{x:n,y:r,bounds:i}=t,a=[...e.countries.map(e=>te(n(e.x),r(e.y),10,10)),...e.models.map(e=>te(n(e.x),r(e.y),22,22))],o=[...e.models.filter(e=>e.label).map(e=>({id:`model:${e.name}`,point:e,text:e.label,kind:`model`})),...e.countries.filter(e=>e.label).map(e=>({id:`country:${e.name}`,point:e,text:e.name,kind:`country`})),...e.zone_hulls.map(e=>({id:`zone:${e.name}`,point:{x:e.label_anchor[0],y:e.label_anchor[1]},text:e.name,kind:`zone`}))],s={};for(let e of o){let t={x:n(e.point.x),y:r(e.point.y)},o=ie(e.text,e.kind),c=null;for(let e of ee){for(let[n,r]of b){let s=te(t.x+n*(e+o.width/3),t.y+r*e,o.width,o.height);if(re(s,i)&&!a.some(e=>ne(s,e))){c=s;break}}if(c)break}if(!c)throw Error(`no collision-free label location for ${e.id}`);s[e.id]={...c,anchor:t,kind:e.kind,text:e.text},a.push(c)}return s}function ae(e,t){let n=e.slice(0,-1).map(([e,n])=>({x:t.x(e),y:t.y(n)}));if(n.length<3)throw Error(`a closed hull needs three points`);let r=e=>n[(e+n.length)%n.length],i=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y),a=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),o=e=>{let t=r(e-1),n=r(e),o=r(e+1),s=Math.min(.24,14/i(t,n),14/i(n,o));return{before:a(n,t,s),current:n,after:a(n,o,s)}},s=o(0),c=`M ${s.after.x} ${s.after.y}`;for(let e=1;e<=n.length;e+=1){let t=o(e%n.length);c+=` L ${t.before.x} ${t.before.y} Q ${t.current.x} ${t.current.y} ${t.after.x} ${t.after.y}`}return`${c} Z`}function oe(e){let t=x(e),n=S(e,t),r=Object.entries(n);for(let[e,n]of r)if(!re(n,t.bounds))throw Error(`label out of bounds: ${e}`);for(let e=0;e{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),C=o(((e,t)=>{t.exports=se()}))(),ce=`wvs/`;function le(e,t){return Object.keys(e).filter(e=>!t.has(e))}function ue({active:e,geometry:t,data:n,id:r=`model-tooltip`}){if(!e)return null;let{provenance:i}=e,a=e.tooltipLeft??`${Math.min(86,t.x(e.x)/y.width*100)}%`,o=e.tooltipTop??`${Math.min(82,t.y(e.y)/y.height*100)}%`,s=i.items===null?`historical coordinate`:`${i.items} items x ${i.samples} samples`;return(0,C.jsxs)(`aside`,{id:r,className:`tooltip`,style:{left:a,top:o},role:`status`,children:[(0,C.jsx)(`strong`,{children:e.name}),(0,C.jsx)(`span`,{children:e.family}),(0,C.jsxs)(`span`,{children:[n.axis.x[0],` `,`->`,` `,n.axis.x[1],`: `,e.x.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[n.axis.y[0],` `,`->`,` `,n.axis.y[1],`: `,e.y.toFixed(3)]}),(0,C.jsxs)(`span`,{children:[i.readout,`, `,s]}),(0,C.jsx)(`span`,{children:i.release_created?`release ${i.release_created}`:i.release_source})]})}function de({model:e,placement:t,geometry:n,setActive:r,clearActive:i,markerRef:a,logo:o}){let s=n.x(e.x),c=n.y(e.y),l=e.label?t[`model:${e.name}`]:null,u=l&&Math.hypot(l.cx-s,l.cy-c)>20;return(0,C.jsxs)(`g`,{ref:a,className:`model-mark`,"data-family":e.family,"data-model":e.name,"data-x":e.x,"data-y":e.y,tabIndex:`0`,role:`button`,"aria-label":`${e.name}, ${e.family}`,"aria-describedby":`model-tooltip`,onPointerEnter:()=>r(e),onPointerLeave:i,onFocus:()=>r(e),onBlur:i,children:[u&&(0,C.jsx)(`line`,{className:`leader`,x1:s,y1:c,x2:l.cx,y2:l.cy}),(0,C.jsx)(`circle`,{className:`model-ring`,cx:s,cy:c,r:`11`,stroke:e.color}),(0,C.jsx)(`image`,{href:`${ce}${o}`,x:s-7,y:c-7,width:`14`,height:`14`,preserveAspectRatio:`xMidYMid meet`,"aria-hidden":`true`,focusable:`false`}),l&&(0,C.jsx)(`text`,{className:`model-label`,x:l.cx,y:l.cy+4,textAnchor:`middle`,children:e.label})]})}function fe({data:e,hidden:t,field:n,title:r}){let i=(0,_.useMemo)(()=>e.models.filter(e=>Number.isFinite(Date.parse(e.provenance.release_created??``))).toSorted((e,t)=>e.provenance.release_created.localeCompare(t.provenance.release_created)||e.name.localeCompare(t.name)),[e]),a=i.filter(e=>!t.has(e.family)),[o,s]=(0,_.useState)(null),c=1200,l=i.map(e=>Date.parse(e.provenance.release_created)),u=i.map(e=>e[n]),d=Math.min(...l),f=Math.max(...l),p=Math.min(...u),m=Math.max(...u),h=e=>74+(e-d)/(f-d)*1091,g=e=>42+(m-e)/(m-p||1)*230,v=`release-${n}`,y=`${v}-tooltip`,b=(e,t)=>{let n=t.currentTarget.closest(`.scatter-shell`).getBoundingClientRect(),r=t.currentTarget.getBoundingClientRect();s({...e,tooltipLeft:`${Math.min(82,(r.left-n.left)/n.width*100)}%`,tooltipTop:`${Math.min(78,(r.top-n.top)/n.height*100)}%`})};return(0,C.jsxs)(`section`,{className:`release-panel`,"data-coordinate":n,"aria-labelledby":`${v}-heading`,children:[(0,C.jsx)(`h2`,{id:`${v}-heading`,children:r}),(0,C.jsxs)(`div`,{className:`scatter-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${c} 320`,role:`img`,"aria-labelledby":`${v}-svg-title ${v}-svg-desc`,"data-panel-model-count":a.length,children:[(0,C.jsx)(`title`,{id:`${v}-svg-title`,children:r}),(0,C.jsxs)(`desc`,{id:`${v}-svg-desc`,children:[`Scatter plot with release date on the horizontal axis and `,n===`y`?`Secular-Rational`:`Self-expression`,` on the vertical axis. `,a.length,` dated models are visible from `,le(Object.groupBy(e.models,e=>e.family),t).join(`, `)||`no families`,`. Each white-ring logo mark is a model. Hover or keyboard focus a mark for model-specific details.`]}),(0,C.jsx)(`rect`,{className:`canvas`,width:c,height:320}),(0,C.jsx)(`g`,{className:`scatter-grid`,children:Array.from({length:5},(e,t)=>(0,C.jsx)(`line`,{x1:74,x2:1165,y1:42+t*230/4,y2:42+t*230/4},t))}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:74,x2:1165,y1:272,y2:272}),(0,C.jsx)(`line`,{className:`scatter-axis`,x1:74,x2:74,y1:42,y2:272}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:74,y:302,children:new Date(d).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:1165,y:302,textAnchor:`end`,children:new Date(f).toISOString().slice(0,10)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:66,y:46,textAnchor:`end`,children:m.toFixed(2)}),(0,C.jsx)(`text`,{className:`scatter-tick`,x:66,y:272,textAnchor:`end`,children:p.toFixed(2)}),i.map(r=>(0,C.jsxs)(`g`,{className:`release-mark`,"data-family":r.family,"data-release-model":r.name,"data-release-date":r.provenance.release_created,display:t.has(r.family)?`none`:`inline`,tabIndex:`0`,role:`button`,"aria-label":`${r.name}, ${r.family}, ${r.provenance.release_created}`,"aria-describedby":y,onPointerEnter:e=>b(r,e),onPointerLeave:()=>s(null),onFocus:e=>b(r,e),onBlur:()=>s(null),children:[(0,C.jsx)(`circle`,{className:`model-ring`,cx:h(Date.parse(r.provenance.release_created)),cy:g(r[n]),r:`10`,stroke:r.color}),(0,C.jsx)(`image`,{href:`${ce}${e.logos[r.family]}`,x:h(Date.parse(r.provenance.release_created))-6.5,y:g(r[n])-6.5,width:`13`,height:`13`,preserveAspectRatio:`xMidYMid meet`,"aria-hidden":`true`,focusable:`false`})]},r.name))]}),(0,C.jsx)(ue,{active:o,geometry:null,data:e,id:y})]})]})}function pe({data:e,hidden:t}){return(0,C.jsxs)(`section`,{className:`release-panels`,"aria-label":`Release-date scatter panels`,children:[(0,C.jsx)(fe,{data:e,hidden:t,field:`y`,title:`Release date vs Secular-Rational`}),(0,C.jsx)(fe,{data:e,hidden:t,field:`x`,title:`Release date vs Self-expression`})]})}function me({data:e}){let t=new URLSearchParams(location.search),[n,r]=(0,_.useState)(()=>new Set(t.get(`hide`)?.split(`,`).filter(Boolean))),[i,a]=(0,_.useState)(()=>e.models.find(e=>e.name===(t.get(`tooltip`)||t.get(`focus`)))??null),o=t.get(`focus`),s=(0,_.useRef)(null),c=(0,_.useMemo)(()=>Object.groupBy(e.models,e=>e.family),[e]),{labels:l,geometry:u}=(0,_.useMemo)(()=>oe(e),[e]),d=le(c,n),f=e.models.filter(e=>!n.has(e.family)).length;(0,_.useEffect)(()=>{o&&s.current?.focus()},[o]);let p=e=>{e.currentTarget.matches(`:focus`)||a(null)},m=e=>r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),h=u.x(e.median.x),g=u.y(e.median.y);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`section`,{className:`controls`,"aria-label":`Model-family visibility`,children:Object.entries(c).map(([t])=>{let r=!n.has(t);return(0,C.jsxs)(`button`,{className:`chip`,type:`button`,"aria-pressed":r,onClick:()=>m(t),children:[(0,C.jsx)(`img`,{src:`${ce}${e.logos[t]}`,alt:``,"aria-hidden":`true`}),t]},t)})}),(0,C.jsxs)(`div`,{className:`chart-shell`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${y.width} ${y.height}`,role:`img`,"aria-labelledby":`map-svg-title map-svg-desc`,"data-median-x":e.median.x,"data-median-y":e.median.y,"data-visible-model-count":f,children:[(0,C.jsx)(`title`,{id:`map-svg-title`,children:`Frontier LLMs on the World Values Survey`}),(0,C.jsxs)(`desc`,{id:`map-svg-desc`,children:[`World Values Survey cultural map. Horizontal direction runs from Self-expression on the left to Survival on the right. Vertical direction runs from Traditional below to Secular-Rational above. Coloured dots are selected WVS countries, outlines are cultural regions, and white-ring logo marks are models. `,f,` model marks are visible from `,d.join(`, `)||`no families`,`. Use the family controls to hide marks and labels. Hover or keyboard focus a model for model-specific details.`]}),(0,C.jsx)(`defs`,{children:(0,C.jsx)(`marker`,{id:`arrow`,markerWidth:`8`,markerHeight:`8`,refX:`6`,refY:`3`,orient:`auto`,children:(0,C.jsx)(`path`,{d:`M0,0 L0,6 L6,3 z`,className:`arrow`})})}),(0,C.jsx)(`rect`,{className:`canvas`,width:y.width,height:y.height}),(0,C.jsxs)(`g`,{className:`grid`,children:[Array.from({length:8},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y1:u.bounds.top,x2:u.bounds.left+t*(u.bounds.right-u.bounds.left)/7,y2:u.bounds.bottom},`v${t}`)),Array.from({length:6},(e,t)=>(0,C.jsx)(`line`,{x1:u.bounds.left,y1:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5,x2:u.bounds.right,y2:u.bounds.top+t*(u.bounds.bottom-u.bounds.top)/5},`h${t}`))]}),(0,C.jsx)(`line`,{className:`median`,x1:u.bounds.left,y1:g,x2:u.bounds.right,y2:g}),(0,C.jsx)(`line`,{className:`median`,x1:h,y1:u.bounds.top,x2:h,y2:u.bounds.bottom}),e.zone_hulls.map(e=>(0,C.jsx)(`path`,{className:`zone`,d:ae(e.points,u),stroke:e.color},e.name)),e.countries.map(e=>(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`circle`,{className:`country`,"data-country":e.name,"data-x":e.x,"data-y":e.y,cx:u.x(e.x),cy:u.y(e.y),r:`3.5`,fill:e.color}),e.label&&(0,C.jsx)(`text`,{className:`country-label`,x:l[`country:${e.name}`].cx,y:l[`country:${e.name}`].cy+4,textAnchor:`middle`,children:e.name})]},e.name)),e.zone_hulls.map(e=>(0,C.jsx)(`text`,{className:`zone-label`,x:l[`zone:${e.name}`].cx,y:l[`zone:${e.name}`].cy+5,textAnchor:`middle`,fill:e.color,children:e.name},e.name)),Object.entries(c).map(([t,r])=>(0,C.jsx)(`g`,{"data-family":t,display:n.has(t)?`none`:`inline`,children:r.map(t=>(0,C.jsx)(de,{model:t,placement:l,geometry:u,setActive:a,clearActive:p,markerRef:t.name===o?s:null,logo:e.logos[t.family]},t.name))},t)),(0,C.jsxs)(`g`,{className:`poles`,children:[(0,C.jsx)(`line`,{x1:h,y1:`62`,x2:h,y2:u.bounds.top,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:h,y1:u.bounds.bottom,x2:h,y2:`838`,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:`64`,y1:g,x2:u.bounds.left,y2:g,markerEnd:`url(#arrow)`}),(0,C.jsx)(`line`,{x1:u.bounds.right,y1:g,x2:`1184`,y2:g,markerEnd:`url(#arrow)`}),(0,C.jsx)(`text`,{x:h,y:`40`,textAnchor:`middle`,children:e.axis.y[1]}),(0,C.jsx)(`text`,{x:h,y:`870`,textAnchor:`middle`,children:e.axis.y[0]}),(0,C.jsx)(`text`,{x:`25`,y:g+7,children:e.axis.x[0]}),(0,C.jsx)(`text`,{x:`1136`,y:g+7,textAnchor:`end`,children:e.axis.x[1]})]}),(0,C.jsx)(`text`,{className:`map-title`,x:u.bounds.left+8,y:u.bounds.bottom-34,children:e.title.split(` `).map((e,t)=>(0,C.jsx)(`tspan`,{x:u.bounds.left+8,dy:t?17:0,children:e},e))}),(0,C.jsx)(`text`,{className:`map-note`,x:u.bounds.right-8,y:u.bounds.bottom-20,textAnchor:`end`,children:e.note.split(` -`).map((e,t)=>(0,C.jsx)(`tspan`,{x:u.bounds.right-8,dy:t?11:0,children:e},e))})]}),(0,C.jsx)(ce,{active:i,geometry:u,data:e})]}),(0,C.jsx)(de,{data:e,hidden:n})]})}function pe(){let[e,t]=(0,_.useState)(null);return(0,_.useEffect)(()=>{fetch(`../wvs_map_data.json`).then(e=>e.json()).then(t)},[]),(0,C.jsxs)(`main`,{children:[(0,C.jsx)(`h1`,{children:`Frontier LLMs on the World Values Survey`}),(0,C.jsx)(`p`,{className:`lede`,children:`React/SVG rendering of the shared WVS coordinate artifact. White-ring marks use locally saved lab logos. Focus or hover a model for its measured readout and release provenance.`}),e&&(0,C.jsx)(fe,{data:e})]})}(0,v.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(pe,{})); \ No newline at end of file +`).map((e,t)=>(0,C.jsx)(`tspan`,{x:u.bounds.right-8,dy:t?11:0,children:e},e))})]}),(0,C.jsx)(ue,{active:i,geometry:u,data:e})]}),(0,C.jsx)(pe,{data:e,hidden:n})]})}function he(){let[e,t]=(0,_.useState)(null);return(0,_.useEffect)(()=>{fetch(`wvs/wvs_map_data.json`).then(e=>e.json()).then(t)},[]),(0,C.jsxs)(`main`,{children:[(0,C.jsx)(`h1`,{children:`How do AI models score on human values surveys? Which culture are they most similar to? Is it changing over time?`}),(0,C.jsxs)(`p`,{className:`lede`,children:[`To answer these we start with the `,(0,C.jsx)(`a`,{href:`https://www.worldvaluessurvey.org/`,children:`World Values Survey`}),`, the standard culture map of the world. Since 1981 it has asked people in about ninety countries the same questions. Two axes drawn from it sort societies by how traditional or secular they are and how much they weigh survival over self-expression.`]}),(0,C.jsxs)(`p`,{className:`caption`,children:[`Use the family controls to compare saved model coordinates. Hover or keyboard focus a mark for its model-specific provenance. See the `,(0,C.jsx)(`a`,{href:`https://github.com/wassname/moral-maps`,children:`code and records`}),`.`]}),e&&(0,C.jsx)(me,{data:e})]})}(0,v.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(he,{})); \ No newline at end of file diff --git a/docs/wvs/react/assets/index-Ctfw88gw.css b/docs/assets/index-Ctfw88gw.css similarity index 100% rename from docs/wvs/react/assets/index-Ctfw88gw.css rename to docs/assets/index-Ctfw88gw.css diff --git a/docs/index.html b/docs/index.html index 5c28c34..d965a2b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,8 +1,13 @@ - - -moralmaps -
-

moralmaps

-

Frontier LLMs on the World Values Survey

-
+ + + + + Frontier LLMs on the World Values Survey + + + + +
+ + diff --git a/docs/wvs/react/index.html b/docs/wvs/react/index.html index 6ee3311..7c2fe86 100644 --- a/docs/wvs/react/index.html +++ b/docs/wvs/react/index.html @@ -1,3 +1,6 @@ - - -
+ + + + +Frontier LLMs on the World Values Survey +

The React WVS map moved to the site root.

diff --git a/scripts/wvs_react/index.html b/scripts/wvs_react/index.html index fb91b48..4373612 100644 --- a/scripts/wvs_react/index.html +++ b/scripts/wvs_react/index.html @@ -1 +1,12 @@ -
+ + + + + + Frontier LLMs on the World Values Survey + + +
+ + + diff --git a/scripts/wvs_react/src/main.jsx b/scripts/wvs_react/src/main.jsx index f5da5af..c457ec2 100644 --- a/scripts/wvs_react/src/main.jsx +++ b/scripts/wvs_react/src/main.jsx @@ -3,6 +3,12 @@ import { createRoot } from 'react-dom/client'; import { VIEW, assertLayout, roundedHull } from './layout.js'; import './style.css'; +const LOGO_ROOT = 'wvs/'; + +function visibleFamilyNames(groups, hidden) { + return Object.keys(groups).filter(family => !hidden.has(family)); +} + function Tooltip({ active, geometry, data, id = 'model-tooltip' }) { if (!active) return null; const { provenance } = active; @@ -29,7 +35,7 @@ function ModelMarker({ model, placement, geometry, setActive, clearActive, marke onFocus={() => setActive(model)} onBlur={clearActive}> {leader && } - + {label && {model.label}} ; } @@ -37,6 +43,7 @@ function ModelMarker({ model, placement, geometry, setActive, clearActive, marke function ReleaseScatter({ data, hidden, field, title }) { const dated = useMemo(() => data.models.filter(model => Number.isFinite(Date.parse(model.provenance.release_created ?? ''))) .toSorted((a, b) => a.provenance.release_created.localeCompare(b.provenance.release_created) || a.name.localeCompare(b.name)), [data]); + const visible = dated.filter(model => !hidden.has(model.family)); const [active, setActive] = useState(null); const width = 1200, height = 320, left = 74, right = 35, top = 42, bottom = 48; const dates = dated.map(model => Date.parse(model.provenance.release_created)); @@ -45,16 +52,19 @@ function ReleaseScatter({ data, hidden, field, title }) { const minValue = Math.min(...values), maxValue = Math.max(...values); const dateX = date => left + (date - minDate) / (maxDate - minDate) * (width - left - right); const valueY = value => top + (maxValue - value) / (maxValue - minValue || 1) * (height - top - bottom); + const panelId = `release-${field}`; + const tooltipId = `${panelId}-tooltip`; const activate = (model, event) => { const box = event.currentTarget.closest('.scatter-shell').getBoundingClientRect(); const point = event.currentTarget.getBoundingClientRect(); setActive({ ...model, tooltipLeft: `${Math.min(82, (point.left - box.left) / box.width * 100)}%`, tooltipTop: `${Math.min(78, (point.top - box.top) / box.height * 100)}%` }); }; - return
-

{title}

-

Dated releases only. Positions are descriptive, not a capability trend.

+ return
+

{title}

- + + {title} + Scatter plot with release date on the horizontal axis and {field === 'y' ? 'Secular-Rational' : 'Self-expression'} on the vertical axis. {visible.length} dated models are visible from {visibleFamilyNames(Object.groupBy(data.models, model => model.family), hidden).join(', ') || 'no families'}. Each white-ring logo mark is a model. Hover or keyboard focus a mark for model-specific details. {Array.from({ length: 5 }, (_, index) => )} @@ -64,13 +74,13 @@ function ReleaseScatter({ data, hidden, field, title }) { {maxValue.toFixed(2)} {minValue.toFixed(2)} {dated.map(model => activate(model, event)} onPointerLeave={() => setActive(null)} onFocus={event => activate(model, event)} onBlur={() => setActive(null)}> - + )} - +
; } @@ -90,6 +100,8 @@ function Map({ data }) { const focusRef = useRef(null); const groups = useMemo(() => Object.groupBy(data.models, model => model.family), [data]); const { labels, geometry } = useMemo(() => assertLayout(data), [data]); + const visibleFamilies = visibleFamilyNames(groups, hidden); + const visibleModelCount = data.models.filter(model => !hidden.has(model.family)).length; useEffect(() => { if (focusName) focusRef.current?.focus(); @@ -106,14 +118,16 @@ function Map({ data }) { }); const xMedian = geometry.x(data.median.x), yMedian = geometry.y(data.median.y); return <> -
{Object.entries(groups).map(([family, models]) => { +
{Object.entries(groups).map(([family]) => { const visible = !hidden.has(family); return ; })}
- + + Frontier LLMs on the World Values Survey + World Values Survey cultural map. Horizontal direction runs from Self-expression on the left to Survival on the right. Vertical direction runs from Traditional below to Secular-Rational above. Coloured dots are selected WVS countries, outlines are cultural regions, and white-ring logo marks are models. {visibleModelCount} model marks are visible from {visibleFamilies.join(', ') || 'no families'}. Use the family controls to hide marks and labels. Hover or keyboard focus a model for model-specific details. {Array.from({ length: 8 }, (_, index) => )}{Array.from({ length: 6 }, (_, index) => )} @@ -135,8 +149,13 @@ function Map({ data }) { function App() { const [data, setData] = useState(null); - useEffect(() => { fetch('../wvs_map_data.json').then(response => response.json()).then(setData); }, []); - return

Frontier LLMs on the World Values Survey

React/SVG rendering of the shared WVS coordinate artifact. White-ring marks use locally saved lab logos. Focus or hover a model for its measured readout and release provenance.

{data && }; + useEffect(() => { fetch('wvs/wvs_map_data.json').then(response => response.json()).then(setData); }, []); + return
+

How do AI models score on human values surveys? Which culture are they most similar to? Is it changing over time?

+

To answer these we start with the World Values Survey, the standard culture map of the world. Since 1981 it has asked people in about ninety countries the same questions. Two axes drawn from it sort societies by how traditional or secular they are and how much they weigh survival over self-expression.

+

Use the family controls to compare saved model coordinates. Hover or keyboard focus a mark for its model-specific provenance. See the code and records.

+ {data && } +
; } createRoot(document.getElementById('root')).render(); diff --git a/scripts/wvs_react/uat.py b/scripts/wvs_react/uat.py index 929bce7..a0643fb 100644 --- a/scripts/wvs_react/uat.py +++ b/scripts/wvs_react/uat.py @@ -1,17 +1,17 @@ -"""Playwright UAT for the production React WVS SVG. No network calls leave localhost.""" +"""Playwright UAT for the root React WVS page. No network calls leave localhost.""" from __future__ import annotations import hashlib import json import shutil +import subprocess from pathlib import Path -from PIL import Image, ImageDraw from playwright.sync_api import sync_playwright ROOT = Path(__file__).resolve().parents[2] OUT = ROOT / "slop/research/wvs/20260916_openrouter" -BASE = "http://localhost:8081/wvs" +BASE = "http://localhost:8081" VIEWPORT = {"width": 1440, "height": 1800} @@ -21,6 +21,15 @@ def screenshot(page, url: str, name: str) -> Path: return OUT / name +def svg_description(page, selector: str, title_id: str, desc_id: str) -> None: + svg = page.locator(selector) + assert svg.get_attribute("role") == "img" + assert svg.get_attribute("aria-labelledby") == f"{title_id} {desc_id}" + assert svg.locator(f"title#{title_id}").count() == 1 + assert svg.locator(f"desc#{desc_id}").count() == 1 + assert svg.locator(f"desc#{desc_id}").text_content() + + def main() -> None: OUT.mkdir(parents=True, exist_ok=True) chrome = shutil.which("google-chrome") @@ -40,17 +49,28 @@ def main() -> None: errors: list[str] = [] page.on("pageerror", lambda error: errors.append(str(error))) - screenshot(page, "http://localhost:8081/img/wvs/wvs_map_iw.png", "wvs_static_playwright.png") - screenshot(page, f"{BASE}/", "wvs_vanilla_playwright.png") - screenshot(page, f"{BASE}/react/", "wvs_react_playwright_default.png") + screenshot(page, f"{BASE}/img/wvs/wvs_map_iw.png", "wvs_static_playwright.png") + screenshot(page, f"{BASE}/wvs/", "wvs_vanilla_playwright.png") + assert page.locator("#map").count() == 1 + + screenshot(page, f"{BASE}/", "wvs_react_root_playwright_default.png") page.wait_for_selector("svg .model-mark") + assert page.title() == "Frontier LLMs on the World Values Survey" + assert page.locator("html").get_attribute("lang") == "en" + assert page.locator('meta[name="viewport"]').count() == 1 + assert page.locator("h1").inner_text().startswith("How do AI models score on human values surveys?") + assert "React/SVG rendering" not in page.locator("main").inner_text() + assert "Artificial Analysis" not in page.locator("main").inner_text() + assert "Historical coordinates" not in page.locator("main").inner_text() + assert "Dated releases only" not in page.locator("main").inner_text() + + map_svg = page.locator("svg[data-median-x]") + svg_description(page, "svg[data-median-x]", "map-svg-title", "map-svg-desc") + assert "64 model marks" in map_svg.locator("desc").text_content() assert page.locator("path.zone").count() == 4 assert page.locator("polygon.zone").count() == 0 - assert "64 models" not in page.locator("main").inner_text() - assert "Historical coordinates" not in page.locator("main").inner_text() assert page.locator(".map-note").get_attribute("text-anchor") == "end" assert float(page.locator(".map-note").get_attribute("x")) > float(page.locator(".map-title").get_attribute("x")) - map_svg = page.get_by_role("img", name="Frontier LLMs on the World Values Survey") assert float(map_svg.get_attribute("data-median-x")) == data["median"]["x"] assert float(map_svg.get_attribute("data-median-y")) == data["median"]["y"] rendered_models = page.locator(".model-mark").evaluate_all( @@ -61,33 +81,36 @@ def main() -> None: "nodes => nodes.map(node => [node.dataset.country, Number(node.dataset.x), Number(node.dataset.y)])" ) assert rendered_countries == [[country["name"], country["x"], country["y"]] for country in data["countries"]] + assert page.locator(".chip").count() == 13 + assert all(name for name in page.locator(".chip").evaluate_all("nodes => nodes.map(node => node.getAttribute('aria-label') || node.innerText)")) + assert all(value == "true" for value in page.locator(".chip img").evaluate_all("nodes => nodes.map(node => node.getAttribute('aria-hidden'))")) + assert all(value == "true" for value in page.locator(".model-mark image, .release-mark image").evaluate_all("nodes => nodes.map(node => node.getAttribute('aria-hidden'))")) + assert all(page.locator(".model-mark").evaluate_all("nodes => nodes.map(node => node.getAttribute('aria-label'))")) country_before = page.locator("circle.country").evaluate_all( "nodes => nodes.map(node => [node.getAttribute('cx'), node.getAttribute('cy')])" ) dated = [model for model in data["models"] if model["provenance"]["release_created"]] - qwen_group = map_svg.locator(':scope > g[data-family="qwen"]') - assert qwen_group.get_attribute("display") in (None, "inline") - assert map_svg.locator('[data-family="qwen"] .model-label').count() == 1 assert page.locator(".release-panel").count() == 2 + svg_description(page, '.release-panel[data-coordinate="y"] svg', "release-y-svg-title", "release-y-svg-desc") + svg_description(page, '.release-panel[data-coordinate="x"] svg', "release-x-svg-title", "release-x-svg-desc") assert page.locator(".release-mark").count() == len(dated) * 2 for panel in page.locator(".release-panel").all(): dates = panel.locator(".release-mark").evaluate_all("nodes => nodes.map(node => node.dataset.releaseDate)") assert dates == sorted(dates) - assert page.locator(".release-trajectory").count() == 0 page.screenshot(path=OUT / "wvs_react_playwright_release_panels.png", full_page=True) page.get_by_role("button", name="qwen", exact=True).click() page.wait_for_timeout(100) + qwen_group = map_svg.locator(':scope > g[data-family="qwen"]') assert qwen_group.get_attribute("display") == "none" - assert map_svg.locator('[data-family="qwen"] .model-label').count() == 1 - assert map_svg.locator('[data-family="muse"] .model-label').count() == 1 + assert "qwen" not in map_svg.locator("desc").text_content().split("from ", 1)[1] assert all(group.get_attribute("display") == "none" for group in page.locator('.release-panel [data-family="qwen"]').all()) assert all(group.get_attribute("display") != "none" for group in page.locator('.release-panel [data-family="muse"]').all()) country_after = page.locator("circle.country").evaluate_all( "nodes => nodes.map(node => [node.getAttribute('cx'), node.getAttribute('cy')])" ) assert country_after == country_before - page.screenshot(path=OUT / "wvs_react_playwright_qwen_hidden.png", full_page=True) + page.screenshot(path=OUT / "wvs_react_root_playwright_qwen_hidden.png", full_page=True) page.get_by_role("button", name="qwen", exact=True).click() marker = page.locator('[data-model="qwen3.8-flash"]') @@ -96,48 +119,54 @@ def main() -> None: tooltip_text = page.locator("#model-tooltip").inner_text() for required in ("qwen3.8-flash", "qwen", "rated categorical response", "12 items x 12 samples"): assert required in tooltip_text, required - page.screenshot(path=OUT / "wvs_react_playwright_tooltip_hover.png", full_page=True) + page.screenshot(path=OUT / "wvs_react_root_playwright_tooltip_hover.png", full_page=True) marker.focus() assert page.evaluate("document.activeElement.dataset.model") == "qwen3.8-flash" assert page.locator("#model-tooltip").is_visible() - page.screenshot(path=OUT / "wvs_react_playwright_keyboard_focus.png", full_page=True) + page.screenshot(path=OUT / "wvs_react_root_playwright_keyboard_focus.png", full_page=True) release_marker = page.locator('.release-panel[data-coordinate="y"] [data-release-model="qwen3.8-flash"]') release_marker.locator(".model-ring").hover() - page.wait_for_selector("#release-tooltip") - assert "qwen3.8-flash" in page.locator("#release-tooltip").inner_text() - page.screenshot(path=OUT / "wvs_react_playwright_release_panel_hover.png", full_page=True) + page.wait_for_selector("#release-y-tooltip") + assert "qwen3.8-flash" in page.locator("#release-y-tooltip").inner_text() + page.screenshot(path=OUT / "wvs_react_root_playwright_release_panel_hover.png", full_page=True) release_marker.focus() assert page.evaluate("document.activeElement.dataset.releaseModel") == "qwen3.8-flash" - assert page.locator("#release-tooltip").is_visible() - page.screenshot(path=OUT / "wvs_react_playwright_release_panel_keyboard_focus.png", full_page=True) + assert page.locator("#release-y-tooltip").is_visible() + page.screenshot(path=OUT / "wvs_react_root_playwright_release_panel_keyboard_focus.png", full_page=True) + release_x_marker = page.locator('.release-panel[data-coordinate="x"] [data-release-model="qwen3.8-flash"]') + release_x_marker.locator(".model-ring").hover() + page.wait_for_selector("#release-x-tooltip") + assert page.locator("#release-x-tooltip").is_visible() + assert release_marker.get_attribute("aria-describedby") == "release-y-tooltip" + assert release_x_marker.get_attribute("aria-describedby") == "release-x-tooltip" + + screenshot(page, f"{BASE}/wvs/react/", "wvs_react_compat_redirect.png") + page.wait_for_selector("svg .model-mark") + assert page.url == f"{BASE}/" browser.close() if errors: raise RuntimeError(f"React page errors: {errors}") - static = Image.open(OUT / "wvs_static_playwright.png").convert("RGB") - react = Image.open(OUT / "wvs_react_playwright_default.png").convert("RGB") - height = max(static.height, react.height) - comparison = Image.new("RGB", (static.width + react.width, height + 26), "white") - comparison.paste(static, (0, 26)) - comparison.paste(react, (static.width, 26)) - draw = ImageDraw.Draw(comparison) - draw.text((6, 5), "Static WVS figure", fill="black") - draw.text((static.width + 6, 5), "React WVS production page", fill="black") - comparison.save(OUT / "wvs_static_react_playwright_side_by_side.png") + subprocess.run([ + "convert", str(OUT / "wvs_static_playwright.png"), str(OUT / "wvs_react_root_playwright_default.png"), + "+append", str(OUT / "wvs_static_react_root_playwright_side_by_side.png"), + ], check=True) hashes = {path.name: hashlib.sha256(path.read_bytes()).hexdigest() for path in ( ROOT / "docs/wvs/wvs_map_data.json", - ROOT / "docs/wvs/react/index.html", + ROOT / "docs/index.html", )} print(json.dumps({ + "root": "React app loaded at /", + "compatibility": "/wvs/ static retained; /wvs/react/ redirects to root", "shared": {"models": 64, "countries": 90, "buffered_hulls": 4, "latest_labels": 13, "numeric_model_country_median_equality": "verified against DOM data attributes"}, + "svg_accessibility": "main map and both release panels have stable title/desc aria-labelledby; descriptions update after family visibility change", "qwen_toggle": "clicked, map and dated-panel family groups hidden, country coordinates invariant", - "tooltip": "map and release-panel pointer hover and focus show model, family, coordinates, readout, samples and release metadata", + "tooltip": "map and release-panel pointer hover and focus show model-specific fields", "release_panels": {"panels": 2, "dated_models": len(dated), "date_order": "DOM order verified", "no_paths": True}, - "copy": "source caption only; no model-count wording or archaeological paragraph", - "visual_contract": "four smooth SVG paths, no zone polygons, source note right of title", + "copy": "reader-facing WVS introduction; no model-count, archaeological, implementation, or Artificial Analysis text", "hashes": hashes, }, indent=2)) diff --git a/scripts/wvs_react/vite.config.js b/scripts/wvs_react/vite.config.js index e6f0dfb..79bd087 100644 --- a/scripts/wvs_react/vite.config.js +++ b/scripts/wvs_react/vite.config.js @@ -2,5 +2,5 @@ import { defineConfig } from 'vite'; export default defineConfig({ base: './', - build: { outDir: '../../docs/wvs/react', emptyOutDir: true }, + build: { outDir: '../../docs', emptyOutDir: false }, }); diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_compat_redirect.png b/slop/research/wvs/20260916_openrouter/wvs_react_compat_redirect.png new file mode 100644 index 0000000..6313fc0 Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_compat_redirect.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_playwright_release_panels.png b/slop/research/wvs/20260916_openrouter/wvs_react_playwright_release_panels.png index 7dadac9..6313fc0 100644 Binary files a/slop/research/wvs/20260916_openrouter/wvs_react_playwright_release_panels.png and b/slop/research/wvs/20260916_openrouter/wvs_react_playwright_release_panels.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_default.png b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_default.png new file mode 100644 index 0000000..6313fc0 Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_default.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_keyboard_focus.png b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_keyboard_focus.png new file mode 100644 index 0000000..3b1c69c Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_keyboard_focus.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_qwen_hidden.png b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_qwen_hidden.png new file mode 100644 index 0000000..64b732b Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_qwen_hidden.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_release_panel_hover.png b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_release_panel_hover.png new file mode 100644 index 0000000..686dcc9 Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_release_panel_hover.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_release_panel_keyboard_focus.png b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_release_panel_keyboard_focus.png new file mode 100644 index 0000000..f2de0e2 Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_release_panel_keyboard_focus.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_tooltip_hover.png b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_tooltip_hover.png new file mode 100644 index 0000000..3b1c69c Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_tooltip_hover.png differ diff --git a/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_uat.json b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_uat.json new file mode 100644 index 0000000..c328228 --- /dev/null +++ b/slop/research/wvs/20260916_openrouter/wvs_react_root_playwright_uat.json @@ -0,0 +1,25 @@ +{ + "root": "React app loaded at /", + "compatibility": "/wvs/ static retained; /wvs/react/ redirects to root", + "shared": { + "models": 64, + "countries": 90, + "buffered_hulls": 4, + "latest_labels": 13, + "numeric_model_country_median_equality": "verified against DOM data attributes" + }, + "svg_accessibility": "main map and both release panels have stable title/desc aria-labelledby; descriptions update after family visibility change", + "qwen_toggle": "clicked, map and dated-panel family groups hidden, country coordinates invariant", + "tooltip": "map and release-panel pointer hover and focus show model-specific fields", + "release_panels": { + "panels": 2, + "dated_models": 48, + "date_order": "DOM order verified", + "no_paths": true + }, + "copy": "reader-facing WVS introduction; no model-count, archaeological, implementation, or Artificial Analysis text", + "hashes": { + "wvs_map_data.json": "c0b7aa0554ebbf5d819308932e058f4ff6e19d1e817ffebbbe381dbd2d063ffe", + "index.html": "c9994265bee6da60b24596f34c1973426a97e34a086da152bcd9486700750edb" + } +} diff --git a/slop/research/wvs/20260916_openrouter/wvs_static_react_root_playwright_side_by_side.png b/slop/research/wvs/20260916_openrouter/wvs_static_react_root_playwright_side_by_side.png new file mode 100644 index 0000000..d55635f Binary files /dev/null and b/slop/research/wvs/20260916_openrouter/wvs_static_react_root_playwright_side_by_side.png differ diff --git a/slop/reviews/20260917_wvs_react_root_final_review.md b/slop/reviews/20260917_wvs_react_root_final_review.md new file mode 100644 index 0000000..69023c5 --- /dev/null +++ b/slop/reviews/20260917_wvs_react_root_final_review.md @@ -0,0 +1,22 @@ +# Final review: root React WVS deployment + +Reviewer: `reviewer`, read-only, 2026-09-17. + +## Verdict + +PASS. The root document has `lang=en`, viewport metadata, and the WVS title. It loads the current root React bundle. The standalone `/wvs/` renderer remains, while `/wvs/react/` is a redirect stub with no second bundle. + +## Observed + +- Main map uses `role=img` with `aria-labelledby="map-svg-title map-svg-desc"`, one stable title and one visibility-dependent description. +- Both scatter panels have their own title/description pairs and per-panel tooltip IDs: `release-y-tooltip` and `release-x-tooltip`. +- Chip and marker logos are decorative. Parent controls and markers have accessible names. +- The root copy is reader-facing and has no visible Artificial Analysis claim, model-count wording, or implementation archaeology. +- Default, Qwen-hidden, tooltip, and side-by-side captures are legible. The Qwen state removes its marks and label while countries and zones do not move. +- `scripts/wvs_react/uat.py` records successful localhost checks for 64 models, 90 countries, median/model/country equality with shared JSON, SVG descriptions, tooltip/focus behavior, root route, static route, redirect compatibility, and Qwen visibility behavior. + +## Limits + +The review inspected source and captures, not the public deployment or a screen-reader session. Tooltip descriptions mount only when a mark is active, and focusable marks use `role=button` even though Enter/Space has no action. These are non-blocking for the assigned root/a11y revision. + +-- reviewer diff --git a/slop/reviews/20260917_wvs_react_root_image_a11y_openai.md b/slop/reviews/20260917_wvs_react_root_image_a11y_openai.md new file mode 100644 index 0000000..839f133 --- /dev/null +++ b/slop/reviews/20260917_wvs_react_root_image_a11y_openai.md @@ -0,0 +1,23 @@ +# Root React WVS image/a11y review + +Reviewer: reviewer-openai, read-only, 2026-09-17. + +## Verdict before follow-up + +Changes requested. + +1. `docs/index.html` had only a module script, stylesheet link, and root div. Add document language, title, and viewport metadata. +2. Both release panels used `release-tooltip` as their tooltip ID. Mixed keyboard/pointer use could create duplicate IDs and ambiguous descriptions. Use panel-specific tooltip IDs. + +## Passed source/image checks + +- Root source is React; `/wvs/` remains standalone static; `/wvs/react/` is a redirect and does not load a second bundle. +- The reader-facing introduction has no implementation archaeology, model count, or Artificial Analysis claim. +- Main map and both panel SVGs have title/description IDs referenced from `aria-labelledby`; descriptions derive visible counts and families from hidden-family state. +- Embedded logos are decorative and parent controls/markers carry names. +- Default and Qwen-hidden screenshots show country and region geometry unchanged while Qwen marks disappear. +- The supplied map tooltip is readable and contains model-specific fields. + +Evidence limit: this reviewer inspected source and captures, not a browser accessibility tree or deployed output. + +-- reviewer-openai