1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[584],{6123:(e,t,n)=>{Promise.resolve().then(n.bind(n,1668))},1668:(e,t,n)=>{"use strict";let r,i;n.r(t),n.d(t,{default:()=>ee});var o=n(95155),s=n(29602),l=n(66494),a=n(93448),c=n(12115);function f(e){let{children:t,as:n="p",className:r,style:i,variants:f,transition:u}=e,d=(0,c.useId)(),g=(0,c.useMemo)(()=>{let e={};return t.split("").map((t,n)=>{let r=t.toLowerCase();return e[r]=(e[r]||0)+1,{id:"".concat(d,"-").concat(r).concat(e[r]),label:" "===t?"\xa0":0===n?t.toUpperCase():r}})},[t,d]),p={initial:{opacity:0},animate:{opacity:1},exit:{opacity:0}},h={type:"spring",stiffness:280,damping:18,mass:.3};return(0,o.jsx)(n,{className:(0,s.cn)(r),"aria-label":t,style:i,children:(0,o.jsx)(l.N,{mode:"popLayout",initial:!1,children:g.map(e=>(0,o.jsx)(a.P.span,{layoutId:e.id,className:"inline-block","aria-hidden":"true",initial:"initial",animate:"animate",exit:"exit",variants:f||p,transition:u||h,children:e.label},e.id))})})}var u=n(40007),d=n(72321),g=n(18818),p=n(51506);let h=new WeakMap;function m({target:e,contentRect:t,borderBoxSize:n}){var r;null===(r=h.get(e))||void 0===r||r.forEach(r=>{r({target:e,contentSize:t,get size(){return function(e,t){if(t){let{inlineSize:e,blockSize:n}=t[0];return{width:e,height:n}}return e instanceof SVGElement&&"getBBox"in e?e.getBBox():{width:e.offsetWidth,height:e.offsetHeight}}(e,n)}})})}function x(e){e.forEach(m)}let v=new Set;var y=n(3078),b=n(39575);let w=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),E=()=>({time:0,x:w(),y:w()}),k={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function L(e,t,n,r){let i=n[t],{length:o,position:s}=k[t],l=i.current,a=n.time;i.current=e[`scroll${s}`],i.scrollLength=e[`scroll${o}`]-e[`client${o}`],i.offset.length=0,i.offset[0]=0,i.offset[1]=i.scrollLength,i.progress=(0,y.q)(0,i.scrollLength,i.current);let c=r-a;i.velocity=c>50?0:(0,b.f)(i.current-l,c)}let N={All:[[0,0],[1,1]]},z={start:0,center:.5,end:1};function W(e,t,n=0){let r=0;if(e in z&&(e=z[e]),"string"==typeof e){let t=parseFloat(e);e.endsWith("px")?r=t:e.endsWith("%")?e=t/100:e.endsWith("vw")?r=t/100*document.documentElement.clientWidth:e.endsWith("vh")?r=t/100*document.documentElement.clientHeight:e=t}return"number"==typeof e&&(r=t*e),n+r}let O=[0,0];var j=n(6578),S=n(27539);let B={x:0,y:0};var C=n(58206);let G=new WeakMap,H=new WeakMap,P=new WeakMap,T=e=>e===document.documentElement?window:e;function A(e,{container:t=document.documentElement,...n}={}){let o=P.get(t);o||(o=new Set,P.set(t,o));let s=function(e,t,n,r={}){return{measure:()=>(function(e,t=e,n){if(n.x.targetOffset=0,n.y.targetOffset=0,t!==e){let r=t;for(;r&&r!==e;)n.x.targetOffset+=r.offsetLeft,n.y.targetOffset+=r.offsetTop,r=r.offsetParent}n.x.targetLength=t===e?t.scrollWidth:t.clientWidth,n.y.targetLength=t===e?t.scrollHeight:t.clientHeight,n.x.containerLength=e.clientWidth,n.y.containerLength=e.clientHeight})(e,r.target,n),update:t=>{L(e,"x",n,t),L(e,"y",n,t),n.time=t,(r.offset||r.target)&&function(e,t,n){let{offset:r=N.All}=n,{target:i=e,axis:o="y"}=n,s="y"===o?"height":"width",l=i!==e?function(e,t){let n={x:0,y:0},r=e;for(;r&&r!==t;)if(r instanceof HTMLElement)n.x+=r.offsetLeft,n.y+=r.offsetTop,r=r.offsetParent;else if("svg"===r.tagName){let e=r.getBoundingClientRect(),t=(r=r.parentElement).getBoundingClientRect();n.x+=e.left-t.left,n.y+=e.top-t.top}else if(r instanceof SVGGraphicsElement){let{x:e,y:t}=r.getBBox();n.x+=e,n.y+=t;let i=null,o=r.parentNode;for(;!i;)"svg"===o.tagName&&(i=o),o=r.parentNode;r=i}else break;return n}(i,e):B,a=i===e?{width:e.scrollWidth,height:e.scrollHeight}:"getBBox"in i&&"svg"!==i.tagName?i.getBBox():{width:i.clientWidth,height:i.clientHeight},c={width:e.clientWidth,height:e.clientHeight};t[o].offset.length=0;let f=!t[o].interpolate,u=r.length;for(let e=0;e<u;e++){let n=function(e,t,n,r){let i=Array.isArray(e)?e:O,o=0;return"number"==typeof e?i=[e,e]:"string"==typeof e&&(i=(e=e.trim()).includes(" ")?e.split(" "):[e,z[e]?e:"0"]),W(i[0],n,r)-W(i[1],t)}(r[e],c[s],a[s],l[o]);
1f||n===t[o].interpolatorOffsets[e]||(f=!0),t[o].offset[e]=n}f&&(t[o].interpolate=(0,j.G)(t[o].offset,(0,S.Z)(r)),t[o].interpolatorOffsets=[...t[o].offset]),t[o].progress=t[o].interpolate(t[o].current)}(e,n,r)},notify:()=>t(n)}}(t,e,E(),n);if(o.add(s),!G.has(t)){let e=()=>{for(let e of o)e.measure()},n=()=>{for(let e of o)e.update(C.uv.timestamp)},s=()=>{for(let e of o)e.notify()},l=()=>{C.Gt.read(e,!1,!0),C.Gt.read(n,!1,!0),C.Gt.update(s,!1,!0)};G.set(t,l);let a=T(t);window.addEventListener("resize",l,{passive:!0}),t!==document.documentElement&&H.set(t,"function"==typeof t?(v.add(t),i||(i=()=>{let e={width:window.innerWidth,height:window.innerHeight},t={target:window,size:e,contentSize:e};v.forEach(e=>e(t))},window.addEventListener("resize",i)),()=>{v.delete(t),!v.size&&i&&(i=void 0)}):function(e,t){r||"undefined"==typeof ResizeObserver||(r=new ResizeObserver(x));let n=(0,p.K)(e);return n.forEach(e=>{let n=h.get(e);n||(n=new Set,h.set(e,n)),n.add(t),null==r||r.observe(e)}),()=>{n.forEach(e=>{let n=h.get(e);null==n||n.delete(t),(null==n?void 0:n.size)||null==r||r.unobserve(e)})}}(t,l)),a.addEventListener("scroll",l,{passive:!0})}let l=G.get(t);return C.Gt.read(l,!1,!0),()=>{var e;(0,C.WG)(l);let n=P.get(t);if(!n||(n.delete(s),n.size))return;let r=G.get(t);G.delete(t),r&&(T(t).removeEventListener("scroll",r),null===(e=H.get(t))||void 0===e||e(),window.removeEventListener("resize",r))}}function M(e,t){let n;let r=()=>{let{currentTime:r}=t,i=(null===r?0:r.value)/100;n!==i&&e(i),n=i};return C.Gt.update(r,!0),()=>(0,C.WG)(r)}var Q=n(75487),R=n(90367);let _=new Map;function $({source:e,container:t=document.documentElement,axis:n="y"}={}){e&&(t=e),_.has(t)||_.set(t,{});let r=_.get(t);return r[n]||(r[n]=(0,Q.J)()?new ScrollTimeline({source:t,axis:n}):function({source:e,container:t,axis:n="y"}){e&&(t=e);let r={value:0},i=A(e=>{r.value=100*e[n].progress},{container:t,axis:n});return{currentTime:r,cancel:i}}({source:t,axis:n})),r[n]}function F(e){return e&&(e.target||e.offset)}var Y=n(17530);function V(e,t){(0,g.$)(!!(!t||t.current),`You have defined a ${e} options but the provided ref is not yet hydrated, probably because it's defined higher up the tree. Try calling useScroll() in the same component as the ref, or setting its \`layoutEffect: false\` option.`)}let X=()=>({scrollX:(0,u.OQ)(0),scrollY:(0,u.OQ)(0),scrollXProgress:(0,u.OQ)(0),scrollYProgress:(0,u.OQ)(0)});var I=n(92910),J=n(44712),U=n(67920);function D(e){return"number"==typeof e?e:parseFloat(e)}let q={stiffness:200,damping:50,restDelta:.001};function K(e){let{className:t,springOptions:n,containerRef:r}=e,{scrollYProgress:i}=function({container:e,target:t,layoutEffect:n=!0,...r}={}){let i=(0,d.M)(X);return(n?Y.E:c.useEffect)(()=>(V("target",t),V("container",e),function(e,{axis:t="y",...n}={}){let r={axis:t,...n};return"function"==typeof e?2===e.length||F(r)?A(t=>{e(t[r.axis].progress,t)},r):M(e,$(r)):function(e,t){if(e.flatten(),F(t))return e.pause(),A(n=>{e.time=e.duration*n[t.axis].progress},t);{let n=$(t);return e.attachTimeline?e.attachTimeline(n,e=>(e.pause(),M(t=>{e.time=e.duration*t},n))):R.l}}(e,r)}((e,{x:t,y:n})=>{i.scrollX.set(t.current),i.scrollXProgress.set(t.progress),i.scrollY.set(n.current),i.scrollYProgress.set(n.progress)},{...r,container:(null==e?void 0:e.current)||void 0,target:(null==t?void 0:t.current)||void 0})),[e,t,JSON.stringify(r.offset)]),i}({container:r,layoutEffect:!!(null==r?void 0:r.current)}),l=function(e,t={}){let{isStatic:n}=(0,c.useContext)(J.Q),r=(0,c.useRef)(null),i=function(e){let t=(0,d.M)(()=>(0,u.OQ)(e)),{isStatic:n}=(0,c.useContext)(J.Q);if(n){let[,n]=(0,c.useState)(e);(0,c.useEffect)(()=>t.on("change",n),[])}return t}((0,I.S)(e)?D(e.get()):e),o=(0,c.useRef)(i.get()),s=(0,c.useRef)(()=>{}),l=()=>{let e=r.current;e&&0===e.time&&e.sample(C.uv.delta),a(),r.current=(0,U.L)({keyframes:[i.get(),o.current],velocity:i.getVelocity(),type:"spring",restDelta:.001,restSpeed:.01,...t,onUpdate:s.current})},a=()=>{r.current&&r.current.stop()};return(0,c.useInsertionEffect)(()=>i.attach((e,t)=>n?t(e):(o.current=e,s.current=t,C.Gt.update(l),i.get()),a),[JSON.stringify(t)]),(0,Y.E)(()=>
1{if((0,I.S)(e))return e.on("change",e=>i.set(D(e)))},[i]),i}(i,{...q,...null!=n?n:{}});return(0,o.jsx)(a.P.div,{className:(0,s.cn)("inset-x-0 top-0 h-1 origin-left",t),style:{scaleX:l,backgroundColor:"#A88BFA"}})}function Z(){let[e,t]=(0,c.useState)("Copy"),n=window.location.href;return(0,c.useEffect)(()=>{setTimeout(()=>{t("Copy")},2e3)},[e]),(0,o.jsxs)("button",{onClick:()=>{t("Copied"),navigator.clipboard.writeText(n)},className:"font-base flex items-center gap-1 text-center text-sm text-zinc-500 transition-colors dark:text-zinc-400",type:"button",children:[(0,o.jsx)(f,{children:e}),(0,o.jsx)("span",{children:"URL"})]})}function ee(e){let{children:t}=e;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"pointer-events-none fixed top-0 left-0 z-10 h-12 w-full bg-gray-100 to-transparent backdrop-blur-xl [-webkit-mask-image:linear-gradient(to_bottom,black,transparent)] dark:bg-zinc-950"}),(0,o.jsx)(K,{className:"fixed top-0 z-20 h-0.5 bg-gray-300 dark:bg-zinc-600",springOptions:{bounce:0}}),(0,o.jsx)("div",{className:"absolute top-24 right-4",children:(0,o.jsx)(Z,{})}),(0,o.jsxs)("main",{className:"prose prose-gray prose-h4:prose-base dark:prose-invert prose-h1:text-xl prose-h1:font-medium prose-h2:mt-12 prose-h2:scroll-m-20 prose-h2:text-lg prose-h2:font-medium prose-h3:text-base prose-h3:font-medium prose-h4:font-medium prose-h5:text-base prose-h5:font-medium prose-h6:text-base prose-h6:font-medium prose-strong:font-medium mt-24 pb-20",children:[(0,o.jsx)("div",{className:"flex-1",children:(0,o.jsx)("a",{className:"group inline-block font-[450] text-zinc-900 no-underline dark:text-zinc-50",href:"/writing",children:(0,o.jsxs)("span",{className:"relative text-zinc-900 dark:text-zinc-200",children:["â View all posts",(0,o.jsx)("span",{className:"absolute bottom-0 left-0 block h-[1px] w-full max-w-0 transition-all duration-200 group-hover:max-w-full",style:{backgroundColor:"#A88BFA",height:"2px"}})]})})}),t]})]})}},29602:(e,t,n)=>{"use strict";n.d(t,{cn:()=>o});var r=n(43463),i=n(69795);function o(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.QP)((0,r.$)(t))}}},e=>{var t=t=>e(e.s=t);e.O(0,[271,441,517,358],()=>t(6123)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.