(()=>{var t={8711:()=>{},4432:()=>{},2065:()=>{},35:()=>{},5074:()=>{},2811:()=>{up.browser=function(){const t=up.util;function e(){return"ActiveXObject"in window}function n(){return!!window.jQuery}return{submitForm:function(t){t.submit()},canPushState:function(){return history.pushState&&"GET"===up.protocol.initialRequestMethod()},canFormatLog:t.negate(e),canPassiveEventListener:t.negate(e),canJQuery:n,canPromise:function(){return!!window.Promise},canEval:t.memoize((function(){try{return new Function("return true")()}catch{return!1}})),assertConfirmed:function(t){if(t.confirm&&!window.confirm(t.confirm))throw up.error.aborted("User canceled action");return!0},popCookie:function(t){let e=document.cookie.match(new RegExp(t+"=(\\w+)"))?.[1];if(e)return document.cookie=t+"=;Max-Age=0;Path=/",e},get jQuery(){return n()||up.fail("jQuery must be published as window.jQuery"),jQuery},isIE11:e,isEdge18:function(){return t.contains(navigator.userAgent," Edge/")}}}()},6346:()=>{const t=up.element;up.BodyShifter=class{constructor(){this.unshiftFns=[],this.reset()}reset(){this.unshiftNow(),this.shiftCount=0}shift(){if(this.shiftCount++,this.shiftCount>1)return;const e=up.viewport.rootHasReducedWidthFromScrollbar(),n=up.viewport.rootOverflowElement();if(this.changeStyle(n,{overflowY:"hidden"}),!e)return;const{body:r}=document,s=up.viewport.scrollbarWidth(),i=s+t.styleNumber(r,"paddingRight");this.changeStyle(r,{paddingRight:i});for(let e of up.viewport.anchoredRight()){const n=s+t.styleNumber(e,"right");this.changeStyle(e,{right:n})}}changeStyle(e,n){this.unshiftFns.push(t.setTemporaryStyle(e,n))}unshift(){this.shiftCount--,0==this.shiftCount&&this.unshiftNow()}unshiftNow(){let t;for(;t=this.unshiftFns.pop();)t()}}},3115:()=>{const t=up.util;up.Cache=class{constructor(t={}){this.config=t,this.store=this.config.store||new up.store.Memory}size(){return this.store.size()}maxSize(){return t.evalOption(this.config.size)}expiryMillis(){return t.evalOption(this.config.expiry)}normalizeStoreKey(t){return this.config.key?this.config.key(t):t.toString()}isEnabled(){return 0!==this.maxSize()&&0!==this.expiryMillis()}clear(){this.store.clear()}log(...t){this.config.logPrefix&&(t[0]=`[${this.config.logPrefix}] ${t[0]}`,up.puts("up.Cache",...t))}keys(){return this.store.keys()}each(e){t.each(this.keys(),(t=>{const n=this.store.get(t);e(t,n.value,n.timestamp)}))}makeRoomForAnotherEntry(){if(this.hasRoomForAnotherEntry())return;let t,e;this.each((function(n,r,s){(!e||e>s)&&(t=n,e=s)})),t&&this.store.remove(t)}hasRoomForAnotherEntry(){const t=this.maxSize();return!t||this.size(){const t=up.util,e=up.element;up.Change.Addition=class extends up.Change{constructor(t){super(t),this.responseDoc=t.responseDoc,this.acceptLayer=t.acceptLayer,this.dismissLayer=t.dismissLayer,this.eventPlans=t.eventPlans||[]}handleLayerChangeRequests(){this.layer.isOverlay()&&(this.tryAcceptLayerFromServer(),this.abortWhenLayerClosed(),this.layer.tryAcceptForLocation(),this.abortWhenLayerClosed(),this.tryDismissLayerFromServer(),this.abortWhenLayerClosed(),this.layer.tryDismissForLocation(),this.abortWhenLayerClosed()),this.layer.asCurrent((()=>{for(let t of this.eventPlans)up.emit(t),this.abortWhenLayerClosed()}))}tryAcceptLayerFromServer(){t.isDefined(this.acceptLayer)&&this.layer.isOverlay()&&this.layer.accept(this.acceptLayer)}tryDismissLayerFromServer(){t.isDefined(this.dismissLayer)&&this.layer.isOverlay()&&this.layer.dismiss(this.dismissLayer)}abortWhenLayerClosed(){if(this.layer.isClosed())throw up.error.aborted("Layer was closed")}setSource({oldElement:n,newElement:r,source:s}){"keep"===s&&(s=n&&up.fragment.source(n)),s&&e.setMissingAttr(r,"up-source",t.normalizeURL(s,{hash:!1}))}}},3030:()=>{const t=up.util;up.Change=class{constructor(t){this.options=t}notApplicable(t){return up.error.notApplicable(this,t)}execute(){throw up.error.notImplemented()}onFinished(){return this.options.onFinished?.()}improveHistoryValue(e,n){return!1===e||t.isString(e)?e:n}}},7422:()=>{const t=up.util;up.Change.CloseLayer=class extends up.Change.Removal{constructor(t){super(t),this.verb=t.verb,this.layer=up.layer.get(t),this.origin=t.origin,this.value=t.value,this.preventable=t.preventable??!0}execute(){if(!this.layer.isOpen())return Promise.resolve();if(up.browser.assertConfirmed(this.options),up.network.abort((t=>t.layer===this.layer)),this.emitCloseEvent().defaultPrevented&&this.preventable)throw up.error.aborted("Close event was prevented");const{parent:t}=this.layer;this.layer.peel(),this.layer.stack.remove(this.layer),t.restoreHistory(),this.handleFocus(t),this.layer.teardownHandlers(),this.layer.destroyElements(this.options),this.emitClosedEvent(t)}emitCloseEvent(){return this.layer.emit(this.buildEvent(`up:layer:${this.verb}`),{callback:this.layer.callback(`on${t.upperCaseFirst(this.verb)}`),log:`Will ${this.verb} ${this.layer}`})}emitClosedEvent(e){const n=`${this.verb}ed`,r=t.upperCaseFirst(n);return this.layer.emit(this.buildEvent(`up:layer:${n}`),{baseLayer:e,callback:this.layer.callback(`on${r}`),ensureBubbles:!0,log:`${r} ${this.layer}`})}buildEvent(t){return up.event.build(t,{layer:this.layer,value:this.value,origin:this.origin})}handleFocus(t){this.layer.overlayFocus.teardown(),t.overlayFocus?.moveToFront(),(this.layer.origin||t.element).focus({preventScroll:!0})}}},8228:()=>{const t=up.element;up.Change.DestroyFragment=class extends up.Change.Removal{constructor(t){super(t),this.layer=up.layer.get(t)||up.layer.current,this.element=this.options.element,this.animation=this.options.animation,this.log=this.options.log}async execute(){this.parent=this.element.parentNode,up.fragment.markAsDestroying(this.element),up.motion.willAnimate(this.element,this.animation,this.options)?(this.emitDestroyed(),await this.animate(),this.wipe(),this.onFinished()):(this.wipe(),this.emitDestroyed(),this.onFinished())}animate(){return up.motion.animate(this.element,this.animation,this.options)}wipe(){this.layer.asCurrent((()=>{up.syntax.clean(this.element,{layer:this.layer}),up.browser.canJQuery()?jQuery(this.element).remove():t.remove(this.element)}))}emitDestroyed(){up.fragment.emitDestroyed(this.element,{parent:this.parent,log:this.log})}}},9005:()=>{const t=up.util;up.Change.FromContent=class extends up.Change{constructor(e){super(e),this.layers=t.filter(up.layer.getAll(this.options),this.isRenderableLayer),this.origin=this.options.origin,this.preview=this.options.preview,this.mode=this.options.mode,this.origin&&(this.originLayer=up.layer.get(this.origin))}isRenderableLayer(t){return"new"===t||t.isOpen()}getPlans(){return this.plans||(this.plans=[],this.options.fragment&&(this.options.target=this.getResponseDoc().rootSelector()),this.expandIntoPlans(this.layers,this.options.target),this.expandIntoPlans(this.layers,this.options.fallback)),this.plans}expandIntoPlans(t,e){for(let n of t)for(let t of this.expandTargets(e,n)){const e={...this.options,target:t,layer:n,placement:this.defaultPlacement()},r="new"===n?new up.Change.OpenLayer(e):new up.Change.UpdateLayer(e);this.plans.push(r)}}expandTargets(t,e){return up.fragment.expandTargets(t,{layer:e,mode:this.mode,origin:this.origin})}execute(){return this.options.preload?Promise.resolve():this.seekPlan(this.executePlan.bind(this))||this.postflightTargetNotApplicable()}executePlan(t){return t.execute(this.getResponseDoc(),this.onPlanApplicable.bind(this,t))}onPlanApplicable(t){let e=this.getPlans()[0];t!==e&&up.puts("up.render()","Could not match primary target (%s). Updating a fallback target (%s).",e.target,t.target)}getResponseDoc(){if(!this.preview&&!this.responseDoc){const e=t.pick(this.options,["target","content","fragment","document","html","cspNonces"]);up.migrate.handleResponseDocOptions?.(e),"content"===this.defaultPlacement()&&(e.target=this.firstExpandedTarget(e.target)),this.responseDoc=new up.ResponseDoc(e)}return this.responseDoc}defaultPlacement(){if(!this.options.document&&!this.options.fragment)return"content"}firstExpandedTarget(t){return this.expandTargets(t||":main",this.layers[0])[0]}preflightProps(t={}){return this.seekPlan((t=>t.preflightProps()))||t.optional||this.preflightTargetNotApplicable()}preflightTargetNotApplicable(){this.targetNotApplicable("Could not find target in current page")}postflightTargetNotApplicable(){this.targetNotApplicable("Could not find common target in current page and response")}targetNotApplicable(e){if(this.getPlans().length){const n=t.uniq(t.map(this.getPlans(),"target")),r=up.layer.optionToString(this.options.layer);up.fail(e+" (tried selectors %o in %s)",n,r)}else this.layers.length?up.fail("No target selector given"):up.fail("Layer %o does not exist",this.options.layer)}seekPlan(t){for(let e of this.getPlans())try{return t(e)}catch(t){if(!up.error.notApplicable.is(t))throw t}}}},2200:()=>{const t=up.util;up.Change.FromURL=class extends up.Change{constructor(t){super(t),this.options.layer=up.layer.getAll(this.options),this.options.normalizeLayerOptions=!1,this.successOptions=this.options,this.failOptions=up.RenderOptions.deriveFailOptions(this.successOptions)}execute(){let e=this.newPageReason();if(e)return up.puts("up.render()",e),up.network.loadPage(this.options),t.unresolvablePromise();const n=this.makeRequest();return this.options.preload?n:t.always(n,(t=>this.onRequestSettled(t)))}newPageReason(){return t.isCrossOrigin(this.options.url)?"Loading cross-origin content in new page":up.browser.canPushState()?void 0:"Loading content in new page to restore history support"}makeRequest(){const e=this.preflightPropsForRenderOptions(this.successOptions),n=this.preflightPropsForRenderOptions(this.failOptions,{optional:!0}),r=t.merge(this.successOptions,e,t.renameKeys(n,up.fragment.failKey));return this.request=up.request(r),this.request}preflightPropsForRenderOptions(t,e){return new up.Change.FromContent({...t,preview:!0}).preflightProps(e)}onRequestSettled(t){if(this.response=t,t instanceof up.Response){if(this.isSuccessfulResponse())return this.updateContentFromResponse(["Loaded fragment from successful response to %s",this.request.description],this.successOptions);{const t=["Loaded fragment from failed response to %s (HTTP %d)",this.request.description,this.response.status];throw this.updateContentFromResponse(t,this.failOptions)}}throw t}isSuccessfulResponse(){return!1===this.successOptions.fail||this.response.ok}updateContentFromResponse(t,e){return this.request.assertEmitted("up:fragment:loaded",{callback:this.options.onLoaded,response:this.response,log:t,renderOptions:e}),this.augmentOptionsFromResponse(e),new up.Change.FromContent(e).execute()}augmentOptionsFromResponse(e){const n=this.response.url;let r=n,s=this.request.hash;s&&(e.hash=s,r+=s),"GET"===this.response.method?e.source=this.improveHistoryValue(e.source,n):(e.source=this.improveHistoryValue(e.source,"keep"),e.history=!!e.location),e.location=this.improveHistoryValue(e.location,r),e.title=this.improveHistoryValue(e.title,this.response.title),e.eventPlans=this.response.eventPlans;let i=this.response.target;i&&(e.target=i),e.document=this.response.text,e.acceptLayer=this.response.acceptLayer,e.dismissLayer=this.response.dismissLayer,e.document||!t.isDefined(e.acceptLayer)&&!t.isDefined(e.dismissLayer)||(e.target=":none"),e.context=t.merge(e.context,this.response.context),e.cspNonces=this.response.cspNonces}}},7050:()=>{up.Change.OpenLayer=class extends up.Change.Addition{constructor(t){super(t),this.target=t.target,this.origin=t.origin,this.baseLayer=t.baseLayer}preflightProps(){return{layer:this.baseLayer,mode:this.options.mode,context:this.buildLayer().context,target:this.target}}bestPreflightSelector(){return this.target}execute(t,e){if(":none"===this.target?this.content=document.createElement("up-none"):this.content=t.select(this.target),!this.content||this.baseLayer.isClosed())throw this.notApplicable();if(e(),up.puts("up.render()",`Opening element "${this.target}" in new overlay`),this.options.title=this.improveHistoryValue(this.options.title,t.getTitle()),this.emitOpenEvent().defaultPrevented)throw up.error.aborted("Open event was prevented");return this.baseLayer.peel(),this.layer=this.buildLayer(),up.layer.stack.push(this.layer),this.layer.createElements(this.content),this.layer.setupHandlers(),this.handleHistory(),this.setSource({newElement:this.content,source:this.options.source}),t.finalizeElement(this.content),up.hello(this.layer.element,{layer:this.layer,origin:this.origin}),this.handleLayerChangeRequests(),this.handleScroll(),this.layer.startOpenAnimation().then((()=>{this.layer.isOpen()&&this.handleFocus(),this.onFinished()})),this.layer.opening=!1,this.emitOpenedEvent(),this.abortWhenLayerClosed(),new up.RenderResult({layer:this.layer,fragments:[this.content]})}buildLayer(){const t={...this.options,opening:!0};return up.layer.build(t,(t=>this.options=up.RenderOptions.finalize(t)))}handleHistory(){"auto"===this.layer.history&&(this.layer.history=up.fragment.hasAutoHistory(this.content)),this.layer.parent.saveHistory(),this.layer.updateHistory(this.options)}handleFocus(){this.baseLayer.overlayFocus?.moveToBack(),this.layer.overlayFocus.moveToFront(),new up.FragmentFocus({fragment:this.content,layer:this.layer,autoMeans:["autofocus","layer"]}).process(this.options.focus)}handleScroll(){const t={...this.options,fragment:this.content,layer:this.layer,autoMeans:["hash","layer"]};new up.FragmentScrolling(t).process(this.options.scroll)}emitOpenEvent(){return up.emit("up:layer:open",{origin:this.origin,baseLayer:this.baseLayer,layerOptions:this.options,log:"Opening new overlay"})}emitOpenedEvent(){return this.layer.emit("up:layer:opened",{origin:this.origin,callback:this.layer.callback("onOpened"),log:`Opened new ${this.layer}`})}}},1752:()=>{up.Change.Removal=class extends up.Change{}},9441:()=>{const t=up.util,e=up.element;up.Change.UpdateLayer=class extends up.Change.Addition{constructor(t){super(t=up.RenderOptions.finalize(t)),this.layer=t.layer,this.target=t.target,this.placement=t.placement,this.context=t.context,this.parseSteps()}preflightProps(){return this.matchPreflight(),{layer:this.layer,mode:this.layer.mode,context:t.merge(this.layer.context,this.context),target:this.bestPreflightSelector()}}bestPreflightSelector(){return this.matchPreflight(),t.map(this.steps,"selector").join(", ")||":none"}execute(e,n){this.responseDoc=e,this.matchPostflight(),n(),up.puts("up.render()",`Updating "${this.bestPreflightSelector()}" in ${this.layer}`),this.options.title=this.improveHistoryValue(this.options.title,this.responseDoc.getTitle()),this.setScrollAndFocusOptions(),this.options.saveScroll&&up.viewport.saveScroll({layer:this.layer}),this.options.peel&&this.layer.peel(),t.assign(this.layer.context,this.context),"auto"===this.options.history&&(this.options.history=this.hasAutoHistory()),this.options.history&&this.layer.updateHistory(this.options),this.handleLayerChangeRequests();const r=this.steps.map((t=>this.executeStep(t)));return Promise.all(r).then((()=>(this.abortWhenLayerClosed(),this.onFinished()))),new up.RenderResult({layer:this.layer,fragments:t.map(this.steps,"newElement")})}async executeStep(t){switch(this.setSource(t),t.placement){case"swap":{let n=this.findKeepPlan(t);if(n)up.fragment.emitKept(n),this.handleFocus(t.oldElement,t),await this.handleScroll(t.oldElement,t);else{this.transferKeepableElements(t);const n=t.oldElement.parentNode,r={...t,beforeStart(){up.fragment.markAsDestroying(t.oldElement)},afterInsert:()=>{this.responseDoc.finalizeElement(t.newElement),up.hello(t.newElement,t)},beforeDetach:()=>{up.syntax.clean(t.oldElement,{layer:this.layer})},afterDetach(){e.remove(t.oldElement),up.fragment.emitDestroyed(t.oldElement,{parent:n,log:!1})},scrollNew:()=>(this.handleFocus(t.newElement,t),this.handleScroll(t.newElement,t))};await up.morph(t.oldElement,t.newElement,t.transition,r)}break}case"content":{let n=e.wrapChildren(t.oldElement),r=e.wrapChildren(t.newElement),s={...t,placement:"swap",oldElement:n,newElement:r,focus:!1};await this.executeStep(s),e.unwrap(r),await this.handleFocus(t.oldElement,t);break}case"before":case"after":{let n=e.wrapChildren(t.newElement),r="before"===t.placement?"afterbegin":"beforeend";t.oldElement.insertAdjacentElement(r,n),this.responseDoc.finalizeElement(n),up.hello(n,t),this.handleFocus(n,t),await this.handleScroll(n,t),await up.animate(n,t.transition,t),await e.unwrap(n);break}default:up.fail("Unknown placement: %o",t.placement)}}findKeepPlan(t){if(!t.keep)return;const{oldElement:n,newElement:r}=t;let s=e.booleanOrStringAttr(n,"up-keep");if(s){!0===s&&(s="&");const i={layer:this.layer,origin:n};let o;if(o=t.descendantsOnly?up.fragment.get(r,s,i):up.fragment.subtree(r,s,i)[0],o&&e.matches(o,"[up-keep]")){const t={oldElement:n,newElement:o,newData:up.syntax.data(o)};if(!up.fragment.emitKeep(t).defaultPrevented)return t}}}transferKeepableElements(t){const n=[];if(t.keep)for(let r of t.oldElement.querySelectorAll("[up-keep]")){let s=this.findKeepPlan({...t,oldElement:r,descendantsOnly:!0});if(s){const t=r.cloneNode(!0);e.replace(r,t),e.replace(s.newElement,r),n.push(s)}}t.keepPlans=n}parseSteps(){this.steps=[];for(let e of t.splitValues(this.target,","))if(":none"!==e){const t=e.match(/^(.+?)(?::(before|after))?$/);if(!t)throw up.error.invalidSelector(e);const n={...this.options,selector:t[1],placement:t[2]||this.placement||"swap"};this.steps.push(n)}}matchPreflight(){if(!this.matchedPreflight){for(let t of this.steps){const e=new up.FragmentFinder(t);if(t.oldElement||(t.oldElement=e.find()),!t.oldElement)throw this.notApplicable(`Could not find element "${this.target}" in current page`)}this.resolveOldNesting(),this.matchedPreflight=!0}}matchPostflight(){if(!this.matchedPostflight){this.matchPreflight();for(let t of this.steps){let e=this.responseDoc.select(t.selector);if(!e)throw this.notApplicable(`Could not find element "${this.target}" in server response`);t.newElement=e}this.options.hungry&&this.addHungrySteps(),this.resolveOldNesting(),this.matchedPostflight=!0}}addHungrySteps(){const t=up.fragment.all(up.radio.hungrySelector(),this.options);for(let n of t){const t=up.fragment.toTarget(n),r=this.responseDoc.select(t);if(r){const s={selector:t,oldElement:n,newElement:r,transition:e.booleanOrStringAttr(n,"transition"),placement:"swap"};this.steps.push(s)}}}containedByRivalStep(e,n){return t.some(e,(function(t){return t!==n&&("swap"===t.placement||"content"===t.placement)&&t.oldElement.contains(n.oldElement)}))}resolveOldNesting(){let e=t.uniqBy(this.steps,"oldElement");e=t.reject(e,(t=>this.containedByRivalStep(e,t))),this.steps=e}setScrollAndFocusOptions(){this.steps.forEach(((t,e)=>{e>0&&(t.scroll=!1,t.focus=!1),"swap"!==t.placement&&"content"!==t.placement||(t.scrollBehavior="auto",this.focusCapsule||(this.focusCapsule=up.FocusCapsule.preserveWithin(t.oldElement)))}))}handleFocus(t,e){return new up.FragmentFocus({...e,fragment:t,layer:this.layer,focusCapsule:this.focusCapsule,autoMeans:up.fragment.config.autoFocus}).process(e.focus)}handleScroll(t,e){return new up.FragmentScrolling({...e,fragment:t,layer:this.layer,autoMeans:up.fragment.config.autoScroll}).process(e.scroll)}hasAutoHistory(){const e=t.map(this.steps,"oldElement");return t.some(e,(t=>up.fragment.hasAutoHistory(t)))}}},1569:()=>{const t=up.util,e=up.element;up.CompilerPass=class{constructor(t,e,n={}){this.root=t,this.compilers=e,this.skipSubtrees=n.skip,this.skipSubtrees.length&&this.root.querySelector("[up-keep]")||(this.skipSubtrees=void 0),this.layer=n.layer||up.layer.get(this.root)||up.layer.current,this.errors=[]}run(){if(up.puts("up.hello()","Compiling fragment %o",this.root),this.layer.asCurrent((()=>{for(let t of this.compilers)this.runCompiler(t)})),this.errors.length)throw up.error.failed("Errors while compiling",{errors:this.errors})}runCompiler(t){const e=this.select(t.selector);if(e.length){if(t.isDefault||up.puts("up.hello()",'Compiling "%s" on %d element(s)',t.selector,e.length),t.batch)this.compileBatch(t,e);else for(let n of e)this.compileOneElement(t,n);return up.migrate.postCompile?.(e,t)}}compileOneElement(t,e){const n=[t.jQuery?up.browser.jQuery(e):e];if(1!==t.length){const t=up.syntax.data(e);n.push(t)}const r=this.applyCompilerFunction(t,e,n);let s=this.destructorPresence(r);s&&up.destructor(e,s)}compileBatch(e,n){const r=[e.jQuery?up.browser.jQuery(n):n];if(1!==e.length){const e=t.map(n,up.syntax.data);r.push(e)}const s=this.applyCompilerFunction(e,n,r);this.destructorPresence(s)&&up.fail("Compilers with { batch: true } cannot return destructors")}applyCompilerFunction(t,e,n){try{return t.apply(e,n)}catch(t){this.errors.push(t),up.log.error("up.hello()","While compiling %o: %o",e,t),up.error.emitGlobal(t)}}destructorPresence(e){if(t.isFunction(e)||t.isArray(e)&&t.every(e,t.isFunction))return e}select(n){let r=e.subtree(this.root,t.evalOption(n));return this.skipSubtrees&&(r=t.reject(r,(t=>this.isInSkippedSubtree(t)))),r}isInSkippedSubtree(e){let n;return!!t.contains(this.skipSubtrees,e)||!!(n=e.parentElement)&&this.isInSkippedSubtree(n)}}},3742:()=>{const t=up.util;up.Config=class{constructor(t=(()=>({}))){this.blueprintFn=t,this.reset()}reset(){t.assign(this,this.blueprintFn())}}},2737:()=>{const t=up.util,e=up.element;up.CSSTransition=class{constructor(e,n,r){this.element=e,this.lastFrameKebab=n,this.lastFrameKeysKebab=Object.keys(this.lastFrameKebab),t.some(this.lastFrameKeysKebab,(t=>t.match(/A-Z/)))&&up.fail("Animation keys must be kebab-case"),this.finishEvent=r.finishEvent,this.duration=r.duration,this.easing=r.easing,this.finished=!1}start(){return 0===this.lastFrameKeysKebab.length?(this.finished=!0,Promise.resolve()):(this.deferred=t.newDeferred(),this.pauseOldTransition(),this.startTime=new Date,this.startFallbackTimer(),this.listenToFinishEvent(),this.listenToTransitionEnd(),this.startMotion(),this.deferred.promise())}listenToFinishEvent(){this.finishEvent&&(this.stopListenToFinishEvent=up.on(this.element,this.finishEvent,this.onFinishEvent.bind(this)))}onFinishEvent(t){t.stopPropagation(),this.finish()}startFallbackTimer(){this.fallbackTimer=t.timer(this.duration+100,(()=>{this.finish()}))}stopFallbackTimer(){clearTimeout(this.fallbackTimer)}listenToTransitionEnd(){this.stopListenToTransitionEnd=up.on(this.element,"transitionend",this.onTransitionEnd.bind(this))}onTransitionEnd(e){if(e.target!==this.element)return;if(new Date-this.startTime<=.25*this.duration)return;const n=e.propertyName;t.contains(this.lastFrameKeysKebab,n)&&this.finish()}finish(){this.finished||(this.finished=!0,this.stopFallbackTimer(),this.stopListenToFinishEvent?.(),this.stopListenToTransitionEnd?.(),e.concludeCSSTransition(this.element),this.resumeOldTransition(),this.deferred.resolve())}pauseOldTransition(){const t=e.style(this.element,["transitionProperty","transitionDuration","transitionDelay","transitionTimingFunction"]);if(e.hasCSSTransition(t)){if("all"!==t.transitionProperty){const n=t.transitionProperty.split(/\s*,\s*/),r=e.style(this.element,n);this.setOldTransitionTargetFrame=e.setTemporaryStyle(this.element,r)}this.setOldTransition=e.concludeCSSTransition(this.element)}}resumeOldTransition(){this.setOldTransitionTargetFrame?.(),this.setOldTransition?.()}startMotion(){e.setStyle(this.element,{transitionProperty:Object.keys(this.lastFrameKebab).join(", "),transitionDuration:`${this.duration}ms`,transitionTimingFunction:this.easing}),e.setStyle(this.element,this.lastFrameKebab)}}},3635:()=>{const t=up.util;up.DestructorPass=class{constructor(t,e){this.fragment=t,this.options=e,this.errors=[]}run(){for(let e of this.selectCleanables()){let n=t.pluckKey(e,"upDestructors");if(n)for(let t of n)this.applyDestructorFunction(t,e);e.classList.remove("up-can-clean")}if(this.errors.length)throw up.error.failed("Errors while destroying",{errors:this.errors})}selectCleanables(){const t={...this.options,destroying:!0};return up.fragment.subtree(this.fragment,".up-can-clean",t)}applyDestructorFunction(t,e){try{t()}catch(t){this.errors.push(t),up.log.error("up.destroy()","While destroying %o: %o",e,t),up.error.emitGlobal(t)}}}},1906:()=>{const t=up.util,e=up.element;up.EventEmitter=class extends up.Record{keys(){return["target","event","baseLayer","callback","log","ensureBubbles"]}emit(){return this.logEmission(),this.baseLayer?this.baseLayer.asCurrent((()=>this.dispatchEvent())):this.dispatchEvent(),this.event}dispatchEvent(){this.target.dispatchEvent(this.event),this.ensureBubbles&&e.isDetached(this.target)&&document.dispatchEvent(this.event),this.callback?.(this.event)}assertEmitted(){const t=this.emit();if(t.defaultPrevented)throw up.error.aborted(`Event ${t.type} was prevented`)}logEmission(){if(!up.log.isEnabled())return;let e,n=this.log;t.isArray(n)?[n,...e]=n:e=[];const{type:r}=this.event;t.isString(n)?up.puts(r,n,...e):!1!==n&&up.puts(r,`Event ${r}`)}static fromEmitArgs(n,r={}){let s,i=t.extractOptions(n);return i=t.merge(r,i),t.isElementish(n[0])?i.target=e.get(n.shift()):n[0]instanceof up.Layer&&(i.layer=n.shift()),i.layer&&(s=up.layer.get(i.layer),null==i.target&&(i.target=s.element),null==i.baseLayer&&(i.baseLayer=s)),i.baseLayer&&(i.baseLayer=up.layer.get(i.baseLayer)),t.isString(i.target)?i.target=up.fragment.get(i.target,{layer:i.layer}):i.target||(i.target=document),n[0]?.preventDefault?(i.event=n[0],null==i.log&&(i.log=n[0].log)):t.isString(n[0])?i.event=up.event.build(n[0],i):i.event=up.event.build(i),new this(i)}}},4158:()=>{const t=up.util,e=up.element;up.EventListener=class extends up.Record{keys(){return["element","eventType","selector","callback","jQuery","guard","baseLayer","passive","once","beforeBoot"]}constructor(t){super(t),this.key=this.constructor.buildKey(t),this.isDefault=up.framework.evaling,this.beforeBoot??(this.beforeBoot=0===this.eventType.indexOf("up:framework:")),this.nativeCallback=this.nativeCallback.bind(this)}bind(){var t;const e=(t=this.element).upEventListeners||(t.upEventListeners={});e[this.key]&&up.fail("up.on(): The %o callback %o cannot be registered more than once",this.eventType,this.callback),e[this.key]=this,this.element.addEventListener(...this.addListenerArgs())}addListenerArgs(){const t=[this.eventType,this.nativeCallback];return this.passive&&up.browser.canPassiveEventListener()&&t.push({passive:!0}),t}unbind(){let t=this.element.upEventListeners;t&&delete t[this.key],this.element.removeEventListener(...this.addListenerArgs())}nativeCallback(n){if(up.framework.beforeBoot&&!this.beforeBoot)return;this.once&&this.unbind();let r=n.target;if(this.selector&&(r=e.closest(r,t.evalOption(this.selector))),(!this.guard||this.guard(n))&&r){const t=[n,this.jQuery?up.browser.jQuery(r):r],e=this.callback.length;if(1!==e&&2!==e){const e=up.syntax.data(r);t.push(e)}const s=this.callback.bind(r,...t);this.baseLayer?this.baseLayer.asCurrent(s):s()}}static fromElement(t){let e=t.element.upEventListeners;if(e)return e[this.buildKey(t)]}static buildKey(e){var n;return(n=e.callback).upUid||(n.upUid=t.uid()),[e.eventType,e.selector,e.callback.upUid].join("|")}static allNonDefault(e){let n=e.upEventListeners;if(n){const e=t.values(n);return t.reject(e,"isDefault")}return[]}}},3139:()=>{const t=up.util;up.EventListenerGroup=class extends up.Record{keys(){return["elements","eventTypes","selector","callback","jQuery","guard","baseLayer","passive","once","beforeBoot"]}bind(){const e=[];return this.eachListenerAttributes((function(t){const n=new up.EventListener(t);return n.bind(),e.push(n.unbind.bind(n))})),t.sequence(e)}eachListenerAttributes(t){for(let e of this.elements)for(let n of this.eventTypes)t(this.listenerAttributes(e,n))}listenerAttributes(t,e){return{...this.attributes(),element:t,eventType:e}}unbind(){this.eachListenerAttributes((function(t){let e=up.EventListener.fromElement(t);e&&e.unbind()}))}static fromBindArgs(e,n){const r=(e=t.copy(e)).pop();let s;s=e[0].addEventListener?[e.shift()]:t.isJQuery(e[0])||t.isList(e[0])&&e[0][0].addEventListener?e.shift():[document];let i=t.splitValues(e.shift()),o=up.migrate.fixEventTypes;o&&(i=o(i));const a=t.extractOptions(e);return new this({elements:s,eventTypes:i,selector:e[0],callback:r,...a,...n})}}},6866:()=>{const t=up.util,e=up.element;up.FieldObserver=class{constructor(t,n,r){this.scheduleValues=this.scheduleValues.bind(this),this.isNewValues=this.isNewValues.bind(this),this.callback=r,this.fields=e.list(t),this.delay=n.delay,this.batch=n.batch}start(){this.scheduledValues=null,this.processedValues=this.readFieldValues(),this.currentTimer=void 0,this.callbackRunning=!1,this.unbind=up.on(this.fields,"input change",(()=>this.check()))}stop(){this.unbind(),this.cancelTimer()}cancelTimer(){clearTimeout(this.currentTimer),this.currentTimer=void 0}scheduleTimer(){this.cancelTimer(),this.currentTimer=t.timer(this.delay,(()=>{this.currentTimer=void 0,this.requestCallback()}))}scheduleValues(t){this.scheduledValues=t,this.scheduleTimer()}isNewValues(e){return!t.isEqual(e,this.processedValues)&&!t.isEqual(this.scheduledValues,e)}async requestCallback(){if(null!==this.scheduledValues&&!this.currentTimer&&!this.callbackRunning){const e=this.changedValues(this.processedValues,this.scheduledValues);this.processedValues=this.scheduledValues,this.scheduledValues=null,this.callbackRunning=!0;const n=[];if(this.batch)n.push(this.callback(e));else for(let t in e){const r=e[t];n.push(this.callback(r,t))}await t.allSettled(n),this.callbackRunning=!1,this.requestCallback()}}changedValues(e,n){const r={};let s=Object.keys(e);s=s.concat(Object.keys(n)),s=t.uniq(s);for(let i of s){const s=e[i],o=n[i];t.isEqual(s,o)||(r[i]=o)}return r}readFieldValues(){return up.Params.fromFields(this.fields).toObject()}check(){const t=this.readFieldValues();this.isNewValues(t)&&this.scheduleValues(t)}}},665:()=>{const t=up.element,e=["selectionStart","selectionEnd","scrollLeft","scrollTop"];function n(t,n){for(let r of e)try{n[r]=t[r]}catch(t){}}function r(e){const n=document.activeElement;if(t.isInSubtree(e,n))return n}up.FocusCapsule=class extends up.Record{keys(){return["selector","oldElement"].concat(e)}restore(e,r){if(!this.wasLost())return;let s=t.get(e,this.selector);return s?(n(this,s),up.focus(s,r),!0):void 0}static preserveWithin(t){let e=r(t);if(e){const r={oldElement:t,selector:up.fragment.toTarget(e)};return n(e,r),new this(r)}}wasLost(){return!r(this.oldElement)}}},2587:()=>{const t=/^([^ >+(]+) (.+)$/;up.FragmentFinder=class{constructor(t){this.options=t,this.origin=this.options.origin,this.selector=this.options.selector,this.layer=this.options.layer}find(){return this.findAroundOrigin()||this.findInLayer()}findAroundOrigin(){if(this.origin&&up.fragment.config.matchAroundOrigin&&!up.element.isDetached(this.origin))return this.findClosest()||this.findInVicinity()}findClosest(){return up.fragment.closest(this.origin,this.selector,this.options)}findInVicinity(){let e=this.selector.match(t);if(e){let t=up.fragment.closest(this.origin,e[1],this.options);if(t)return up.fragment.getDumb(t,e[2])}}findInLayer(){return up.fragment.getDumb(this.selector,this.options)}}},7031:()=>{const t=up.util,e=up.element,n={preventScroll:!0};up.FragmentFocus=class extends up.FragmentProcessor{keys(){return super.keys().concat(["hash","focusCapsule"])}processPrimitive(e){switch(e){case"keep":return this.restoreFocus();case"target":case!0:return this.focusElement(this.fragment);case"layer":return this.focusElement(this.layer.getFocusElement());case"main":return this.focusSelector(":main");case"hash":return this.focusHash();case"autofocus":return this.autofocus();default:if(t.isString(e))return this.focusSelector(e)}}processElement(t){return this.focusElement(t)}resolveCondition(t){return"lost"===t?this.wasFocusLost():super.resolveCondition(t)}focusSelector(t){let e=this.findSelector(t);if(e)return this.focusElement(e)}restoreFocus(){return this.focusCapsule?.restore(this.fragment,n)}autofocus(){let t=e.subtree(this.fragment,"[autofocus]")[0];if(t)return up.focus(t,n),!0}focusElement(t){return up.viewport.makeFocusable(t),up.focus(t,n),!0}focusHash(){let t=up.viewport.firstHashTarget(this.hash,{layer:this.layer});if(t)return this.focusElement(t)}wasFocusLost(){return this.focusCapsule?.wasLost()}}},2828:()=>{const t=up.util;up.FragmentProcessor=class extends up.Record{keys(){return["fragment","autoMeans","origin","layer"]}process(t){return this.tryProcess(t)}tryProcess(e){if(t.isArray(e))return t.find(e,(t=>this.tryProcess(t)));if(t.isFunction(e))return this.tryProcess(e(this.fragment,this.attributes()));if(t.isElement(e))return this.processElement();if(t.isString(e)){if("auto"===e)return this.tryProcess(this.autoMeans);let t=e.match(/^(.+?)-if-(.+?)$/);if(t)return this.resolveCondition(t[2])&&this.process(t[1])}return this.processPrimitive(e)}resolveCondition(t){if("main"===t)return up.fragment.contains(this.fragment,":main")}findSelector(t){const e={layer:this.layer,origin:this.origin};let n=up.fragment.get(this.fragment,t,e)||up.fragment.get(t,e);if(n)return n;up.warn("up.render()",'Could not find an element matching "%s"',t)}}},4850:()=>{const t=up.util;up.FragmentScrolling=class extends up.FragmentProcessor{keys(){return super.keys().concat(["hash","mode","revealTop","revealMax","revealSnap","scrollBehavior","scrollSpeed"])}constructor(t){up.migrate.handleScrollOptions?.(t),super(t)}process(t){return super.process(t)||Promise.resolve()}processPrimitive(e){switch(e){case"reset":return this.reset();case"layer":return this.revealLayer();case"main":return this.revealSelector(":main");case"restore":return this.restore();case"hash":return this.hash&&up.viewport.revealHash(this.hash,this.attributes());case"target":case"reveal":case!0:return this.revealElement(this.fragment);default:if(t.isString(e))return this.revealSelector(e)}}processElement(t){return this.revealElement(t)}revealElement(t){return up.reveal(t,this.attributes())}revealSelector(t){let e=this.findSelector(t);if(e)return this.revealElement(e)}revealLayer(){return this.revealElement(this.layer.getBoxElement())}reset(){return up.viewport.resetScroll({...this.attributes(),around:this.fragment})}restore(){return up.viewport.restoreScroll({...this.attributes(),around:this.fragment})}}},6267:()=>{const t=up.util,e=up.element;up.HTMLWrapper=class{constructor(t){this.tagName=t;const e=`<${this.tagName}[^>]*>`,n=``;this.pattern=new RegExp(e+"(.|\\s)*?"+n,"ig"),this.attrName=`up-wrapped-${this.tagName}`}strip(t){return t.replace(this.pattern,"")}wrap(t){return t.replace(this.pattern,this.wrapMatch.bind(this))}wrapMatch(e){return this.didWrap=!0,''}unwrap(t){if(this.didWrap)for(let n of t.querySelectorAll(`meta[name='${this.attrName}']`)){const t=n.getAttribute("value"),r=e.createFromHTML(t);e.replace(n,r)}}}},7956:()=>{const t=up.element,e=up.util;up.Layer=class extends up.Record{keys(){return["element","stack","history","mode","context","lastScrollTops"]}defaults(){return{context:{},lastScrollTops:new up.Cache({size:30,key:up.history.normalizeURL})}}constructor(t={}){if(super(t),!this.mode)throw"missing { mode } option"}setupHandlers(){up.link.convertClicks(this)}teardownHandlers(){}mainTargets(){return up.layer.mainTargets(this.mode)}sync(){}accept(){throw up.error.notImplemented()}dismiss(){throw up.error.notImplemented()}peel(t){this.stack.peel(this,t)}evalOption(t){return e.evalOption(t,this)}isCurrent(){return this.stack.isCurrent(this)}isFront(){return this.stack.isFront(this)}isRoot(){return this.stack.isRoot(this)}isOverlay(){return this.stack.isOverlay(this)}isOpen(){return this.stack.isOpen(this)}isClosed(){return this.stack.isClosed(this)}get parent(){return this.stack.parentOf(this)}get child(){return this.stack.childOf(this)}get ancestors(){return this.stack.ancestorsOf(this)}get descendants(){return this.stack.descendantsOf(this)}get index(){return this.stack.indexOf(this)}getContentElement(){return this.contentElement||this.element}getBoxElement(){return this.boxElement||this.element}getFocusElement(){return this.getBoxElement()}getFirstSwappableElement(){throw up.error.notImplemented()}contains(e){return t.closest(e,up.layer.anySelector())===this.element}on(...t){return this.buildEventListenerGroup(t).bind()}off(...t){return this.buildEventListenerGroup(t).unbind()}buildEventListenerGroup(t){return up.EventListenerGroup.fromBindArgs(t,{guard:t=>this.containsEventTarget(t),elements:[this.element],baseLayer:this})}containsEventTarget(t){return this.contains(t.target)}wasHitByMouseEvent(t){const e=document.elementFromPoint(t.clientX,t.clientY);return!e||this.contains(e)}buildEventEmitter(t){return up.EventEmitter.fromEmitArgs(t,{layer:this})}emit(...t){return this.buildEventEmitter(t).emit()}isDetached(){return t.isDetached(this.element)}saveHistory(){this.isHistoryVisible()&&(this.savedTitle=document.title,this.savedLocation=up.history.location)}restoreHistory(){this.showsLiveHistory()&&(this.savedLocation&&up.history.push(this.savedLocation),this.savedTitle&&(document.title=this.savedTitle))}asCurrent(t){return this.stack.asCurrent(this,t)}updateHistory(t){e.isString(t.title)&&(this.title=t.title),e.isString(t.location)&&(this.location=t.location)}isHistoryVisible(){return this.history&&(this.isRoot()||this.parent.isHistoryVisible())}showsLiveHistory(){return this.isHistoryVisible()&&this.isFront()&&(up.history.config.enabled||this.isRoot())}get title(){return this.showsLiveHistory()?document.title:this.savedTitle}set title(t){this.savedTitle=t,this.showsLiveHistory()&&(document.title=t)}get location(){return this.showsLiveHistory()?up.history.location:this.savedLocation}set location(t){this.savedLocation!==(t=up.history.normalizeURL(t))&&(this.savedLocation=t,this.emit("up:layer:location:changed",{location:t,log:!1}),this.showsLiveHistory()&&up.history.push(t))}selector(t){return this.constructor.selector(t)}static selector(t){throw up.error.notImplemented()}toString(){throw up.error.notImplemented()}affix(...e){return t.affix(this.getFirstSwappableElement(),...e)}[e.isEqual.key](t){return this.constructor===t.constructor&&this.element===t.element}}},7101:()=>{var t;up.Layer.Cover=((t=class extends up.Layer.OverlayWithViewport{}).mode="cover",t)},5580:()=>{var t;up.Layer.Drawer=((t=class extends up.Layer.OverlayWithViewport{}).mode="drawer",t)},86:()=>{var t;up.Layer.Modal=((t=class extends up.Layer.OverlayWithViewport{}).mode="modal",t)},7403:()=>{const t=up.element,e=up.util;up.Layer.Overlay=class extends up.Layer{keys(){return super.keys().concat(["position","align","size","origin","class","backdrop","openAnimation","closeAnimation","openDuration","closeDuration","openEasing","closeEasing","backdropOpenAnimation","backdropCloseAnimation","dismissable","dismissLabel","dismissAriaLabel","onOpened","onAccept","onAccepted","onDismiss","onDismissed","acceptEvent","dismissEvent","acceptLocation","dismissLocation","opening"])}constructor(t){super(t),!0===this.dismissable?this.dismissable=["button","key","outside"]:!1===this.dismissable?this.dismissable=[]:this.dismissable=e.splitValues(this.dismissable),this.acceptLocation&&(this.acceptLocation=new up.URLPattern(this.acceptLocation)),this.dismissLocation&&(this.dismissLocation=new up.URLPattern(this.dismissLocation))}callback(t){let e=this[t];if(e)return e.bind(this)}createElement(t){this.nesting||(this.nesting=this.suggestVisualNesting());const n=e.compactObject(e.pick(this,["align","position","size","class","nesting"]));this.element=this.affixPart(t,null,n)}createBackdropElement(t){this.backdropElement=this.affixPart(t,"backdrop")}createViewportElement(t){this.viewportElement=this.affixPart(t,"viewport",{"up-viewport":""})}createBoxElement(t){this.boxElement=this.affixPart(t,"box")}createContentElement(t,e){this.contentElement=this.affixPart(t,"content"),this.contentElement.appendChild(e)}createDismissElement(e){return this.dismissElement=this.affixPart(e,"dismiss",{"up-dismiss":'":button"',"aria-label":this.dismissAriaLabel}),t.affix(this.dismissElement,'span[aria-hidden="true"]',{text:this.dismissLabel})}affixPart(e,n,r={}){return t.affix(e,this.selector(n),r)}static selector(t){return e.compact(["up",this.mode,t]).join("-")}suggestVisualNesting(){const{parent:t}=this;return this.mode===t.mode?1+t.suggestVisualNesting():0}setupHandlers(){super.setupHandlers(),this.overlayFocus=new up.OverlayFocus(this),this.supportsDismissMethod("button")&&this.createDismissElement(this.getBoxElement()),this.supportsDismissMethod("outside")&&(this.unbindParentClicked=this.parent.on("up:click",((t,e)=>{const n=this.origin&&this.origin.contains(e);this.onOutsideClicked(t,n)})),this.viewportElement&&up.on(this.viewportElement,"up:click",(t=>{t.target===this.viewportElement&&this.onOutsideClicked(t,!0)}))),this.supportsDismissMethod("key")&&(this.unbindEscapePressed=up.event.onEscape((t=>this.onEscapePressed(t)))),this.registerClickCloser("up-accept",((t,e)=>{this.accept(t,e)})),this.registerClickCloser("up-dismiss",((t,e)=>{this.dismiss(t,e)})),up.migrate.registerLayerCloser?.(this),this.registerEventCloser(this.acceptEvent,this.accept),this.registerEventCloser(this.dismissEvent,this.dismiss)}onOutsideClicked(t,e){e&&up.event.halt(t),this.dismiss(":outside")}onEscapePressed(t){if(this.isFront()){let e=up.form.focusedField();e?e.blur():this.supportsDismissMethod("key")&&(up.event.halt(t),this.dismiss(":key"))}}registerClickCloser(e,n){this.on("up:click",`[${e}]`,(function(r){up.event.halt(r);const s=r.target,i=t.jsonAttr(s,e),o={origin:s},a=new up.OptionsParser(o,s);a.booleanOrString("animation"),a.string("easing"),a.number("duration"),a.string("confirm"),n(i,o)}))}registerEventCloser(t,e){if(t)return this.on(t,(t=>{t.preventDefault(),e.call(this,t)}))}tryAcceptForLocation(){this.tryCloseForLocation(this.acceptLocation,this.accept)}tryDismissForLocation(){this.tryCloseForLocation(this.dismissLocation,this.dismiss)}tryCloseForLocation(t,e){let n,r;if(t&&(n=this.location)&&(r=t.recognize(n))){const t={...r,location:n};e.call(this,t)}}teardownHandlers(){super.teardownHandlers(),this.unbindParentClicked?.(),this.unbindEscapePressed?.(),this.overlayFocus.teardown()}destroyElements(t){const e={...t,animation:()=>this.startCloseAnimation(t),onFinished:()=>{this.onElementsRemoved(),t.onFinished?.()},log:!1};up.destroy(this.element,e)}onElementsRemoved(){}startAnimation(t={}){const e=up.animate(this.getBoxElement(),t.boxAnimation,t);let n;return this.backdrop&&!up.motion.isNone(t.boxAnimation)&&(n=up.animate(this.backdropElement,t.backdropAnimation,t)),Promise.all([e,n])}startOpenAnimation(t={}){return this.startAnimation({boxAnimation:t.animation??this.evalOption(this.openAnimation),backdropAnimation:"fade-in",easing:t.easing||this.openEasing,duration:t.duration||this.openDuration}).then((()=>this.wasEverVisible=!0))}startCloseAnimation(t={}){const e=this.wasEverVisible&&(t.animation??this.evalOption(this.closeAnimation));return this.startAnimation({boxAnimation:e,backdropAnimation:"fade-out",easing:t.easing||this.closeEasing,duration:t.duration||this.closeDuration})}accept(t=null,e={}){return this.executeCloseChange("accept",t,e)}dismiss(t=null,e={}){return this.executeCloseChange("dismiss",t,e)}supportsDismissMethod(t){return e.contains(this.dismissable,t)}executeCloseChange(t,e,n){return n={...n,verb:t,value:e,layer:this},new up.Change.CloseLayer(n).execute()}getFirstSwappableElement(){return this.getContentElement().children[0]}toString(){return`${this.mode} overlay`}}},6412:()=>{up.Layer.OverlayWithTether=class extends up.Layer.Overlay{createElements(t){this.origin||up.fail("Missing { origin } option"),this.tether=new up.Tether({anchor:this.origin,align:this.align,position:this.position}),this.createElement(this.tether.parent),this.createContentElement(this.element,t),this.tether.start(this.element)}onElementsRemoved(){this.tether.stop()}sync(){this.isOpen()&&(this.isDetached()||this.tether.isDetached()?this.dismiss(":detached",{animation:!1,preventable:!1}):this.tether.sync())}}},7965:()=>{var t;up.Layer.OverlayWithViewport=((t=class extends up.Layer.Overlay{static getParentElement(){return document.body}createElements(t){this.shiftBody(),this.createElement(this.constructor.getParentElement()),this.backdrop&&this.createBackdropElement(this.element),this.createViewportElement(this.element),this.createBoxElement(this.viewportElement),this.createContentElement(this.boxElement,t)}onElementsRemoved(){this.unshiftBody()}shiftBody(){this.constructor.bodyShifter.shift()}unshiftBody(){this.constructor.bodyShifter.unshift()}sync(){this.isDetached()&&this.isOpen()&&this.constructor.getParentElement().appendChild(this.element)}}).bodyShifter=new up.BodyShifter,t)},4552:()=>{var t;up.Layer.Popup=((t=class extends up.Layer.OverlayWithTether{}).mode="popup",t)},7771:()=>{var t;const e=up.util,n=up.element;up.Layer.Root=((t=class extends up.Layer{constructor(t){super(t),this.setupHandlers()}get element(){return n.root}getFirstSwappableElement(){return document.body}static selector(){return"html"}setupHandlers(){this.element.upHandlersApplied||(this.element.upHandlersApplied=!0,super.setupHandlers())}sync(){this.setupHandlers()}accept(){this.cannotCloseRoot()}dismiss(){this.cannotCloseRoot()}cannotCloseRoot(){throw up.error.failed("Cannot close the root layer")}reset(){e.assign(this,this.defaults())}toString(){return"root layer"}}).mode="root",t)},6066:()=>{const t=up.util,e=up.element;up.LayerLookup=class{constructor(e,...n){this.stack=e;const r=t.parseArgIntoOptions(n,"layer");if(!1!==r.normalizeLayerOptions&&up.layer.normalizeOptions(r),this.values=t.splitValues(r.layer),this.origin=r.origin,this.baseLayer=r.baseLayer||this.stack.current,t.isString(this.baseLayer)){const t={...r,baseLayer:this.stack.current,normalizeLayerOptions:!1};this.baseLayer=new this.constructor(this.stack,this.baseLayer,t).first()}}originLayer(){if(this.origin)return this.forElement(this.origin)}first(){return this.all()[0]}all(){let e=t.flatMap(this.values,(t=>this.resolveValue(t)));return e=t.compact(e),e=t.uniq(e),e}forElement(n){return n=e.get(n),t.find(this.stack.reversed(),(t=>t.contains(n)))}forIndex(t){return this.stack[t]}resolveValue(e){if(e instanceof up.Layer)return e;if(t.isNumber(e))return this.forIndex(e);if(/^\d+$/.test(e))return this.forIndex(Number(e));if(t.isElementish(e))return this.forElement(e);switch(e){case"any":return[this.baseLayer,...this.stack.reversed()];case"current":return this.baseLayer;case"closest":return this.stack.selfAndAncestorsOf(this.baseLayer);case"parent":return this.baseLayer.parent;case"ancestor":case"ancestors":return this.baseLayer.ancestors;case"child":return this.baseLayer.child;case"descendant":case"descendants":return this.baseLayer.descendants;case"new":return"new";case"root":return this.stack.root;case"overlay":case"overlays":return t.reverse(this.stack.overlays);case"front":return this.stack.front;case"origin":return this.originLayer();default:return up.fail("Unknown { layer } option: %o",e)}}}},6387:()=>{const t=up.util;up.LayerStack=class extends Array{constructor(){super(),Object.setPrototypeOf(this,up.LayerStack.prototype),this.currentOverrides=[],this.push(this.buildRoot())}buildRoot(){return up.layer.build({mode:"root",stack:this})}remove(e){t.remove(this,e)}peel(e,n){const r=t.reverse(e.descendants),s={...n,preventable:!1};for(let t of r)t.dismiss(":peel",s)}reset(){this.peel(this.root,{animation:!1}),this.currentOverrides=[],this.root.reset()}isOpen(t){return t.index>=0}isClosed(t){return!this.isOpen(t)}parentOf(t){return this[t.index-1]}childOf(t){return this[t.index+1]}ancestorsOf(e){return t.reverse(this.slice(0,e.index))}selfAndAncestorsOf(t){return[t,...t.ancestors]}descendantsOf(t){return this.slice(t.index+1)}isRoot(t){return this[0]===t}isOverlay(t){return!this.isRoot(t)}isCurrent(t){return this.current===t}isFront(t){return this.front===t}get(...t){return this.getAll(...t)[0]}getAll(...t){return new up.LayerLookup(this,...t).all()}sync(){for(let t of this)t.sync()}asCurrent(t,e){try{return this.currentOverrides.push(t),e()}finally{this.currentOverrides.pop()}}reversed(){return t.reverse(this)}dismissOverlays(e=null,n={}){n.dismissable=!1;for(let r of t.reverse(this.overlays))r.dismiss(e,n)}[t.copy.key](){return t.copyArrayLike(this)}get count(){return this.length}get root(){return this[0]}get overlays(){return this.root.descendants}get current(){return t.last(this.currentOverrides)||this.front}get front(){return t.last(this)}}},5390:()=>{up.LinkFeedbackURLs=class{constructor(t){const e=up.feedback.normalizeURL;if(this.isSafe=up.link.isSafe(t),this.isSafe){const n=t.getAttribute("href");n&&"#"!==n&&(this.href=e(n));const r=t.getAttribute("up-href");r&&(this.upHREF=e(r));const s=t.getAttribute("up-alias");s&&(this.aliasPattern=new up.URLPattern(s,e))}}isCurrent(t){return this.isSafe&&!!(this.href&&this.href===t||this.upHREF&&this.upHREF===t||this.aliasPattern&&this.aliasPattern.test(t,!1))}}},2618:()=>{const t=up.util,e=up.element;up.LinkPreloader=class{constructor(){this.considerPreload=this.considerPreload.bind(this)}observeLink(t){up.link.isSafe(t)&&(this.on(t,"mouseenter",(t=>this.considerPreload(t,!0))),this.on(t,"mousedown touchstart",(t=>this.considerPreload(t))),this.on(t,"mouseleave",(t=>this.stopPreload(t))))}on(t,e,n){up.on(t,e,{passive:!0},n)}considerPreload(t,e){const n=t.target;n!==this.currentLink&&(this.reset(),this.currentLink=n,up.link.shouldFollowEvent(t,n)&&(e?this.preloadAfterDelay(n):this.preloadNow(n)))}stopPreload(t){if(t.target===this.currentLink)return this.reset()}reset(){this.currentLink&&(clearTimeout(this.timer),this.currentRequest?.preload&&this.currentRequest.abort(),this.currentLink=void 0,this.currentRequest=void 0)}preloadAfterDelay(n){const r=e.numberAttr(n,"up-delay")??up.link.config.preloadDelay;this.timer=t.timer(r,(()=>this.preloadNow(n)))}preloadNow(t){e.isDetached(t)?this.reset():(up.log.muteUncriticalRejection(up.link.preload(t,{onQueued:t=>this.currentRequest=t})),this.queued=!0)}}},7792:()=>{const t=up.util,e=up.element;up.MotionController=class{constructor(t){this.activeClass=`up-${t}`,this.dataKey=`up-${t}-finished`,this.selector=`.${this.activeClass}`,this.finishEvent=`up:${t}:finish`,this.finishCount=0,this.clusterCount=0}async startFunction(n,r,s={}){n=e.list(n);const i=()=>up.log.muteUncriticalRejection(r());if(s.trackMotion=s.trackMotion??up.motion.isEnabled(),!1!==s.trackMotion){s.trackMotion=!1,await this.finish(n);let t=this.whileForwardingFinishEvent(n,i);return this.markCluster(n,t),t=t.then((()=>this.unmarkCluster(n))),await t}await t.microtask(i)}startMotion(t,e,n={}){const r=up.on(t,this.finishEvent,(()=>e.finish()));let s=this.startFunction(t,(()=>e.start()),n);return s=s.then(r),s}finish(e){if(this.finishCount++,0===this.clusterCount||!up.motion.isEnabled())return Promise.resolve();e=this.expandFinishRequest(e);const n=t.map(e,this.finishOneElement.bind(this));return Promise.all(n)}expandFinishRequest(n){return n?t.flatMap(n,(t=>e.list(e.closest(t,this.selector),e.all(t,this.selector)))):e.all(this.selector)}isActive(t){return t.classList.contains(this.activeClass)}finishOneElement(t){return this.emitFinishEvent(t),this.whenElementFinished(t)}emitFinishEvent(t,e={}){return e={target:t,log:!1,...e},up.emit(this.finishEvent,e)}whenElementFinished(t){return t[this.dataKey]||Promise.resolve()}markCluster(t,e){this.clusterCount++;for(let n of t)n.classList.add(this.activeClass),n[this.dataKey]=e}unmarkCluster(t){this.clusterCount--;for(let e of t)e.classList.remove(this.activeClass),delete e[this.dataKey]}whileForwardingFinishEvent(t,e){if(t.length<2)return e();const n=up.on(t,this.finishEvent,(e=>{if(!e.forwarded)for(let n of t)n!==e.target&&this.isActive(n)&&this.emitFinishEvent(n,{forwarded:!0})}));return e().then(n)}async reset(){await this.finish(),this.finishCount=0,this.clusterCount=0}}},4308:()=>{const t=up.util,e=up.element;up.NonceableCallback=class{constructor(t,e){this.script=t,this.nonce=e}static fromString(t){let e=t.match(/^(nonce-([^\s]+)\s)?(.*)$/);return new this(e[3],e[2])}toFunction(...t){if(up.browser.canEval())return new Function(...t,this.script);if(this.nonce){let e=this;return function(...n){return e.runAsNoncedFunction(this,t,n)}}return this.cannotRun.bind(this)}toString(){return`nonce-${this.nonce} ${this.script}`}cannotRun(){throw new Error(`Your Content Security Policy disallows inline JavaScript (${this.script}). See https://unpoly.com/csp for solutions.`)}runAsNoncedFunction(t,e,n){let r,s=`\n try {\n up.noncedEval.value = (function(${e.join(",")}) {\n ${this.script}\n }).apply(up.noncedEval.thisArg, up.noncedEval.args)\n } catch (error) {\n up.noncedEval.error = error\n }\n `;try{if(up.noncedEval={args:n,thisArg:t},r=up.element.affix(document.body,"script",{nonce:this.nonce,text:s}),up.noncedEval.error)throw up.noncedEval.error;return up.noncedEval.value}finally{up.noncedEval=void 0,r&&up.element.remove(r)}}allowedBy(e){return this.nonce&&t.contains(e,this.nonce)}static adoptNonces(n,r){if(!r?.length)return;const s=t.memoize(up.protocol.cspNonce);t.each(up.protocol.config.nonceableAttributes,(i=>{let o=e.subtree(n,`[${i}^="nonce-"]`);t.each(o,(t=>{let e=t.getAttribute(i),n=this.fromString(e),o=(t,...n)=>up.log.warn("up.render()",`Cannot use callback [${i}="${e}"]: ${t}`,...n);if(!n.allowedBy(r))return o("Callback's CSP nonce (%o) does not match response header (%o)",n.nonce,r);let a=s();if(!a)return o("Current page's CSP nonce is unknown");n.nonce=a,t.setAttribute(i,n.toString())}))}))}}},1104:()=>{const t=up.util,e=up.element;up.OptionsParser=class{constructor(t,e,n){this.options=t,this.element=e,this.fail=n?.fail}string(t,n){this.parse(e.attr,t,n)}boolean(t,n){this.parse(e.booleanAttr,t,n)}number(t,n){this.parse(e.numberAttr,t,n)}booleanOrString(t,n){this.parse(e.booleanOrStringAttr,t,n)}json(t,n){this.parse(e.jsonAttr,t,n)}parse(e,n,r={}){const s=t.wrapList(r.attr??this.attrNameForKey(n));let i=this.options[n];if(this.element)for(let t of s)i??(i=e(this.element,t));i??(i=r.default);let o,a=r.normalize;if(a&&(i=a(i)),t.isDefined(i)&&(this.options[n]=i),(r.fail||this.fail)&&(o=up.fragment.failKey(n))){const n=t.compact(t.map(s,this.deriveFailAttrName)),i={...r,attr:n,fail:!1};this.parse(e,o,i)}}deriveFailAttrName(t){if(0===t.indexOf("up-"))return`up-fail-${t.slice(3)}`}attrNameForKey(e){return`up-${t.camelToKebabCase(e)}`}}},8665:()=>{const t=up.element,e=up.util;up.OverlayFocus=class{constructor(t){this.layer=t,this.focusElement=this.layer.getFocusElement()}moveToFront(){this.enabled||(this.enabled=!0,this.untrapFocus=up.on("focusin",(t=>this.onFocus(t))),this.unsetAttrs=t.setTemporaryAttrs(this.focusElement,{tabindex:"0",role:"dialog","aria-modal":"true"}),this.focusTrapBefore=t.affix(this.focusElement,"beforebegin","up-focus-trap[tabindex=0]"),this.focusTrapAfter=t.affix(this.focusElement,"afterend","up-focus-trap[tabindex=0]"))}moveToBack(){this.teardown()}teardown(){this.enabled&&(this.enabled=!1,this.untrapFocus(),this.unsetAttrs(),t.remove(this.focusTrapBefore),t.remove(this.focusTrapAfter))}onFocus(t){const{target:e}=t;this.processingFocusEvent||(this.processingFocusEvent=!0,e===this.focusTrapBefore?this.focusEnd():e!==this.focusTrapAfter&&this.layer.contains(e)||this.focusStart(),this.processingFocusEvent=!1)}focusStart(t){up.focus(this.focusElement,t)}focusEnd(){this.focusLastDescendant(this.layer.getBoxElement())||this.focusStart()}focusLastDescendant(t){for(let n of e.reverse(t.children))if(up.viewport.tryFocus(n)||this.focusLastDescendant(n))return!0}}},3645:()=>{const t=up.util,e=up.element;up.Params=class{constructor(t){this.clear(),this.addAll(t)}clear(){this.entries=[]}[t.copy.key](){return new up.Params(this)}toObject(){const e={};for(let n of this.entries){const{name:r,value:s}=n;t.isBasicObjectProperty(r)||(this.isArrayKey(r)?(e[r]||(e[r]=[]),e[r].push(s)):e[r]=s)}return e}toArray(){return this.entries}toFormData(){const t=new FormData;for(let e of this.entries)t.append(e.name,e.value);return t.entries||(t.originalArray=this.entries),t}toQuery(){let e=t.map(this.entries,this.arrayEntryToQuery.bind(this));return e=t.compact(e),e.join("&")}arrayEntryToQuery(e){const{value:n}=e;if(this.isBinaryValue(n))return;let r=encodeURIComponent(e.name);return t.isGiven(n)&&(r+="=",r+=encodeURIComponent(n)),r}isBinaryValue(t){return t instanceof Blob}hasBinaryValues(){const e=t.map(this.entries,"value");return t.some(e,this.isBinaryValue)}toURL(e){let n=[e,this.toQuery()];n=t.filter(n,t.isPresent);const r=t.contains(e,"?")?"&":"?";return n.join(r)}add(t,e){this.entries.push({name:t,value:e})}addAll(e){t.isMissing(e)||(e instanceof this.constructor?this.entries.push(...e.entries):t.isArray(e)?this.entries.push(...e):t.isString(e)?this.addAllFromQuery(e):t.isFormData(e)?this.addAllFromFormData(e):t.isObject(e)?this.addAllFromObject(e):up.fail("Unsupport params type: %o",e))}addAllFromObject(e){for(let n in e){const r=e[n],s=t.isArray(r)?r:[r];for(let t of s)this.add(n,t)}}addAllFromQuery(e){for(let n of e.split("&"))if(n){let[e,r]=n.split("=");e=decodeURIComponent(e),r=t.isGiven(r)?decodeURIComponent(r):null,this.add(e,r)}}addAllFromFormData(e){t.eachIterator(e.entries(),(t=>{this.add(...t)}))}set(t,e){this.delete(t),this.add(t,e)}delete(e){this.entries=t.reject(this.entries,this.matchEntryFn(e))}matchEntryFn(t){return e=>e.name===t}get(t){return this.isArrayKey(t)?this.getAll(t):this.getFirst(t)}getFirst(e){return t.find(this.entries,this.matchEntryFn(e))?.value}getAll(e){if(this.isArrayKey(e))return this.getAll(e);{const n=t.map(this.entries,this.matchEntryFn(e));return t.map(n,"value")}}isArrayKey(e){return t.endsWith(e,"[]")}[t.isBlank.key](){return 0===this.entries.length}static fromForm(t){return t=up.fragment.get(t),this.fromFields(up.form.fields(t))}static fromFields(e){const n=new this;for(let r of t.wrapList(e))n.addField(r);return n}addField(t){let n=(t=e.get(t)).name;if(n&&!t.disabled){const{tagName:e}=t,{type:r}=t;if("SELECT"===e)for(let e of t.querySelectorAll("option"))e.selected&&this.add(n,e.value);else if("checkbox"===r||"radio"===r)t.checked&&this.add(n,t.value);else{if("file"!==r)return this.add(n,t.value);for(let e of t.files)this.add(n,e)}}}[t.isEqual.key](e){return this.constructor===e.constructor&&t.isEqual(this.entries,e.entries)}static fromURL(e){const n=new this;let r=t.parseURL(e).search;return r&&(r=r.replace(/^\?/,""),n.addAll(r)),n}static stripURL(e){return t.normalizeURL(e,{search:!1})}}},7782:()=>{const t=up.element;up.ProgressBar=class{constructor(){this.step=0,this.element=t.affix(document.body,"up-progress-bar"),this.element.style.transition="width 300ms ease-out",this.moveTo(0),up.element.paint(this.element),this.width=31,this.nextStep()}nextStep(){let t;t=this.width<80?Math.random()<.15?7+5*Math.random():1.5+.5*Math.random():.13*(100-this.width)*Math.random(),this.moveTo(this.width+t),this.step++;const e=300+40*this.step;this.timeout=setTimeout(this.nextStep.bind(this),e)}moveTo(t){this.width=t,this.element.style.width=`${t}vw`}destroy(){clearTimeout(this.timeout),t.remove(this.element)}conclude(){clearTimeout(this.timeout),this.moveTo(100),setTimeout(this.destroy.bind(this),300)}}},2406:()=>{const t=up.util;up.Record=class{keys(){throw"Return an array of keys"}defaults(t){return{}}constructor(e){t.assign(this,this.defaults(e),this.attributes(e))}attributes(e=this){return t.pick(e,this.keys())}[t.copy.key](){return this.variant()}variant(e={}){return new this.constructor(t.merge(this.attributes(),e))}[t.isEqual.key](e){return this.constructor===e.constructor&&t.isEqual(this.attributes(),e.attributes())}}},1279:()=>{up.Rect=class extends up.Record{keys(){return["left","top","width","height"]}get bottom(){return this.top+this.height}get right(){return this.left+this.width}static fromElement(t){return new this(t.getBoundingClientRect())}}},2705:()=>{const t=up.util;up.RenderOptions=function(){const e={hungry:!0,keep:!0,source:!0,saveScroll:!0,fail:"auto"},n={solo:!1,confirm:!1,feedback:!1},r=["url","method","origin","headers","params","cache","clearCache","fallback","solo","confirm","feedback","origin","baseLayer","fail"].concat(["keep","hungry","history","source","saveScroll","navigate"]),s=["url","content","fragment","document"],i=["history","focus","scroll"];return{preprocess:function(r){up.migrate.preprocessRenderOptions?.(r);const s=t.merge(e,function(t){if(t.navigate)return up.fragment.config.navigateOptions}(r));return t.merge(t.omit(s,i),{defaults:s},r,function(t){if(t.preload)return n}(r))},finalize:function(e,n){return t.merge(e.defaults,n,e)},assertContentGiven:function(e){t.some(s,(n=>t.isGiven(e[n])))||(e.defaultToEmptyContent?e.content="":up.fail("up.render() needs either { "+s.join(", ")+" } option"))},deriveFailOptions:function(e){return t.merge(e.defaults,t.pick(e,r),function(t){const e={};for(let n in t){const r=t[n];let s=up.fragment.successKey(n);s&&(e[s]=r)}return e}(e))}}}()},606:()=>{up.RenderResult=class extends up.Record{keys(){return["fragments","layer"]}}},5437:()=>{const t=up.util;up.Request=class extends up.Record{keys(){return["method","url","hash","params","target","failTarget","headers","timeout","preload","cache","clearCache","layer","mode","context","failLayer","failMode","failContext","origin","solo","queueTime","wrapMethod","contentType","payload","onQueued"]}constructor(e){super(e),this.params=new up.Params(this.params),this.headers||(this.headers={}),this.preload&&(this.cache=!0),null==this.wrapMethod&&(this.wrapMethod=up.network.config.wrapMethod),this.normalizeForCaching(),e.basic||(this.layer=up.layer.get(this.layer),this.failLayer=up.layer.get(this.failLayer||this.layer),this.context||(this.context=this.layer.context||{}),this.failContext||(this.failContext=this.failLayer.context||{}),this.mode||(this.mode=this.layer.mode),this.failMode||(this.failMode=this.failLayer.mode),this.deferred=t.newDeferred(),this.state="new")}followState(e){t.delegate(this,["deferred","state","preload"],(()=>e))}normalizeForCaching(){this.method=t.normalizeMethod(this.method),this.extractHashFromURL(),this.transferParamsToURL(),this.url=t.normalizeURL(this.url)}evictExpensiveAttrs(){t.task((()=>(this.layer=void 0,this.failLayer=void 0,this.origin=void 0)))}extractHashFromURL(){let t=this.url?.match(/^([^#]*)(#.+)$/);if(t)return this.url=t[1],this.hash=t[2]}transferParamsToURL(){!this.url||this.allowsPayload()||t.isBlank(this.params)||(this.url=this.params.toURL(this.url),this.params.clear())}isSafe(){return up.network.isSafeMethod(this.method)}allowsPayload(){return t.methodAllowsPayload(this.method)}will302RedirectWithGET(){return this.isSafe()||"POST"===this.method}willCache(){return"auto"===this.cache?up.network.config.autoCache(this):this.cache}runQueuedCallbacks(){t.always(this,(()=>this.evictExpensiveAttrs())),this.onQueued?.(this)}load(){"new"===this.state&&(this.state="loading",this.xhr=new up.Request.XHRRenderer(this).buildAndSend({onload:()=>this.onXHRLoad(),onerror:()=>this.onXHRError(),ontimeout:()=>this.onXHRTimeout(),onabort:()=>this.onXHRAbort()}))}loadPage(){up.network.abort(),new up.Request.FormRenderer(this).buildAndSubmit()}onXHRLoad(){const t=this.extractResponseFromXHR(),e=["Server responded HTTP %d to %s %s (%d characters)",t.status,this.method,this.url,t.text.length];this.emit("up:request:loaded",{request:t.request,response:t,log:e}),this.respondWith(t)}onXHRError(){const t="Fatal error during request";this.deferred.reject(up.error.failed(t)),this.emit("up:request:fatal",{log:t})}onXHRTimeout(){this.setAbortedState("Requested timed out")}onXHRAbort(){this.setAbortedState()}abort(){this.setAbortedState()&&this.xhr&&this.xhr.abort()}setAbortedState(t=["Request to %s %s was aborted",this.method,this.url]){if("new"===this.state||"loading"===this.state)return this.state="aborted",this.emit("up:request:aborted",{log:t}),this.deferred.reject(up.error.aborted(t)),!0}respondWith(t){if("loading"===this.state)return this.state="loaded",t.ok?this.deferred.resolve(t):this.deferred.reject(t)}csrfHeader(){return up.protocol.csrfHeader()}csrfParam(){return up.protocol.csrfParam()}csrfToken(){if(!this.isSafe()&&!this.isCrossOrigin())return up.protocol.csrfToken()}isCrossOrigin(){return t.isCrossOrigin(this.url)}extractResponseFromXHR(){const e={method:this.method,url:this.url,request:this,xhr:this.xhr,text:this.xhr.responseText,status:this.xhr.status,title:up.protocol.titleFromXHR(this.xhr),target:up.protocol.targetFromXHR(this.xhr),acceptLayer:up.protocol.acceptLayerFromXHR(this.xhr),dismissLayer:up.protocol.dismissLayerFromXHR(this.xhr),eventPlans:up.protocol.eventPlansFromXHR(this.xhr),context:up.protocol.contextFromXHR(this.xhr),clearCache:up.protocol.clearCacheFromXHR(this.xhr)};let n=up.protocol.methodFromXHR(this.xhr),r=up.protocol.locationFromXHR(this.xhr);return r&&(n||t.matchURLs(e.url,r)||(n="GET"),e.url=r),n&&(e.method=n),new up.Response(e)}cacheKey(){return JSON.stringify([this.method,this.url,this.params.toQuery(),this.metaProps()])}metaProps(){const e={};for(let n of t.evalOption(up.network.config.requestMetaKeys,this)){const r=this[n];t.isGiven(r)&&(e[n]=r)}return e}buildEventEmitter(t){return up.EventEmitter.fromEmitArgs(t,{layer:this.layer,request:this,origin:this.origin})}emit(...t){return this.buildEventEmitter(t).emit()}assertEmitted(...t){this.buildEventEmitter(t).assertEmitted()}get description(){return this.method+" "+this.url}},t.delegate(up.Request.prototype,["then","catch","finally"],(function(){return this.deferred})),up.Request.tester=function(e){if(t.isFunction(e))return e;if(e instanceof this)return t=>e===t;if(t.isString(e)){let t=new up.URLPattern(e);return e=>t.test(e.url)}return t=>e}},7974:()=>{let t=up.util;up.Request.Cache=class extends up.Cache{maxSize(){return up.network.config.cacheSize}expiryMillis(){return up.network.config.cacheExpiry}normalizeStoreKey(e){return t.wrapValue(up.Request,e).cacheKey()}clear(t=!0){let e=up.Request.tester(t);this.each(((t,n)=>{e(n)&&this.store.remove(t)}))}}},5221:()=>{const t=up.util,e=up.element,n=["GET","POST"];up.Request.FormRenderer=class{constructor(t){this.request=t}buildAndSubmit(){this.params=t.copy(this.request.params);let r=this.request.url,{method:s}=this.request;const i=up.Params.fromURL(r);this.params.addAll(i),r=up.Params.stripURL(r),t.contains(n,s)||(s=up.protocol.wrapMethod(s,this.params)),this.form=e.affix(document.body,"form.up-request-loader",{method:s,action:r});let o,a,u=this.request.contentType;u&&this.form.setAttribute("enctype",u),(o=this.request.csrfParam())&&(a=this.request.csrfToken())&&this.params.add(o,a),t.each(this.params.toArray(),this.addField.bind(this)),up.browser.submitForm(this.form)}addField(t){e.affix(this.form,"input[type=hidden]",t)}}},6413:()=>{const t=up.util;up.Request.Queue=class{constructor(t={}){this.concurrency=t.concurrency??(()=>up.network.config.concurrency),this.badResponseTime=t.badResponseTime??(()=>up.network.config.badResponseTime),this.reset()}reset(){this.queuedRequests=[],this.currentRequests=[],clearTimeout(this.checkSlowTimout),this.emittedSlow=!1}get allRequests(){return this.currentRequests.concat(this.queuedRequests)}asap(e){e.runQueuedCallbacks(),t.always(e,(t=>this.onRequestSettled(e,t))),e.queueTime=new Date,this.setSlowTimer(),this.hasConcurrencyLeft()?this.sendRequestNow(e):this.queueRequest(e)}promoteToForeground(t){if(t.preload)return t.preload=!1,this.setSlowTimer()}setSlowTimer(){const e=t.evalOption(this.badResponseTime);this.checkSlowTimout=t.timer(e,(()=>this.checkSlow()))}hasConcurrencyLeft(){const e=t.evalOption(this.concurrency);return-1===e||this.currentRequests.length0}queueRequest(t){this.queuedRequests.push(t)}pluckNextRequest(){let e=t.find(this.queuedRequests,(t=>!t.preload));return e||(e=this.queuedRequests[0]),t.remove(this.queuedRequests,e)}sendRequestNow(t){t.emit("up:request:load",{log:["Loading %s %s",t.method,t.url]}).defaultPrevented?t.abort("Prevented by event listener"):(t.normalizeForCaching(),this.currentRequests.push(t),t.load())}onRequestSettled(e,n){t.remove(this.currentRequests,e),n instanceof up.Response&&n.ok&&up.network.registerAliasForRedirect(e,n),this.checkSlow(),t.microtask((()=>this.poke()))}poke(){let t;if(this.hasConcurrencyLeft()&&(t=this.pluckNextRequest()))return this.sendRequestNow(t)}abort(e=!0){let n=up.Request.tester(e);for(let e of[this.currentRequests,this.queuedRequests])t.filter(e,n).forEach((function(n){n.abort(),t.remove(e,n)}))}abortExcept(e,n=!0){const r=e.cacheKey();this.abort((e=>e.cacheKey()!==r&&t.evalOption(n,e)))}checkSlow(){const t=this.isSlow();this.emittedSlow!==t&&(this.emittedSlow=t,t?up.emit("up:request:late",{log:"Server is slow to respond"}):up.emit("up:request:recover",{log:"Slow requests were loaded"}))}isSlow(){const e=new Date,n=t.evalOption(this.badResponseTime),r=t.reject(this.allRequests,"preload");return t.some(r,(t=>e-t.queueTime>=n-1))}}},2298:()=>{const t="multipart/form-data",e=up.util;up.Request.XHRRenderer=class{constructor(t){this.request=t}buildAndSend(t){this.xhr=new XMLHttpRequest,this.params=e.copy(this.request.params),this.request.timeout&&(this.xhr.timeout=this.request.timeout),this.xhr.open(this.getMethod(),this.request.url);const n=this.request.metaProps();for(let t in n)this.addHeader(up.protocol.headerize(t),n[t]);for(let t in this.request.headers)this.addHeader(t,this.request.headers[t]);let r,s;(r=this.request.csrfHeader())&&(s=this.request.csrfToken())&&this.addHeader(r,s),this.addHeader(up.protocol.headerize("version"),up.version);let i=this.getContentType();return i&&this.addHeader("Content-Type",i),e.assign(this.xhr,t),this.xhr.send(this.getPayload()),this.xhr}getMethod(){return this.method||(this.method=this.request.method,this.request.wrapMethod&&!this.request.will302RedirectWithGET()&&(this.method=up.protocol.wrapMethod(this.method,this.params))),this.method}getContentType(){return this.finalizePayload(),this.contentType}getPayload(){return this.finalizePayload(),this.payload}addHeader(t,n){(e.isOptions(n)||e.isArray(n))&&(n=JSON.stringify(n)),this.xhr.setRequestHeader(t,n)}finalizePayload(){this.payloadFinalized||(this.payloadFinalized=!0,this.payload=this.request.payload,this.contentType=this.request.contentType,!this.payload&&this.request.allowsPayload()&&(this.contentType||(this.contentType=this.params.hasBinaryValues()?t:"application/x-www-form-urlencoded"),this.contentType===t?(this.contentType=null,this.payload=this.params.toFormData()):this.payload=this.params.toQuery().replace(/%20/g,"+")))}}},4517:()=>{up.Response=class extends up.Record{keys(){return["method","url","text","status","request","xhr","target","title","acceptLayer","dismissLayer","eventPlans","context","clearCache","headers"]}defaults(){return{headers:{}}}get ok(){return this.status&&this.status>=200&&this.status<=299}getHeader(t){return this.headers[t]||this.xhr?.getResponseHeader(t)}get contentType(){return this.getHeader("Content-Type")}get cspNonces(){return up.protocol.cspNoncesFromHeader(this.getHeader("Content-Security-Policy"))}get json(){return this.parsedJSON||(this.parsedJSON=JSON.parse(this.text))}}},7241:()=>{const t=up.util,e=up.element;up.ResponseDoc=class{constructor(t){this.noscriptWrapper=new up.HTMLWrapper("noscript"),this.scriptWrapper=new up.HTMLWrapper("script"),this.root=this.parseDocument(t)||this.parseFragment(t)||this.parseContent(t),this.cspNonces=t.cspNonces}parseDocument(t){return this.parse(t.document,e.createDocumentFromHTML)}parseContent(n){let r=n.content||"";const s=n.target||up.fail("must pass a { target } when passing { content }"),i=e.createFromSelector(s);return t.isString(r)?(r=this.wrapHTML(r),i.innerHTML=r):i.appendChild(r),i}parseFragment(t){return this.parse(t.fragment)}parse(n,r=e.createFromHTML){return t.isString(n)&&(n=r(n=this.wrapHTML(n))),n}rootSelector(){return up.fragment.toTarget(this.root)}wrapHTML(t){return t=this.noscriptWrapper.wrap(t),up.fragment.config.runScripts?this.scriptWrapper.wrap(t):this.scriptWrapper.strip(t)}getTitle(){return this.titleParsed||(this.title=this.root.querySelector("head title")?.textContent,this.titleParsed=!0),this.title}select(t){return up.fragment.subtree(this.root,t,{layer:"any"})[0]}finalizeElement(t){this.noscriptWrapper.unwrap(t),up.NonceableCallback.adoptNonces(t,this.cspNonces),this.scriptWrapper.unwrap(t)}}},2723:()=>{const t=up.element,e=up.util;up.RevealMotion=class{constructor(e,n={}){this.element=e,this.options=n;const r=up.viewport.config;this.viewport=t.get(this.options.viewport)||up.viewport.get(this.element),this.obstructionsLayer=up.layer.get(this.viewport),this.snap=this.options.snap??this.options.revealSnap??r.revealSnap,this.padding=this.options.padding??this.options.revealPadding??r.revealPadding,this.top=this.options.top??this.options.revealTop??r.revealTop,this.max=this.options.max??this.options.revealMax??r.revealMax,this.topObstructions=r.fixedTop,this.bottomObstructions=r.fixedBottom}start(){const t=this.getViewportRect(this.viewport),n=up.Rect.fromElement(this.element);if(this.max){const t=e.evalOption(this.max,this.element);n.height=Math.min(n.height,t)}if(this.addPadding(n),this.substractObstructions(t),t.height<0)return up.error.failed.async("Viewport has no visible area");const r=this.viewport.scrollTop;let s=r;return this.top||n.height>t.height?s+=n.top-t.top:n.topt.bottom&&(s+=n.bottom-t.bottom),e.isNumber(this.snap)&&s0&&(t.top+=n,t.height-=n)}for(let e of this.selectObstructions(this.bottomObstructions)){let n=up.Rect.fromElement(e),r=t.bottom-n.top;r>0&&(t.height-=r)}}finish(){this.scrollMotion?.finish()}}},6956:()=>{const t=up.util;up.ScrollMotion=class{constructor(t,e,n={}){this.scrollable=t,this.targetTop=e,this.behavior=n.behavior??n.scrollBehavior??"auto",this.speed=.065*(n.speed??n.scrollSpeed??up.viewport.config.scrollSpeed)}start(){return new Promise(((t,e)=>{this.resolve=t,this.reject=e,"smooth"===this.behavior&&up.motion.isEnabled()?this.startAnimation():this.finish()}))}startAnimation(){this.startTime=Date.now(),this.startTop=this.scrollable.scrollTop,this.topDiff=this.targetTop-this.startTop,this.duration=Math.sqrt(Math.abs(this.topDiff))/this.speed,requestAnimationFrame((()=>this.animationFrame()))}animationFrame(){if(this.settled)return;this.frameTop&&Math.abs(this.frameTop-this.scrollable.scrollTop)>1.5&&this.abort("Animation aborted due to user intervention");const e=Date.now()-this.startTime,n=Math.min(e/this.duration,1);this.frameTop=this.startTop+t.simpleEase(n)*this.topDiff,Math.abs(this.targetTop-this.frameTop)<.3?this.finish():(this.scrollable.scrollTop=this.frameTop,requestAnimationFrame((()=>this.animationFrame())))}abort(t){this.settled=!0,this.reject(up.error.aborted(t))}finish(){this.settled=!0,this.scrollable.scrollTop=this.targetTop,this.resolve()}}},8720:()=>{const t=up.element,e=up.util;up.Selector=class{constructor(t,e=[]){this.selectors=t,this.filters=e,this.unionSelector=this.selectors.join(",")||"match-none"}matches(e){return t.matches(e,this.unionSelector)&&this.passesFilter(e)}closest(t){let e;return this.matches(t)?t:(e=t.parentElement)?this.closest(e):void 0}passesFilter(t){return e.every(this.filters,(e=>e(t)))}descendants(n){const r=e.flatMap(this.selectors,(e=>t.all(n,e)));return e.filter(r,(t=>this.passesFilter(t)))}subtree(t){const e=[];return this.matches(t)&&e.push(t),e.push(...this.descendants(t)),e}}},104:()=>{const t=up.util;up.store||(up.store={}),up.store.Memory=class{constructor(){this.data={}}clear(){this.data={}}get(t){return this.data[t]}set(t,e){this.data[t]=e}remove(t){delete this.data[t]}keys(){return Object.keys(this.data)}size(){return this.keys().length}values(){return t.values(this.data)}}},5438:()=>{up.store.Session=class extends up.store.Memory{constructor(t){super(),this.rootKey=t,this.loadFromSessionStorage()}clear(){super.clear(),this.saveToSessionStorage()}set(t,e){super.set(t,e),this.saveToSessionStorage()}remove(t){super.remove(t),this.saveToSessionStorage()}loadFromSessionStorage(){try{let t=sessionStorage?.getItem(this.rootKey);t&&(this.data=JSON.parse(t))}catch(t){}}saveToSessionStorage(){const t=JSON.stringify(this.data);try{return sessionStorage?.setItem(this.rootKey,t)}catch(t){}}}},7885:()=>{const t=up.util,e=up.element;up.Tether=class{constructor(t){up.migrate.handleTetherOptions?.(t),this.anchor=t.anchor,this.align=t.align,this.position=t.position,this.alignAxis="top"===this.position||"bottom"===this.position?"horizontal":"vertical",this.viewport=up.viewport.get(this.anchor),this.parent=this.viewport===e.root?document.body:this.viewport,this.syncOnScroll=!this.viewport.contains(this.anchor.offsetParent)}start(t){this.element=t,this.element.style.position="absolute",this.setOffset(0,0),this.sync(),this.changeEventSubscription("on")}stop(){this.changeEventSubscription("off")}changeEventSubscription(t){let e=this.scheduleSync.bind(this);up[t](window,"resize",e),this.syncOnScroll&&up[t](this.viewport,"scroll",e)}scheduleSync(){return clearTimeout(this.syncTimer),this.syncTimer=t.task(this.sync.bind(this))}isDetached(){return e.isDetached(this.parent)||e.isDetached(this.anchor)}sync(){const n=this.element.getBoundingClientRect(),r=e.styleNumber(this.element,"marginTop"),s=e.styleNumber(this.element,"marginRight"),i=e.styleNumber(this.element,"marginBottom"),o=e.styleNumber(this.element,"marginLeft"),a=this.anchor.getBoundingClientRect();let u,l;switch(this.alignAxis){case"horizontal":switch(this.position){case"top":l=a.top-i-n.height;break;case"bottom":l=a.top+a.height+r}switch(this.align){case"left":u=a.left+o;break;case"center":u=a.left+.5*(a.width-n.width);break;case"right":u=a.left+a.width-n.width-s}break;case"vertical":switch(this.align){case"top":l=a.top+r;break;case"center":l=a.top+.5*(a.height-n.height);break;case"bottom":l=a.top+a.height-n.height-i}switch(this.position){case"left":u=a.left-s-n.width;break;case"right":u=a.left+a.width+o}}t.isDefined(u)||t.isDefined(l)?this.moveTo(u,l):up.fail("Invalid tether constraints: %o",this.describeConstraints())}describeConstraints(){return{position:this.position,align:this.align}}moveTo(t,e){const n=this.element.getBoundingClientRect();this.setOffset(t-n.left+this.offsetLeft,e-n.top+this.offsetTop)}setOffset(t,n){this.offsetLeft=t,this.offsetTop=n,e.setStyle(this.element,{left:t,top:n})}}},4818:()=>{const t=up.util;up.URLPattern=class{constructor(e,n=t.normalizeURL){this.normalizeURL=n,this.groups=[];const r=[],s=[];for(let n of t.splitValues(e))"-"===n[0]?s.push(n.substring(1)):r.push(n);this.positiveRegexp=this.buildRegexp(r,!0),this.negativeRegexp=this.buildRegexp(s,!1)}buildRegexp(e,n){if(!e.length)return;let r=(e=e.map((e=>("*"===e[0]&&(e="/"+e),e=this.normalizeURL(e),t.escapeRegExp(e))))).join("|");return r=r.replace(/\\\*/g,".*?"),r=r.replace(/(:|\\\$)([a-z][\w-]*)/gi,((t,e,r)=>"\\$"===e?(n&&this.groups.push({name:r,cast:Number}),"(\\d+)"):(n&&this.groups.push({name:r,cast:String}),"([^/?#]+)"))),new RegExp("^(?:"+r+")$")}test(t,e=!0){return e&&(t=this.normalizeURL(t)),this.positiveRegexp.test(t)&&!this.isExcluded(t)}recognize(t,e=!0){e&&(t=this.normalizeURL(t));let n=this.positiveRegexp.exec(t);if(n&&!this.isExcluded(t)){const t={};return this.groups.forEach(((e,r)=>{let s=n[r+1];if(s)return t[e.name]=e.cast(s)})),t}}isExcluded(t){return this.negativeRegexp?.test(t)}}},9675:()=>{up.element=function(){const t=up.util,e=up.browser.isIE11()?"msMatchesSelector":"matches";function n(...t){const e=t.pop();return(t[0]||document).querySelector(e)}function r(...t){const e=t.pop();return(t[0]||document).querySelectorAll(e)}function s(t,e){const n=[];return o(t,e)&&n.push(t),n.push(...r(t,e)),n}function i(t,e){return t.closest?t.closest(e):o(t,e)?t:a(t,e)}function o(t,n){return t[e]?.(n)}function a(t,e){let n=t.parentElement;if(n)return o(n,e)?n:a(n,e)}function u(...e){const r=e.pop();return t.isElement(r)?r:t.isString(r)?n(...e,r):t.isList(r)?(r.length>1&&up.fail("up.element.get(): Cannot cast multiple elements (%o) to a single element",r),r[0]):r}function l(...e){return t.flatMap(e,c)}function c(e){return t.isString(e)?r(e):t.wrapList(e)}function p(t){t.style.display="none"}function h(t){t.style.display=""}function f(e,n){for(let r in n){const s=n[r];t.isGiven(s)?e.setAttribute(r,s):e.removeAttribute(r)}}function d(e,n){const r=[],s=e.replace(/\[([\w-]+)(?:[~|^$*]?=(["'])?([^\2\]]*?)\2)?\]/g,(function(t,e,n,s){return r.push(s||""),`[${e}]`})).split(/[ >]+/);let i,o,a;for(let t of s){let n;if(t=t.replace(/^[\w-]+/,(function(t){return n=t,""})),o=document.createElement(n||"div"),i||(i=o),t=t.replace(/#([\w-]+)/,(function(t,e){return o.id=e,""})),t=t.replace(/\.([\w-]+)/g,(function(t,e){return o.classList.add(e),""})),r.length&&(t=t.replace(/\[([\w-]+)\]/g,(function(t,e){return o.setAttribute(e,r.shift()),""}))),""!==t)throw up.error.invalidSelector(e);a?.appendChild(o),a=o}if(n){let e;if(e=t.pluckKey(n,"class"))for(let n of t.wrapList(e))i.classList.add(n);(e=t.pluckKey(n,"style"))&&F(i,e),(e=t.pluckKey(n,"text"))&&(i.textContent=e),(e=t.pluckKey(n,"content"))&&(i.innerHTML=e),f(i,n)}return i}const m=["HTML","BODY","HEAD","TITLE"],g=new RegExp("\\b("+m.join("|")+")\\b","i"),y=up.mockable((t=>o(t,m.join(","))));function b(t,e){return`[${t}="${e=e.replace(/"/g,'\\"')}"]`}function v(){return document.documentElement}function w(t){t.offsetHeight}function k(e,n,r){t.isMissing(e.getAttribute(n))&&e.setAttribute(n,r)}function E(e,n){return t.nullToUndefined(e.getAttribute(n))}function S(t,e,n){const r=E(t,e);switch(r){case"false":return!1;case"true":case"":case e:return!0;default:if(n)return r}}function L(t,e){const n=R(t,Object.keys(e));return F(t,e),()=>F(t,n)}function C(t,e){return T(window.getComputedStyle(t),e)}function x(e,n){const r=C(e,n);if(t.isGiven(r))return parseFloat(r)}function R(t,e){const{style:n}=t;return T(n,e)}function T(e,n){return t.isString(n)?e[n]:t.pick(e,n)}function F(t,e){const{style:n}=t;for(let t in e){let r=e[t];r=A(t,r),n[t]=r}}function A(e,n){var r;return t.isMissing(n)?n="":O.has(e.toLowerCase().replace(/-/,""))&&(r=n,n=t.isNumber(r)||t.isString(r)&&/^\d+$/.test(r)?r.toString()+"px":r),n}const O=t.arrayToSet(["top","right","bottom","left","padding","paddingtop","paddingright","paddingbottom","paddingleft","margin","margintop","marginright","marginbottom","marginleft","borderwidth","bordertopwidth","borderrightwidth","borderbottomwidth","borderleftwidth","width","height","maxwidth","maxheight","minwidth","minheight"]);function P(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)}return{all:r,subtree:s,isInSubtree:function(t,e){const n=u(e);return t.contains(n)},closest:i,closestAttr:function(t,e){return i(t,"["+e+"]")?.getAttribute(e)},matches:o,ancestor:a,around:function(t,e){return l(i(t,e),s(t,e))},get:u,list:l,remove:function(t){let e=t.parentNode;e&&e.removeChild(t)},toggle:function(t,e){null==e&&(e=!P(t)),(e?h:p)(t)},toggleClass:function(t,e,n){const r=t.classList;return null==n&&(n=!r.contains(e)),n?r.add(e):r.remove(e)},hide:p,show:h,metaContent:function(t){return n("meta"+b("name",t))?.getAttribute("content")},replace:function(t,e){t.parentElement.replaceChild(e,t)},insertBefore:function(t,e){t.insertAdjacentElement("beforebegin",e)},createFromSelector:d,setAttrs:f,setTemporaryAttrs:function(t,e){const n={};for(let r of Object.keys(e))n[r]=t.getAttribute(r);return f(t,e),()=>f(t,n)},affix:function(e,...n){let r,s;const i=t.extractOptions(n);2===n.length?[r,s]=n:(r="beforeend",s=n[0]);const o=d(s,i);return e.insertAdjacentElement(r,o),o},toSelector:function(...t){return up.fragment.toTarget(...t)},idSelector:function(t){return t.match(/^[a-z0-9\-_]+$/i)?`#${t}`:b("id",t)},classSelector:function(t){return`.${t=t.replace(/:/g,"\\:")}`},isSingleton:y,isSingletonSelector:function(t){return g.test(t)},attributeSelector:b,trueAttributeSelector:function(t){return`[${t}]:not([${t}=false])`},tagName:function(t){return t.tagName.toLowerCase()},createDocumentFromHTML:function(t){return(new DOMParser).parseFromString(t,"text/html")},createFromHTML:function(t){const e=document.createRange();e.setStart(document.body,0);let n=e.createContextualFragment(t.trim()).childNodes;if(1!==n.length)throw new Error("HTML must have a single root element");return n[0]},get root(){return v()},paint:w,concludeCSSTransition:function(t){const e=L(t,{transition:"none"});return w(t),e},hasCSSTransition:function(e){let n;n=t.isOptions(e)?e:C(e);const r=n.transitionProperty,s=n.transitionDuration;return!("none"===r||"all"===r&&0===s)},fixedToAbsolute:function(t){const e=t.getBoundingClientRect();t.style.position="absolute";const n=t.offsetParent.getBoundingClientRect();F(t,{left:e.left-x(t,"margin-left")-n.left,top:e.top-x(t,"margin-top")-n.top,right:"",bottom:""})},setMissingAttrs:function(t,e){for(let n in e)k(t,n,e[n])},setMissingAttr:k,unwrap:function(e){const n=e.parentNode,r=t.toArray(e.childNodes);t.each(r,(t=>n.insertBefore(t,e))),n.removeChild(e)},wrapChildren:function(t,e="up-wrapper"){let n;const r=d(e);for(;n=t.firstChild;)r.appendChild(n);return t.appendChild(r),r},attr:E,booleanAttr:S,numberAttr:function(t,e){let n=t.getAttribute(e);if(n&&(n=n.replace(/_/g,""),n.match(/^[\d.]+$/)))return parseFloat(n)},jsonAttr:function(t,e){let n=t.getAttribute?.(e)?.trim();if(n)return JSON.parse(n)},callbackAttr:function(e,n,r=[]){let s=e.getAttribute(n);if(s){const n=up.NonceableCallback.fromString(s).toFunction("event",...r);return function(s){const i=t.values(t.pick(s,r));return n.call(e,s,...i)}}},booleanOrStringAttr:function(t,e){return S(t,e,!0)},setTemporaryStyle:L,style:C,styleNumber:x,inlineStyle:R,setStyle:F,isVisible:P,upAttrs:function(t){const e=/^up-/,n={};for(let r of t.attributes){const{name:t}=r;t.match(e)&&(n[t]=r.value)}return n},toggleAttr:function(t,e,n,r){return null==r&&(r=!t.hasAttribute(e)),r?t.setAttribute(e,n):t.removeAttribute(e)},isDetached:function(t){return t!==document&&!v().contains(t)}}}()},3924:()=>{up.error=function(){const t=up.util;function e(e,n={}){t.isArray(e)&&(e=t.sprintf(...e));const r=new Error(e);return t.assign(r,n),r}function n(t,n=e){const r=function(...e){const r=n(...e);return r.name=t,r};return r.is=e=>e.name===t,r.async=(...t)=>Promise.reject(r(...t)),r}const r=n("up.Failed"),s=n("AbortError",(t=>e(t||"Aborted"))),i=n("up.NotImplemented"),o=n("up.NotApplicable",((t,n)=>e(`Cannot apply change: ${t} (${n})`)));return{failed:r,aborted:s,invalidSelector:n("up.InvalidSelector",(t=>e(`Cannot parse selector: ${t}`))),notApplicable:o,notImplemented:i,emitGlobal:function(t){const{message:e}=t;up.emit(window,"error",{message:e,error:t,log:!1})}}}()},8670:()=>{up.event=function(){const t=up.util,e=up.element;function n(...t){return r(t).bind()}function r(t,e){return up.EventListenerGroup.fromBindArgs(t,e)}function s(t){return up.EventEmitter.fromEmitArgs(t)}const i=["metaKey","shiftKey","ctrlKey","altKey"];function o(e){return(t.isUndefined(e.button)||0===e.button)&&!t.some(i,(t=>e[t]))}function a(e,n,r=[]){const s=up.event.build(n,t.pick(e,r));return s.originalEvent=e,["stopPropagation","stopImmediatePropagation","preventDefault"].forEach((function(t){const n=s[t];return s[t]=function(){return e[t](),n.call(s)}})),e.defaultPrevented&&s.preventDefault(),s}return n("up:click","a[up-emit]",(function(n,r){if(!o(n))return;const s=e.attr(r,"up-emit"),i=e.jsonAttr(r,"up-emit-props"),u=a(n,s);t.assign(u,i),up.emit(r,u)})),n("up:framework:reset",(function(){for(let t of[window,document,e.root,document.body])for(let e of up.EventListener.allNonDefault(t))e.unbind()})),{on:n,$on:function(...t){return r(t,{jQuery:!0}).bind()},off:function(...t){return r(t).unbind()},build:function(...e){const n=t.extractOptions(e),r=e[0]||n.type||up.fail("Expected event type to be passed as string argument or { type } property"),s=document.createEvent("Event");if(s.initEvent(r,!0,!0),t.assign(s,t.omit(n,["type","target"])),up.browser.isIE11()){const e=s.preventDefault;s.preventDefault=function(){return e.call(s),t.getter(s,"defaultPrevented",(()=>!0))}}return s},emit:function(...t){return s(t).emit()},assertEmitted:function(...t){return s(t).assertEmitted()},onEscape:function(t){return n("keydown",(function(e){if(function(t){const{key:e}=t;return"Escape"===e||"Esc"===e}(e))return t(e)}))},halt:function(t){t.stopImmediatePropagation(),t.preventDefault()},isUnmodified:o,fork:a,keyModifiers:i}}(),up.on=up.event.on,up.$on=up.event.$on,up.off=up.event.off,up.$off=up.event.off,up.emit=up.event.emit},454:()=>{up.feedback=function(){const t=up.util,e=up.element,n=new up.Config((()=>({currentClasses:["up-current"],navSelectors:["[up-nav]","nav"]}))),r="up-active",s="a, [up-href]";function i(){return n.navSelectors.join(",")}function o(e){if(e)return t.normalizeURL(e,{trailingSlash:!1,hash:!1})}function a(t){return t.upFeedbackURLs||(t.upFeedbackURLs=new up.LinkFeedbackURLs(t))}function u(n,r){const o=up.fragment.subtree(n,i(),r);c(t.flatMap(o,(t=>e.subtree(t,s))),r)}function l(t){return t.feedbackLocation||o(t.location)}function c(t,r={}){if(!t.length)return;let s=l(r.layer||up.layer.get(t[0]));if(s)for(let r of t){const t=a(r).isCurrent(s);for(let s of n.currentClasses)e.toggleClass(r,s,t);e.toggleAttr(r,"aria-current","page",t)}}function p(t){return e.ancestor(t,s)||t}function h(t){p(t).classList.add(r)}function f(t){p(t).classList.remove(r)}function d(e,n){h(e);const r=n();return t.always(r,(()=>f(e))),r}function m(t){const e=t.feedbackLocation,n=l(t.location);e&&e===n||(t.feedbackLocation=n,u(t.element,{layer:t}))}return up.on("up:location:changed",(t=>{!function(){const t=up.layer.front;t.showsLiveHistory()&&m(t)}()})),up.on("up:fragment:inserted",((t,e)=>{!function(t){const e={layer:up.layer.get(t)};up.fragment.closest(t,i(),e)?c(up.fragment.subtree(t,s,e),e):u(t,e)}(e)})),up.on("up:layer:location:changed",(t=>{m(t.layer)})),up.on("up:framework:reset",(function(){n.reset(),up.layer.root.feedbackLocation=null})),{config:n,start:h,stop:f,around:d,aroundForOptions:function(e,n){let r,s=e.feedback;return s&&(r=t.isBoolean(s)?e.origin:s),r?(r=up.fragment.get(r),d(r,n)):n()},normalizeURL:o}}()},2851:()=>{up.form=function(){const t=up.util,e=up.element,n=["[up-submit]","[up-target]","[up-layer]","[up-transition]"],r=new up.Config((()=>({validateTargets:["[up-fieldset]:has(:origin)","fieldset:has(:origin)","label:has(:origin)","form:has(:origin)"],fieldSelectors:["select","input:not([type=submit]):not([type=image])","button[type]:not([type=submit])","textarea"],submitSelectors:up.link.combineFollowableSelectors(["form"],n),noSubmitSelectors:["[up-submit=false]","[target]"],submitButtonSelectors:["input[type=submit]","input[type=image]","button[type=submit]","button:not([type])"],observeDelay:0})));let s;function i(){return r.submitSelectors.join(",")}function o(t=""){return r.fieldSelectors.map((e=>e+t)).join(",")}function a(n){n=e.get(n);let r=e.subtree(n,o());if(e.matches(n,"form[id]")){const s=o(e.attributeSelector("form",n.getAttribute("id"))),i=e.all(s);r.push(...i),r=t.uniq(r)}return r}function u(){return r.submitButtonSelectors.join(",")}const l=up.mockable(((t,e)=>up.render(c(t,e))));function c(e,n){return n=p(e=b(e),n),new up.OptionsParser(n,e).string("failTarget",{default:up.fragment.toTarget(e)}),n.guardEvent||(n.guardEvent=up.event.build("up:form:submit",{submitButton:n.submitButton,params:n.params,log:"Submitting form"})),t.assign(n,up.link.followOptions(e,n)),n}function p(n,r){r=t.options(r),n=b(n);const s=new up.OptionsParser(r,n),i=up.Params.fromForm(n);return r.submitButton||(r.submitButton=function(t){const n=u(),r=document.activeElement;return r&&e.matches(r,n)&&t.contains(r)?r:e.get(t,n)}(n)),r.submitButton&&(i.addField(r.submitButton),r.method||(r.method=r.submitButton.getAttribute("formmethod")),r.url||(r.url=r.submitButton.getAttribute("formaction"))),i.addAll(r.params),r.params=i,s.string("url",{attr:"action",default:up.fragment.source(n)}),s.string("method",{attr:["up-method","data-method","method"],default:"GET",normalize:t.normalizeMethod}),"GET"===r.method&&(r.url=up.Params.stripURL(r.url)),r}function h(n,...s){n=e.list(n);const i=t.flatMap(n,a),o=t.reject(i,"name");o.length&&up.warn("up.observe()","Will not observe fields without a [name]: %o",o);const u=t.extractCallback(s)||function(t){let e=t.getAttribute("up-observe");if(e)return up.NonceableCallback.fromString(e).toFunction("value","name")}(n[0])||up.fail("up.observe: No change callback given"),l=t.extractOptions(s);l.delay=l.delay??e.numberAttr(n[0],"up-delay")??r.observeDelay;const c=new up.FieldObserver(i,l,u);return c.start(),()=>c.stop()}function f(t,e){return h(t,e,(()=>l(t)))}function d(n,s){return(s=p(n=up.fragment.get(n),s)).origin=n,s.target=function(n,s){let i;const o=v(n);return t.isElementish(s.target)?up.fragment.toTarget(s.target):(i=s.target||n.getAttribute("up-validate")||o.getAttribute("up-validate"))?i:e.matches(n,"form")?up.fragment.toTarget(n):function(e,n){const s=up.layer.get(e);return t.findResult(r.validateTargets,(function(t){if(up.fragment.get(t,{...n,layer:s}))return t}))}(n,s)||up.fail("Could not find validation target for %o (tried defaults %o)",n,r.validateTargets)}(n,s),s.focus="keep",s.fail=!1,s.headers||(s.headers={}),s.headers[up.protocol.headerize("validate")]=n.getAttribute("name")||":unknown",s.guardEvent=up.event.build("up:form:validate",{field:n,log:"Validating form"}),up.render(s)}function m(n){let r,s;if(e.matches(n,"input[type=checkbox]"))n.checked?(r=n.value,s=":checked"):s=":unchecked";else if(e.matches(n,"input[type=radio]")){const t=v(n),i=n.getAttribute("name"),o=t.querySelector(`input[type=radio]${e.attributeSelector("name",i)}:checked`);o?(s=":checked",r=o.value):s=":unchecked"}else r=n.value;const i=[];return t.isPresent(r)?(i.push(r),i.push(":present")):i.push(":blank"),t.isPresent(s)&&i.push(s),i}function g(t,n={}){const r=n.target||n.target||t.getAttribute("up-switch"),s=v(t);r||up.fail("No switch target given for %o",t);const i=m(t);for(let t of e.all(s,r))y(t,i)}up.on("up:click",u,(function(t,e){const n=b(e);n&&k(n)&&e.focus()}));const y=up.mockable((function(n,r){let s;r||(r=m(function(n){const r=v(n),s=e.all(r,"[up-switch]");return t.find(s,(function(t){const r=t.getAttribute("up-switch");return e.matches(n,r)}))||up.fail("Could not find [up-switch] field for %o",n)}(n)));let i=n.getAttribute("up-hide-for");if(i)i=t.splitValues(i),s=0===t.intersect(r,i).length;else{let e=n.getAttribute("up-show-for");e=e?t.splitValues(e):[":present",":checked"],s=t.intersect(r,e).length>0}e.toggle(n,s),n.classList.add("up-switched")}));function b(t,n){const r=up.fragment.get(t);return r.form||e.closest(r,"form")||n&&e.closest(r,n)}function v(t){return b(t,up.layer.anySelector())}function w(t){return e.matches(t,o())}function k(t){return t=up.fragment.get(t),e.matches(t,i())&&!E(t)}function E(t){return e.matches(t,r.noSubmitSelectors.join(","))}return up.on("submit",i,(function(t,e){t.defaultPrevented||E(e)||(s?.(),up.event.halt(t),up.log.muteUncriticalRejection(l(e)))})),up.on("change","[up-validate]",(function(e){const n=a(e.target)[0];s=t.abortableMicrotask((()=>up.log.muteUncriticalRejection(d(n))))})),up.compiler("[up-switch]",(t=>{g(t)})),up.on("change","[up-switch]",((t,e)=>{g(e)})),up.compiler("[up-show-for]:not(.up-switched), [up-hide-for]:not(.up-switched)",(t=>{y(t)})),up.compiler("[up-observe]",(t=>h(t))),up.compiler("[up-autosubmit]",(t=>f(t))),up.on("up:framework:reset",(function(){r.reset()})),{config:r,submit:l,submitOptions:c,isSubmittable:k,observe:h,validate:d,autosubmit:f,fieldSelector:o,fields:a,focusedField:function(){return t.presence(document.activeElement,w)},switchTarget:y}}(),up.submit=up.form.submit,up.observe=up.form.observe,up.autosubmit=up.form.autosubmit,up.validate=up.form.validate},2667:(t,e,n)=>{n(8711);const r=up.util,s=up.element;up.fragment=function(){const t=new up.Config((()=>({badTargetClasses:[/^up-/],navigateOptions:{solo:!0,feedback:!0,cache:"auto",fallback:!0,focus:"auto",scroll:"auto",history:"auto",peel:!0},matchAroundOrigin:!0,runScripts:!1,autoHistoryTargets:[":main"],autoFocus:["hash","autofocus","main-if-main","target-if-lost"],autoScroll:["hash","layer-if-main"]})));function e(t,e={}){return t=f(t,e),s.closestAttr(t,"up-source")}r.delegate(t,"mainTargets",(()=>up.layer.config.any));const n=up.mockable(((...t)=>r.asyncify((function(){let e=v(t);e=up.RenderOptions.preprocess(e),up.browser.assertConfirmed(e);let n=r.pluckKey(e,"guardEvent");return n&&(n.renderOptions=e,up.event.assertEmitted(n,{target:e.origin})),up.RenderOptions.assertContentGiven(e),(e.url?i:o)(e)}))));function i(t){return up.feedback.aroundForOptions(t,(()=>new up.Change.FromURL(t).execute()))}function o(t){return up.network.mimicLocalRequest(t),new up.Change.FromContent(t).execute()}const a=up.mockable(((...t)=>{const e=v(t);return n({...e,navigate:!0})}));function u(t,e={}){t=f(t);const n=(e.keepPlans||[]).map((function(t){return c(t),t.oldElement}));return up.syntax.compile(t,{skip:n,layer:e.layer}),l(t,e),t}function l(t,e){return up.emit(t,"up:fragment:inserted",{log:["Inserted fragment %o",t],origin:e.origin})}function c(t){return p(t,"up:fragment:kept",{log:["Kept fragment %o",t.oldElement]})}function p(t,e,n){const r=t.oldElement,s=up.event.build(e,{newFragment:t.newElement,newData:t.newData});return up.emit(r,s,n)}const h=r.negate((function(t){return!!s.closest(t,".up-destroying")}));function f(...t){const e=r.extractOptions(t),n=t.pop(),i=t[0];return r.isElementish(n)?s.get(n):i?d(i,n,e):new up.FragmentFinder({selector:n,origin:e.origin,layer:e.layer}).find()}function d(...t){return g(...t)[0]}const m=/:has\(([^)]+)\)$/;function g(...t){const e=r.extractOptions(t);let n=t.pop();const s=t[0];return n=S(n,s,e),n.descendants(s||document)}function y(t,e,n={}){return(e=S(e,t,n)).subtree(t)}function b(t,e){return y(t,e).length>0}function v(t){const e=r.parseArgIntoOptions(t,"target");return r.isElement(e.target)&&(e.origin||(e.origin=e.target)),e}function w(t){if(r.isString(t))return t;let e;if(t=s.get(t),s.isSingleton(t))return s.tagName(t);if(e=t.getAttribute("up-id"))return s.attributeSelector("up-id",e);if(e=t.getAttribute("id"))return s.idSelector(e);if(e=t.getAttribute("name"))return s.tagName(t)+s.attributeSelector("name",e);if(e=r.presence(r.filter(t.classList,k))){let t="";for(let n of e)t+=s.classSelector(n);return t}return s.tagName(t)}function k(e){return!r.some(t.badTargetClasses,(function(t){return r.isRegExp(t)?t.test(e):t===e}))}function E(t,e={}){const{origin:n}=e;return t.replace(/&|:origin\b/,(function(e){if(n)return w(n);up.fail('Missing { origin } element to resolve "%s" reference (found in %s)',e,t)}))}function S(t,e,n={}){const i=[];n.destroying||i.push(h),n.layer||(n.layer=e);const o=up.layer.getAll(n);"any"===n.layer||e&&s.isDetached(e)||i.push((t=>r.some(o,(e=>e.contains(t)))));let a=up.fragment.expandTargets(t,{...n,layer:o[0]});return a=a.map((function(t){return(t=t.replace(m,(function(t,e){return i.push((t=>t.querySelector(e))),""})))||"*"})),new up.Selector(a,i)}return up.on("up:framework:boot",(function(){const{body:t}=document;if(t.setAttribute("up-source",r.normalizeURL(location.href,{hash:!1})),u(t),!up.browser.canPushState())return up.warn("Cannot push history changes. Next fragment update will load in a new page.")})),up.on("up:framework:reset",(function(){t.reset()})),{config:t,reload:function(...t){const r=v(t);r.target||(r.target=":main");const i=f(r.target,r);return r.url||(r.url=e(i)),r.headers||(r.headers={}),r.headers[up.protocol.headerize("reloadFromTime")]=function(t){return s.closestAttr(t,"up-time")||"0"}(i),n(r)},destroy:function(...t){const e=v(t);return(e.element=f(e.target,e))&&new up.Change.DestroyFragment(e).execute(),up.migrate.formerlyAsync?.("up.destroy()")},render:n,navigate:a,get:f,getDumb:d,all:g,subtree:y,contains:b,closest:function(t,e,n){return(e=S(e,t=s.get(t),n)).closest(t)},source:e,hello:u,visit:function(t,e){return a({...e,url:t})},markAsDestroying:function(t){t.classList.add("up-destroying"),t.setAttribute("aria-hidden","true")},emitInserted:l,emitDestroyed:function(t,e){const n=e.log??["Destroyed fragment %o",t],r=e.parent||document;return up.emit(r,"up:fragment:destroyed",{fragment:t,parent:r,log:n})},emitKeep:function(t){return p(t,"up:fragment:keep",{log:["Keeping fragment %o",t.oldElement],callback:s.callbackAttr(t.oldElement,"up-on-keep",["newFragment","newData"])})},emitKept:c,successKey:function(t){return r.unprefixCamelCase(t,"fail")},failKey:function(t){if(!t.match(/^fail[A-Z]/))return r.prefixCamelCase(t,"fail")},expandTargets:function(t,e={}){const{layer:n}=e;"new"===n||n instanceof up.Layer||up.fail("Must pass an up.Layer as { layer } option, but got %o",n),t=r.copy(r.wrapList(t));const s=[];for(;t.length;){const i=t.shift();if(":main"===i||!0===i){const r="new"===n?e.mode:n.mode;t.unshift(...up.layer.mainTargets(r))}else":layer"===i?"new"===n||n.opening||t.unshift(n.getFirstSwappableElement()):r.isElementish(i)?s.push(w(i)):r.isString(i)&&s.push(E(i,e))}return r.uniq(s)},toTarget:w,matches:function(t,e,n={}){return(e=S(e,t=s.get(t),n)).matches(t)},hasAutoHistory:function(e){return!!b(e,t.autoHistoryTargets)||(up.puts("up.render()","Will not auto-update history because fragment doesn't contain a selector from up.fragment.config.autoHistoryTargets"),!1)}}}(),up.reload=up.fragment.reload,up.destroy=up.fragment.destroy,up.render=up.fragment.render,up.navigate=up.fragment.navigate,up.hello=up.fragment.hello,up.visit=up.fragment.visit,r.delegate(up,"context",(()=>up.layer.current))},9634:()=>{up.framework=function(){let t="evaling";function e(){if("configuring"!==t)return void console.error("Unpoly has already booted");let e=up.framework.supportIssue();e?console.error("Unpoly cannot boot: %s",e):(t="booting",up.emit("up:framework:boot",{log:!1}),t="booted")}function n(){return up.browser.canPromise()?"BackCompat"===document.compatMode?"Browser is in quirks mode (missing DOCTYPE?)":up.browser.isEdge18()?"Edge 18 or lower is unsupported":void 0:"Browser doesn't support promises"}return{onEvaled:function(){up.emit("up:framework:evaled",{log:!1}),function(){let t=document.currentScript;return!!t?.async||"manual"===t?.getAttribute("up-boot")||"complete"===document.readyState||void 0}()?console.debug("Call up.boot() after you have configured Unpoly"):document.addEventListener("DOMContentLoaded",e),t="configuring"},boot:e,startExtension:function(){if("configuring"!==t)throw new Error("Unpoly extensions must be loaded before booting");t="evaling"},stopExtension:function(){t="configuring"},reset:function(){up.emit("up:framework:reset",{log:!1})},get evaling(){return"evaling"===t},get booted(){return"booted"===t},get beforeBoot(){return"booting"!==t&&"booted"!==t},isSupported:function(){return!n()},supportIssue:n}}(),up.boot=up.framework.boot},8944:()=>{up.history=function(){const t=up.util,e=up.element,n=new up.Config((()=>({enabled:!0,restoreTargets:["body"]})));let r,s;const i={hash:!0};function o(e,n){return n=t.merge(i,n),t.normalizeURL(e,n)}function a(t){return o(location.href,t)}function u(){const t=a();s!==t&&(r=s,s=t)}u();const l={trailingSlash:!1};function c(e,n){return o(e,n=t.merge(l,n))===a(n)}function p(t,e={}){h("replaceState",t=o(t))&&!1!==e.event&&d("up:location:changed",{url:t,reason:"replace",log:`Replaced state for ${t}`})}function h(t,e){if(n.enabled){const n={up:{}};return window.history[t](n,"",e),u(),!0}}function f(t){u(),up.viewport.saveScroll({location:r});const{state:e}=t;!async function(t){if(t?.up){let t=a();await up.render({url:t,history:!0,location:t,peel:!0,layer:"root",target:n.restoreTargets,cache:!0,scroll:"restore",saveScroll:!1}),t=a(),d("up:location:changed",{url:t,reason:"pop",log:`Restored location ${t}`})}else up.puts("pop","Ignoring a state not pushed by Unpoly (%o)",t)}(e)}function d(...e){return t.find(up.layer.stack.reversed(),"history").emit(...e)}function m(){window.history.scrollRestoration="manual",window.addEventListener("popstate",f),"GET"===up.protocol.initialRequestMethod()&&p(a(),{event:!1})}return up.on("up:framework:boot",(function(){"jasmine"in window?m():setTimeout(m,100)})),up.macro("a[up-back], [up-href][up-back]",(function(t){r&&(e.setMissingAttrs(t,{"up-href":r,"up-scroll":"restore"}),t.removeAttribute("up-back"),up.link.makeFollowable(t))})),up.on("up:framework:reset",(function(){n.reset(),r=void 0,s=void 0,u()})),{config:n,push:function(t){!c(t=o(t))&&h("pushState",t)&&up.emit("up:location:changed",{url:t,reason:"push",log:`Advanced to location ${t}`})},replace:p,get location(){return a()},get previousLocation(){return r},normalizeURL:o,isLocation:c}}()},9443:(t,e,n)=>{n(4432);const r=up.util,s=up.element;up.layer=function(){const t=[up.Layer.Root,up.Layer.Modal,up.Layer.Popup,up.Layer.Drawer,up.Layer.Cover],e=new up.Config((function(){const e={mode:"modal",any:{mainTargets:["[up-main='']","main",":layer"]},root:{mainTargets:["[up-main~=root]"],history:!0},overlay:{mainTargets:["[up-main~=overlay]"],openAnimation:"fade-in",closeAnimation:"fade-out",dismissLabel:"×",dismissAriaLabel:"Dismiss dialog",dismissable:!0,history:"auto"},cover:{mainTargets:["[up-main~=cover]"]},drawer:{mainTargets:["[up-main~=drawer]"],backdrop:!0,position:"left",size:"medium",openAnimation(t){switch(t.position){case"left":return"move-from-left";case"right":return"move-from-right"}},closeAnimation(t){switch(t.position){case"left":return"move-to-left";case"right":return"move-to-right"}}},modal:{mainTargets:["[up-main~=modal]"],backdrop:!0,size:"medium"},popup:{mainTargets:["[up-main~=popup]"],position:"bottom",size:"medium",align:"left",dismissable:"outside key"}};for(let n of t)e[n.mode].Class=n;return e}));let n=null,i=[];function o(t){return"root"===t?[e.root,e.any]:[e[t],e.overlay,e.any]}async function a(t){return t=r.options(t,{layer:"new",defaultToEmptyContent:!0,navigate:!0}),(await up.render(t)).layer}up.on("up:fragment:destroyed",(function(){n.sync()})),up.on("up:framework:evaled",(function(){n=new up.LayerStack})),up.on("up:framework:reset",(function(){e.reset(),n.reset(),i=r.filter(i,"isDefault")}));const u={config:e,mainTargets:function(t){return r.flatMap(o(t),"mainTargets")},open:a,build:function(t,s){const{mode:i}=t,{Class:a}=e[i],u=r.reverse(o(i));let l=up.migrate.handleLayerConfig;return l&&u.forEach(l),t=r.mergeDefined(...u,{mode:i,stack:n},t),s&&(t=s(t)),new a(t)},ask:function(t){return new Promise((function(e,n){a(t={...t,onAccepted:t=>e(t.value),onDismissed:t=>n(t.value)})}))},normalizeOptions:function(t){if(up.migrate.handleLayerOptions?.(t),r.isGiven(t.layer)){let n=String(t.layer).match(/^(new|shatter|swap)( (\w+))?/);if(n){t.layer="new";const r=n[1],s=n[3];t.mode||(t.mode=s||e.mode),"swap"===r?up.layer.isOverlay()&&(t.baseLayer="parent"):"shatter"===r&&(t.baseLayer="root")}}else t.mode?t.layer="new":r.isElementish(t.target)?t.layer=n.get(t.target,{normalizeLayerOptions:!1}):t.origin?t.layer="origin":t.layer="current";t.context||(t.context={}),t.baseLayer=n.get("current",{...t,normalizeLayerOptions:!1})},openCallbackAttr:function(t,e){return s.callbackAttr(t,e,["layer"])},closeCallbackAttr:function(t,e){return s.callbackAttr(t,e,["layer","value"])},anySelector:function(){return r.map(t,(t=>t.selector())).join(",")},optionToString:function(t){return r.isString(t)?`layer "${t}"`:t.toString()},get stack(){return n}};return r.delegate(u,["get","getAll","root","overlays","current","front","sync","count","dismissOverlays"],(()=>n)),r.delegate(u,["accept","dismiss","isRoot","isOverlay","isFront","on","off","emit","parent","history","location","mode","context","element","contains","size","affix"],(()=>n.current)),u}()},3849:(t,e,n)=>{n(2065),up.link=function(){const t=up.util,e=up.element,n=new up.LinkPreloader;let r=null;const s=["a[up-content]","a[up-fragment]","a[up-document]"],i=["a[href]","[up-href]"],o=["[up-follow]","[up-target]","[up-layer]","[up-transition]","[up-preload]","[up-instant]"];function a(e,n){return t.flatMap(e,(t=>n.map((e=>t+e))))}const u=new up.Config((()=>({followSelectors:a(i,o).concat(s),noFollowSelectors:["[up-follow=false]","a[download]","a[target]",'a[href^="#"]:not([up-content]):not([up-fragment]):not([up-document])','a[href^="javascript:"]'],instantSelectors:["[up-instant]"],noInstantSelectors:["[up-instant=false]","[onclick]"],preloadSelectors:a(i,["[up-preload]"]),noPreloadSelectors:["[up-preload=false]"],clickableSelectors:s.concat(["[up-emit]","[up-accept]","[up-dismiss]","[up-clickable]"]),preloadDelay:90,preloadEnabled:"auto"})));function l(){return u.followSelectors.join(",")}function c(n){return e.matches(n,u.noFollowSelectors.join(","))||t.isCrossOrigin(n)}const p=up.mockable((function(t,e){return up.render(f(t,e))}));function h(e,n){n=t.options(n);const r=new up.OptionsParser(n,e);return n.url=function(t,e={}){const n=e.url||t.getAttribute("up-href")||t.getAttribute("href");if("#"!==n)return n}(e,n),n.method=d(e,n),r.json("headers"),r.json("params"),r.booleanOrString("cache"),r.booleanOrString("clearCache"),r.booleanOrString("solo"),r.string("contentType",{attr:["enctype","up-content-type"]}),n}function f(t,n){n=h(t=up.fragment.get(t),n);const r=new up.OptionsParser(n,t,{fail:!0});return r.boolean("feedback"),r.boolean("fail"),null==r.options.origin&&(r.options.origin=t),r.boolean("navigate",{default:!0}),r.string("confirm"),r.string("target"),r.booleanOrString("fallback"),r.parse(((t,n)=>e.callbackAttr(t,n,["request","response","renderOptions"])),"onLoaded"),r.string("content"),r.string("fragment"),r.string("document"),r.boolean("peel"),r.string("layer"),r.string("baseLayer"),r.json("context"),r.string("mode"),r.string("align"),r.string("position"),r.string("class"),r.string("size"),r.booleanOrString("dismissable"),r.parse(up.layer.openCallbackAttr,"onOpened"),r.parse(up.layer.closeCallbackAttr,"onAccepted"),r.parse(up.layer.closeCallbackAttr,"onDismissed"),r.string("acceptEvent"),r.string("dismissEvent"),r.string("acceptLocation"),r.string("dismissLocation"),r.booleanOrString("history"),r.booleanOrString("focus"),r.boolean("saveScroll"),r.booleanOrString("scroll"),r.boolean("revealTop"),r.number("revealMax"),r.number("revealPadding"),r.number("revealSnap"),r.string("scrollBehavior"),r.booleanOrString("history"),r.booleanOrString("location"),r.booleanOrString("title"),r.booleanOrString("animation"),r.booleanOrString("transition"),r.string("easing"),r.number("duration"),up.migrate.parseFollowOptions?.(r),n.guardEvent||(n.guardEvent=up.event.build("up:link:follow",{log:"Following link"})),n}function d(e,n={}){return t.normalizeMethod(n.method||e.getAttribute("up-method")||e.getAttribute("data-method"))}function m(t){return t=up.fragment.get(t),e.matches(t,l())&&!c(t)}function g(t){m(t)||t.setAttribute("up-follow","")}function y(t){e.matches(t,"a[href], button")||(e.setMissingAttrs(t,{tabindex:"0",role:"link","up-clickable":""}),t.addEventListener("keydown",(function(t){if("Enter"===t.key||"Space"===t.key)return w(t)})))}function b(t,n){if(t.defaultPrevented||c(n))return!1;const r=`a, [up-href], ${up.form.fieldSelector()}`,s=e.closest(t.target,r);return!s||s===n}function v(t){const n=e.closest(t,u.instantSelectors.join(","));return n&&(r=n,!(e.matches(r,u.noInstantSelectors.join(","))||c(r)));var r}function w(t){let e=["clientX","clientY","button",...up.event.keyModifiers];const n=up.event.fork(t,"up:click",e);up.emit(t.target,n,{log:!1})}return up.macro((function(){return u.clickableSelectors.join(",")}),y),up.on("up:click",l,(function(t,e){b(t,e)&&(up.event.halt(t),up.log.muteUncriticalRejection(p(e)))})),up.macro("[up-expand]",(function(t){const n=t.getAttribute("up-expand")||"a, [up-href]";let r=e.get(t,n);if(r){const n=e.upAttrs(r);n["up-href"]||(n["up-href"]=r.getAttribute("href")),e.setMissingAttrs(t,n),g(t)}})),up.compiler((function(){return u.preloadSelectors.join(",")}),(function(t){(function(t){return!up.browser.canPushState()||e.matches(t,u.noPreloadSelectors.join(","))||c(t)||!function(t){const e=h(t);if(e.url)return null==e.cache&&(e.cache="auto"),e.basic=!0,new up.Request(e).willCache()}(t)})(t)||n.observeLink(t)})),up.on("up:framework:reset",(function(){r=null,u.reset(),n.reset()})),{follow:p,followOptions:f,preload:function(t,e){if(t=up.fragment.get(t),!function(){const t=u.preloadEnabled;return"auto"===t?!up.network.shouldReduceRequests():t}())return up.error.failed.async("Link preloading is disabled");const n=up.event.build("up:link:preload",{log:["Preloading link %o",t]});return p(t,{...e,guardEvent:n,preload:!0})},makeFollowable:g,makeClickable:y,isSafe:function(t){const e=d(t);return up.network.isSafeMethod(e)},isFollowable:m,shouldFollowEvent:b,followMethod:d,convertClicks:function(t){t.on("click",(function(e,n){if(up.event.isUnmodified(e))return v(n)&&r?up.event.halt(e):t.wasHitByMouseEvent(e)&&(!r||r===e.target)&&w(e),r=null})),t.on("mousedown",(function(t,e){up.event.isUnmodified(t)&&(r=t.target,v(e)&&w(t))}))},config:u,combineFollowableSelectors:a}}(),up.follow=up.link.follow},4453:()=>{up.log=function(){const t=new up.store.Session("up.log"),e=new up.Config((()=>({enabled:t.get("enabled"),banner:!0,format:up.browser.canFormatLog()}))),n=(...t)=>r("error",...t);function r(t,n,r,...s){r&&(e.format?(s.unshift(""),s.unshift("color: #666666; padding: 1px 3px; border: 1px solid #bbbbbb; border-radius: 2px; font-size: 90%; display: inline-block"),r=`%c${n}%c ${r}`):r=`[${n}] ${r}`,console[t](r,...s))}function s(n){t.set("enabled",n),e.enabled=n}return up.on("up:framework:boot",(function(){if(!e.banner)return;const t=` __ _____ ___ ___ / /_ __\n/ // / _ \\/ _ \\/ _ \\/ / // / ${up.version}\n\\___/_//_/ .__/\\___/_/\\_. / \n / / / /\n\n`;let n="";up.migrate.loaded||(n+="Load unpoly-migrate.js to enable deprecated APIs.\n\n"),e.enabled?n+="Call `up.log.disable()` to disable logging for this session.":n+="Call `up.log.enable()` to enable logging for this session.";const r="color: #777777";e.format?console.log("%c"+t+"%c"+n,"font-family: monospace;"+r,r):console.log(t+n)})),up.on("up:framework:reset",(function(){e.reset()})),{puts:function(...t){e.enabled&&r("log",...t)},error:n,warn:(...t)=>r("warn",...t),config:e,enable:function(){s(!0)},disable:function(){s(!1)},fail:function(...t){throw n("error",...t),up.error.failed(t)},muteUncriticalRejection:function(t){return t.catch((function(t){if("object"!=typeof t||!("AbortError"===t.name||t instanceof up.RenderResult||t instanceof up.Response))throw t}))},isEnabled:()=>e.enabled}}(),up.puts=up.log.puts,up.warn=up.log.warn,up.fail=up.log.fail},6535:()=>{up.migrate={config:{}}},8374:()=>{up.mockable=function(t){let e;const n=function(){return(e||t).apply(null,arguments)};return n.mock=()=>e=jasmine.createSpy("mockable",t),document.addEventListener("up:framework:reset",(()=>e=null)),n}},4034:()=>{up.motion=function(){const t=up.util,e=up.element;let n={},r={};const s=new up.MotionController("motion"),i=new up.Config((()=>({duration:175,easing:"ease",enabled:!matchMedia("(prefers-reduced-motion: reduce)").matches})));function o(e){return t.pickBy(e,(t=>t.isDefault))}function a(){return i.enabled}function u(t,n,r){return c(r),a()&&!y(n)&&r.duration>0&&!e.isSingleton(t)}function l(t,e,n){return n={...n,finishEvent:s.finishEvent},new up.CSSTransition(t,e,n).start()}function c(t){t.easing||(t.easing=i.easing),t.duration||(t.duration=i.duration)}function p(e){if(!y(e)){if(t.isFunction(e))return e;if(t.isArray(e))return h(...e);if(!t.isString(e))return up.fail("Unknown transition %o",e);{let t;if(e.indexOf("/")>=0)return h(...e.split("/"));if(t=r[e])return p(t)}}}function h(e,n){if(!y(e)&&!y(n)){const r=f(e)||t.asyncNoop,s=f(n)||t.asyncNoop;return(t,e,n)=>Promise.all([r(t,n),s(e,n)])}}function f(e){return y(e)?void 0:t.isFunction(e)?e:t.isString(e)?n[r=e]||up.fail("Unknown animation %o",r):t.isOptions(e)?(t,n)=>l(t,e,n):up.fail("Unknown animation %o",e);var r}const d=up.mockable((function(t,n){e.replace(t,n)}));function m(t,e){const n=p(e);n.isDefault=up.framework.evaling,r[t]=n}function g(t,e){const r=f(e);r.isDefault=up.framework.evaling,n[t]=r}function y(t){return!t||"none"===t}function b(t,n,r){g(t,(function(t,s){return t.style.opacity=0,e.setStyle(t,{opacity:n}),l(t,{opacity:r},s)}))}function v(t,e){return{transform:`translate(${t}px, ${e}px)`}}function w(t){return e.setStyle(t,v(0,0)),t.getBoundingClientRect()}function k(t,n){const r=`move-from-${t}`;g(`move-to-${t}`,(function(t,e){const r=w(t);return l(t,n(r),e)})),g(r,(function(t,r){const s=w(t),i=n(s);return e.setStyle(t,i),l(t,v(0,0),r)}))}return up.on("up:framework:boot",(function(){a()||up.puts("up.motion","Animations are disabled")})),b("fade-in",0,1),b("fade-out",1,0),k("top",(function(t){return v(0,-(t.top+t.height))})),k("bottom",(function(t){return v(0,up.viewport.rootHeight()-t.top)})),k("left",(function(t){return v(-(t.left+t.width),0)})),k("right",(function(t){return v(up.viewport.rootWidth()-t.left,0)})),m("cross-fade",["fade-out","fade-in"]),m("move-left",["move-to-left","move-from-right"]),m("move-right",["move-to-right","move-from-left"]),m("move-up",["move-to-top","move-from-bottom"]),m("move-down",["move-to-bottom","move-from-top"]),up.on("up:framework:reset",(function(){s.reset(),n=o(n),r=o(r),i.reset()})),{morph:function(n,r,i,o){c(o=t.options(o)),n=up.fragment.get(n),r=up.fragment.get(r);const a=p(i),l=u(n,a,o),h=t.pluckKey(o,"beforeStart")||t.noop,f=t.pluckKey(o,"afterInsert")||t.noop,m=t.pluckKey(o,"beforeDetach")||t.noop,g=t.pluckKey(o,"afterDetach")||t.noop,y=t.pluckKey(o,"scrollNew")||t.asyncNoop;if(h(),l){if(s.isActive(n)&&!1===o.trackMotion)return a(n,r,o);up.puts("up.morph()","Morphing %o to %o with transition %O",n,r,i);const t=up.viewport.get(n),u=t.scrollTop,l=up.viewport.absolutize(n,{afterMeasure(){e.insertBefore(n,r),f()}}),c=async function(){await y();const s=t.scrollTop;l.moveBounds(0,s-u),await a(n,r,o),m(),e.remove(l.bounds),g()};return s.startFunction([n,r],c,o)}return m(),d(n,r),f(),g(),y()},animate:function(n,r,i){n=up.fragment.get(n),i=t.options(i);const o=f(r);if(u(n,r,i)){const t=()=>o(n,i);return s.startFunction(n,t,i)}return function(n,r){return t.isOptions(r)&&e.setStyle(n,r),Promise.resolve()}(n,r)},finish:function(t){return s.finish(t)},finishCount:()=>s.finishCount,transition:m,animation:g,config:i,isEnabled:a,isNone:y,willAnimate:u,swapElementsDirectly:d}}(),up.transition=up.motion.transition,up.animation=up.motion.animation,up.morph=up.motion.morph,up.animate=up.motion.animate},1647:(t,e,n)=>{n(35);const r=up.util;up.network=function(){const t=new up.Config((()=>({concurrency:4,wrapMethod:!0,cacheSize:70,cacheExpiry:3e5,badDownlink:.6,badRTT:750,badResponseTime:400,autoCache:t=>t.isSafe(),clearCache:(t,e)=>!t.isSafe(),requestMetaKeys:["target","failTarget","mode","failMode","context","failContext"],progressBar:!0}))),e=new up.Request.Queue,n=new up.Request.Cache;let s=null;function i(t){let n=t.solo;n&&o()&&(up.puts("up.request()","Change with { solo } option will abort other requests"),t instanceof up.Request?e.abortExcept(t,n):u(n))}function o(){return e.isBusy()}const a=r.negate(o);function u(...t){e.abort(...t)}return up.on("up:request:late",(function(){r.evalOption(t.progressBar)&&(s=new up.ProgressBar)})),up.on("up:request:recover",(function(){s?.conclude()})),up.on("up:framework:reset",(function(){u(),e.reset(),t.reset(),n.clear(),s?.destroy(),s=null})),{request:function(...s){const o=new up.Request(function(t){const e=r.extractOptions(t);return e.url||(e.url=t[0]),up.migrate.handleRequestOptions?.(e),e}(s));return function(t){let r;if(t.willCache()&&(r=n.get(t)))return up.puts("up.request()","Re-using previous request to %s %s",t.method,t.url),t.preload||e.promoteToForeground(r),t.followState(r),!0}(o)||function(s){s.preload&&!s.isSafe()&&up.fail("Will not preload request to %s",s.description),function(e){e.willCache()&&n.set(e,e),r.always(e,(function(r){let s=r.clearCache??e.clearCache??t.clearCache(e,r);s&&n.clear(s),(e.willCache()||n.get(e))&&n.set(e,e),r.ok||n.remove(e)}))}(s),e.asap(s)}(o),i(o),o},cache:n,isIdle:a,isBusy:o,isSafeMethod:function(t){return r.contains(["GET","OPTIONS","HEAD"],r.normalizeMethod(t))},config:t,abort:u,registerAliasForRedirect:function(t,e){if(t.cache&&e.url&&t.url!==e.url){const r=t.variant({method:e.method,url:e.url});n.alias(t,r)}},queue:e,shouldReduceRequests:function(){let e=navigator.connection;if(e)return e.saveData||e.rtt&&e.rtt>t.badRTT||e.downlink&&e.downlink{up.protocol=function(){const t=up.util,e=up.element,n=function(t){return"X-Up"+t.replace(/(^.|[A-Z])/g,(t=>"-"+t.toUpperCase()))},r=function(e,r,s=t.identity){let i=e.getResponseHeader(n(r));if(i)return s(i)};function s(t){switch(t){case"true":return!0;case"false":return!1;default:return t}}const i=t.memoize((function(){return t.normalizeMethod(up.browser.popCookie("_up_method"))})),o=new up.Config((()=>({methodParam:"_method",csrfParam:()=>e.metaContent("csrf-param"),csrfToken:()=>e.metaContent("csrf-token"),cspNonce:()=>e.metaContent("csp-nonce"),csrfHeader:"X-CSRF-Token",nonceableAttributes:["up-observe","up-on-accepted","up-on-dismissed","up-on-loaded","up-on-finished","up-observe"]})));function a(){o.reset()}return up.on("up:framework:reset",a),{config:o,reset:a,locationFromXHR:function(t){return r(t,"location")||t.responseURL},titleFromXHR:function(t){return r(t,"title")},targetFromXHR:function(t){return r(t,"target")},methodFromXHR:function(e){return r(e,"method",t.normalizeMethod)},acceptLayerFromXHR:function(t){return r(t,"acceptLayer",JSON.parse)},contextFromXHR:function(t){return r(t,"context",JSON.parse)},dismissLayerFromXHR:function(t){return r(t,"dismissLayer",JSON.parse)},eventPlansFromXHR:function(t){return r(t,"events",JSON.parse)},clearCacheFromXHR:function(t){return r(t,"clearCache",s)},csrfHeader:function(){return t.evalOption(o.csrfHeader)},csrfParam:function(){return t.evalOption(o.csrfParam)},csrfToken:function(){return t.evalOption(o.csrfToken)},cspNonce:function(){return t.evalOption(o.cspNonce)},initialRequestMethod:i,headerize:n,wrapMethod:function(t,e){return e.add(o.methodParam,t),"POST"},cspNoncesFromHeader:function(t){let e=[];if(t){let n=t.split(/\s*;\s*/);for(let t of n)if(0===t.indexOf("script-src")){let n,r=/'nonce-([^']+)'/g;for(;n=r.exec(t);)e.push(n[1])}}return e}}}()},9615:()=>{up.radio=function(){const t=up.util,e=up.element,n=new up.Config((()=>({hungrySelectors:["[up-hungry]"],pollInterval:3e4,pollEnabled:"auto"})));function r(r,s={}){const i=s.interval??e.numberAttr(r,"up-interval")??n.pollInterval;let o=!1,a=null;function u(){o||(function(e){const r=t.evalOption(n.pollEnabled,e);return"auto"===r?!document.hidden&&!up.network.shouldReduceRequests()&&up.layer.get(e)?.isFront?.():r}(r)?t.always(up.reload(r,s),l):(up.puts("[up-poll]","Polling is disabled"),l(Math.min(1e4,i))))}function l(t=i){o||setTimeout(u,t)}function c(){o=!0,a?.abort()}return s.onQueued=t=>a=t,up.on(r,"up:poll:stop",c),l(),c}return up.compiler("[up-poll]",r),up.on("up:framework:reset",(function(){n.reset()})),{config:n,hungrySelector:function(){return n.hungrySelectors.join(",")},startPolling:r,stopPolling:function(t){up.emit(t,"up:poll:stop")}}}()},6774:()=>{up.rails=function(){const t=up.util,e=up.element;return t.each(["method","confirm"],(function(t){const n=`data-${t}`,r=`up-${t}`;up.macro(`a[${n}]`,(function(t){if((window._rails_loaded||window.Rails||window.jQuery?.rails)&&up.link.isFollowable(t))return e.setMissingAttr(t,r,t.getAttribute(n)),t.removeAttribute(n)}))}))}()},2514:()=>{up.syntax=function(){const t=up.util,e=up.element,n={"[up-back]":-100,"[up-content]":-200,"[up-drawer]":-200,"[up-modal]":-200,"[up-cover]":-200,"[up-popup]":-200,"[up-tooltip]":-200,"[up-dash]":-200,"[up-expand]":-300,"[data-method]":-400,"[data-confirm]":-400};let r=[],s=[];function i(...t){const e=a(t);return u(r,e)}function o(...e){const r=a(e);return up.framework.evaling&&(r.priority=function(e){e=t.evalOption(e);for(let t in n){const r=n[t];if(e.indexOf(t)>=0)return r}}(r.selector)||up.fail("Unregistered priority for system macro %o",r.selector)),u(s,r)}function a(e){let[n,r,s]=function(e){const n=e.shift(),r=e.pop();return[n,t.extractOptions(e),r]}(e);return r=t.options(r,{selector:n,isDefault:up.framework.evaling,priority:0,batch:!1,keep:!1,jQuery:!1}),t.assign(s,r)}function u(t,e){let n;up.framework.booted&&up.puts("up.compiler()","Compiler %s was registered after booting Unpoly. Compiler will run for future fragments.",e.selector);let r=0;for(;(n=t[r])&&n.priority>=e.priority;)r+=1;return t.splice(r,0,e),e}return up.on("up:framework:reset",(function(){r=t.filter(r,"isDefault"),s=t.filter(s,"isDefault")})),{compiler:i,macro:o,$compiler:function(...t){i(...t).jQuery=!0},$macro:function(...t){const e=o(...t);return e.jQuery=!0,e},destructor:function(e,n){let r=e.upDestructors;r||(r=[],e.upDestructors=r,e.classList.add("up-can-clean")),t.isArray(n)?r.push(...n):r.push(n)},compile:function(t,e){const n=s.concat(r);new up.CompilerPass(t,n,e).run()},clean:function(t,e={}){new up.DestructorPass(t,e).run()},data:function(t){return t=up.fragment.get(t),e.jsonAttr(t,"up-data")||{}}}}(),up.compiler=up.syntax.compiler,up.$compiler=up.syntax.$compiler,up.destructor=up.syntax.destructor,up.macro=up.syntax.macro,up.$macro=up.syntax.$macro,up.data=up.syntax.data},7924:()=>{up.util=function(){function t(){}const e={host:"cross-domain"};function n(t,n){n=H(n,e);const r=o(t);let s="";var a,u;"cross-domain"===n.host&&(n.host=i(r)),n.host&&(s+=r.protocol+"//"+r.hostname,a=r.protocol,(""===(u=(u=r.port).toString())||"80"===u)&&"http:"===a||"443"===u&&"https:"===a||(s+=`:${r.port}`));let{pathname:l}=r;return!1===n.trailingSlash&&"/"!==l&&(l=l.replace(/\/$/,"")),s+=l,!1!==n.search&&(s+=r.search),!1!==n.hash&&(s+=r.hash),s}const r=location.protocol,s=location.hostname;function i(t){if(k(t)&&-1===t.indexOf("//"))return!1;const e=o(t);return s!==e.hostname||r!==e.protocol}function o(t){let e;return R(t)?e=up.element.get(t):t.pathname?e=t:(e=document.createElement("a"),e.href=t),e.hostname||(e.href=e.href),"/"!==e.pathname[0]&&(e=I(e,["protocol","hostname","port","pathname","search","hash"]),e.pathname="/"+e.pathname),e}function a(t,...e){for(let n of e)for(let e in n)t[e]=n[e];return t}const u=Object.assign||a,l=Object.values||function(t){return Object.keys(t).map((e=>t[e]))};function c(t){return k(t)?e=>e[t]:t}function p(t,e){if(0===t.length)return[];e=c(e);let n=[];for(let r=0;re.push(t))),e}function $(t){const e=new Set;return t.forEach((t=>e.add(t))),e}function z(t,e){e=c(e);const n=[];return h(t,(function(t,r){if(e(t,r))return n.push(t)})),n}function U(t){return Promise.resolve().then(t)}function K(t){return t[t.length-1]}function V(t,e){return t.indexOf(e)>=0}function I(t,e){const n={};for(let r of e)r in t&&(n[r]=t[r]);return n}function W(t,e){e=c(e);const n={};for(let r in t)e(t[r],r,t)&&(n[r]=t[r]);return n}q.key="up.util.copy",Date.prototype[q.key]=function(){return new Date(+this)};const Q={"&":"&","<":"<",">":">",'"':""","'":"'"};function _(t,e){const n=t[e];return delete t[e],n}function X(t,e){if(e(K(t)))return t.pop()}function G(t){return X(t,S)||{}}function J(t){return t}function Y(t){const e=[];for(let n of t)F(n)?e.push(...n):e.push(n);return e}function Z(e){return e?.catch(t)}function tt(t,e){if(t?.valueOf&&(t=t.valueOf()),e?.valueOf&&(e=e.valueOf()),typeof t!=typeof e)return!1;if(F(t)&&F(e))return et(t,e);if(L(t)&&t[tt.key])return t[tt.key](e);if(S(t)&&S(e)){const n=Object.keys(t);return!!et(n,Object.keys(e))&&N(n,(n=>tt(t[n],e[n])))}return t===e}function et(t,e){return t.length===e.length&&N(t,((t,n)=>tt(t,e[n])))}tt.key="up.util.isEqual";let nt=0;function rt(t){return t[0].toLowerCase()+t.slice(1)}function st(t){return t[0].toUpperCase()+t.slice(1)}function it(t){let e,n="";if(k(t))e=t.replace(/[\n\r\t ]+/g," "),e=e.replace(/^[\n\r\t ]+/,""),e=e.replace(/[\n\r\t ]$/,"");else if(d(t))e="undefined";else if(E(t)||w(t))e=t.toString();else if(T(t))e=`[${p(t,it).join(", ")}]`,n="]";else if(R(t))e=`$(${p(t,it).join(", ")})`,n=")";else if(C(t)){e=`<${t.tagName.toLowerCase()}`;for(let n of["id","name","class"]){let r=t.getAttribute(n);r&&(e+=` ${n}="${r}"`)}e+=">",n=">"}else if(x(t))e=t.toString();else try{e=JSON.stringify(t)}catch(t){if("TypeError"!==t.name)throw t;e="(circular structure)"}return e.length>200&&(e=`${e.substr(0,200)} …`,e+=n),e}const ot=/%[oOdisf]/g;function at(t,e,...n){if(!e)return"";let r=0;return e.replace(ot,(function(){let e=n[r];return e=t(it(e)),r+=1,e}))}function ut(t){return function(...e){return!t(...e)}}return{parseURL:o,normalizeURL:n,matchURLs:function(t,e){return n(t)===n(e)},normalizeMethod:function(t){return t?t.toUpperCase():"GET"},methodAllowsPayload:function(t){return"GET"!==t&&"HEAD"!==t},assign:u,assignPolyfill:a,copy:q,copyArrayLike:D,merge:M,mergeDefined:function(...t){const e={};for(let n of t)if(n)for(let t in n){const r=n[t];m(r)&&(e[t]=r)}return e},options:H,parseArgIntoOptions:function(t,e){let n=G(t);return m(t[0])&&(n=q(n),n[e]=t[0]),n},each:h,eachIterator:function(t,e){let n;for(;(n=t.next())&&!n.done;)e(n.value)},map:p,flatMap:function(t,e){return Y(p(t,e))},mapObject:function(t,e){return p(t,e).reduce((function(t,e){return t[e[0]]=e[1],t}),{})},findResult:j,some:function(t,e){return!!j(t,e)},every:N,find:function(t,e){let n;e=c(e);for(let r of t)if(e(r)){n=r;break}return n},filter:z,reject:function(t,e){return z(t,e=ut(c(e)))},intersect:function(t,e){return z(t,(t=>V(e,t)))},compact:function(t){return z(t,y)},compactObject:function(t){return W(t,y)},uniq:function(t){return t.length<2?t:B($(t))},uniqBy:function(t,e){if(t.length<2)return t;e=c(e);const n=new Set;return z(t,(function(t,r){const s=e(t,r);return!n.has(s)&&(n.add(s),!0)}))},last:K,isNull:f,isDefined:m,isUndefined:d,isGiven:y,isMissing:g,isPresent:v,isBlank:b,presence:function(t,e=v){if(e(t))return t},isObject:L,isFunction:w,isString:k,isBoolean:function(t){return"boolean"==typeof t||t instanceof Boolean},isNumber:E,isElement:C,isJQuery:R,isElementish:function(t){return!(!t||!t.addEventListener&&!t[0]?.addEventListener)},isPromise:function(t){return L(t)&&w(t.then)},isOptions:S,isArray:T,isFormData:function(t){return t instanceof FormData},isNodeList:A,isArguments:O,isList:F,isRegExp:x,timer:function(t,e){return setTimeout(e,t)},contains:V,objectContains:function(t,e){return tt(e,I(t,Object.keys(e)))},toArray:function(t){return T(t)?t:D(t)},pick:I,pickBy:W,omit:function(t,e){return W(t,((t,n)=>!V(e,n)))},unresolvablePromise:function(){return new Promise(t)},remove:function(t,e){const n=t.indexOf(e);if(n>=0)return t.splice(n,1),e},memoize:function(t){let e,n;return function(...r){return n?e:(n=!0,e=t.apply(this,r))}},pluckKey:_,renameKey:function(t,e,n){return t[n]=_(t,e)},extractOptions:G,extractCallback:function(t){return X(t,w)},noop:t,asyncNoop:function(){return Promise.resolve()},identity:J,escapeHTML:function(t){return t.replace(/[&<>"']/g,(t=>Q[t]))},escapeRegExp:function(t){return t.replace(/[\\^$*+?.()|[\]{}]/g,"\\$&")},sequence:function(t){return 1===t.length?t[0]:()=>p(t,(t=>t()))},evalOption:function(t,...e){return w(t)?t(...e):t},flatten:Y,isTruthy:function(t){return!!t},newDeferred:function(){let t,e;const n=new Promise((function(n,r){t=n,e=r}));return n.resolve=t,n.reject=e,n.promise=()=>n,n},always:function(t,e){return t.then(e,e)},muteRejection:Z,asyncify:function(t){try{return Promise.resolve(t())}catch(t){return Promise.reject(t)}},isBasicObjectProperty:function(t){return Object.prototype.hasOwnProperty(t)},isCrossOrigin:i,task:function(t){return setTimeout(t)},microtask:U,abortableMicrotask:function(t){let e=!1;return U((function(){if(!e)return t()})),()=>e=!0},isEqual:tt,splitValues:function(t,e=" "){return k(t)?t=z(t=p(t=t.split(e),(t=>t.trim())),v):P(t)},endsWith:function(t,e){return t.substring(t.length-e.length)===e},wrapList:P,wrapValue:function(t,...e){return e[0]instanceof t?e[0]:new t(...e)},simpleEase:function(t){return t<.5?2*t*t:t*(4-2*t)-1},values:l,arrayToSet:$,setToArray:B,uid:function(){return nt++},upperCaseFirst:st,lowerCaseFirst:rt,getter:function(t,e,n){Object.defineProperty(t,e,{get:n})},delegate:function(t,e,n){P(e).forEach((function(e){Object.defineProperty(t,e,{get(){const t=n.call(this);let r=t[e];return w(r)&&(r=r.bind(t)),r},set(t){n.call(this)[e]=t}})}))},reverse:function(t){return q(t).reverse()},prefixCamelCase:function(t,e){return e+st(t)},unprefixCamelCase:function(t,e){const n=new RegExp("^"+e+"(.+)$");let r=t.match(n);if(r)return rt(r[1])},camelToKebabCase:function(t){return t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))},nullToUndefined:function(t){if(!f(t))return t},sprintf:function(t,...e){return at(J,t,...e)},sprintfWithFormattedArgs:at,renameKeys:function(t,e){const n={};for(let r in t)n[e(r)]=t[r];return n},timestamp:function(){return Math.floor(.001*Date.now())},allSettled:function(t){return Promise.all(p(t,Z))},negate:ut}}()},4606:(t,e,n)=>{n(5074),up.viewport=function(){const t=up.util,e=up.element,n=up.fragment,r=new up.Config((()=>({viewportSelectors:["[up-viewport]","[up-fixed]"],fixedTop:["[up-fixed~=top]"],fixedBottom:["[up-fixed~=bottom]"],anchoredRight:["[up-anchored~=right]","[up-fixed~=top]","[up-fixed~=bottom]","[up-fixed~=right]"],revealSnap:200,revealPadding:0,revealTop:!1,revealMax:()=>.5*window.innerHeight,scrollSpeed:1}))),s=new up.MotionController("scrolling");function i(t,e,r={}){t=n.get(t,r);const i=new up.ScrollMotion(t,e,r);s.startMotion(t,i,r)}function o(e,r){if(r=t.options(r),e=n.get(e,r),!(r.layer=up.layer.get(e)))return up.error.failed.async("Cannot reveal a detached element");r.peel&&r.layer.peel();const i=new up.RevealMotion(e,r);return s.startMotion(e,i,r)}function a(t,e={}){if(up.browser.isIE11()){const e=c(t),n=e.scrollTop;t.focus(),e.scrollTop=n}else t.focus({preventScroll:!0});if(!e.preventScroll)return o(t)}function u(t=location.hash,e){let n=w(t,e);if(n)return up.reveal(n,{top:!0})}function l(){return[f(),...r.viewportSelectors].join(",")}function c(t,r={}){const s=n.get(t,r);return e.closest(s,l())}function p(t,r={}){return t=n.get(t,r),e.around(t,l())}function h(t={}){return n.all(l(),t)}function f(){let t;return(t=document.scrollingElement)?t.tagName:"html"}function d(){return document.querySelector(f())}function m(t){const n=e.style(t,"overflow-y");return"auto"===n||"scroll"===n}const g=t.memoize((function(){const t=up.element.affix(document.body,"[up-viewport]",{style:{position:"absolute",top:"0",left:"0",width:"100px",height:"100px",overflowY:"scroll"}}),e=t.offsetWidth-t.clientWidth;return up.element.remove(t),e}));function y(t){return up.fragment.toTarget(t)}function b(e){const n=t.copy(t.extractOptions(e));let r;return n.layer=up.layer.get(n),r=e[0]?[c(e[0],n)]:n.around?p(n.around,n):h(n),[r,n]}function v(e,n){const r=t.map(e,(function(t){const e=y(t);return i(t,n[e]||0,{duration:0})}));return Promise.all(r)}function w(t,r={}){if(t=t?.replace(/^#/,"")){const s=[e.attributeSelector("id",t),"a"+e.attributeSelector("name",t)].join(",");return n.get(s,r)}}let k=!1;return up.on("scroll",{once:!0,beforeBoot:!0},(()=>k=!0)),up.on("up:framework:boot",(function(){t.task((function(){if(!k)return u()}))})),up.on(window,"hashchange",(()=>u())),up.on("up:framework:reset",(function(){r.reset(),s.reset()})),{reveal:o,revealHash:u,firstHashTarget:w,scroll:i,config:r,get:c,subtree:function(t,r={}){return t=n.get(t,r),e.subtree(t,l())},around:p,all:h,rootSelector:f,get root(){return d()},rootWidth:function(){return e.root.clientWidth},rootHeight:function(){return e.root.clientHeight},rootHasReducedWidthFromScrollbar:function(){return window.innerWidth>document.documentElement.offsetWidth},rootOverflowElement:function(){const{body:e}=document,n=document.documentElement;return t.find([n,e],m)||d()},isRoot:function(t){return e.matches(t,f())},scrollbarWidth:g,saveScroll:function(...e){const[n,r]=b(e),s=r.location||r.layer.location;if(s){const e=r.tops??function(e){return t.mapObject(e,(t=>[y(t),t.scrollTop]))}(n);r.layer.lastScrollTops.set(s,e)}},restoreScroll:function(...t){const[e,n]=b(t),r=n.layer.location,s=n.layer.lastScrollTops.get(r)||{};return up.puts("up.viewport.restoreScroll()","Restoring scroll positions for URL %s to %o",r,s),v(e,s)},resetScroll:function(...t){const[e,n]=b(t);return v(e,{})},anchoredRight:function(){const t=r.anchoredRight.join(",");return n.all(t,{layer:"root"})},absolutize:function(n,s={}){const i=c(n).getBoundingClientRect(),o=n.getBoundingClientRect(),a=new up.Rect({left:o.left-i.left,top:o.top-i.top,width:o.width,height:o.height});s.afterMeasure?.(),e.setStyle(n,{position:"static"===n.style.position?"static":"relative",top:"auto",right:"auto",bottom:"auto",left:"auto",width:"100%",height:"100%"});const u=e.createFromSelector("up-bounds");e.insertBefore(n,u),u.appendChild(n);const l=function(t,n){return a.left+=t,a.top+=n,e.setStyle(u,a)};l(0,0);const p=n.getBoundingClientRect();return l(o.left-p.left,o.top-p.top),t.each(function(t=document){const e=["[up-fixed]"].concat(r.fixedTop).concat(r.fixedBottom);return t.querySelectorAll(e.join(","))}(n),e.fixedToAbsolute),{bounds:u,moveBounds:l}},focus:a,tryFocus:function(t,e){return a(t,e),t===document.activeElement},makeFocusable:function(t){t.hasAttribute("tabindex")||function(t){return e.matches(t,"a[href], button, textarea, input, select")}(t)||(t.setAttribute("tabindex","-1"),t.classList.add("up-focusable-content"))}}}(),up.focus=up.viewport.focus,up.scroll=up.viewport.scroll,up.reveal=up.viewport.reveal},3507:()=>{window.up={version:"2.5.0"}}},e={};function n(r){var s=e[r];if(void 0!==s)return s.exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}n(3507),n(8374),n(7924),n(3924),n(6535),n(2811),n(9675),n(2406),n(3742),n(3115),n(1279),n(6346),n(3030),n(7948),n(1752),n(8228),n(7050),n(9441),n(7422),n(9005),n(2200),n(1569),n(2737),n(3635),n(1906),n(4158),n(3139),n(6866),n(665),n(2828),n(2587),n(7031),n(4850),n(6267),n(7956),n(7403),n(6412),n(7965),n(7771),n(86),n(4552),n(5580),n(7101),n(6066),n(6387),n(5390),n(2618),n(7792),n(4308),n(1104),n(8665),n(3645),n(7782),n(2705),n(606),n(5437),n(7974),n(6413),n(5221),n(2298),n(4517),n(7241),n(2723),n(6956),n(8720),n(104),n(5438),n(7885),n(4818),n(9634),n(8670),n(3535),n(4453),n(2514),n(8944),n(2667),n(4606),n(4034),n(1647),n(9443),n(3849),n(2851),n(454),n(9615),n(6774),up.framework.onEvaled()})();