From 37268178ada7a65ce2b31fadee27a0211c50a2da Mon Sep 17 00:00:00 2001 From: Rolf Heij Date: Tue, 19 Nov 2024 20:52:41 +0100 Subject: [PATCH 1/6] Replace table header background with blur --- lib/platform-bible-react/dist/index.cjs | 38 +++-- lib/platform-bible-react/dist/index.cjs.map | 2 +- lib/platform-bible-react/dist/index.js | 38 +++-- lib/platform-bible-react/dist/index.js.map | 2 +- .../src/components/shadcn-ui/table.tsx | 2 +- .../basics/table.examples.component.tsx | 137 +++++++++++------- 6 files changed, 138 insertions(+), 81 deletions(-) diff --git a/lib/platform-bible-react/dist/index.cjs b/lib/platform-bible-react/dist/index.cjs index ca0605ae80..507bc4e869 100644 --- a/lib/platform-bible-react/dist/index.cjs +++ b/lib/platform-bible-react/dist/index.cjs @@ -1,4 +1,4 @@ -"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),v=require("react"),te=require("lucide-react"),ot=require("clsx"),Wi=require("tailwind-merge"),Gs=require("@radix-ui/react-dropdown-menu"),W=require("platform-bible-utils"),Ki=require("@radix-ui/react-slot"),Qn=require("class-variance-authority"),Ji=require("@radix-ui/react-label"),Zi=require("@radix-ui/react-radio-group"),Qi=require("@radix-ui/react-popover"),je=require("cmdk"),el=require("@radix-ui/react-dialog"),Ne=require("@tanstack/react-table"),tl=require("@radix-ui/react-select"),nl=require("@radix-ui/react-checkbox"),rl=require("@radix-ui/react-toggle-group"),ol=require("@radix-ui/react-toggle"),sl=require("@radix-ui/react-tabs"),al=require("@radix-ui/react-separator"),Ar=require("@mui/styled-engine"),Ie=require("@mui/material"),sn=require("react-dom"),Us=require("sonner"),il=require("@radix-ui/react-slider"),ll=require("@radix-ui/react-switch"),cl=require("markdown-to-jsx");function ke(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const M=ke(v),pe=ke(Gs),qs=ke(Ji),hn=ke(Zi),gn=ke(Qi),Xe=ke(el),ge=ke(tl),Br=ke(nl),er=ke(rl),Hs=ke(ol),Oe=ke(sl),Xs=ke(al),dl=ke(sn),an=ke(il),Vr=ke(ll);const ul=Wi.extendTailwindMerge({prefix:"tw-"});function S(...e){return ul(ot.clsx(e))}const qt=v.forwardRef(({className:e,type:t,...n},r)=>a.jsx("input",{type:t,className:S("pr-twp tw-flex tw-h-10 tw-rounded-md tw-border tw-border-input tw-bg-background tw-px-3 tw-py-2 tw-text-sm tw-ring-offset-background file:tw-border-0 file:tw-bg-transparent file:tw-text-sm file:tw-font-medium file:tw-text-foreground placeholder:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50",e),ref:r,...n}));qt.displayName="Input";const pl=v.forwardRef(({handleSearch:e,handleKeyDown:t,handleOnClick:n,handleSubmit:r,...o},s)=>a.jsxs("div",{className:"tw-relative",children:[a.jsx(qt,{...o,type:"text",className:"tw-box-border tw-gap-2.5 tw-rounded-lg tw-border tw-border-solid tw-bg-background tw-py-2 tw-pl-4 tw-pr-3 tw-font-medium tw-shadow-none tw-outline-none",onChange:i=>e(i.target.value),onKeyDown:i=>{i.key==="Enter"&&r(),t(i)},onClick:n,ref:s}),a.jsx(te.History,{className:"tw-absolute tw-right-3 tw-top-1/2 tw-h-4 tw-w-4 tw--translate-y-1/2 tw-transform tw-cursor-pointer tw-text-muted-foreground",onClick:()=>{console.log("back in history")}})]}));var wl=Object.defineProperty,fl=(e,t,n)=>t in e?wl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ne=(e,t,n)=>fl(e,typeof t!="symbol"?t+"":t,n);const gt=["GEN","EXO","LEV","NUM","DEU","JOS","JDG","RUT","1SA","2SA","1KI","2KI","1CH","2CH","EZR","NEH","EST","JOB","PSA","PRO","ECC","SNG","ISA","JER","LAM","EZK","DAN","HOS","JOL","AMO","OBA","JON","MIC","NAM","HAB","ZEP","HAG","ZEC","MAL","MAT","MRK","LUK","JHN","ACT","ROM","1CO","2CO","GAL","EPH","PHP","COL","1TH","2TH","1TI","2TI","TIT","PHM","HEB","JAS","1PE","2PE","1JN","2JN","3JN","JUD","REV","TOB","JDT","ESG","WIS","SIR","BAR","LJE","S3Y","SUS","BEL","1MA","2MA","3MA","4MA","1ES","2ES","MAN","PS2","ODA","PSS","JSA","JDB","TBS","SST","DNT","BLT","XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","3ES","EZA","5EZ","6EZ","INT","CNC","GLO","TDX","NDX","DAG","PS3","2BA","LBA","JUB","ENO","1MQ","2MQ","3MQ","REP","4BA","LAO"],Jr=["XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","INT","CNC","GLO","TDX","NDX"],Ys=["Genesis","Exodus","Leviticus","Numbers","Deuteronomy","Joshua","Judges","Ruth","1 Samuel","2 Samuel","1 Kings","2 Kings","1 Chronicles","2 Chronicles","Ezra","Nehemiah","Esther (Hebrew)","Job","Psalms","Proverbs","Ecclesiastes","Song of Songs","Isaiah","Jeremiah","Lamentations","Ezekiel","Daniel (Hebrew)","Hosea","Joel","Amos","Obadiah","Jonah","Micah","Nahum","Habakkuk","Zephaniah","Haggai","Zechariah","Malachi","Matthew","Mark","Luke","John","Acts","Romans","1 Corinthians","2 Corinthians","Galatians","Ephesians","Philippians","Colossians","1 Thessalonians","2 Thessalonians","1 Timothy","2 Timothy","Titus","Philemon","Hebrews","James","1 Peter","2 Peter","1 John","2 John","3 John","Jude","Revelation","Tobit","Judith","Esther Greek","Wisdom of Solomon","Sirach (Ecclesiasticus)","Baruch","Letter of Jeremiah","Song of 3 Young Men","Susanna","Bel and the Dragon","1 Maccabees","2 Maccabees","3 Maccabees","4 Maccabees","1 Esdras (Greek)","2 Esdras (Latin)","Prayer of Manasseh","Psalm 151","Odes","Psalms of Solomon","Joshua A. *obsolete*","Judges B. *obsolete*","Tobit S. *obsolete*","Susanna Th. *obsolete*","Daniel Th. *obsolete*","Bel Th. *obsolete*","Extra A","Extra B","Extra C","Extra D","Extra E","Extra F","Extra G","Front Matter","Back Matter","Other Matter","3 Ezra *obsolete*","Apocalypse of Ezra","5 Ezra (Latin Prologue)","6 Ezra (Latin Epilogue)","Introduction","Concordance ","Glossary ","Topical Index","Names Index","Daniel Greek","Psalms 152-155","2 Baruch (Apocalypse)","Letter of Baruch","Jubilees","Enoch","1 Meqabyan","2 Meqabyan","3 Meqabyan","Reproof (Proverbs 25-31)","4 Baruch (Rest of Baruch)","Laodiceans"],Wo=El();function Ht(e,t=!0){return t&&(e=e.toUpperCase()),e in Wo?Wo[e]:0}function Zr(e){return Ht(e)>0}function ml(e){const t=typeof e=="string"?Ht(e):e;return t>=40&&t<=66}function hl(e){return(typeof e=="string"?Ht(e):e)<=39}function Ws(e){return e<=66}function gl(e){const t=typeof e=="string"?Ht(e):e;return Zs(t)&&!Ws(t)}function*bl(){for(let e=1;e<=gt.length;e++)yield e}const vl=1,Ks=gt.length;function yl(){return["XXA","XXB","XXC","XXD","XXE","XXF","XXG"]}function Qr(e,t="***"){const n=e-1;return n<0||n>=gt.length?t:gt[n]}function Js(e){return e<=0||e>Ks?"******":Ys[e-1]}function xl(e){return Js(Ht(e))}function Zs(e){const t=typeof e=="number"?Qr(e):e;return Zr(t)&&!Jr.includes(t)}function Nl(e){const t=typeof e=="number"?Qr(e):e;return Zr(t)&&Jr.includes(t)}function kl(e){return Ys[e-1].includes("*obsolete*")}function El(){const e={};for(let t=0;t(e[e.Unknown=0]="Unknown",e[e.Original=1]="Original",e[e.Septuagint=2]="Septuagint",e[e.Vulgate=3]="Vulgate",e[e.English=4]="English",e[e.RussianProtestant=5]="RussianProtestant",e[e.RussianOrthodox=6]="RussianOrthodox",e))(qe||{});const Pe=class{constructor(t){if(ne(this,"name"),ne(this,"fullPath"),ne(this,"isPresent"),ne(this,"hasVerseSegments"),ne(this,"isCustomized"),ne(this,"baseVersification"),ne(this,"scriptureBooks"),ne(this,"_type"),t==null)throw new Error("Argument undefined");typeof t=="string"?(this.name=t,this._type=qe[t]):(this._type=t,this.name=qe[t])}get type(){return this._type}equals(t){return!t.type||!this.type?!1:t.type===this.type}};ne(Pe,"Original",new Pe(qe.Original)),ne(Pe,"Septuagint",new Pe(qe.Septuagint)),ne(Pe,"Vulgate",new Pe(qe.Vulgate)),ne(Pe,"English",new Pe(qe.English)),ne(Pe,"RussianProtestant",new Pe(qe.RussianProtestant)),ne(Pe,"RussianOrthodox",new Pe(qe.RussianOrthodox));let ut=Pe;function Ko(e,t){const n=t[0];for(let r=1;r(e[e.Valid=0]="Valid",e[e.UnknownVersification=1]="UnknownVersification",e[e.OutOfRange=2]="OutOfRange",e[e.VerseOutOfOrder=3]="VerseOutOfOrder",e[e.VerseRepeated=4]="VerseRepeated",e))(Qs||{});const Se=class re{constructor(t,n,r,o){if(ne(this,"firstChapter"),ne(this,"lastChapter"),ne(this,"lastVerse"),ne(this,"hasSegmentsDefined"),ne(this,"text"),ne(this,"BBBCCCVVVS"),ne(this,"longHashCode"),ne(this,"versification"),ne(this,"rtlMark","‏"),ne(this,"_bookNum",0),ne(this,"_chapterNum",0),ne(this,"_verseNum",0),ne(this,"_verse"),r==null&&o==null)if(t!=null&&typeof t=="string"){const s=t,i=n!=null&&n instanceof ut?n:void 0;this.setEmpty(i),this.parse(s)}else if(t!=null&&typeof t=="number"){const s=n!=null&&n instanceof ut?n:void 0;this.setEmpty(s),this._verseNum=t%re.chapterDigitShifter,this._chapterNum=Math.floor(t%re.bookDigitShifter/re.chapterDigitShifter),this._bookNum=Math.floor(t/re.bookDigitShifter)}else if(n==null)if(t!=null&&t instanceof re){const s=t;this._bookNum=s.bookNum,this._chapterNum=s.chapterNum,this._verseNum=s.verseNum,this._verse=s.verse,this.versification=s.versification}else{if(t==null)return;const s=t instanceof ut?t:re.defaultVersification;this.setEmpty(s)}else throw new Error("VerseRef constructor not supported.");else if(t!=null&&n!=null&&r!=null)if(typeof t=="string"&&typeof n=="string"&&typeof r=="string")this.setEmpty(o),this.updateInternal(t,n,r);else if(typeof t=="number"&&typeof n=="number"&&typeof r=="number")this._bookNum=t,this._chapterNum=n,this._verseNum=r,this.versification=o??re.defaultVersification;else throw new Error("VerseRef constructor not supported.");else throw new Error("VerseRef constructor not supported.")}static isVerseParseable(t){return t.length>0&&"0123456789".includes(t[0])&&!t.endsWith(this.verseRangeSeparator)&&!t.endsWith(this.verseSequenceIndicator)}static tryParse(t){let n;try{return n=new re(t),{success:!0,verseRef:n}}catch(r){if(r instanceof en)return n=new re,{success:!1,verseRef:n};throw r}}static getBBBCCCVVV(t,n,r){return t%re.bcvMaxValue*re.bookDigitShifter+(n>=0?n%re.bcvMaxValue*re.chapterDigitShifter:0)+(r>=0?r%re.bcvMaxValue:0)}static fromJSON(t){const{book:n,chapterNum:r,verseNum:o,verse:s,versificationStr:i}=t,l=s||o.toString();let c;return i&&(c=new ut(i)),n?new re(n,r.toString(),l,c):new re}static tryGetVerseNum(t){let n;if(!t)return n=-1,{success:!0,vNum:n};n=0;let r;for(let o=0;o"9")return o===0&&(n=-1),{success:!1,vNum:n};if(n=n*10+ +r-0,n>re.bcvMaxValue)return n=-1,{success:!1,vNum:n}}return{success:!0,vNum:n}}get isDefault(){return this.bookNum===0&&this.chapterNum===0&&this.verseNum===0&&this.versification==null}get hasMultiple(){return this._verse!=null&&(this._verse.includes(re.verseRangeSeparator)||this._verse.includes(re.verseSequenceIndicator))}get book(){return se.bookNumberToId(this.bookNum,"")}set book(t){this.bookNum=se.bookIdToNumber(t)}get chapter(){return this.isDefault||this._chapterNum<0?"":this._chapterNum.toString()}set chapter(t){const n=+t;this._chapterNum=Number.isInteger(n)?n:-1}get verse(){return this._verse!=null?this._verse:this.isDefault||this._verseNum<0?"":this._verseNum.toString()}set verse(t){const{success:n,vNum:r}=re.tryGetVerseNum(t);this._verse=n?void 0:t.replace(this.rtlMark,""),this._verseNum=r,!(this._verseNum>=0)&&({vNum:this._verseNum}=re.tryGetVerseNum(this._verse))}get bookNum(){return this._bookNum}set bookNum(t){if(t<=0||t>se.lastBook)throw new en("BookNum must be greater than zero and less than or equal to last book");this._bookNum=t}get chapterNum(){return this._chapterNum}set chapterNum(t){this.chapterNum=t}get verseNum(){return this._verseNum}set verseNum(t){this._verseNum=t}get versificationStr(){var t;return(t=this.versification)==null?void 0:t.name}set versificationStr(t){this.versification=this.versification!=null?new ut(t):void 0}get valid(){return this.validStatus===0}get validStatus(){return this.validateVerse(re.verseRangeSeparators,re.verseSequenceIndicators)}get BBBCCC(){return re.getBBBCCCVVV(this._bookNum,this._chapterNum,0)}get BBBCCCVVV(){return re.getBBBCCCVVV(this._bookNum,this._chapterNum,this._verseNum)}get isExcluded(){return!1}parse(t){if(t=t.replace(this.rtlMark,""),t.includes("/")){const s=t.split("/");if(t=s[0],s.length>1)try{const i=+s[1].trim();this.versification=new ut(qe[i])}catch{throw new en("Invalid reference : "+t)}}const n=t.trim().split(" ");if(n.length!==2)throw new en("Invalid reference : "+t);const r=n[1].split(":"),o=+r[0];if(r.length!==2||se.bookIdToNumber(n[0])===0||!Number.isInteger(o)||o<0||!re.isVerseParseable(r[1]))throw new en("Invalid reference : "+t);this.updateInternal(n[0],r[0],r[1])}simplify(){this._verse=void 0}clone(){return new re(this)}toString(){const t=this.book;return t===""?"":`${t} ${this.chapter}:${this.verse}`}toJSON(){let t=this.verse;(t===""||t===this.verseNum.toString())&&(t=void 0);const n={book:this.book,chapterNum:this.chapterNum,verseNum:this.verseNum,verse:t,versificationStr:this.versificationStr};return t||delete n.verse,n}equals(t){return t instanceof re?t._bookNum===this._bookNum&&t._chapterNum===this._chapterNum&&t._verseNum===this._verseNum&&t.verse===this.verse&&(t.versification==null&&this.versification==null||t.versification!=null&&this.versification!=null&&t.versification.equals(this.versification)):!1}allVerses(t=!1,n=re.verseRangeSeparators,r=re.verseSequenceIndicators){if(this._verse==null||this.chapterNum<=0)return[this.clone()];const o=[],s=Ko(this._verse,r);for(const i of s.map(l=>Ko(l,n))){const l=this.clone();l.verse=i[0];const c=l.verseNum;if(o.push(l),i.length>1){const d=this.clone();if(d.verse=i[1],!t)for(let u=c+1;ui)return 3;if(r===i)return 4;r=i}return 0}get internalValid(){return this.versification==null?1:this._bookNum<=0||this._bookNum>se.lastBook?2:(se.isCanonical(this._bookNum),0)}setEmpty(t=re.defaultVersification){this._bookNum=0,this._chapterNum=-1,this._verse=void 0,this.versification=t}updateInternal(t,n,r){this.bookNum=se.bookIdToNumber(t),this.chapter=n,this.verse=r}};ne(Se,"defaultVersification",ut.English),ne(Se,"verseRangeSeparator","-"),ne(Se,"verseSequenceIndicator",","),ne(Se,"verseRangeSeparators",[Se.verseRangeSeparator]),ne(Se,"verseSequenceIndicators",[Se.verseSequenceIndicator]),ne(Se,"chapterDigitShifter",1e3),ne(Se,"bookDigitShifter",Se.chapterDigitShifter*Se.chapterDigitShifter),ne(Se,"bcvMaxValue",Se.chapterDigitShifter-1),ne(Se,"ValidStatusType",Qs);class en extends Error{}const tr=pe.Root,eo=pe.Trigger,ea=pe.Group,Sl=pe.Portal,Tl=pe.Sub,Cl=pe.RadioGroup,ta=v.forwardRef(({className:e,inset:t,children:n,...r},o)=>a.jsxs(pe.SubTrigger,{ref:o,className:S("tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-px-2 tw-py-1.5 tw-text-sm tw-outline-none focus:tw-bg-accent data-[state=open]:tw-bg-accent",t&&"tw-pl-8",e),...r,children:[n,a.jsx(te.ChevronRight,{className:"tw-ml-auto tw-h-4 tw-w-4"})]}));ta.displayName=pe.SubTrigger.displayName;const na=v.forwardRef(({className:e,...t},n)=>a.jsx(pe.SubContent,{ref:n,className:S("tw-z-50 tw-min-w-[8rem] tw-overflow-hidden tw-rounded-md tw-border tw-bg-popover tw-p-1 tw-text-popover-foreground tw-shadow-lg data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",e),...t}));na.displayName=pe.SubContent.displayName;const Nn=v.forwardRef(({className:e,sideOffset:t=4,...n},r)=>a.jsx(pe.Portal,{children:a.jsx(pe.Content,{ref:r,sideOffset:t,className:S("pr-twp tw-z-50 tw-min-w-[8rem] tw-overflow-hidden tw-rounded-md tw-border tw-bg-popover tw-p-1 tw-text-popover-foreground tw-shadow-md data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",e),...n})}));Nn.displayName=pe.Content.displayName;const to=v.forwardRef(({className:e,inset:t,...n},r)=>a.jsx(pe.Item,{ref:r,className:S("tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-px-2 tw-py-1.5 tw-text-sm tw-outline-none tw-transition-colors focus:tw-bg-accent data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",t&&"tw-pl-8",e),...n}));to.displayName=pe.Item.displayName;const nr=v.forwardRef(({className:e,children:t,checked:n,...r},o)=>a.jsxs(pe.CheckboxItem,{ref:o,className:S("tw-relative tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-outline-none tw-transition-colors focus:tw-bg-accent focus:tw-text-accent-foreground data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",e),checked:n,...r,children:[a.jsx("span",{className:"tw-absolute tw-left-2 tw-flex tw-h-3.5 tw-w-3.5 tw-items-center tw-justify-center",children:a.jsx(pe.ItemIndicator,{children:a.jsx(te.Check,{className:"tw-h-4 tw-w-4"})})}),t]}));nr.displayName=pe.CheckboxItem.displayName;const no=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(pe.RadioItem,{ref:r,className:S("tw-relative tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-outline-none tw-transition-colors focus:tw-bg-accent focus:tw-text-accent-foreground data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",e),...n,children:[a.jsx("span",{className:"tw-absolute tw-left-2 tw-flex tw-h-3.5 tw-w-3.5 tw-items-center tw-justify-center",children:a.jsx(pe.ItemIndicator,{children:a.jsx(te.Circle,{className:"tw-h-2 tw-w-2 tw-fill-current"})})}),t]}));no.displayName=pe.RadioItem.displayName;const Xt=v.forwardRef(({className:e,inset:t,...n},r)=>a.jsx(pe.Label,{ref:r,className:S("tw-px-2 tw-py-1.5 tw-text-sm tw-font-semibold",t&&"tw-pl-8",e),...n}));Xt.displayName=pe.Label.displayName;const kn=v.forwardRef(({className:e,...t},n)=>a.jsx(pe.Separator,{ref:n,className:S("tw--mx-1 tw-my-1 tw-h-px tw-bg-muted",e),...t}));kn.displayName=pe.Separator.displayName;function ra({className:e,...t}){return a.jsx("span",{className:S("tw-ml-auto tw-text-xs tw-tracking-widest tw-opacity-60",e),...t})}ra.displayName="DropdownMenuShortcut";const jl=v.forwardRef(({bookId:e,handleSelectBook:t,isSelected:n,handleHighlightBook:r,handleKeyDown:o,bookType:s,children:i},l)=>a.jsxs(to,{ref:l,textValue:e,className:S("tw-mx-1 tw-px-1 tw-font-normal tw-text-foreground/80",{"tw-bg-amber-50 tw-text-yellow-900 data-[highlighted]:tw-bg-amber-100":n}),onSelect:c=>{c.preventDefault(),t()},onKeyDown:c=>{o(c)},onFocus:r,onMouseMove:r,children:[a.jsx("span",{className:S("tw-border-b-0 tw-border-l-2 tw-border-r-0 tw-border-t-0 tw-border-solid tw-px-2",{"tw-font-bold":n,"tw-border-l-red-200":s.toLowerCase()==="ot","tw-border-l-purple-200":s.toLowerCase()==="nt","tw-border-l-indigo-200":s.toLowerCase()==="dc"}),children:se.bookIdToEnglishName(e)}),n&&a.jsx("div",{children:i})]},e));function Ol({handleSelectChapter:e,endChapter:t,activeChapter:n,highlightedChapter:r,handleHighlightedChapter:o}){const s=Array.from({length:t},(l,c)=>c+1),i=v.useCallback(l=>{o(l)},[o]);return a.jsx("div",{className:S("tw-flex tw-flex-wrap tw-items-start tw-justify-start tw-self-stretch"),children:s.map(l=>a.jsx("div",{className:S("tw-box-content tw-flex tw-h-4 tw-w-4 tw-cursor-pointer tw-items-center tw-justify-end tw-rounded-md tw-p-2 tw-text-amber-800",{"tw-font-semibold tw-text-amber-900":l===n,"tw-bg-amber-200":l===r}),onClick:c=>{c.preventDefault(),c.stopPropagation(),e(l)},role:"button",onKeyDown:c=>{c.key==="Enter"&&e(l)},tabIndex:0,onMouseMove:()=>i(l),children:l},l))})}function Rl({handleSort:e,handleLocationHistory:t,handleBookmarks:n}){return a.jsxs(Xt,{className:"tw-flex tw-justify-between",children:[a.jsx("p",{className:"tw-inline-block tw-align-middle",children:"Go To"}),a.jsxs("div",{className:"tw-flex tw-items-center",children:[a.jsx(te.ArrowDownWideNarrow,{onClick:e,className:"tw-m-2 tw-h-4 tw-w-4 tw-cursor-pointer tw-gap-2"}),a.jsx(te.Clock,{onClick:t,className:"tw-m-2 tw-h-4 tw-w-4 tw-cursor-pointer tw-gap-2"}),a.jsx(te.Bookmark,{onClick:n,className:"tw-m-2 tw-h-4 tw-w-4 tw-cursor-pointer tw-gap-2"})]})]})}const un=se.allBookIds,Pl={OT:"Old Testament",NT:"New Testament",DC:"Deuterocanon"},Jo=["OT","NT","DC"],_l=32+32+32,Il=[/^(\w+)$/i,/^(\w+)(?:\s(\d+))$/i,/^(\w+)(?:\s(\d+):(\d+))$/i],$l=e=>({OT:un.filter(n=>se.isBookOT(n)),NT:un.filter(n=>se.isBookNT(n)),DC:un.filter(n=>se.isBookDC(n))})[e],tn=e=>W.getChaptersForBook(se.bookIdToNumber(e));function Ml(){return un.map(t=>se.bookIdToEnglishName(t))}function Dl(e){return Ml().includes(e)}function Al(e){const t=e.toLowerCase().replace(/^\w/,n=>n.toUpperCase());if(Dl(t))return un.find(r=>se.bookIdToEnglishName(r)===t)}function Bl({scrRef:e,handleSubmit:t}){const[n,r]=v.useState(""),[o,s]=v.useState(se.bookNumberToId(e.bookNum)),[i,l]=v.useState(e.chapterNum??0),[c,d]=v.useState(se.bookNumberToId(e.bookNum)),[u,m]=v.useState(!1),[w,b]=v.useState(u),y=v.useRef(void 0),f=v.useRef(void 0),h=v.useRef(void 0),E=v.useCallback(N=>$l(N).filter(D=>{const $=se.bookIdToEnglishName(D).toLowerCase(),J=n.replace(/[^a-zA-Z]/g,"").toLowerCase();return $.includes(J)||D.toLowerCase().includes(J)}),[n]),I=N=>{r(N)},j=v.useRef(!1),k=v.useCallback(N=>{if(j.current){j.current=!1;return}m(N)},[]),g=v.useCallback((N,D,$,J)=>{if(l(se.bookNumberToId(e.bookNum)!==N?1:e.chapterNum),D||tn(N)===-1){t({bookNum:se.bookIdToNumber(N),chapterNum:$||1,verseNum:J||1}),m(!1),r("");return}s(o!==N?N:""),m(!D)},[t,e.bookNum,e.chapterNum,o]),P=N=>{N<=0||N>tn(o)||g(o,!0,N)},V=v.useCallback(()=>{Il.forEach(N=>{const D=n.match(N);if(D){const[$,J=void 0,Y=void 0]=D.slice(1),z=Al($);(se.isBookIdValid($)||z)&&g(z??$,!0,J?parseInt(J,10):1,Y?parseInt(Y,10):1)}})},[g,n]),U=v.useCallback(N=>{u?(N.key==="ArrowDown"||N.key==="ArrowUp")&&(typeof h<"u"&&h.current!==null?h.current.focus():typeof f<"u"&&f.current!==null&&f.current.focus(),N.preventDefault()):m(!0)},[u]),T=N=>{const{key:D}=N;D==="ArrowRight"||D==="ArrowLeft"||D==="ArrowDown"||D==="ArrowUp"||D==="Enter"||(y.current.dispatchEvent(new KeyboardEvent("keydown",{key:D})),y.current.focus())},R=N=>{const{key:D}=N;if(c===o){if(D==="Enter"){N.preventDefault(),g(o,!0,i);return}let $=0;if(D==="ArrowRight")if(i1)$=-1;else{N.preventDefault();return}else D==="ArrowDown"?$=6:D==="ArrowUp"&&($=-6);i+$<=0||i+$>tn(c)?l(0):$!==0&&(l(i+$),N.preventDefault())}};return v.useEffect(()=>{o===c?o===se.bookNumberToId(e.bookNum)?l(e.chapterNum):l(1):l(0)},[c,e.bookNum,e.chapterNum,o]),v.useLayoutEffect(()=>{b(u)},[u]),v.useLayoutEffect(()=>{const N=setTimeout(()=>{if(w&&f.current&&h.current){const $=h.current.offsetTop-_l;f.current.scrollTo({top:$,behavior:"instant"})}},10);return()=>{clearTimeout(N)}},[w]),a.jsx("div",{className:"pr-twp tw-flex",children:a.jsxs(tr,{modal:!1,open:u,onOpenChange:k,children:[a.jsx(eo,{asChild:!0,children:a.jsx(pl,{ref:y,value:n,handleSearch:I,handleKeyDown:U,handleOnClick:()=>{s(se.bookNumberToId(e.bookNum)),d(se.bookNumberToId(e.bookNum)),l(e.chapterNum>0?e.chapterNum:0),m(!0),y.current.focus()},onFocus:()=>{j.current=!0},handleSubmit:V,placeholder:`${se.bookNumberToEnglishName(e.bookNum)} ${e.chapterNum}:${e.verseNum}`})}),a.jsxs(Nn,{className:"tw-m-1 tw-overflow-y-auto tw-p-0 tw-font-normal tw-text-foreground/80",style:{width:"233px",maxHeight:"500px",zIndex:"250"},onKeyDown:T,align:"start",ref:f,children:[a.jsx(Rl,{handleSort:()=>console.log("sorting"),handleLocationHistory:()=>console.log("location history"),handleBookmarks:()=>console.log("bookmarks")}),Jo.map((N,D)=>E(N).length>0&&a.jsxs("div",{children:[a.jsx(Xt,{className:"tw-font-semibold tw-text-foreground/80",children:Pl[N]}),E(N).map($=>a.jsx("div",{children:a.jsx(jl,{bookId:$,handleSelectBook:()=>g($,!1),isSelected:o===$,handleHighlightBook:()=>d($),handleKeyDown:R,bookType:N,ref:J=>{o===$&&(h.current=J)},children:a.jsx(Ol,{handleSelectChapter:P,endChapter:tn($),activeChapter:e.bookNum===se.bookIdToNumber($)?e.chapterNum:0,highlightedChapter:i,handleHighlightedChapter:J=>{l(J)}})})},$)),Jo.length-1!==D?a.jsx(kn,{}):void 0]},N))]})]})})}const oa=Qn.cva("pr-twp tw-inline-flex tw-items-center tw-justify-center tw-whitespace-nowrap tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50",{variants:{variant:{default:"tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90",destructive:"tw-bg-destructive tw-text-destructive-foreground hover:tw-bg-destructive/90",outline:"tw-border tw-border-input tw-bg-background hover:tw-bg-accent hover:tw-text-accent-foreground",secondary:"tw-bg-secondary tw-text-secondary-foreground hover:tw-bg-secondary/80",ghost:"hover:tw-bg-accent hover:tw-text-accent-foreground",link:"tw-text-primary tw-underline-offset-4 hover:tw-underline"},size:{default:"tw-h-10 tw-px-4 tw-py-2",sm:"tw-h-9 tw-rounded-md tw-px-3",lg:"tw-h-11 tw-rounded-md tw-px-8",icon:"tw-h-10 tw-w-10"}},defaultVariants:{variant:"default",size:"default"}}),he=v.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...o},s)=>{const i=r?Ki.Slot:"button";return a.jsx(i,{className:S(oa({variant:t,size:n,className:e})),ref:s,...o})});he.displayName="Button";const Vl=Qn.cva("tw-text-sm tw-font-medium tw-leading-none peer-disabled:tw-cursor-not-allowed peer-disabled:tw-opacity-70"),Ue=v.forwardRef(({className:e,...t},n)=>a.jsx(qs.Root,{ref:n,className:S("pr-twp",Vl(),e),...t}));Ue.displayName=qs.Root.displayName;const ro=v.forwardRef(({className:e,...t},n)=>a.jsx(hn.Root,{className:S("pr-twp tw-grid tw-gap-2",e),...t,ref:n}));ro.displayName=hn.Root.displayName;const qn=v.forwardRef(({className:e,...t},n)=>a.jsx(hn.Item,{ref:n,className:S("pr-twp tw-aspect-square tw-h-4 tw-w-4 tw-rounded-full tw-border tw-border-primary tw-text-primary tw-ring-offset-background focus:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50",e),...t,children:a.jsx(hn.Indicator,{className:"tw-flex tw-items-center tw-justify-center",children:a.jsx(te.Circle,{className:"tw-h-2.5 tw-w-2.5 tw-fill-current tw-text-current"})})}));qn.displayName=hn.Item.displayName;const Ll=gn.Root,Fl=gn.Trigger,sa=v.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},o)=>a.jsx(gn.Portal,{children:a.jsx(gn.Content,{ref:o,align:t,sideOffset:n,className:S("pr-twp tw-z-50 tw-w-72 tw-rounded-md tw-border tw-bg-popover tw-p-4 tw-text-popover-foreground tw-shadow-md tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",e),...r})}));sa.displayName=gn.Content.displayName;const zl=Xe.Portal,aa=v.forwardRef(({className:e,...t},n)=>a.jsx(Xe.Overlay,{ref:n,className:S("tw-fixed tw-inset-0 tw-z-50 tw-bg-black/80 data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0",e),...t}));aa.displayName=Xe.Overlay.displayName;const Gl=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(zl,{children:[a.jsx(aa,{}),a.jsxs(Xe.Content,{ref:r,className:S("tw-fixed tw-left-[50%] tw-top-[50%] tw-z-50 tw-grid tw-w-full tw-max-w-lg tw-translate-x-[-50%] tw-translate-y-[-50%] tw-gap-4 tw-border tw-bg-background tw-p-6 tw-shadow-lg tw-duration-200 data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[state=closed]:tw-slide-out-to-left-1/2 data-[state=closed]:tw-slide-out-to-top-[48%] data-[state=open]:tw-slide-in-from-left-1/2 data-[state=open]:tw-slide-in-from-top-[48%] sm:tw-rounded-lg",e),...n,children:[t,a.jsxs(Xe.Close,{className:"tw-absolute tw-right-4 tw-top-4 tw-rounded-sm tw-opacity-70 tw-ring-offset-background tw-transition-opacity hover:tw-opacity-100 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-ring focus:tw-ring-offset-2 disabled:tw-pointer-events-none data-[state=open]:tw-bg-accent data-[state=open]:tw-text-muted-foreground",children:[a.jsx(te.X,{className:"tw-h-4 tw-w-4"}),a.jsx("span",{className:"tw-sr-only",children:"Close"})]})]})]}));Gl.displayName=Xe.Content.displayName;const Ul=v.forwardRef(({className:e,...t},n)=>a.jsx(Xe.Title,{ref:n,className:S("tw-text-lg tw-font-semibold tw-leading-none tw-tracking-tight",e),...t}));Ul.displayName=Xe.Title.displayName;const ql=v.forwardRef(({className:e,...t},n)=>a.jsx(Xe.Description,{ref:n,className:S("tw-text-sm tw-text-muted-foreground",e),...t}));ql.displayName=Xe.Description.displayName;const ia=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command,{ref:n,className:S("tw-flex tw-h-full tw-w-full tw-flex-col tw-overflow-hidden tw-rounded-md tw-bg-popover tw-text-popover-foreground",e),...t}));ia.displayName=je.Command.displayName;const la=v.forwardRef(({className:e,...t},n)=>a.jsxs("div",{className:"tw-flex tw-items-center tw-border-b tw-px-3",children:[a.jsx(te.Search,{className:"tw-me-2 tw-h-4 tw-w-4 tw-shrink-0 tw-opacity-50"}),a.jsx(je.Command.Input,{ref:n,className:S("tw-flex tw-h-11 tw-w-full tw-rounded-md tw-bg-transparent tw-py-3 tw-text-sm tw-outline-none placeholder:tw-text-muted-foreground disabled:tw-cursor-not-allowed disabled:tw-opacity-50",e),...t})]}));la.displayName=je.Command.Input.displayName;const ca=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.List,{ref:n,className:S("tw-max-h-[300px] tw-overflow-y-auto tw-overflow-x-hidden",e),...t}));ca.displayName=je.Command.List.displayName;const da=v.forwardRef((e,t)=>a.jsx(je.Command.Empty,{ref:t,className:"tw-py-6 tw-text-center tw-text-sm",...e}));da.displayName=je.Command.Empty.displayName;const Hl=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.Group,{ref:n,className:S("tw-overflow-hidden tw-p-1 tw-text-foreground [&_[cmdk-group-heading]]:tw-px-2 [&_[cmdk-group-heading]]:tw-py-1.5 [&_[cmdk-group-heading]]:tw-text-xs [&_[cmdk-group-heading]]:tw-font-medium [&_[cmdk-group-heading]]:tw-text-muted-foreground",e),...t}));Hl.displayName=je.Command.Group.displayName;const Xl=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.Separator,{ref:n,className:S("tw--mx-1 tw-h-px tw-bg-border",e),...t}));Xl.displayName=je.Command.Separator.displayName;const ua=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.Item,{ref:n,className:S("tw-relative tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-px-2 tw-py-1.5 tw-text-sm tw-outline-none data-[disabled=true]:tw-pointer-events-none data-[selected=true]:tw-bg-accent data-[selected=true]:tw-text-accent-foreground data-[disabled=true]:tw-opacity-50",e),...t}));ua.displayName=je.Command.Item.displayName;function Yl(e){return typeof e=="string"?e:typeof e=="number"?e.toString():e.label}function Lr({id:e,options:t=[],className:n,value:r,onChange:o=()=>{},getOptionLabel:s=Yl,buttonPlaceholder:i="",textPlaceholder:l="",commandEmptyMessage:c="No option found",buttonVariant:d="outline",dir:u="ltr",isDisabled:m=!1,...w}){const[b,y]=v.useState(!1);return a.jsxs(Ll,{open:b,onOpenChange:y,...w,children:[a.jsx(Fl,{asChild:!0,children:a.jsxs(he,{variant:d,role:"combobox","aria-expanded":b,id:e,className:S("tw-w-[200px] tw-justify-between",n),disabled:m,children:[a.jsx("span",{className:"tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap",children:r?s(r):i}),a.jsx(te.ChevronsUpDown,{className:"tw-ms-2 tw-h-4 tw-w-4 tw-shrink-0 tw-opacity-50"})]})}),a.jsx(sa,{className:"tw-w-[200px] tw-p-0",dir:u,children:a.jsxs(ia,{children:[a.jsx(la,{dir:u,placeholder:l,className:"tw-text-inherit"}),a.jsx(da,{children:c}),a.jsx(ca,{children:t.map(f=>a.jsxs(ua,{value:s(f),onSelect:()=>{o(f),y(!1)},children:[a.jsx(te.Check,{className:S("tw-me-2 tw-h-4 tw-w-4",{"tw-opacity-0":!r||s(r)!==s(f)})}),s(f)]},s(f)))})]})})]})}function pa({startChapter:e,endChapter:t,handleSelectStartChapter:n,handleSelectEndChapter:r,isDisabled:o=!1,chapterCount:s}){const i=v.useMemo(()=>Array.from({length:s},(d,u)=>u+1),[s]),l=d=>{n(d),d>t&&r(d)},c=d=>{r(d),dd.toString(),value:e},"start chapter"),a.jsx(Ue,{htmlFor:"end-chapters-combobox",children:"to"}),a.jsx(Lr,{isDisabled:o,onChange:c,className:"tw-ml-2 tw-w-20",options:i,getOptionLabel:d=>d.toString(),value:t},"end chapter")]})}var wa=(e=>(e.CURRENT_BOOK="current book",e.CHOOSE_BOOKS="choose books",e))(wa||{});const Wl=Object.freeze(["%webView_bookSelector_currentBook%","%webView_bookSelector_choose%","%webView_bookSelector_chooseBooks%"]),kr=(e,t)=>e[t]??t;function Kl({handleBookSelectionModeChange:e,currentBookName:t,onSelectBooks:n,selectedBookIds:r,chapterCount:o,endChapter:s,handleSelectEndChapter:i,startChapter:l,handleSelectStartChapter:c,localizedStrings:d}){const u=kr(d,"%webView_bookSelector_currentBook%"),m=kr(d,"%webView_bookSelector_choose%"),w=kr(d,"%webView_bookSelector_chooseBooks%"),[b,y]=v.useState("current book"),f=h=>{y(h),e(h)};return a.jsx(ro,{className:"pr-twp tw-flex",value:b,onValueChange:h=>f(h),children:a.jsxs("div",{className:"tw-flex tw-w-full tw-flex-col tw-gap-4",children:[a.jsxs("div",{className:"tw-grid tw-grid-cols-[25%,25%,50%]",children:[a.jsxs("div",{className:"tw-flex tw-items-center",children:[a.jsx(qn,{value:"current book"}),a.jsx(Ue,{className:"tw-ml-1",children:u})]}),a.jsx(Ue,{className:"tw-flex tw-items-center",children:t}),a.jsx("div",{className:"tw-flex tw-items-center tw-justify-end",children:a.jsx(pa,{isDisabled:b==="choose books",handleSelectStartChapter:c,handleSelectEndChapter:i,chapterCount:o,startChapter:l,endChapter:s})})]}),a.jsxs("div",{className:"tw-grid tw-grid-cols-[25%,50%,25%]",children:[a.jsxs("div",{className:"tw-flex tw-items-center",children:[a.jsx(qn,{value:"choose books"}),a.jsx(Ue,{className:"tw-ml-1",children:w})]}),a.jsx(Ue,{className:"tw-flex tw-items-center",children:r.map(h=>se.bookIdToEnglishName(h)).join(", ")}),a.jsx(he,{disabled:b==="current book",onClick:()=>n(),children:m})]})]})})}function Jl({table:e}){return a.jsxs(tr,{children:[a.jsx(Gs.DropdownMenuTrigger,{asChild:!0,children:a.jsxs(he,{variant:"outline",size:"sm",className:"tw-ml-auto tw-hidden tw-h-8 lg:tw-flex",children:[a.jsx(te.FilterIcon,{className:"tw-mr-2 tw-h-4 tw-w-4"}),"View"]})}),a.jsxs(Nn,{align:"end",className:"tw-w-[150px]",children:[a.jsx(Xt,{children:"Toggle columns"}),a.jsx(kn,{}),e.getAllColumns().filter(t=>t.getCanHide()).map(t=>a.jsx(nr,{className:"tw-capitalize",checked:t.getIsVisible(),onCheckedChange:n=>t.toggleVisibility(!!n),children:t.id},t.id))]})]})}const Dt=ge.Root,fa=ge.Group,At=ge.Value,bt=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(ge.Trigger,{ref:r,className:S("tw-flex tw-h-10 tw-w-full tw-items-center tw-justify-between tw-rounded-md tw-border tw-border-input tw-bg-background tw-px-3 tw-py-2 tw-text-sm tw-ring-offset-background placeholder:tw-text-muted-foreground focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-ring focus:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50 [&>span]:tw-line-clamp-1",e),...n,children:[t,a.jsx(ge.Icon,{asChild:!0,children:a.jsx(te.ChevronDown,{className:"tw-h-4 tw-w-4 tw-opacity-50"})})]}));bt.displayName=ge.Trigger.displayName;const oo=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.ScrollUpButton,{ref:n,className:S("tw-flex tw-cursor-default tw-items-center tw-justify-center tw-py-1",e),...t,children:a.jsx(te.ChevronUp,{className:"tw-h-4 tw-w-4"})}));oo.displayName=ge.ScrollUpButton.displayName;const so=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.ScrollDownButton,{ref:n,className:S("tw-flex tw-cursor-default tw-items-center tw-justify-center tw-py-1",e),...t,children:a.jsx(te.ChevronDown,{className:"tw-h-4 tw-w-4"})}));so.displayName=ge.ScrollDownButton.displayName;const vt=v.forwardRef(({className:e,children:t,position:n="popper",...r},o)=>a.jsx(ge.Portal,{children:a.jsxs(ge.Content,{ref:o,className:S("pr-twp tw-relative tw-z-50 tw-max-h-96 tw-min-w-[8rem] tw-overflow-hidden tw-rounded-md tw-border tw-bg-popover tw-text-popover-foreground tw-shadow-md data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:tw-translate-y-1 data-[side=left]:tw--translate-x-1 data-[side=right]:tw-translate-x-1 data-[side=top]:tw--translate-y-1",e),position:n,...r,children:[a.jsx(oo,{}),a.jsx(ge.Viewport,{className:S("tw-p-1",n==="popper"&&"tw-h-[var(--radix-select-trigger-height)] tw-w-full tw-min-w-[var(--radix-select-trigger-width)]"),children:t}),a.jsx(so,{})]})}));vt.displayName=ge.Content.displayName;const ma=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.Label,{ref:n,className:S("tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-font-semibold",e),...t}));ma.displayName=ge.Label.displayName;const De=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(ge.Item,{ref:r,className:S("tw-relative tw-flex tw-w-full tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-outline-none focus:tw-bg-accent focus:tw-text-accent-foreground data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",e),...n,children:[a.jsx("span",{className:"tw-absolute tw-left-2 tw-flex tw-h-3.5 tw-w-3.5 tw-items-center tw-justify-center",children:a.jsx(ge.ItemIndicator,{children:a.jsx(te.Check,{className:"tw-h-4 tw-w-4"})})}),a.jsx(ge.ItemText,{children:t})]}));De.displayName=ge.Item.displayName;const ha=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.Separator,{ref:n,className:S("tw--mx-1 tw-my-1 tw-h-px tw-bg-muted",e),...t}));ha.displayName=ge.Separator.displayName;function Zl({table:e}){return a.jsx("div",{className:"tw-flex tw-items-center tw-justify-between tw-px-2 tw-pb-3 tw-pt-3",children:a.jsxs("div",{className:"tw-flex tw-items-center tw-space-x-6 lg:tw-space-x-8",children:[a.jsxs("div",{className:"tw-flex-1 tw-text-sm tw-text-muted-foreground",children:[e.getFilteredSelectedRowModel().rows.length," of"," ",e.getFilteredRowModel().rows.length," row(s) selected"]}),a.jsxs("div",{className:"tw-flex tw-items-center tw-space-x-2",children:[a.jsx("p",{className:"tw-text-nowrap tw-text-sm tw-font-medium",children:"Rows per page"}),a.jsxs(Dt,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[a.jsx(bt,{className:"tw-h-8 tw-w-[70px]",children:a.jsx(At,{placeholder:e.getState().pagination.pageSize})}),a.jsx(vt,{side:"top",children:[10,20,30,40,50].map(t=>a.jsx(De,{value:`${t}`,children:t},t))})]})]}),a.jsxs("div",{className:"tw-flex tw-w-[100px] tw-items-center tw-justify-center tw-text-sm tw-font-medium",children:["Page ",e.getState().pagination.pageIndex+1," of ",e.getPageCount()]}),a.jsxs("div",{className:"tw-flex tw-items-center tw-space-x-2",children:[a.jsxs(he,{variant:"outline",size:"icon",className:"tw-hidden tw-h-8 tw-w-8 tw-p-0 lg:tw-flex",onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to first page"}),a.jsx(te.ArrowLeftIcon,{className:"tw-h-4 tw-w-4"})]}),a.jsxs(he,{variant:"outline",size:"icon",className:"tw-h-8 tw-w-8 tw-p-0",onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to previous page"}),a.jsx(te.ChevronLeftIcon,{className:"tw-h-4 tw-w-4"})]}),a.jsxs(he,{variant:"outline",size:"icon",className:"tw-h-8 tw-w-8 tw-p-0",onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to next page"}),a.jsx(te.ChevronRightIcon,{className:"tw-h-4 tw-w-4"})]}),a.jsxs(he,{variant:"outline",size:"icon",className:"tw-hidden tw-h-8 tw-w-8 tw-p-0 lg:tw-flex",onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to last page"}),a.jsx(te.ArrowRightIcon,{className:"tw-h-4 tw-w-4"})]})]})]})})}const En=v.forwardRef(({className:e,stickyHeader:t,...n},r)=>a.jsx("div",{className:S("pr-twp tw-relative tw-w-full",{"tw-overflow-auto":!t}),children:a.jsx("table",{ref:r,className:S("tw-w-full tw-caption-bottom tw-text-sm",e),...n})}));En.displayName="Table";const Sn=v.forwardRef(({className:e,stickyHeader:t,...n},r)=>a.jsx("thead",{ref:r,className:S({"tw-sticky tw-top-0 tw-bg-muted":t},"[&_tr]:tw-border-b",e),...n}));Sn.displayName="TableHeader";const Tn=v.forwardRef(({className:e,...t},n)=>a.jsx("tbody",{ref:n,className:S("[&_tr:last-child]:tw-border-0",e),...t}));Tn.displayName="TableBody";const ga=v.forwardRef(({className:e,...t},n)=>a.jsx("tfoot",{ref:n,className:S("tw-border-t tw-bg-muted/50 tw-font-medium [&>tr]:last:tw-border-b-0",e),...t}));ga.displayName="TableFooter";const Ze=v.forwardRef(({className:e,...t},n)=>a.jsx("tr",{ref:n,className:S("tw-border-b tw-transition-colors hover:tw-bg-muted/50 data-[state=selected]:tw-bg-muted",e),...t}));Ze.displayName="TableRow";const Bt=v.forwardRef(({className:e,...t},n)=>a.jsx("th",{ref:n,className:S("tw-h-12 tw-px-4 tw-text-start tw-align-middle tw-font-medium tw-text-muted-foreground [&:has([role=checkbox])]:tw-pe-0",e),...t}));Bt.displayName="TableHead";const yt=v.forwardRef(({className:e,...t},n)=>a.jsx("td",{ref:n,className:S("tw-p-4 tw-align-middle [&:has([role=checkbox])]:tw-pe-0",e),...t}));yt.displayName="TableCell";const ba=v.forwardRef(({className:e,...t},n)=>a.jsx("caption",{ref:n,className:S("tw-mt-4 tw-text-sm tw-text-muted-foreground",e),...t}));ba.displayName="TableCaption";function va({columns:e,data:t,enablePagination:n=!1,showPaginationControls:r=!1,showColumnVisibilityControls:o=!1,stickyHeader:s=!1,onRowClickHandler:i=()=>{}}){var h;const[l,c]=v.useState([]),[d,u]=v.useState([]),[m,w]=v.useState({}),[b,y]=v.useState({}),f=Ne.useReactTable({data:t,columns:e,getCoreRowModel:Ne.getCoreRowModel(),...n&&{getPaginationRowModel:Ne.getPaginationRowModel()},onSortingChange:c,getSortedRowModel:Ne.getSortedRowModel(),onColumnFiltersChange:u,getFilteredRowModel:Ne.getFilteredRowModel(),onColumnVisibilityChange:w,onRowSelectionChange:y,state:{sorting:l,columnFilters:d,columnVisibility:m,rowSelection:b}});return a.jsxs("div",{className:"pr-twp",children:[o&&a.jsx(Jl,{table:f}),a.jsxs(En,{stickyHeader:s,children:[a.jsx(Sn,{stickyHeader:s,children:f.getHeaderGroups().map(E=>a.jsx(Ze,{children:E.headers.map(I=>a.jsx(Bt,{children:I.isPlaceholder?void 0:Ne.flexRender(I.column.columnDef.header,I.getContext())},I.id))},E.id))}),a.jsx(Tn,{children:(h=f.getRowModel().rows)!=null&&h.length?f.getRowModel().rows.map(E=>a.jsx(Ze,{onClick:()=>i(E,f),"data-state":E.getIsSelected()&&"selected",children:E.getVisibleCells().map(I=>a.jsx(yt,{children:Ne.flexRender(I.column.columnDef.cell,I.getContext())},I.id))},E.id)):a.jsx(Ze,{children:a.jsx(yt,{colSpan:e.length,className:"tw-h-24 tw-text-center",children:"No results."})})})]}),n&&a.jsxs("div",{className:"tw-flex tw-items-center tw-justify-end tw-space-x-2 tw-py-4",children:[a.jsx(he,{variant:"outline",size:"sm",onClick:()=>f.previousPage(),disabled:!f.getCanPreviousPage(),children:"Previous"}),a.jsx(he,{variant:"outline",size:"sm",onClick:()=>f.nextPage(),disabled:!f.getCanNextPage(),children:"Next"})]}),n&&r&&a.jsx(Zl,{table:f})]})}function Ql({occurrenceData:e,setScriptureReference:t,localizedStrings:n}){const r=n["%webView_inventory_occurrences_table_header_reference%"],o=n["%webView_inventory_occurrences_table_header_occurrence%"],s=v.useMemo(()=>{const i=[];return e.forEach(l=>{i.some(c=>W.deepEqual(c,l))||i.push(l)}),i},[e]);return a.jsxs(En,{stickyHeader:!0,children:[a.jsx(Sn,{stickyHeader:!0,children:a.jsxs(Ze,{children:[a.jsx(Bt,{children:r}),a.jsx(Bt,{children:o})]})}),a.jsx(Tn,{children:s.length>0&&s.map(i=>a.jsxs(Ze,{onClick:()=>{t(i.reference)},children:[a.jsx(yt,{children:`${se.bookNumberToEnglishName(i.reference.bookNum)} ${i.reference.chapterNum}:${i.reference.verseNum}`}),a.jsx(yt,{children:i.text})]},`${i.reference.bookNum} ${i.reference.chapterNum}:${i.reference.verseNum}-${i.text}`))})]})}const rr=v.forwardRef(({className:e,...t},n)=>a.jsx(Br.Root,{ref:n,className:S("tw-peer pr-twp tw-h-4 tw-w-4 tw-shrink-0 tw-rounded-sm tw-border tw-border-primary tw-ring-offset-background focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50 data-[state=checked]:tw-bg-primary data-[state=checked]:tw-text-primary-foreground",e),...t,children:a.jsx(Br.Indicator,{className:S("tw-flex tw-items-center tw-justify-center tw-text-current"),children:a.jsx(te.Check,{className:"tw-h-4 tw-w-4"})})}));rr.displayName=Br.Root.displayName;const ya=e=>e.split(/(?:\r?\n|\r)|(?=(?:\\(?:v|c|id)))/g),Fr=e=>{const t=/^\\[vc]\s+(\d+)/,n=e.match(t);if(n)return+n[1]},xa=e=>{const t=e.match(/^\\id\s+([A-Za-z]+)/);return t?se.bookIdToNumber(t[1]):0},Na=(e,t,n)=>n.includes(e)?"unapproved":t.includes(e)?"approved":"unknown",ka=Qn.cva("pr-twp tw-inline-flex tw-items-center tw-justify-center tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors hover:tw-bg-muted hover:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=on]:tw-bg-accent data-[state=on]:tw-text-accent-foreground",{variants:{variant:{default:"tw-bg-transparent",outline:"tw-border tw-border-input tw-bg-transparent hover:tw-bg-accent hover:tw-text-accent-foreground"},size:{default:"tw-h-10 tw-px-3",sm:"tw-h-9 tw-px-2.5",lg:"tw-h-11 tw-px-5"}},defaultVariants:{variant:"default",size:"default"}}),ec=v.forwardRef(({className:e,variant:t,size:n,...r},o)=>a.jsx(Hs.Root,{ref:o,className:S(ka({variant:t,size:n,className:e})),...r}));ec.displayName=Hs.Root.displayName;const Ea=v.createContext({size:"default",variant:"default"}),ao=v.forwardRef(({className:e,variant:t,size:n,children:r,...o},s)=>a.jsx(er.Root,{ref:s,className:S("pr-twp tw-flex tw-items-center tw-justify-center tw-gap-1",e),...o,children:a.jsx(Ea.Provider,{value:{variant:t,size:n},children:r})}));ao.displayName=er.Root.displayName;const pn=v.forwardRef(({className:e,children:t,variant:n,size:r,...o},s)=>{const i=v.useContext(Ea);return a.jsx(er.Item,{ref:s,className:S(ka({variant:i.variant||n,size:i.size||r}),e),...o,children:t})});pn.displayName=er.Item.displayName;const or=e=>e==="asc"?a.jsx(te.ArrowUpIcon,{className:"tw-ms-2 tw-h-4 tw-w-4"}):e==="desc"?a.jsx(te.ArrowDownIcon,{className:"tw-ms-2 tw-h-4 tw-w-4"}):a.jsx(te.ArrowUpDownIcon,{className:"tw-ms-2 tw-h-4 tw-w-4"}),tc=e=>({accessorKey:"item",accessorFn:t=>t.items[0],header:({column:t})=>a.jsxs(he,{variant:"ghost",onClick:()=>t.toggleSorting(void 0),children:[e,or(t.getIsSorted())]})}),nc=(e,t)=>({accessorKey:`item${t}`,accessorFn:n=>n.items[t],header:({column:n})=>a.jsxs(he,{variant:"ghost",onClick:()=>n.toggleSorting(void 0),children:[e,or(n.getIsSorted())]})}),rc=e=>({accessorKey:"count",header:({column:t})=>a.jsx("div",{className:"tw-flex tw-justify-end tw-tabular-nums",children:a.jsxs(he,{variant:"ghost",onClick:()=>t.toggleSorting(void 0),children:[e,or(t.getIsSorted())]})}),cell:({row:t})=>a.jsx("div",{className:"tw-flex tw-justify-end",children:t.getValue("count")})}),Er=(e,t,n,r,o,s)=>{let i=[...n];e.forEach(c=>{t==="approved"?i.includes(c)||i.push(c):i=i.filter(d=>d!==c)}),r(i);let l=[...o];e.forEach(c=>{t==="unapproved"?l.includes(c)||l.push(c):l=l.filter(d=>d!==c)}),s(l)},oc=(e,t,n,r,o)=>({accessorKey:"status",header:({column:s})=>a.jsx("div",{className:"tw-flex tw-justify-center",children:a.jsxs(he,{variant:"ghost",onClick:()=>s.toggleSorting(void 0),children:[e,or(s.getIsSorted())]})}),cell:({row:s})=>{const i=s.getValue("status"),l=s.getValue("item");return a.jsxs(ao,{value:i,variant:"outline",type:"single",children:[a.jsx(pn,{onClick:()=>Er([l],"approved",t,n,r,o),value:"approved",children:a.jsx(te.CircleCheckIcon,{})}),a.jsx(pn,{onClick:()=>Er([l],"unapproved",t,n,r,o),value:"unapproved",children:a.jsx(te.CircleXIcon,{})}),a.jsx(pn,{onClick:()=>Er([l],"unknown",t,n,r,o),value:"unknown",children:a.jsx(te.CircleHelpIcon,{})})]})}}),sc=Object.freeze(["%webView_inventory_all%","%webView_inventory_approved%","%webView_inventory_unapproved%","%webView_inventory_unknown%","%webView_inventory_scope_currentBook%","%webView_inventory_scope_chapter%","%webView_inventory_scope_verse%","%webView_inventory_filter_text%","%webView_inventory_show_additional_items%","%webView_inventory_occurrences_table_header_reference%","%webView_inventory_occurrences_table_header_occurrence%"]),ac=(e,t,n)=>{let r=e;return t!=="all"&&(r=r.filter(o=>t==="approved"&&o.status==="approved"||t==="unapproved"&&o.status==="unapproved"||t==="unknown"&&o.status==="unknown")),n!==""&&(r=r.filter(o=>o.items[0].includes(n))),r},ic=(e,t,n,r,o)=>{if(!e)return[];const s=[];let i=t.bookNum,l=t.chapterNum,c=t.verseNum;return ya(e).forEach(u=>{u.startsWith("\\id")&&(i=xa(u),l=0,c=0),u.startsWith("\\c")&&(l=Fr(u),c=0),u.startsWith("\\v")&&(c=Fr(u),l===0&&(l=t.chapterNum));let m=o.exec(u)??void 0;for(;m;){const w=[];m.forEach(h=>w.push(h));const b=m.index,y=s.find(h=>W.deepEqual(h.items,w)),f={reference:{bookNum:i!==void 0?i:-1,chapterNum:l!==void 0?l:-1,verseNum:c!==void 0?c:-1},text:W.substring(u,Math.max(0,b-25),Math.min(b+25,u.length))};if(y)y.count+=1,y.occurrences.push(f);else{const h={items:w,count:1,status:Na(w[0],n,r),occurrences:[f]};s.push(h)}m=o.exec(u)??void 0}}),s},Je=(e,t)=>e[t]??t;function lc({scriptureReference:e,setScriptureReference:t,localizedStrings:n,extractItems:r,additionalItemsLabels:o,approvedItems:s,unapprovedItems:i,text:l,scope:c,onScopeChange:d,columns:u}){const m=Je(n,"%webView_inventory_all%"),w=Je(n,"%webView_inventory_approved%"),b=Je(n,"%webView_inventory_unapproved%"),y=Je(n,"%webView_inventory_unknown%"),f=Je(n,"%webView_inventory_scope_currentBook%"),h=Je(n,"%webView_inventory_scope_chapter%"),E=Je(n,"%webView_inventory_scope_verse%"),I=Je(n,"%webView_inventory_filter_text%"),j=Je(n,"%webView_inventory_show_additional_items%"),[k,g]=v.useState(!1),[P,V]=v.useState("all"),[U,T]=v.useState(""),[R,N]=v.useState([]),D=v.useMemo(()=>l?r instanceof RegExp?ic(l,e,s,i,r):r(l,e,s,i):[],[l,r,e,s,i]),$=v.useMemo(()=>{if(k)return D;const x=[];return D.forEach(C=>{const L=C.items[0],F=x.find(B=>B.items[0]===L);F?(F.count+=C.count,F.occurrences=F.occurrences.concat(C.occurrences)):x.push({items:[L],count:C.count,occurrences:C.occurrences,status:C.status})}),x},[k,D]),J=v.useMemo(()=>ac($,P,U),[$,P,U]),Y=v.useMemo(()=>{var L,F;if(!k)return u;const x=(L=o==null?void 0:o.tableHeaders)==null?void 0:L.length;if(!x)return u;const C=[];for(let B=0;B{N([])},[J]);const z=(x,C)=>{C.setRowSelection(()=>{const L={};return L[x.index]=!0,L}),N(x.original.items)},ee=x=>{if(x==="book"||x==="chapter"||x==="verse")d(x);else throw new Error(`Invalid scope value: ${x}`)},ae=x=>{if(x==="all"||x==="approved"||x==="unapproved"||x==="unknown")V(x);else throw new Error(`Invalid status filter value: ${x}`)},oe=v.useMemo(()=>{if($.length===0||R.length===0)return[];const x=$.filter(C=>W.deepEqual(k?C.items:[C.items[0]],R));if(x.length>1)throw new Error("Selected item is not unique");return x[0].occurrences},[R,k,$]);return a.jsxs("div",{className:"pr-twp tw-flex tw-h-full tw-flex-col",children:[a.jsxs("div",{className:"tw-flex tw-items-stretch",children:[a.jsxs(Dt,{onValueChange:x=>ae(x),defaultValue:P,children:[a.jsx(bt,{className:"tw-m-1",children:a.jsx(At,{placeholder:"Select filter"})}),a.jsxs(vt,{children:[a.jsx(De,{value:"all",children:m}),a.jsx(De,{value:"approved",children:w}),a.jsx(De,{value:"unapproved",children:b}),a.jsx(De,{value:"unknown",children:y})]})]}),a.jsxs(Dt,{onValueChange:x=>ee(x),defaultValue:c,children:[a.jsx(bt,{className:"tw-m-1",children:a.jsx(At,{placeholder:"Select scope"})}),a.jsxs(vt,{children:[a.jsx(De,{value:"book",children:f}),a.jsx(De,{value:"chapter",children:h}),a.jsx(De,{value:"verse",children:E})]})]}),a.jsx(qt,{className:"tw-m-1 tw-rounded-md tw-border",placeholder:I,value:U,onChange:x=>{T(x.target.value)}}),o&&a.jsxs("div",{className:"tw-m-1 tw-flex tw-items-center tw-rounded-md tw-border",children:[a.jsx(rr,{className:"tw-m-1",checked:k,onCheckedChange:x=>{N([]),g(x)}}),a.jsx(Ue,{className:"tw-m-1 tw-flex-shrink-0 tw-whitespace-nowrap",children:(o==null?void 0:o.checkboxText)??j})]})]}),a.jsx("div",{className:"tw-m-1 tw-flex-1 tw-overflow-auto tw-rounded-md tw-border",children:a.jsx(va,{columns:Y,data:J,onRowClickHandler:z,stickyHeader:!0})}),oe.length>0&&a.jsx("div",{className:"tw-m-1 tw-flex-1 tw-overflow-auto tw-rounded-md tw-border",children:a.jsx(Ql,{occurrenceData:oe,setScriptureReference:t,localizedStrings:n})})]})}function Sa({onSearch:e,placeholder:t,isFullWidth:n}){const[r,o]=v.useState(""),s=i=>{o(i),e(i)};return a.jsx(qt,{className:S("tw-flex tw-h-10 tw-rounded-md tw-border tw-border-input tw-bg-background tw-px-3 tw-py-2 tw-text-sm tw-ring-offset-background file:tw-border-0 file:tw-bg-transparent file:tw-text-sm file:tw-font-medium placeholder:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-[color:hsl(240,5%,64.9%)] focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50",{"tw-w-full":n}),placeholder:t,value:r,onChange:i=>s(i.target.value)})}const io=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.Root,{orientation:"vertical",ref:n,className:S("tw-flex tw-gap-1 tw-rounded-md tw-text-muted-foreground",e),...t}));io.displayName=Oe.List.displayName;const lo=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.List,{ref:n,className:S("tw-flex-fit tw-mlk-items-center tw-w-[124px] tw-justify-center tw-rounded-md tw-bg-muted tw-p-1 tw-text-muted-foreground",e),...t}));lo.displayName=Oe.List.displayName;const Ta=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.Trigger,{ref:n,...t,className:S("overflow-clip tw-inline-flex tw-w-[116px] tw-cursor-pointer tw-items-center tw-justify-center tw-break-words tw-rounded-sm tw-border-0 tw-bg-muted tw-px-3 tw-py-1.5 tw-text-sm tw-font-medium tw-text-inherit tw-ring-offset-background tw-transition-all hover:tw-text-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=active]:tw-bg-background data-[state=active]:tw-text-foreground data-[state=active]:tw-shadow-sm",e)})),co=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.Content,{ref:n,className:S("tw-ms-5 tw-flex-grow tw-text-foreground tw-ring-offset-background focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2",e),...t}));co.displayName=Oe.Content.displayName;function cc({tabList:e,onSearch:t,searchPlaceholder:n,headerTitle:r,isSearchBarFullWidth:o=!1,direction:s="ltr"}){return a.jsxs("div",{className:"pr-twp",children:[a.jsxs("div",{className:"tw-sticky tw-top-0 tw-space-y-2 tw-pb-2",children:[r?a.jsx("h1",{children:r}):"",a.jsx(Sa,{isFullWidth:o,onSearch:t,placeholder:n})]}),a.jsxs(io,{dir:s,children:[a.jsx(lo,{children:e.map(i=>a.jsx(Ta,{value:i.value,children:i.value},i.key))}),e.map(i=>a.jsx(co,{value:i.value,children:i.content},i.key))]})]})}const rt="scrBook",dc="scrRef",pt="source",uc="details",pc="Scripture Reference",wc="Scripture Book",Ca="Type",fc="Details";function mc(e,t){const n=t??!1;return[{accessorFn:r=>`${se.bookNumberToId(r.start.bookNum)} ${r.start.chapterNum}:${r.start.verseNum}`,id:rt,header:(e==null?void 0:e.scriptureReferenceColumnName)??pc,cell:r=>{const o=r.row.original;return r.row.getIsGrouped()?se.bookNumberToEnglishName(o.start.bookNum):r.row.groupingColumnId===rt?W.formatScrRef(o.start):void 0},getGroupingValue:r=>r.start.bookNum,sortingFn:(r,o)=>W.compareScrRefs(r.original.start,o.original.start),enableGrouping:!0},{accessorFn:r=>W.formatScrRef(r.start),id:dc,header:void 0,cell:r=>{const o=r.row.original;return r.row.getIsGrouped()?void 0:W.formatScrRef(o.start)},sortingFn:(r,o)=>W.compareScrRefs(r.original.start,o.original.start),enableGrouping:!1},{accessorFn:r=>r.source.displayName,id:pt,header:n?(e==null?void 0:e.typeColumnName)??Ca:void 0,cell:r=>n||r.row.getIsGrouped()?r.getValue():void 0,getGroupingValue:r=>r.source.id,sortingFn:(r,o)=>r.original.source.displayName.localeCompare(o.original.source.displayName),enableGrouping:!0},{accessorFn:r=>r.detail,id:uc,header:(e==null?void 0:e.detailsColumnName)??fc,cell:r=>r.getValue(),enableGrouping:!1}]}const hc=e=>{if(!("offset"in e.start))throw new Error("No offset available in range start");if(e.end&&!("offset"in e.end))throw new Error("No offset available in range end");const{offset:t}=e.start;let n=0;return e.end&&({offset:n}=e.end),!e.end||W.compareScrRefs(e.start,e.end)===0?`${W.scrRefToBBBCCCVVV(e.start)}+${t}`:`${W.scrRefToBBBCCCVVV(e.start)}+${t}-${W.scrRefToBBBCCCVVV(e.end)}+${n}`},Zo=e=>`${hc({start:e.start,end:e.end})} ${e.source.displayName} ${e.detail}`;function gc({sources:e,showColumnHeaders:t=!1,showSourceColumn:n=!1,scriptureReferenceColumnName:r,scriptureBookGroupName:o,typeColumnName:s,detailsColumnName:i,onRowSelected:l,direction:c="ltr"}){const[d,u]=v.useState([]),[m,w]=v.useState([{id:rt,desc:!1}]),[b,y]=v.useState({}),f=v.useMemo(()=>e.flatMap(T=>T.data.map(R=>({...R,source:T.source}))),[e]),h=v.useMemo(()=>mc({scriptureReferenceColumnName:r,typeColumnName:s,detailsColumnName:i},n),[r,s,i,n]);v.useEffect(()=>{d.includes(pt)?w([{id:pt,desc:!1},{id:rt,desc:!1}]):w([{id:rt,desc:!1}])},[d]);const E=Ne.useReactTable({data:f,columns:h,state:{grouping:d,sorting:m,rowSelection:b},onGroupingChange:u,onSortingChange:w,onRowSelectionChange:y,getExpandedRowModel:Ne.getExpandedRowModel(),getGroupedRowModel:Ne.getGroupedRowModel(),getCoreRowModel:Ne.getCoreRowModel(),getSortedRowModel:Ne.getSortedRowModel(),getRowId:Zo,autoResetExpanded:!1,enableMultiRowSelection:!1,enableSubRowSelection:!1});v.useEffect(()=>{if(l){const T=E.getSelectedRowModel().rowsById,R=Object.keys(T);if(R.length===1){const N=f.find(D=>Zo(D)===R[0])||void 0;N&&l(N)}}},[b,f,l,E]);const I=o??wc,j=s??Ca,k=[{label:"No Grouping",value:[]},{label:`Group by ${I}`,value:[rt]},{label:`Group by ${j}`,value:[pt]},{label:`Group by ${I} and ${j}`,value:[rt,pt]},{label:`Group by ${j} and ${I}`,value:[pt,rt]}],g=T=>{u(JSON.parse(T))},P=(T,R)=>{!T.getIsGrouped()&&!T.getIsSelected()&&T.getToggleSelectedHandler()(R)},V=(T,R)=>T.getIsGrouped()?"":S("banded-row",R%2===0?"even":"odd"),U=(T,R,N)=>{if(!((T==null?void 0:T.length)===0||R.depth{g(T)},children:[a.jsx(bt,{className:"tw-mb-1 tw-mt-2",children:a.jsx(At,{})}),a.jsx(vt,{position:"item-aligned",children:a.jsx(fa,{children:k.map(T=>a.jsx(De,{value:JSON.stringify(T.value),children:T.label},T.label))})})]}),a.jsxs(En,{className:"tw-relative tw-flex tw-flex-col tw-overflow-y-auto tw-p-0",children:[t&&a.jsx(Sn,{children:E.getHeaderGroups().map(T=>a.jsx(Ze,{children:T.headers.filter(R=>R.column.columnDef.header).map(R=>a.jsx(Bt,{colSpan:R.colSpan,className:"top-0 tw-sticky",children:R.isPlaceholder?void 0:a.jsxs("div",{children:[R.column.getCanGroup()?a.jsx(he,{variant:"ghost",title:`Toggle grouping by ${R.column.columnDef.header}`,onClick:R.column.getToggleGroupingHandler(),type:"button",children:R.column.getIsGrouped()?"🛑":"👊 "}):void 0," ",Ne.flexRender(R.column.columnDef.header,R.getContext())]})},R.id))},T.id))}),a.jsx(Tn,{children:E.getRowModel().rows.map((T,R)=>a.jsx(Ze,{"data-state":T.getIsSelected()?"selected":"",className:S(V(T,R)),onClick:N=>P(T,N),children:T.getVisibleCells().map(N=>{if(!(N.getIsPlaceholder()||N.column.columnDef.enableGrouping&&!N.getIsGrouped()&&(N.column.columnDef.id!==pt||!n)))return a.jsx(yt,{className:S(N.column.columnDef.id,"tw-p-[1px]",U(d,T,N)),children:(()=>N.getIsGrouped()?a.jsxs(he,{variant:"link",onClick:T.getToggleExpandedHandler(),type:"button",children:[T.getIsExpanded()&&a.jsx(te.ChevronDown,{}),!T.getIsExpanded()&&(c==="ltr"?a.jsx(te.ChevronRight,{}):a.jsx(te.ChevronLeft,{}))," ",Ne.flexRender(N.column.columnDef.cell,N.getContext())," (",T.subRows.length,")"]}):Ne.flexRender(N.column.columnDef.cell,N.getContext()))()},N.id)})},T.id))})]})]})}const Sr={[W.getLocalizeKeyForScrollGroupId("undefined")]:"Ø",[W.getLocalizeKeyForScrollGroupId(0)]:"A",[W.getLocalizeKeyForScrollGroupId(1)]:"B",[W.getLocalizeKeyForScrollGroupId(2)]:"C",[W.getLocalizeKeyForScrollGroupId(3)]:"D",[W.getLocalizeKeyForScrollGroupId(4)]:"E",[W.getLocalizeKeyForScrollGroupId(5)]:"F",[W.getLocalizeKeyForScrollGroupId(6)]:"G",[W.getLocalizeKeyForScrollGroupId(7)]:"H",[W.getLocalizeKeyForScrollGroupId(8)]:"I",[W.getLocalizeKeyForScrollGroupId(9)]:"J",[W.getLocalizeKeyForScrollGroupId(10)]:"K",[W.getLocalizeKeyForScrollGroupId(11)]:"L",[W.getLocalizeKeyForScrollGroupId(12)]:"M",[W.getLocalizeKeyForScrollGroupId(13)]:"N",[W.getLocalizeKeyForScrollGroupId(14)]:"O",[W.getLocalizeKeyForScrollGroupId(15)]:"P",[W.getLocalizeKeyForScrollGroupId(16)]:"Q",[W.getLocalizeKeyForScrollGroupId(17)]:"R",[W.getLocalizeKeyForScrollGroupId(18)]:"S",[W.getLocalizeKeyForScrollGroupId(19)]:"T",[W.getLocalizeKeyForScrollGroupId(20)]:"U",[W.getLocalizeKeyForScrollGroupId(21)]:"V",[W.getLocalizeKeyForScrollGroupId(22)]:"W",[W.getLocalizeKeyForScrollGroupId(23)]:"X",[W.getLocalizeKeyForScrollGroupId(24)]:"Y",[W.getLocalizeKeyForScrollGroupId(25)]:"Z"};function bc({availableScrollGroupIds:e,scrollGroupId:t,onChangeScrollGroupId:n,localizedStrings:r={}}){const o={...Sr,...Object.fromEntries(Object.entries(r).map(([s,i])=>[s,s===i&&s in Sr?Sr[s]:i]))};return a.jsxs(Dt,{value:`${t}`,onValueChange:s=>n(s==="undefined"?void 0:parseInt(s,10)),children:[a.jsx(bt,{className:"pr-twp tw-w-auto",children:a.jsx(At,{placeholder:o[W.getLocalizeKeyForScrollGroupId(t)]??t})}),a.jsx(vt,{style:{zIndex:250},children:e.map(s=>a.jsx(De,{value:`${s}`,children:o[W.getLocalizeKeyForScrollGroupId(s)]},`${s}`))})]})}const uo=v.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},o)=>a.jsx(Xs.Root,{ref:o,decorative:n,orientation:t,className:S("pr-twp tw-shrink-0 tw-bg-border",t==="horizontal"?"tw-h-[1px] tw-w-full":"tw-h-full tw-w-[1px]",e),...r}));uo.displayName=Xs.Root.displayName;function vc({children:e}){return a.jsx("div",{className:"pr-twp tw-grid",children:e})}function yc({primary:e,secondary:t,children:n,isLoading:r=!1,loadingMessage:o}){return a.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-space-x-4 tw-py-2",children:[a.jsxs("div",{children:[a.jsx("p",{className:"tw-text-sm tw-font-medium tw-leading-none",children:e}),a.jsx("p",{className:"tw-whitespace-normal tw-break-words tw-text-sm tw-text-muted-foreground",children:t})]}),r?a.jsx("p",{className:"tw-text-sm tw-text-muted-foreground",children:o}):a.jsx("div",{children:n})]})}function xc({primary:e,secondary:t,includeSeparator:n=!1}){return a.jsxs("div",{className:"tw-space-y-4 tw-py-2",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"tw-text-lg tw-font-medium",children:e}),a.jsx("p",{className:"tw-text-sm tw-text-muted-foreground",children:t})]}),n?a.jsx(uo,{}):""]})}function Nc({id:e,className:t,listItems:n,selectedListItems:r,handleSelectListItem:o,createLabel:s}){return a.jsx("div",{id:e,className:t,children:n.map(i=>a.jsxs("div",{className:"tw-m-2 tw-flex tw-items-center",children:[a.jsx(rr,{className:"tw-mr-2 tw-align-middle",checked:r.includes(i),onCheckedChange:l=>o(i,l)}),a.jsx(Ue,{children:s?s(i):i})]},i))})}function kc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Ec(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var po={},ja={exports:{}};(function(e){function t(n){return n&&n.__esModule?n:{default:n}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(ja);var Sc=ja.exports,Tr={};function wo(e,t){return process.env.NODE_ENV==="production"?()=>null:function(...r){return e(...r)||t(...r)}}function O(){return O=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t[n]=Oa(e[n])}),t}function Qe(e,t,n={clone:!0}){const r=n.clone?O({},e):e;return mt(e)&&mt(t)&&Object.keys(t).forEach(o=>{o!=="__proto__"&&(mt(t[o])&&o in e&&mt(e[o])?r[o]=Qe(e[o],t[o],n):n.clone?r[o]=mt(t[o])?Oa(t[o]):t[o]:r[o]=t[o])}),r}var zr={exports:{}},An={exports:{}},ie={};/** @license React v16.13.1 +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),v=require("react"),te=require("lucide-react"),ot=require("clsx"),Wi=require("tailwind-merge"),Gs=require("@radix-ui/react-dropdown-menu"),W=require("platform-bible-utils"),Ki=require("@radix-ui/react-slot"),Qn=require("class-variance-authority"),Ji=require("@radix-ui/react-label"),Zi=require("@radix-ui/react-radio-group"),Qi=require("@radix-ui/react-popover"),je=require("cmdk"),el=require("@radix-ui/react-dialog"),Ne=require("@tanstack/react-table"),tl=require("@radix-ui/react-select"),nl=require("@radix-ui/react-checkbox"),rl=require("@radix-ui/react-toggle-group"),ol=require("@radix-ui/react-toggle"),sl=require("@radix-ui/react-tabs"),al=require("@radix-ui/react-separator"),Ar=require("@mui/styled-engine"),Ie=require("@mui/material"),sn=require("react-dom"),Us=require("sonner"),il=require("@radix-ui/react-slider"),ll=require("@radix-ui/react-switch"),cl=require("markdown-to-jsx");function ke(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const M=ke(v),pe=ke(Gs),qs=ke(Ji),hn=ke(Zi),gn=ke(Qi),Xe=ke(el),ge=ke(tl),Br=ke(nl),er=ke(rl),Hs=ke(ol),Oe=ke(sl),Xs=ke(al),dl=ke(sn),an=ke(il),Vr=ke(ll);const ul=Wi.extendTailwindMerge({prefix:"tw-"});function S(...e){return ul(ot.clsx(e))}const qt=v.forwardRef(({className:e,type:t,...n},r)=>a.jsx("input",{type:t,className:S("pr-twp tw-flex tw-h-10 tw-rounded-md tw-border tw-border-input tw-bg-background tw-px-3 tw-py-2 tw-text-sm tw-ring-offset-background file:tw-border-0 file:tw-bg-transparent file:tw-text-sm file:tw-font-medium file:tw-text-foreground placeholder:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50",e),ref:r,...n}));qt.displayName="Input";const pl=v.forwardRef(({handleSearch:e,handleKeyDown:t,handleOnClick:n,handleSubmit:r,...o},s)=>a.jsxs("div",{className:"tw-relative",children:[a.jsx(qt,{...o,type:"text",className:"tw-box-border tw-gap-2.5 tw-rounded-lg tw-border tw-border-solid tw-bg-background tw-py-2 tw-pl-4 tw-pr-3 tw-font-medium tw-shadow-none tw-outline-none",onChange:i=>e(i.target.value),onKeyDown:i=>{i.key==="Enter"&&r(),t(i)},onClick:n,ref:s}),a.jsx(te.History,{className:"tw-absolute tw-right-3 tw-top-1/2 tw-h-4 tw-w-4 tw--translate-y-1/2 tw-transform tw-cursor-pointer tw-text-muted-foreground",onClick:()=>{console.log("back in history")}})]}));var wl=Object.defineProperty,fl=(e,t,n)=>t in e?wl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ne=(e,t,n)=>fl(e,typeof t!="symbol"?t+"":t,n);const gt=["GEN","EXO","LEV","NUM","DEU","JOS","JDG","RUT","1SA","2SA","1KI","2KI","1CH","2CH","EZR","NEH","EST","JOB","PSA","PRO","ECC","SNG","ISA","JER","LAM","EZK","DAN","HOS","JOL","AMO","OBA","JON","MIC","NAM","HAB","ZEP","HAG","ZEC","MAL","MAT","MRK","LUK","JHN","ACT","ROM","1CO","2CO","GAL","EPH","PHP","COL","1TH","2TH","1TI","2TI","TIT","PHM","HEB","JAS","1PE","2PE","1JN","2JN","3JN","JUD","REV","TOB","JDT","ESG","WIS","SIR","BAR","LJE","S3Y","SUS","BEL","1MA","2MA","3MA","4MA","1ES","2ES","MAN","PS2","ODA","PSS","JSA","JDB","TBS","SST","DNT","BLT","XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","3ES","EZA","5EZ","6EZ","INT","CNC","GLO","TDX","NDX","DAG","PS3","2BA","LBA","JUB","ENO","1MQ","2MQ","3MQ","REP","4BA","LAO"],Jr=["XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","INT","CNC","GLO","TDX","NDX"],Ys=["Genesis","Exodus","Leviticus","Numbers","Deuteronomy","Joshua","Judges","Ruth","1 Samuel","2 Samuel","1 Kings","2 Kings","1 Chronicles","2 Chronicles","Ezra","Nehemiah","Esther (Hebrew)","Job","Psalms","Proverbs","Ecclesiastes","Song of Songs","Isaiah","Jeremiah","Lamentations","Ezekiel","Daniel (Hebrew)","Hosea","Joel","Amos","Obadiah","Jonah","Micah","Nahum","Habakkuk","Zephaniah","Haggai","Zechariah","Malachi","Matthew","Mark","Luke","John","Acts","Romans","1 Corinthians","2 Corinthians","Galatians","Ephesians","Philippians","Colossians","1 Thessalonians","2 Thessalonians","1 Timothy","2 Timothy","Titus","Philemon","Hebrews","James","1 Peter","2 Peter","1 John","2 John","3 John","Jude","Revelation","Tobit","Judith","Esther Greek","Wisdom of Solomon","Sirach (Ecclesiasticus)","Baruch","Letter of Jeremiah","Song of 3 Young Men","Susanna","Bel and the Dragon","1 Maccabees","2 Maccabees","3 Maccabees","4 Maccabees","1 Esdras (Greek)","2 Esdras (Latin)","Prayer of Manasseh","Psalm 151","Odes","Psalms of Solomon","Joshua A. *obsolete*","Judges B. *obsolete*","Tobit S. *obsolete*","Susanna Th. *obsolete*","Daniel Th. *obsolete*","Bel Th. *obsolete*","Extra A","Extra B","Extra C","Extra D","Extra E","Extra F","Extra G","Front Matter","Back Matter","Other Matter","3 Ezra *obsolete*","Apocalypse of Ezra","5 Ezra (Latin Prologue)","6 Ezra (Latin Epilogue)","Introduction","Concordance ","Glossary ","Topical Index","Names Index","Daniel Greek","Psalms 152-155","2 Baruch (Apocalypse)","Letter of Baruch","Jubilees","Enoch","1 Meqabyan","2 Meqabyan","3 Meqabyan","Reproof (Proverbs 25-31)","4 Baruch (Rest of Baruch)","Laodiceans"],Wo=El();function Ht(e,t=!0){return t&&(e=e.toUpperCase()),e in Wo?Wo[e]:0}function Zr(e){return Ht(e)>0}function ml(e){const t=typeof e=="string"?Ht(e):e;return t>=40&&t<=66}function hl(e){return(typeof e=="string"?Ht(e):e)<=39}function Ws(e){return e<=66}function gl(e){const t=typeof e=="string"?Ht(e):e;return Zs(t)&&!Ws(t)}function*bl(){for(let e=1;e<=gt.length;e++)yield e}const vl=1,Ks=gt.length;function yl(){return["XXA","XXB","XXC","XXD","XXE","XXF","XXG"]}function Qr(e,t="***"){const n=e-1;return n<0||n>=gt.length?t:gt[n]}function Js(e){return e<=0||e>Ks?"******":Ys[e-1]}function xl(e){return Js(Ht(e))}function Zs(e){const t=typeof e=="number"?Qr(e):e;return Zr(t)&&!Jr.includes(t)}function Nl(e){const t=typeof e=="number"?Qr(e):e;return Zr(t)&&Jr.includes(t)}function kl(e){return Ys[e-1].includes("*obsolete*")}function El(){const e={};for(let t=0;t(e[e.Unknown=0]="Unknown",e[e.Original=1]="Original",e[e.Septuagint=2]="Septuagint",e[e.Vulgate=3]="Vulgate",e[e.English=4]="English",e[e.RussianProtestant=5]="RussianProtestant",e[e.RussianOrthodox=6]="RussianOrthodox",e))(qe||{});const Pe=class{constructor(t){if(ne(this,"name"),ne(this,"fullPath"),ne(this,"isPresent"),ne(this,"hasVerseSegments"),ne(this,"isCustomized"),ne(this,"baseVersification"),ne(this,"scriptureBooks"),ne(this,"_type"),t==null)throw new Error("Argument undefined");typeof t=="string"?(this.name=t,this._type=qe[t]):(this._type=t,this.name=qe[t])}get type(){return this._type}equals(t){return!t.type||!this.type?!1:t.type===this.type}};ne(Pe,"Original",new Pe(qe.Original)),ne(Pe,"Septuagint",new Pe(qe.Septuagint)),ne(Pe,"Vulgate",new Pe(qe.Vulgate)),ne(Pe,"English",new Pe(qe.English)),ne(Pe,"RussianProtestant",new Pe(qe.RussianProtestant)),ne(Pe,"RussianOrthodox",new Pe(qe.RussianOrthodox));let ut=Pe;function Ko(e,t){const n=t[0];for(let r=1;r(e[e.Valid=0]="Valid",e[e.UnknownVersification=1]="UnknownVersification",e[e.OutOfRange=2]="OutOfRange",e[e.VerseOutOfOrder=3]="VerseOutOfOrder",e[e.VerseRepeated=4]="VerseRepeated",e))(Qs||{});const Se=class re{constructor(t,n,r,o){if(ne(this,"firstChapter"),ne(this,"lastChapter"),ne(this,"lastVerse"),ne(this,"hasSegmentsDefined"),ne(this,"text"),ne(this,"BBBCCCVVVS"),ne(this,"longHashCode"),ne(this,"versification"),ne(this,"rtlMark","‏"),ne(this,"_bookNum",0),ne(this,"_chapterNum",0),ne(this,"_verseNum",0),ne(this,"_verse"),r==null&&o==null)if(t!=null&&typeof t=="string"){const s=t,i=n!=null&&n instanceof ut?n:void 0;this.setEmpty(i),this.parse(s)}else if(t!=null&&typeof t=="number"){const s=n!=null&&n instanceof ut?n:void 0;this.setEmpty(s),this._verseNum=t%re.chapterDigitShifter,this._chapterNum=Math.floor(t%re.bookDigitShifter/re.chapterDigitShifter),this._bookNum=Math.floor(t/re.bookDigitShifter)}else if(n==null)if(t!=null&&t instanceof re){const s=t;this._bookNum=s.bookNum,this._chapterNum=s.chapterNum,this._verseNum=s.verseNum,this._verse=s.verse,this.versification=s.versification}else{if(t==null)return;const s=t instanceof ut?t:re.defaultVersification;this.setEmpty(s)}else throw new Error("VerseRef constructor not supported.");else if(t!=null&&n!=null&&r!=null)if(typeof t=="string"&&typeof n=="string"&&typeof r=="string")this.setEmpty(o),this.updateInternal(t,n,r);else if(typeof t=="number"&&typeof n=="number"&&typeof r=="number")this._bookNum=t,this._chapterNum=n,this._verseNum=r,this.versification=o??re.defaultVersification;else throw new Error("VerseRef constructor not supported.");else throw new Error("VerseRef constructor not supported.")}static isVerseParseable(t){return t.length>0&&"0123456789".includes(t[0])&&!t.endsWith(this.verseRangeSeparator)&&!t.endsWith(this.verseSequenceIndicator)}static tryParse(t){let n;try{return n=new re(t),{success:!0,verseRef:n}}catch(r){if(r instanceof en)return n=new re,{success:!1,verseRef:n};throw r}}static getBBBCCCVVV(t,n,r){return t%re.bcvMaxValue*re.bookDigitShifter+(n>=0?n%re.bcvMaxValue*re.chapterDigitShifter:0)+(r>=0?r%re.bcvMaxValue:0)}static fromJSON(t){const{book:n,chapterNum:r,verseNum:o,verse:s,versificationStr:i}=t,l=s||o.toString();let c;return i&&(c=new ut(i)),n?new re(n,r.toString(),l,c):new re}static tryGetVerseNum(t){let n;if(!t)return n=-1,{success:!0,vNum:n};n=0;let r;for(let o=0;o"9")return o===0&&(n=-1),{success:!1,vNum:n};if(n=n*10+ +r-0,n>re.bcvMaxValue)return n=-1,{success:!1,vNum:n}}return{success:!0,vNum:n}}get isDefault(){return this.bookNum===0&&this.chapterNum===0&&this.verseNum===0&&this.versification==null}get hasMultiple(){return this._verse!=null&&(this._verse.includes(re.verseRangeSeparator)||this._verse.includes(re.verseSequenceIndicator))}get book(){return se.bookNumberToId(this.bookNum,"")}set book(t){this.bookNum=se.bookIdToNumber(t)}get chapter(){return this.isDefault||this._chapterNum<0?"":this._chapterNum.toString()}set chapter(t){const n=+t;this._chapterNum=Number.isInteger(n)?n:-1}get verse(){return this._verse!=null?this._verse:this.isDefault||this._verseNum<0?"":this._verseNum.toString()}set verse(t){const{success:n,vNum:r}=re.tryGetVerseNum(t);this._verse=n?void 0:t.replace(this.rtlMark,""),this._verseNum=r,!(this._verseNum>=0)&&({vNum:this._verseNum}=re.tryGetVerseNum(this._verse))}get bookNum(){return this._bookNum}set bookNum(t){if(t<=0||t>se.lastBook)throw new en("BookNum must be greater than zero and less than or equal to last book");this._bookNum=t}get chapterNum(){return this._chapterNum}set chapterNum(t){this.chapterNum=t}get verseNum(){return this._verseNum}set verseNum(t){this._verseNum=t}get versificationStr(){var t;return(t=this.versification)==null?void 0:t.name}set versificationStr(t){this.versification=this.versification!=null?new ut(t):void 0}get valid(){return this.validStatus===0}get validStatus(){return this.validateVerse(re.verseRangeSeparators,re.verseSequenceIndicators)}get BBBCCC(){return re.getBBBCCCVVV(this._bookNum,this._chapterNum,0)}get BBBCCCVVV(){return re.getBBBCCCVVV(this._bookNum,this._chapterNum,this._verseNum)}get isExcluded(){return!1}parse(t){if(t=t.replace(this.rtlMark,""),t.includes("/")){const s=t.split("/");if(t=s[0],s.length>1)try{const i=+s[1].trim();this.versification=new ut(qe[i])}catch{throw new en("Invalid reference : "+t)}}const n=t.trim().split(" ");if(n.length!==2)throw new en("Invalid reference : "+t);const r=n[1].split(":"),o=+r[0];if(r.length!==2||se.bookIdToNumber(n[0])===0||!Number.isInteger(o)||o<0||!re.isVerseParseable(r[1]))throw new en("Invalid reference : "+t);this.updateInternal(n[0],r[0],r[1])}simplify(){this._verse=void 0}clone(){return new re(this)}toString(){const t=this.book;return t===""?"":`${t} ${this.chapter}:${this.verse}`}toJSON(){let t=this.verse;(t===""||t===this.verseNum.toString())&&(t=void 0);const n={book:this.book,chapterNum:this.chapterNum,verseNum:this.verseNum,verse:t,versificationStr:this.versificationStr};return t||delete n.verse,n}equals(t){return t instanceof re?t._bookNum===this._bookNum&&t._chapterNum===this._chapterNum&&t._verseNum===this._verseNum&&t.verse===this.verse&&(t.versification==null&&this.versification==null||t.versification!=null&&this.versification!=null&&t.versification.equals(this.versification)):!1}allVerses(t=!1,n=re.verseRangeSeparators,r=re.verseSequenceIndicators){if(this._verse==null||this.chapterNum<=0)return[this.clone()];const o=[],s=Ko(this._verse,r);for(const i of s.map(l=>Ko(l,n))){const l=this.clone();l.verse=i[0];const c=l.verseNum;if(o.push(l),i.length>1){const d=this.clone();if(d.verse=i[1],!t)for(let u=c+1;ui)return 3;if(r===i)return 4;r=i}return 0}get internalValid(){return this.versification==null?1:this._bookNum<=0||this._bookNum>se.lastBook?2:(se.isCanonical(this._bookNum),0)}setEmpty(t=re.defaultVersification){this._bookNum=0,this._chapterNum=-1,this._verse=void 0,this.versification=t}updateInternal(t,n,r){this.bookNum=se.bookIdToNumber(t),this.chapter=n,this.verse=r}};ne(Se,"defaultVersification",ut.English),ne(Se,"verseRangeSeparator","-"),ne(Se,"verseSequenceIndicator",","),ne(Se,"verseRangeSeparators",[Se.verseRangeSeparator]),ne(Se,"verseSequenceIndicators",[Se.verseSequenceIndicator]),ne(Se,"chapterDigitShifter",1e3),ne(Se,"bookDigitShifter",Se.chapterDigitShifter*Se.chapterDigitShifter),ne(Se,"bcvMaxValue",Se.chapterDigitShifter-1),ne(Se,"ValidStatusType",Qs);class en extends Error{}const tr=pe.Root,eo=pe.Trigger,ea=pe.Group,Sl=pe.Portal,Tl=pe.Sub,Cl=pe.RadioGroup,ta=v.forwardRef(({className:e,inset:t,children:n,...r},o)=>a.jsxs(pe.SubTrigger,{ref:o,className:S("tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-px-2 tw-py-1.5 tw-text-sm tw-outline-none focus:tw-bg-accent data-[state=open]:tw-bg-accent",t&&"tw-pl-8",e),...r,children:[n,a.jsx(te.ChevronRight,{className:"tw-ml-auto tw-h-4 tw-w-4"})]}));ta.displayName=pe.SubTrigger.displayName;const na=v.forwardRef(({className:e,...t},n)=>a.jsx(pe.SubContent,{ref:n,className:S("tw-z-50 tw-min-w-[8rem] tw-overflow-hidden tw-rounded-md tw-border tw-bg-popover tw-p-1 tw-text-popover-foreground tw-shadow-lg data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",e),...t}));na.displayName=pe.SubContent.displayName;const Nn=v.forwardRef(({className:e,sideOffset:t=4,...n},r)=>a.jsx(pe.Portal,{children:a.jsx(pe.Content,{ref:r,sideOffset:t,className:S("pr-twp tw-z-50 tw-min-w-[8rem] tw-overflow-hidden tw-rounded-md tw-border tw-bg-popover tw-p-1 tw-text-popover-foreground tw-shadow-md data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",e),...n})}));Nn.displayName=pe.Content.displayName;const to=v.forwardRef(({className:e,inset:t,...n},r)=>a.jsx(pe.Item,{ref:r,className:S("tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-px-2 tw-py-1.5 tw-text-sm tw-outline-none tw-transition-colors focus:tw-bg-accent data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",t&&"tw-pl-8",e),...n}));to.displayName=pe.Item.displayName;const nr=v.forwardRef(({className:e,children:t,checked:n,...r},o)=>a.jsxs(pe.CheckboxItem,{ref:o,className:S("tw-relative tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-outline-none tw-transition-colors focus:tw-bg-accent focus:tw-text-accent-foreground data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",e),checked:n,...r,children:[a.jsx("span",{className:"tw-absolute tw-left-2 tw-flex tw-h-3.5 tw-w-3.5 tw-items-center tw-justify-center",children:a.jsx(pe.ItemIndicator,{children:a.jsx(te.Check,{className:"tw-h-4 tw-w-4"})})}),t]}));nr.displayName=pe.CheckboxItem.displayName;const no=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(pe.RadioItem,{ref:r,className:S("tw-relative tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-outline-none tw-transition-colors focus:tw-bg-accent focus:tw-text-accent-foreground data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",e),...n,children:[a.jsx("span",{className:"tw-absolute tw-left-2 tw-flex tw-h-3.5 tw-w-3.5 tw-items-center tw-justify-center",children:a.jsx(pe.ItemIndicator,{children:a.jsx(te.Circle,{className:"tw-h-2 tw-w-2 tw-fill-current"})})}),t]}));no.displayName=pe.RadioItem.displayName;const Xt=v.forwardRef(({className:e,inset:t,...n},r)=>a.jsx(pe.Label,{ref:r,className:S("tw-px-2 tw-py-1.5 tw-text-sm tw-font-semibold",t&&"tw-pl-8",e),...n}));Xt.displayName=pe.Label.displayName;const kn=v.forwardRef(({className:e,...t},n)=>a.jsx(pe.Separator,{ref:n,className:S("tw--mx-1 tw-my-1 tw-h-px tw-bg-muted",e),...t}));kn.displayName=pe.Separator.displayName;function ra({className:e,...t}){return a.jsx("span",{className:S("tw-ml-auto tw-text-xs tw-tracking-widest tw-opacity-60",e),...t})}ra.displayName="DropdownMenuShortcut";const jl=v.forwardRef(({bookId:e,handleSelectBook:t,isSelected:n,handleHighlightBook:r,handleKeyDown:o,bookType:s,children:i},l)=>a.jsxs(to,{ref:l,textValue:e,className:S("tw-mx-1 tw-px-1 tw-font-normal tw-text-foreground/80",{"tw-bg-amber-50 tw-text-yellow-900 data-[highlighted]:tw-bg-amber-100":n}),onSelect:c=>{c.preventDefault(),t()},onKeyDown:c=>{o(c)},onFocus:r,onMouseMove:r,children:[a.jsx("span",{className:S("tw-border-b-0 tw-border-l-2 tw-border-r-0 tw-border-t-0 tw-border-solid tw-px-2",{"tw-font-bold":n,"tw-border-l-red-200":s.toLowerCase()==="ot","tw-border-l-purple-200":s.toLowerCase()==="nt","tw-border-l-indigo-200":s.toLowerCase()==="dc"}),children:se.bookIdToEnglishName(e)}),n&&a.jsx("div",{children:i})]},e));function Ol({handleSelectChapter:e,endChapter:t,activeChapter:n,highlightedChapter:r,handleHighlightedChapter:o}){const s=Array.from({length:t},(l,c)=>c+1),i=v.useCallback(l=>{o(l)},[o]);return a.jsx("div",{className:S("tw-flex tw-flex-wrap tw-items-start tw-justify-start tw-self-stretch"),children:s.map(l=>a.jsx("div",{className:S("tw-box-content tw-flex tw-h-4 tw-w-4 tw-cursor-pointer tw-items-center tw-justify-end tw-rounded-md tw-p-2 tw-text-amber-800",{"tw-font-semibold tw-text-amber-900":l===n,"tw-bg-amber-200":l===r}),onClick:c=>{c.preventDefault(),c.stopPropagation(),e(l)},role:"button",onKeyDown:c=>{c.key==="Enter"&&e(l)},tabIndex:0,onMouseMove:()=>i(l),children:l},l))})}function Rl({handleSort:e,handleLocationHistory:t,handleBookmarks:n}){return a.jsxs(Xt,{className:"tw-flex tw-justify-between",children:[a.jsx("p",{className:"tw-inline-block tw-align-middle",children:"Go To"}),a.jsxs("div",{className:"tw-flex tw-items-center",children:[a.jsx(te.ArrowDownWideNarrow,{onClick:e,className:"tw-m-2 tw-h-4 tw-w-4 tw-cursor-pointer tw-gap-2"}),a.jsx(te.Clock,{onClick:t,className:"tw-m-2 tw-h-4 tw-w-4 tw-cursor-pointer tw-gap-2"}),a.jsx(te.Bookmark,{onClick:n,className:"tw-m-2 tw-h-4 tw-w-4 tw-cursor-pointer tw-gap-2"})]})]})}const un=se.allBookIds,Pl={OT:"Old Testament",NT:"New Testament",DC:"Deuterocanon"},Jo=["OT","NT","DC"],_l=32+32+32,Il=[/^(\w+)$/i,/^(\w+)(?:\s(\d+))$/i,/^(\w+)(?:\s(\d+):(\d+))$/i],$l=e=>({OT:un.filter(n=>se.isBookOT(n)),NT:un.filter(n=>se.isBookNT(n)),DC:un.filter(n=>se.isBookDC(n))})[e],tn=e=>W.getChaptersForBook(se.bookIdToNumber(e));function Ml(){return un.map(t=>se.bookIdToEnglishName(t))}function Dl(e){return Ml().includes(e)}function Al(e){const t=e.toLowerCase().replace(/^\w/,n=>n.toUpperCase());if(Dl(t))return un.find(r=>se.bookIdToEnglishName(r)===t)}function Bl({scrRef:e,handleSubmit:t}){const[n,r]=v.useState(""),[o,s]=v.useState(se.bookNumberToId(e.bookNum)),[i,l]=v.useState(e.chapterNum??0),[c,d]=v.useState(se.bookNumberToId(e.bookNum)),[u,m]=v.useState(!1),[w,b]=v.useState(u),y=v.useRef(void 0),f=v.useRef(void 0),h=v.useRef(void 0),E=v.useCallback(N=>$l(N).filter(D=>{const $=se.bookIdToEnglishName(D).toLowerCase(),J=n.replace(/[^a-zA-Z]/g,"").toLowerCase();return $.includes(J)||D.toLowerCase().includes(J)}),[n]),I=N=>{r(N)},j=v.useRef(!1),k=v.useCallback(N=>{if(j.current){j.current=!1;return}m(N)},[]),g=v.useCallback((N,D,$,J)=>{if(l(se.bookNumberToId(e.bookNum)!==N?1:e.chapterNum),D||tn(N)===-1){t({bookNum:se.bookIdToNumber(N),chapterNum:$||1,verseNum:J||1}),m(!1),r("");return}s(o!==N?N:""),m(!D)},[t,e.bookNum,e.chapterNum,o]),P=N=>{N<=0||N>tn(o)||g(o,!0,N)},V=v.useCallback(()=>{Il.forEach(N=>{const D=n.match(N);if(D){const[$,J=void 0,Y=void 0]=D.slice(1),z=Al($);(se.isBookIdValid($)||z)&&g(z??$,!0,J?parseInt(J,10):1,Y?parseInt(Y,10):1)}})},[g,n]),U=v.useCallback(N=>{u?(N.key==="ArrowDown"||N.key==="ArrowUp")&&(typeof h<"u"&&h.current!==null?h.current.focus():typeof f<"u"&&f.current!==null&&f.current.focus(),N.preventDefault()):m(!0)},[u]),T=N=>{const{key:D}=N;D==="ArrowRight"||D==="ArrowLeft"||D==="ArrowDown"||D==="ArrowUp"||D==="Enter"||(y.current.dispatchEvent(new KeyboardEvent("keydown",{key:D})),y.current.focus())},R=N=>{const{key:D}=N;if(c===o){if(D==="Enter"){N.preventDefault(),g(o,!0,i);return}let $=0;if(D==="ArrowRight")if(i1)$=-1;else{N.preventDefault();return}else D==="ArrowDown"?$=6:D==="ArrowUp"&&($=-6);i+$<=0||i+$>tn(c)?l(0):$!==0&&(l(i+$),N.preventDefault())}};return v.useEffect(()=>{o===c?o===se.bookNumberToId(e.bookNum)?l(e.chapterNum):l(1):l(0)},[c,e.bookNum,e.chapterNum,o]),v.useLayoutEffect(()=>{b(u)},[u]),v.useLayoutEffect(()=>{const N=setTimeout(()=>{if(w&&f.current&&h.current){const $=h.current.offsetTop-_l;f.current.scrollTo({top:$,behavior:"instant"})}},10);return()=>{clearTimeout(N)}},[w]),a.jsx("div",{className:"pr-twp tw-flex",children:a.jsxs(tr,{modal:!1,open:u,onOpenChange:k,children:[a.jsx(eo,{asChild:!0,children:a.jsx(pl,{ref:y,value:n,handleSearch:I,handleKeyDown:U,handleOnClick:()=>{s(se.bookNumberToId(e.bookNum)),d(se.bookNumberToId(e.bookNum)),l(e.chapterNum>0?e.chapterNum:0),m(!0),y.current.focus()},onFocus:()=>{j.current=!0},handleSubmit:V,placeholder:`${se.bookNumberToEnglishName(e.bookNum)} ${e.chapterNum}:${e.verseNum}`})}),a.jsxs(Nn,{className:"tw-m-1 tw-overflow-y-auto tw-p-0 tw-font-normal tw-text-foreground/80",style:{width:"233px",maxHeight:"500px",zIndex:"250"},onKeyDown:T,align:"start",ref:f,children:[a.jsx(Rl,{handleSort:()=>console.log("sorting"),handleLocationHistory:()=>console.log("location history"),handleBookmarks:()=>console.log("bookmarks")}),Jo.map((N,D)=>E(N).length>0&&a.jsxs("div",{children:[a.jsx(Xt,{className:"tw-font-semibold tw-text-foreground/80",children:Pl[N]}),E(N).map($=>a.jsx("div",{children:a.jsx(jl,{bookId:$,handleSelectBook:()=>g($,!1),isSelected:o===$,handleHighlightBook:()=>d($),handleKeyDown:R,bookType:N,ref:J=>{o===$&&(h.current=J)},children:a.jsx(Ol,{handleSelectChapter:P,endChapter:tn($),activeChapter:e.bookNum===se.bookIdToNumber($)?e.chapterNum:0,highlightedChapter:i,handleHighlightedChapter:J=>{l(J)}})})},$)),Jo.length-1!==D?a.jsx(kn,{}):void 0]},N))]})]})})}const oa=Qn.cva("pr-twp tw-inline-flex tw-items-center tw-justify-center tw-whitespace-nowrap tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50",{variants:{variant:{default:"tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90",destructive:"tw-bg-destructive tw-text-destructive-foreground hover:tw-bg-destructive/90",outline:"tw-border tw-border-input tw-bg-background hover:tw-bg-accent hover:tw-text-accent-foreground",secondary:"tw-bg-secondary tw-text-secondary-foreground hover:tw-bg-secondary/80",ghost:"hover:tw-bg-accent hover:tw-text-accent-foreground",link:"tw-text-primary tw-underline-offset-4 hover:tw-underline"},size:{default:"tw-h-10 tw-px-4 tw-py-2",sm:"tw-h-9 tw-rounded-md tw-px-3",lg:"tw-h-11 tw-rounded-md tw-px-8",icon:"tw-h-10 tw-w-10"}},defaultVariants:{variant:"default",size:"default"}}),he=v.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...o},s)=>{const i=r?Ki.Slot:"button";return a.jsx(i,{className:S(oa({variant:t,size:n,className:e})),ref:s,...o})});he.displayName="Button";const Vl=Qn.cva("tw-text-sm tw-font-medium tw-leading-none peer-disabled:tw-cursor-not-allowed peer-disabled:tw-opacity-70"),Ue=v.forwardRef(({className:e,...t},n)=>a.jsx(qs.Root,{ref:n,className:S("pr-twp",Vl(),e),...t}));Ue.displayName=qs.Root.displayName;const ro=v.forwardRef(({className:e,...t},n)=>a.jsx(hn.Root,{className:S("pr-twp tw-grid tw-gap-2",e),...t,ref:n}));ro.displayName=hn.Root.displayName;const qn=v.forwardRef(({className:e,...t},n)=>a.jsx(hn.Item,{ref:n,className:S("pr-twp tw-aspect-square tw-h-4 tw-w-4 tw-rounded-full tw-border tw-border-primary tw-text-primary tw-ring-offset-background focus:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50",e),...t,children:a.jsx(hn.Indicator,{className:"tw-flex tw-items-center tw-justify-center",children:a.jsx(te.Circle,{className:"tw-h-2.5 tw-w-2.5 tw-fill-current tw-text-current"})})}));qn.displayName=hn.Item.displayName;const Ll=gn.Root,Fl=gn.Trigger,sa=v.forwardRef(({className:e,align:t="center",sideOffset:n=4,...r},o)=>a.jsx(gn.Portal,{children:a.jsx(gn.Content,{ref:o,align:t,sideOffset:n,className:S("pr-twp tw-z-50 tw-w-72 tw-rounded-md tw-border tw-bg-popover tw-p-4 tw-text-popover-foreground tw-shadow-md tw-outline-none data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",e),...r})}));sa.displayName=gn.Content.displayName;const zl=Xe.Portal,aa=v.forwardRef(({className:e,...t},n)=>a.jsx(Xe.Overlay,{ref:n,className:S("tw-fixed tw-inset-0 tw-z-50 tw-bg-black/80 data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0",e),...t}));aa.displayName=Xe.Overlay.displayName;const Gl=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(zl,{children:[a.jsx(aa,{}),a.jsxs(Xe.Content,{ref:r,className:S("tw-fixed tw-left-[50%] tw-top-[50%] tw-z-50 tw-grid tw-w-full tw-max-w-lg tw-translate-x-[-50%] tw-translate-y-[-50%] tw-gap-4 tw-border tw-bg-background tw-p-6 tw-shadow-lg tw-duration-200 data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[state=closed]:tw-slide-out-to-left-1/2 data-[state=closed]:tw-slide-out-to-top-[48%] data-[state=open]:tw-slide-in-from-left-1/2 data-[state=open]:tw-slide-in-from-top-[48%] sm:tw-rounded-lg",e),...n,children:[t,a.jsxs(Xe.Close,{className:"tw-absolute tw-right-4 tw-top-4 tw-rounded-sm tw-opacity-70 tw-ring-offset-background tw-transition-opacity hover:tw-opacity-100 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-ring focus:tw-ring-offset-2 disabled:tw-pointer-events-none data-[state=open]:tw-bg-accent data-[state=open]:tw-text-muted-foreground",children:[a.jsx(te.X,{className:"tw-h-4 tw-w-4"}),a.jsx("span",{className:"tw-sr-only",children:"Close"})]})]})]}));Gl.displayName=Xe.Content.displayName;const Ul=v.forwardRef(({className:e,...t},n)=>a.jsx(Xe.Title,{ref:n,className:S("tw-text-lg tw-font-semibold tw-leading-none tw-tracking-tight",e),...t}));Ul.displayName=Xe.Title.displayName;const ql=v.forwardRef(({className:e,...t},n)=>a.jsx(Xe.Description,{ref:n,className:S("tw-text-sm tw-text-muted-foreground",e),...t}));ql.displayName=Xe.Description.displayName;const ia=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command,{ref:n,className:S("tw-flex tw-h-full tw-w-full tw-flex-col tw-overflow-hidden tw-rounded-md tw-bg-popover tw-text-popover-foreground",e),...t}));ia.displayName=je.Command.displayName;const la=v.forwardRef(({className:e,...t},n)=>a.jsxs("div",{className:"tw-flex tw-items-center tw-border-b tw-px-3",children:[a.jsx(te.Search,{className:"tw-me-2 tw-h-4 tw-w-4 tw-shrink-0 tw-opacity-50"}),a.jsx(je.Command.Input,{ref:n,className:S("tw-flex tw-h-11 tw-w-full tw-rounded-md tw-bg-transparent tw-py-3 tw-text-sm tw-outline-none placeholder:tw-text-muted-foreground disabled:tw-cursor-not-allowed disabled:tw-opacity-50",e),...t})]}));la.displayName=je.Command.Input.displayName;const ca=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.List,{ref:n,className:S("tw-max-h-[300px] tw-overflow-y-auto tw-overflow-x-hidden",e),...t}));ca.displayName=je.Command.List.displayName;const da=v.forwardRef((e,t)=>a.jsx(je.Command.Empty,{ref:t,className:"tw-py-6 tw-text-center tw-text-sm",...e}));da.displayName=je.Command.Empty.displayName;const Hl=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.Group,{ref:n,className:S("tw-overflow-hidden tw-p-1 tw-text-foreground [&_[cmdk-group-heading]]:tw-px-2 [&_[cmdk-group-heading]]:tw-py-1.5 [&_[cmdk-group-heading]]:tw-text-xs [&_[cmdk-group-heading]]:tw-font-medium [&_[cmdk-group-heading]]:tw-text-muted-foreground",e),...t}));Hl.displayName=je.Command.Group.displayName;const Xl=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.Separator,{ref:n,className:S("tw--mx-1 tw-h-px tw-bg-border",e),...t}));Xl.displayName=je.Command.Separator.displayName;const ua=v.forwardRef(({className:e,...t},n)=>a.jsx(je.Command.Item,{ref:n,className:S("tw-relative tw-flex tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-px-2 tw-py-1.5 tw-text-sm tw-outline-none data-[disabled=true]:tw-pointer-events-none data-[selected=true]:tw-bg-accent data-[selected=true]:tw-text-accent-foreground data-[disabled=true]:tw-opacity-50",e),...t}));ua.displayName=je.Command.Item.displayName;function Yl(e){return typeof e=="string"?e:typeof e=="number"?e.toString():e.label}function Lr({id:e,options:t=[],className:n,value:r,onChange:o=()=>{},getOptionLabel:s=Yl,buttonPlaceholder:i="",textPlaceholder:l="",commandEmptyMessage:c="No option found",buttonVariant:d="outline",dir:u="ltr",isDisabled:m=!1,...w}){const[b,y]=v.useState(!1);return a.jsxs(Ll,{open:b,onOpenChange:y,...w,children:[a.jsx(Fl,{asChild:!0,children:a.jsxs(he,{variant:d,role:"combobox","aria-expanded":b,id:e,className:S("tw-w-[200px] tw-justify-between",n),disabled:m,children:[a.jsx("span",{className:"tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap",children:r?s(r):i}),a.jsx(te.ChevronsUpDown,{className:"tw-ms-2 tw-h-4 tw-w-4 tw-shrink-0 tw-opacity-50"})]})}),a.jsx(sa,{className:"tw-w-[200px] tw-p-0",dir:u,children:a.jsxs(ia,{children:[a.jsx(la,{dir:u,placeholder:l,className:"tw-text-inherit"}),a.jsx(da,{children:c}),a.jsx(ca,{children:t.map(f=>a.jsxs(ua,{value:s(f),onSelect:()=>{o(f),y(!1)},children:[a.jsx(te.Check,{className:S("tw-me-2 tw-h-4 tw-w-4",{"tw-opacity-0":!r||s(r)!==s(f)})}),s(f)]},s(f)))})]})})]})}function pa({startChapter:e,endChapter:t,handleSelectStartChapter:n,handleSelectEndChapter:r,isDisabled:o=!1,chapterCount:s}){const i=v.useMemo(()=>Array.from({length:s},(d,u)=>u+1),[s]),l=d=>{n(d),d>t&&r(d)},c=d=>{r(d),dd.toString(),value:e},"start chapter"),a.jsx(Ue,{htmlFor:"end-chapters-combobox",children:"to"}),a.jsx(Lr,{isDisabled:o,onChange:c,className:"tw-ml-2 tw-w-20",options:i,getOptionLabel:d=>d.toString(),value:t},"end chapter")]})}var wa=(e=>(e.CURRENT_BOOK="current book",e.CHOOSE_BOOKS="choose books",e))(wa||{});const Wl=Object.freeze(["%webView_bookSelector_currentBook%","%webView_bookSelector_choose%","%webView_bookSelector_chooseBooks%"]),kr=(e,t)=>e[t]??t;function Kl({handleBookSelectionModeChange:e,currentBookName:t,onSelectBooks:n,selectedBookIds:r,chapterCount:o,endChapter:s,handleSelectEndChapter:i,startChapter:l,handleSelectStartChapter:c,localizedStrings:d}){const u=kr(d,"%webView_bookSelector_currentBook%"),m=kr(d,"%webView_bookSelector_choose%"),w=kr(d,"%webView_bookSelector_chooseBooks%"),[b,y]=v.useState("current book"),f=h=>{y(h),e(h)};return a.jsx(ro,{className:"pr-twp tw-flex",value:b,onValueChange:h=>f(h),children:a.jsxs("div",{className:"tw-flex tw-w-full tw-flex-col tw-gap-4",children:[a.jsxs("div",{className:"tw-grid tw-grid-cols-[25%,25%,50%]",children:[a.jsxs("div",{className:"tw-flex tw-items-center",children:[a.jsx(qn,{value:"current book"}),a.jsx(Ue,{className:"tw-ml-1",children:u})]}),a.jsx(Ue,{className:"tw-flex tw-items-center",children:t}),a.jsx("div",{className:"tw-flex tw-items-center tw-justify-end",children:a.jsx(pa,{isDisabled:b==="choose books",handleSelectStartChapter:c,handleSelectEndChapter:i,chapterCount:o,startChapter:l,endChapter:s})})]}),a.jsxs("div",{className:"tw-grid tw-grid-cols-[25%,50%,25%]",children:[a.jsxs("div",{className:"tw-flex tw-items-center",children:[a.jsx(qn,{value:"choose books"}),a.jsx(Ue,{className:"tw-ml-1",children:w})]}),a.jsx(Ue,{className:"tw-flex tw-items-center",children:r.map(h=>se.bookIdToEnglishName(h)).join(", ")}),a.jsx(he,{disabled:b==="current book",onClick:()=>n(),children:m})]})]})})}function Jl({table:e}){return a.jsxs(tr,{children:[a.jsx(Gs.DropdownMenuTrigger,{asChild:!0,children:a.jsxs(he,{variant:"outline",size:"sm",className:"tw-ml-auto tw-hidden tw-h-8 lg:tw-flex",children:[a.jsx(te.FilterIcon,{className:"tw-mr-2 tw-h-4 tw-w-4"}),"View"]})}),a.jsxs(Nn,{align:"end",className:"tw-w-[150px]",children:[a.jsx(Xt,{children:"Toggle columns"}),a.jsx(kn,{}),e.getAllColumns().filter(t=>t.getCanHide()).map(t=>a.jsx(nr,{className:"tw-capitalize",checked:t.getIsVisible(),onCheckedChange:n=>t.toggleVisibility(!!n),children:t.id},t.id))]})]})}const Dt=ge.Root,fa=ge.Group,At=ge.Value,bt=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(ge.Trigger,{ref:r,className:S("tw-flex tw-h-10 tw-w-full tw-items-center tw-justify-between tw-rounded-md tw-border tw-border-input tw-bg-background tw-px-3 tw-py-2 tw-text-sm tw-ring-offset-background placeholder:tw-text-muted-foreground focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-ring focus:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50 [&>span]:tw-line-clamp-1",e),...n,children:[t,a.jsx(ge.Icon,{asChild:!0,children:a.jsx(te.ChevronDown,{className:"tw-h-4 tw-w-4 tw-opacity-50"})})]}));bt.displayName=ge.Trigger.displayName;const oo=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.ScrollUpButton,{ref:n,className:S("tw-flex tw-cursor-default tw-items-center tw-justify-center tw-py-1",e),...t,children:a.jsx(te.ChevronUp,{className:"tw-h-4 tw-w-4"})}));oo.displayName=ge.ScrollUpButton.displayName;const so=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.ScrollDownButton,{ref:n,className:S("tw-flex tw-cursor-default tw-items-center tw-justify-center tw-py-1",e),...t,children:a.jsx(te.ChevronDown,{className:"tw-h-4 tw-w-4"})}));so.displayName=ge.ScrollDownButton.displayName;const vt=v.forwardRef(({className:e,children:t,position:n="popper",...r},o)=>a.jsx(ge.Portal,{children:a.jsxs(ge.Content,{ref:o,className:S("pr-twp tw-relative tw-z-50 tw-max-h-96 tw-min-w-[8rem] tw-overflow-hidden tw-rounded-md tw-border tw-bg-popover tw-text-popover-foreground tw-shadow-md data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out data-[state=closed]:tw-fade-out-0 data-[state=open]:tw-fade-in-0 data-[state=closed]:tw-zoom-out-95 data-[state=open]:tw-zoom-in-95 data-[side=bottom]:tw-slide-in-from-top-2 data-[side=left]:tw-slide-in-from-right-2 data-[side=right]:tw-slide-in-from-left-2 data-[side=top]:tw-slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:tw-translate-y-1 data-[side=left]:tw--translate-x-1 data-[side=right]:tw-translate-x-1 data-[side=top]:tw--translate-y-1",e),position:n,...r,children:[a.jsx(oo,{}),a.jsx(ge.Viewport,{className:S("tw-p-1",n==="popper"&&"tw-h-[var(--radix-select-trigger-height)] tw-w-full tw-min-w-[var(--radix-select-trigger-width)]"),children:t}),a.jsx(so,{})]})}));vt.displayName=ge.Content.displayName;const ma=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.Label,{ref:n,className:S("tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-font-semibold",e),...t}));ma.displayName=ge.Label.displayName;const De=v.forwardRef(({className:e,children:t,...n},r)=>a.jsxs(ge.Item,{ref:r,className:S("tw-relative tw-flex tw-w-full tw-cursor-default tw-select-none tw-items-center tw-rounded-sm tw-py-1.5 tw-pl-8 tw-pr-2 tw-text-sm tw-outline-none focus:tw-bg-accent focus:tw-text-accent-foreground data-[disabled]:tw-pointer-events-none data-[disabled]:tw-opacity-50",e),...n,children:[a.jsx("span",{className:"tw-absolute tw-left-2 tw-flex tw-h-3.5 tw-w-3.5 tw-items-center tw-justify-center",children:a.jsx(ge.ItemIndicator,{children:a.jsx(te.Check,{className:"tw-h-4 tw-w-4"})})}),a.jsx(ge.ItemText,{children:t})]}));De.displayName=ge.Item.displayName;const ha=v.forwardRef(({className:e,...t},n)=>a.jsx(ge.Separator,{ref:n,className:S("tw--mx-1 tw-my-1 tw-h-px tw-bg-muted",e),...t}));ha.displayName=ge.Separator.displayName;function Zl({table:e}){return a.jsx("div",{className:"tw-flex tw-items-center tw-justify-between tw-px-2 tw-pb-3 tw-pt-3",children:a.jsxs("div",{className:"tw-flex tw-items-center tw-space-x-6 lg:tw-space-x-8",children:[a.jsxs("div",{className:"tw-flex-1 tw-text-sm tw-text-muted-foreground",children:[e.getFilteredSelectedRowModel().rows.length," of"," ",e.getFilteredRowModel().rows.length," row(s) selected"]}),a.jsxs("div",{className:"tw-flex tw-items-center tw-space-x-2",children:[a.jsx("p",{className:"tw-text-nowrap tw-text-sm tw-font-medium",children:"Rows per page"}),a.jsxs(Dt,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[a.jsx(bt,{className:"tw-h-8 tw-w-[70px]",children:a.jsx(At,{placeholder:e.getState().pagination.pageSize})}),a.jsx(vt,{side:"top",children:[10,20,30,40,50].map(t=>a.jsx(De,{value:`${t}`,children:t},t))})]})]}),a.jsxs("div",{className:"tw-flex tw-w-[100px] tw-items-center tw-justify-center tw-text-sm tw-font-medium",children:["Page ",e.getState().pagination.pageIndex+1," of ",e.getPageCount()]}),a.jsxs("div",{className:"tw-flex tw-items-center tw-space-x-2",children:[a.jsxs(he,{variant:"outline",size:"icon",className:"tw-hidden tw-h-8 tw-w-8 tw-p-0 lg:tw-flex",onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to first page"}),a.jsx(te.ArrowLeftIcon,{className:"tw-h-4 tw-w-4"})]}),a.jsxs(he,{variant:"outline",size:"icon",className:"tw-h-8 tw-w-8 tw-p-0",onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to previous page"}),a.jsx(te.ChevronLeftIcon,{className:"tw-h-4 tw-w-4"})]}),a.jsxs(he,{variant:"outline",size:"icon",className:"tw-h-8 tw-w-8 tw-p-0",onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to next page"}),a.jsx(te.ChevronRightIcon,{className:"tw-h-4 tw-w-4"})]}),a.jsxs(he,{variant:"outline",size:"icon",className:"tw-hidden tw-h-8 tw-w-8 tw-p-0 lg:tw-flex",onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[a.jsx("span",{className:"tw-sr-only",children:"Go to last page"}),a.jsx(te.ArrowRightIcon,{className:"tw-h-4 tw-w-4"})]})]})]})})}const En=v.forwardRef(({className:e,stickyHeader:t,...n},r)=>a.jsx("div",{className:S("pr-twp tw-relative tw-w-full",{"tw-overflow-auto":!t}),children:a.jsx("table",{ref:r,className:S("tw-w-full tw-caption-bottom tw-text-sm",e),...n})}));En.displayName="Table";const Sn=v.forwardRef(({className:e,stickyHeader:t,...n},r)=>a.jsx("thead",{ref:r,className:S({"tw-sticky tw-top-0 tw-backdrop-blur-md":t},"[&_tr]:tw-border-b",e),...n}));Sn.displayName="TableHeader";const Tn=v.forwardRef(({className:e,...t},n)=>a.jsx("tbody",{ref:n,className:S("[&_tr:last-child]:tw-border-0",e),...t}));Tn.displayName="TableBody";const ga=v.forwardRef(({className:e,...t},n)=>a.jsx("tfoot",{ref:n,className:S("tw-border-t tw-bg-muted/50 tw-font-medium [&>tr]:last:tw-border-b-0",e),...t}));ga.displayName="TableFooter";const Ze=v.forwardRef(({className:e,...t},n)=>a.jsx("tr",{ref:n,className:S("tw-border-b tw-transition-colors hover:tw-bg-muted/50 data-[state=selected]:tw-bg-muted",e),...t}));Ze.displayName="TableRow";const Bt=v.forwardRef(({className:e,...t},n)=>a.jsx("th",{ref:n,className:S("tw-h-12 tw-px-4 tw-text-start tw-align-middle tw-font-medium tw-text-muted-foreground [&:has([role=checkbox])]:tw-pe-0",e),...t}));Bt.displayName="TableHead";const yt=v.forwardRef(({className:e,...t},n)=>a.jsx("td",{ref:n,className:S("tw-p-4 tw-align-middle [&:has([role=checkbox])]:tw-pe-0",e),...t}));yt.displayName="TableCell";const ba=v.forwardRef(({className:e,...t},n)=>a.jsx("caption",{ref:n,className:S("tw-mt-4 tw-text-sm tw-text-muted-foreground",e),...t}));ba.displayName="TableCaption";function va({columns:e,data:t,enablePagination:n=!1,showPaginationControls:r=!1,showColumnVisibilityControls:o=!1,stickyHeader:s=!1,onRowClickHandler:i=()=>{}}){var h;const[l,c]=v.useState([]),[d,u]=v.useState([]),[m,w]=v.useState({}),[b,y]=v.useState({}),f=Ne.useReactTable({data:t,columns:e,getCoreRowModel:Ne.getCoreRowModel(),...n&&{getPaginationRowModel:Ne.getPaginationRowModel()},onSortingChange:c,getSortedRowModel:Ne.getSortedRowModel(),onColumnFiltersChange:u,getFilteredRowModel:Ne.getFilteredRowModel(),onColumnVisibilityChange:w,onRowSelectionChange:y,state:{sorting:l,columnFilters:d,columnVisibility:m,rowSelection:b}});return a.jsxs("div",{className:"pr-twp",children:[o&&a.jsx(Jl,{table:f}),a.jsxs(En,{stickyHeader:s,children:[a.jsx(Sn,{stickyHeader:s,children:f.getHeaderGroups().map(E=>a.jsx(Ze,{children:E.headers.map(I=>a.jsx(Bt,{children:I.isPlaceholder?void 0:Ne.flexRender(I.column.columnDef.header,I.getContext())},I.id))},E.id))}),a.jsx(Tn,{children:(h=f.getRowModel().rows)!=null&&h.length?f.getRowModel().rows.map(E=>a.jsx(Ze,{onClick:()=>i(E,f),"data-state":E.getIsSelected()&&"selected",children:E.getVisibleCells().map(I=>a.jsx(yt,{children:Ne.flexRender(I.column.columnDef.cell,I.getContext())},I.id))},E.id)):a.jsx(Ze,{children:a.jsx(yt,{colSpan:e.length,className:"tw-h-24 tw-text-center",children:"No results."})})})]}),n&&a.jsxs("div",{className:"tw-flex tw-items-center tw-justify-end tw-space-x-2 tw-py-4",children:[a.jsx(he,{variant:"outline",size:"sm",onClick:()=>f.previousPage(),disabled:!f.getCanPreviousPage(),children:"Previous"}),a.jsx(he,{variant:"outline",size:"sm",onClick:()=>f.nextPage(),disabled:!f.getCanNextPage(),children:"Next"})]}),n&&r&&a.jsx(Zl,{table:f})]})}function Ql({occurrenceData:e,setScriptureReference:t,localizedStrings:n}){const r=n["%webView_inventory_occurrences_table_header_reference%"],o=n["%webView_inventory_occurrences_table_header_occurrence%"],s=v.useMemo(()=>{const i=[];return e.forEach(l=>{i.some(c=>W.deepEqual(c,l))||i.push(l)}),i},[e]);return a.jsxs(En,{stickyHeader:!0,children:[a.jsx(Sn,{stickyHeader:!0,children:a.jsxs(Ze,{children:[a.jsx(Bt,{children:r}),a.jsx(Bt,{children:o})]})}),a.jsx(Tn,{children:s.length>0&&s.map(i=>a.jsxs(Ze,{onClick:()=>{t(i.reference)},children:[a.jsx(yt,{children:`${se.bookNumberToEnglishName(i.reference.bookNum)} ${i.reference.chapterNum}:${i.reference.verseNum}`}),a.jsx(yt,{children:i.text})]},`${i.reference.bookNum} ${i.reference.chapterNum}:${i.reference.verseNum}-${i.text}`))})]})}const rr=v.forwardRef(({className:e,...t},n)=>a.jsx(Br.Root,{ref:n,className:S("tw-peer pr-twp tw-h-4 tw-w-4 tw-shrink-0 tw-rounded-sm tw-border tw-border-primary tw-ring-offset-background focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50 data-[state=checked]:tw-bg-primary data-[state=checked]:tw-text-primary-foreground",e),...t,children:a.jsx(Br.Indicator,{className:S("tw-flex tw-items-center tw-justify-center tw-text-current"),children:a.jsx(te.Check,{className:"tw-h-4 tw-w-4"})})}));rr.displayName=Br.Root.displayName;const ya=e=>e.split(/(?:\r?\n|\r)|(?=(?:\\(?:v|c|id)))/g),Fr=e=>{const t=/^\\[vc]\s+(\d+)/,n=e.match(t);if(n)return+n[1]},xa=e=>{const t=e.match(/^\\id\s+([A-Za-z]+)/);return t?se.bookIdToNumber(t[1]):0},Na=(e,t,n)=>n.includes(e)?"unapproved":t.includes(e)?"approved":"unknown",ka=Qn.cva("pr-twp tw-inline-flex tw-items-center tw-justify-center tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors hover:tw-bg-muted hover:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=on]:tw-bg-accent data-[state=on]:tw-text-accent-foreground",{variants:{variant:{default:"tw-bg-transparent",outline:"tw-border tw-border-input tw-bg-transparent hover:tw-bg-accent hover:tw-text-accent-foreground"},size:{default:"tw-h-10 tw-px-3",sm:"tw-h-9 tw-px-2.5",lg:"tw-h-11 tw-px-5"}},defaultVariants:{variant:"default",size:"default"}}),ec=v.forwardRef(({className:e,variant:t,size:n,...r},o)=>a.jsx(Hs.Root,{ref:o,className:S(ka({variant:t,size:n,className:e})),...r}));ec.displayName=Hs.Root.displayName;const Ea=v.createContext({size:"default",variant:"default"}),ao=v.forwardRef(({className:e,variant:t,size:n,children:r,...o},s)=>a.jsx(er.Root,{ref:s,className:S("pr-twp tw-flex tw-items-center tw-justify-center tw-gap-1",e),...o,children:a.jsx(Ea.Provider,{value:{variant:t,size:n},children:r})}));ao.displayName=er.Root.displayName;const pn=v.forwardRef(({className:e,children:t,variant:n,size:r,...o},s)=>{const i=v.useContext(Ea);return a.jsx(er.Item,{ref:s,className:S(ka({variant:i.variant||n,size:i.size||r}),e),...o,children:t})});pn.displayName=er.Item.displayName;const or=e=>e==="asc"?a.jsx(te.ArrowUpIcon,{className:"tw-ms-2 tw-h-4 tw-w-4"}):e==="desc"?a.jsx(te.ArrowDownIcon,{className:"tw-ms-2 tw-h-4 tw-w-4"}):a.jsx(te.ArrowUpDownIcon,{className:"tw-ms-2 tw-h-4 tw-w-4"}),tc=e=>({accessorKey:"item",accessorFn:t=>t.items[0],header:({column:t})=>a.jsxs(he,{variant:"ghost",onClick:()=>t.toggleSorting(void 0),children:[e,or(t.getIsSorted())]})}),nc=(e,t)=>({accessorKey:`item${t}`,accessorFn:n=>n.items[t],header:({column:n})=>a.jsxs(he,{variant:"ghost",onClick:()=>n.toggleSorting(void 0),children:[e,or(n.getIsSorted())]})}),rc=e=>({accessorKey:"count",header:({column:t})=>a.jsx("div",{className:"tw-flex tw-justify-end tw-tabular-nums",children:a.jsxs(he,{variant:"ghost",onClick:()=>t.toggleSorting(void 0),children:[e,or(t.getIsSorted())]})}),cell:({row:t})=>a.jsx("div",{className:"tw-flex tw-justify-end",children:t.getValue("count")})}),Er=(e,t,n,r,o,s)=>{let i=[...n];e.forEach(c=>{t==="approved"?i.includes(c)||i.push(c):i=i.filter(d=>d!==c)}),r(i);let l=[...o];e.forEach(c=>{t==="unapproved"?l.includes(c)||l.push(c):l=l.filter(d=>d!==c)}),s(l)},oc=(e,t,n,r,o)=>({accessorKey:"status",header:({column:s})=>a.jsx("div",{className:"tw-flex tw-justify-center",children:a.jsxs(he,{variant:"ghost",onClick:()=>s.toggleSorting(void 0),children:[e,or(s.getIsSorted())]})}),cell:({row:s})=>{const i=s.getValue("status"),l=s.getValue("item");return a.jsxs(ao,{value:i,variant:"outline",type:"single",children:[a.jsx(pn,{onClick:()=>Er([l],"approved",t,n,r,o),value:"approved",children:a.jsx(te.CircleCheckIcon,{})}),a.jsx(pn,{onClick:()=>Er([l],"unapproved",t,n,r,o),value:"unapproved",children:a.jsx(te.CircleXIcon,{})}),a.jsx(pn,{onClick:()=>Er([l],"unknown",t,n,r,o),value:"unknown",children:a.jsx(te.CircleHelpIcon,{})})]})}}),sc=Object.freeze(["%webView_inventory_all%","%webView_inventory_approved%","%webView_inventory_unapproved%","%webView_inventory_unknown%","%webView_inventory_scope_currentBook%","%webView_inventory_scope_chapter%","%webView_inventory_scope_verse%","%webView_inventory_filter_text%","%webView_inventory_show_additional_items%","%webView_inventory_occurrences_table_header_reference%","%webView_inventory_occurrences_table_header_occurrence%"]),ac=(e,t,n)=>{let r=e;return t!=="all"&&(r=r.filter(o=>t==="approved"&&o.status==="approved"||t==="unapproved"&&o.status==="unapproved"||t==="unknown"&&o.status==="unknown")),n!==""&&(r=r.filter(o=>o.items[0].includes(n))),r},ic=(e,t,n,r,o)=>{if(!e)return[];const s=[];let i=t.bookNum,l=t.chapterNum,c=t.verseNum;return ya(e).forEach(u=>{u.startsWith("\\id")&&(i=xa(u),l=0,c=0),u.startsWith("\\c")&&(l=Fr(u),c=0),u.startsWith("\\v")&&(c=Fr(u),l===0&&(l=t.chapterNum));let m=o.exec(u)??void 0;for(;m;){const w=[];m.forEach(h=>w.push(h));const b=m.index,y=s.find(h=>W.deepEqual(h.items,w)),f={reference:{bookNum:i!==void 0?i:-1,chapterNum:l!==void 0?l:-1,verseNum:c!==void 0?c:-1},text:W.substring(u,Math.max(0,b-25),Math.min(b+25,u.length))};if(y)y.count+=1,y.occurrences.push(f);else{const h={items:w,count:1,status:Na(w[0],n,r),occurrences:[f]};s.push(h)}m=o.exec(u)??void 0}}),s},Je=(e,t)=>e[t]??t;function lc({scriptureReference:e,setScriptureReference:t,localizedStrings:n,extractItems:r,additionalItemsLabels:o,approvedItems:s,unapprovedItems:i,text:l,scope:c,onScopeChange:d,columns:u}){const m=Je(n,"%webView_inventory_all%"),w=Je(n,"%webView_inventory_approved%"),b=Je(n,"%webView_inventory_unapproved%"),y=Je(n,"%webView_inventory_unknown%"),f=Je(n,"%webView_inventory_scope_currentBook%"),h=Je(n,"%webView_inventory_scope_chapter%"),E=Je(n,"%webView_inventory_scope_verse%"),I=Je(n,"%webView_inventory_filter_text%"),j=Je(n,"%webView_inventory_show_additional_items%"),[k,g]=v.useState(!1),[P,V]=v.useState("all"),[U,T]=v.useState(""),[R,N]=v.useState([]),D=v.useMemo(()=>l?r instanceof RegExp?ic(l,e,s,i,r):r(l,e,s,i):[],[l,r,e,s,i]),$=v.useMemo(()=>{if(k)return D;const x=[];return D.forEach(C=>{const L=C.items[0],F=x.find(B=>B.items[0]===L);F?(F.count+=C.count,F.occurrences=F.occurrences.concat(C.occurrences)):x.push({items:[L],count:C.count,occurrences:C.occurrences,status:C.status})}),x},[k,D]),J=v.useMemo(()=>ac($,P,U),[$,P,U]),Y=v.useMemo(()=>{var L,F;if(!k)return u;const x=(L=o==null?void 0:o.tableHeaders)==null?void 0:L.length;if(!x)return u;const C=[];for(let B=0;B{N([])},[J]);const z=(x,C)=>{C.setRowSelection(()=>{const L={};return L[x.index]=!0,L}),N(x.original.items)},ee=x=>{if(x==="book"||x==="chapter"||x==="verse")d(x);else throw new Error(`Invalid scope value: ${x}`)},ae=x=>{if(x==="all"||x==="approved"||x==="unapproved"||x==="unknown")V(x);else throw new Error(`Invalid status filter value: ${x}`)},oe=v.useMemo(()=>{if($.length===0||R.length===0)return[];const x=$.filter(C=>W.deepEqual(k?C.items:[C.items[0]],R));if(x.length>1)throw new Error("Selected item is not unique");return x[0].occurrences},[R,k,$]);return a.jsxs("div",{className:"pr-twp tw-flex tw-h-full tw-flex-col",children:[a.jsxs("div",{className:"tw-flex tw-items-stretch",children:[a.jsxs(Dt,{onValueChange:x=>ae(x),defaultValue:P,children:[a.jsx(bt,{className:"tw-m-1",children:a.jsx(At,{placeholder:"Select filter"})}),a.jsxs(vt,{children:[a.jsx(De,{value:"all",children:m}),a.jsx(De,{value:"approved",children:w}),a.jsx(De,{value:"unapproved",children:b}),a.jsx(De,{value:"unknown",children:y})]})]}),a.jsxs(Dt,{onValueChange:x=>ee(x),defaultValue:c,children:[a.jsx(bt,{className:"tw-m-1",children:a.jsx(At,{placeholder:"Select scope"})}),a.jsxs(vt,{children:[a.jsx(De,{value:"book",children:f}),a.jsx(De,{value:"chapter",children:h}),a.jsx(De,{value:"verse",children:E})]})]}),a.jsx(qt,{className:"tw-m-1 tw-rounded-md tw-border",placeholder:I,value:U,onChange:x=>{T(x.target.value)}}),o&&a.jsxs("div",{className:"tw-m-1 tw-flex tw-items-center tw-rounded-md tw-border",children:[a.jsx(rr,{className:"tw-m-1",checked:k,onCheckedChange:x=>{N([]),g(x)}}),a.jsx(Ue,{className:"tw-m-1 tw-flex-shrink-0 tw-whitespace-nowrap",children:(o==null?void 0:o.checkboxText)??j})]})]}),a.jsx("div",{className:"tw-m-1 tw-flex-1 tw-overflow-auto tw-rounded-md tw-border",children:a.jsx(va,{columns:Y,data:J,onRowClickHandler:z,stickyHeader:!0})}),oe.length>0&&a.jsx("div",{className:"tw-m-1 tw-flex-1 tw-overflow-auto tw-rounded-md tw-border",children:a.jsx(Ql,{occurrenceData:oe,setScriptureReference:t,localizedStrings:n})})]})}function Sa({onSearch:e,placeholder:t,isFullWidth:n}){const[r,o]=v.useState(""),s=i=>{o(i),e(i)};return a.jsx(qt,{className:S("tw-flex tw-h-10 tw-rounded-md tw-border tw-border-input tw-bg-background tw-px-3 tw-py-2 tw-text-sm tw-ring-offset-background file:tw-border-0 file:tw-bg-transparent file:tw-text-sm file:tw-font-medium placeholder:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-[color:hsl(240,5%,64.9%)] focus-visible:tw-ring-offset-2 disabled:tw-cursor-not-allowed disabled:tw-opacity-50",{"tw-w-full":n}),placeholder:t,value:r,onChange:i=>s(i.target.value)})}const io=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.Root,{orientation:"vertical",ref:n,className:S("tw-flex tw-gap-1 tw-rounded-md tw-text-muted-foreground",e),...t}));io.displayName=Oe.List.displayName;const lo=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.List,{ref:n,className:S("tw-flex-fit tw-mlk-items-center tw-w-[124px] tw-justify-center tw-rounded-md tw-bg-muted tw-p-1 tw-text-muted-foreground",e),...t}));lo.displayName=Oe.List.displayName;const Ta=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.Trigger,{ref:n,...t,className:S("overflow-clip tw-inline-flex tw-w-[116px] tw-cursor-pointer tw-items-center tw-justify-center tw-break-words tw-rounded-sm tw-border-0 tw-bg-muted tw-px-3 tw-py-1.5 tw-text-sm tw-font-medium tw-text-inherit tw-ring-offset-background tw-transition-all hover:tw-text-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=active]:tw-bg-background data-[state=active]:tw-text-foreground data-[state=active]:tw-shadow-sm",e)})),co=v.forwardRef(({className:e,...t},n)=>a.jsx(Oe.Content,{ref:n,className:S("tw-ms-5 tw-flex-grow tw-text-foreground tw-ring-offset-background focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2",e),...t}));co.displayName=Oe.Content.displayName;function cc({tabList:e,onSearch:t,searchPlaceholder:n,headerTitle:r,isSearchBarFullWidth:o=!1,direction:s="ltr"}){return a.jsxs("div",{className:"pr-twp",children:[a.jsxs("div",{className:"tw-sticky tw-top-0 tw-space-y-2 tw-pb-2",children:[r?a.jsx("h1",{children:r}):"",a.jsx(Sa,{isFullWidth:o,onSearch:t,placeholder:n})]}),a.jsxs(io,{dir:s,children:[a.jsx(lo,{children:e.map(i=>a.jsx(Ta,{value:i.value,children:i.value},i.key))}),e.map(i=>a.jsx(co,{value:i.value,children:i.content},i.key))]})]})}const rt="scrBook",dc="scrRef",pt="source",uc="details",pc="Scripture Reference",wc="Scripture Book",Ca="Type",fc="Details";function mc(e,t){const n=t??!1;return[{accessorFn:r=>`${se.bookNumberToId(r.start.bookNum)} ${r.start.chapterNum}:${r.start.verseNum}`,id:rt,header:(e==null?void 0:e.scriptureReferenceColumnName)??pc,cell:r=>{const o=r.row.original;return r.row.getIsGrouped()?se.bookNumberToEnglishName(o.start.bookNum):r.row.groupingColumnId===rt?W.formatScrRef(o.start):void 0},getGroupingValue:r=>r.start.bookNum,sortingFn:(r,o)=>W.compareScrRefs(r.original.start,o.original.start),enableGrouping:!0},{accessorFn:r=>W.formatScrRef(r.start),id:dc,header:void 0,cell:r=>{const o=r.row.original;return r.row.getIsGrouped()?void 0:W.formatScrRef(o.start)},sortingFn:(r,o)=>W.compareScrRefs(r.original.start,o.original.start),enableGrouping:!1},{accessorFn:r=>r.source.displayName,id:pt,header:n?(e==null?void 0:e.typeColumnName)??Ca:void 0,cell:r=>n||r.row.getIsGrouped()?r.getValue():void 0,getGroupingValue:r=>r.source.id,sortingFn:(r,o)=>r.original.source.displayName.localeCompare(o.original.source.displayName),enableGrouping:!0},{accessorFn:r=>r.detail,id:uc,header:(e==null?void 0:e.detailsColumnName)??fc,cell:r=>r.getValue(),enableGrouping:!1}]}const hc=e=>{if(!("offset"in e.start))throw new Error("No offset available in range start");if(e.end&&!("offset"in e.end))throw new Error("No offset available in range end");const{offset:t}=e.start;let n=0;return e.end&&({offset:n}=e.end),!e.end||W.compareScrRefs(e.start,e.end)===0?`${W.scrRefToBBBCCCVVV(e.start)}+${t}`:`${W.scrRefToBBBCCCVVV(e.start)}+${t}-${W.scrRefToBBBCCCVVV(e.end)}+${n}`},Zo=e=>`${hc({start:e.start,end:e.end})} ${e.source.displayName} ${e.detail}`;function gc({sources:e,showColumnHeaders:t=!1,showSourceColumn:n=!1,scriptureReferenceColumnName:r,scriptureBookGroupName:o,typeColumnName:s,detailsColumnName:i,onRowSelected:l,direction:c="ltr"}){const[d,u]=v.useState([]),[m,w]=v.useState([{id:rt,desc:!1}]),[b,y]=v.useState({}),f=v.useMemo(()=>e.flatMap(T=>T.data.map(R=>({...R,source:T.source}))),[e]),h=v.useMemo(()=>mc({scriptureReferenceColumnName:r,typeColumnName:s,detailsColumnName:i},n),[r,s,i,n]);v.useEffect(()=>{d.includes(pt)?w([{id:pt,desc:!1},{id:rt,desc:!1}]):w([{id:rt,desc:!1}])},[d]);const E=Ne.useReactTable({data:f,columns:h,state:{grouping:d,sorting:m,rowSelection:b},onGroupingChange:u,onSortingChange:w,onRowSelectionChange:y,getExpandedRowModel:Ne.getExpandedRowModel(),getGroupedRowModel:Ne.getGroupedRowModel(),getCoreRowModel:Ne.getCoreRowModel(),getSortedRowModel:Ne.getSortedRowModel(),getRowId:Zo,autoResetExpanded:!1,enableMultiRowSelection:!1,enableSubRowSelection:!1});v.useEffect(()=>{if(l){const T=E.getSelectedRowModel().rowsById,R=Object.keys(T);if(R.length===1){const N=f.find(D=>Zo(D)===R[0])||void 0;N&&l(N)}}},[b,f,l,E]);const I=o??wc,j=s??Ca,k=[{label:"No Grouping",value:[]},{label:`Group by ${I}`,value:[rt]},{label:`Group by ${j}`,value:[pt]},{label:`Group by ${I} and ${j}`,value:[rt,pt]},{label:`Group by ${j} and ${I}`,value:[pt,rt]}],g=T=>{u(JSON.parse(T))},P=(T,R)=>{!T.getIsGrouped()&&!T.getIsSelected()&&T.getToggleSelectedHandler()(R)},V=(T,R)=>T.getIsGrouped()?"":S("banded-row",R%2===0?"even":"odd"),U=(T,R,N)=>{if(!((T==null?void 0:T.length)===0||R.depth{g(T)},children:[a.jsx(bt,{className:"tw-mb-1 tw-mt-2",children:a.jsx(At,{})}),a.jsx(vt,{position:"item-aligned",children:a.jsx(fa,{children:k.map(T=>a.jsx(De,{value:JSON.stringify(T.value),children:T.label},T.label))})})]}),a.jsxs(En,{className:"tw-relative tw-flex tw-flex-col tw-overflow-y-auto tw-p-0",children:[t&&a.jsx(Sn,{children:E.getHeaderGroups().map(T=>a.jsx(Ze,{children:T.headers.filter(R=>R.column.columnDef.header).map(R=>a.jsx(Bt,{colSpan:R.colSpan,className:"top-0 tw-sticky",children:R.isPlaceholder?void 0:a.jsxs("div",{children:[R.column.getCanGroup()?a.jsx(he,{variant:"ghost",title:`Toggle grouping by ${R.column.columnDef.header}`,onClick:R.column.getToggleGroupingHandler(),type:"button",children:R.column.getIsGrouped()?"🛑":"👊 "}):void 0," ",Ne.flexRender(R.column.columnDef.header,R.getContext())]})},R.id))},T.id))}),a.jsx(Tn,{children:E.getRowModel().rows.map((T,R)=>a.jsx(Ze,{"data-state":T.getIsSelected()?"selected":"",className:S(V(T,R)),onClick:N=>P(T,N),children:T.getVisibleCells().map(N=>{if(!(N.getIsPlaceholder()||N.column.columnDef.enableGrouping&&!N.getIsGrouped()&&(N.column.columnDef.id!==pt||!n)))return a.jsx(yt,{className:S(N.column.columnDef.id,"tw-p-[1px]",U(d,T,N)),children:(()=>N.getIsGrouped()?a.jsxs(he,{variant:"link",onClick:T.getToggleExpandedHandler(),type:"button",children:[T.getIsExpanded()&&a.jsx(te.ChevronDown,{}),!T.getIsExpanded()&&(c==="ltr"?a.jsx(te.ChevronRight,{}):a.jsx(te.ChevronLeft,{}))," ",Ne.flexRender(N.column.columnDef.cell,N.getContext())," (",T.subRows.length,")"]}):Ne.flexRender(N.column.columnDef.cell,N.getContext()))()},N.id)})},T.id))})]})]})}const Sr={[W.getLocalizeKeyForScrollGroupId("undefined")]:"Ø",[W.getLocalizeKeyForScrollGroupId(0)]:"A",[W.getLocalizeKeyForScrollGroupId(1)]:"B",[W.getLocalizeKeyForScrollGroupId(2)]:"C",[W.getLocalizeKeyForScrollGroupId(3)]:"D",[W.getLocalizeKeyForScrollGroupId(4)]:"E",[W.getLocalizeKeyForScrollGroupId(5)]:"F",[W.getLocalizeKeyForScrollGroupId(6)]:"G",[W.getLocalizeKeyForScrollGroupId(7)]:"H",[W.getLocalizeKeyForScrollGroupId(8)]:"I",[W.getLocalizeKeyForScrollGroupId(9)]:"J",[W.getLocalizeKeyForScrollGroupId(10)]:"K",[W.getLocalizeKeyForScrollGroupId(11)]:"L",[W.getLocalizeKeyForScrollGroupId(12)]:"M",[W.getLocalizeKeyForScrollGroupId(13)]:"N",[W.getLocalizeKeyForScrollGroupId(14)]:"O",[W.getLocalizeKeyForScrollGroupId(15)]:"P",[W.getLocalizeKeyForScrollGroupId(16)]:"Q",[W.getLocalizeKeyForScrollGroupId(17)]:"R",[W.getLocalizeKeyForScrollGroupId(18)]:"S",[W.getLocalizeKeyForScrollGroupId(19)]:"T",[W.getLocalizeKeyForScrollGroupId(20)]:"U",[W.getLocalizeKeyForScrollGroupId(21)]:"V",[W.getLocalizeKeyForScrollGroupId(22)]:"W",[W.getLocalizeKeyForScrollGroupId(23)]:"X",[W.getLocalizeKeyForScrollGroupId(24)]:"Y",[W.getLocalizeKeyForScrollGroupId(25)]:"Z"};function bc({availableScrollGroupIds:e,scrollGroupId:t,onChangeScrollGroupId:n,localizedStrings:r={}}){const o={...Sr,...Object.fromEntries(Object.entries(r).map(([s,i])=>[s,s===i&&s in Sr?Sr[s]:i]))};return a.jsxs(Dt,{value:`${t}`,onValueChange:s=>n(s==="undefined"?void 0:parseInt(s,10)),children:[a.jsx(bt,{className:"pr-twp tw-w-auto",children:a.jsx(At,{placeholder:o[W.getLocalizeKeyForScrollGroupId(t)]??t})}),a.jsx(vt,{style:{zIndex:250},children:e.map(s=>a.jsx(De,{value:`${s}`,children:o[W.getLocalizeKeyForScrollGroupId(s)]},`${s}`))})]})}const uo=v.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},o)=>a.jsx(Xs.Root,{ref:o,decorative:n,orientation:t,className:S("pr-twp tw-shrink-0 tw-bg-border",t==="horizontal"?"tw-h-[1px] tw-w-full":"tw-h-full tw-w-[1px]",e),...r}));uo.displayName=Xs.Root.displayName;function vc({children:e}){return a.jsx("div",{className:"pr-twp tw-grid",children:e})}function yc({primary:e,secondary:t,children:n,isLoading:r=!1,loadingMessage:o}){return a.jsxs("div",{className:"tw-flex tw-items-center tw-justify-between tw-space-x-4 tw-py-2",children:[a.jsxs("div",{children:[a.jsx("p",{className:"tw-text-sm tw-font-medium tw-leading-none",children:e}),a.jsx("p",{className:"tw-whitespace-normal tw-break-words tw-text-sm tw-text-muted-foreground",children:t})]}),r?a.jsx("p",{className:"tw-text-sm tw-text-muted-foreground",children:o}):a.jsx("div",{children:n})]})}function xc({primary:e,secondary:t,includeSeparator:n=!1}){return a.jsxs("div",{className:"tw-space-y-4 tw-py-2",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"tw-text-lg tw-font-medium",children:e}),a.jsx("p",{className:"tw-text-sm tw-text-muted-foreground",children:t})]}),n?a.jsx(uo,{}):""]})}function Nc({id:e,className:t,listItems:n,selectedListItems:r,handleSelectListItem:o,createLabel:s}){return a.jsx("div",{id:e,className:t,children:n.map(i=>a.jsxs("div",{className:"tw-m-2 tw-flex tw-items-center",children:[a.jsx(rr,{className:"tw-mr-2 tw-align-middle",checked:r.includes(i),onCheckedChange:l=>o(i,l)}),a.jsx(Ue,{children:s?s(i):i})]},i))})}function kc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Ec(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var po={},ja={exports:{}};(function(e){function t(n){return n&&n.__esModule?n:{default:n}}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports})(ja);var Sc=ja.exports,Tr={};function wo(e,t){return process.env.NODE_ENV==="production"?()=>null:function(...r){return e(...r)||t(...r)}}function O(){return O=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t[n]=Oa(e[n])}),t}function Qe(e,t,n={clone:!0}){const r=n.clone?O({},e):e;return mt(e)&&mt(t)&&Object.keys(t).forEach(o=>{o!=="__proto__"&&(mt(t[o])&&o in e&&mt(e[o])?r[o]=Qe(e[o],t[o],n):n.clone?r[o]=mt(t[o])?Oa(t[o]):t[o]:r[o]=t[o])}),r}var zr={exports:{}},An={exports:{}},ie={};/** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -1240,6 +1240,9 @@ video:where(.pr-twp,.pr-twp *) { .tw-mr-2 { margin-right: 0.5rem; } +.tw-mr-4 { + margin-right: 1rem; +} .tw-ms-2 { margin-inline-start: 0.5rem; } @@ -1372,6 +1375,9 @@ video:where(.pr-twp,.pr-twp *) { .tw-h-px { height: 1px; } +.tw-max-h-80 { + max-height: 20rem; +} .tw-max-h-96 { max-height: 24rem; } @@ -2280,6 +2286,10 @@ video:where(.pr-twp,.pr-twp *) { .tw-ring-offset-background { --tw-ring-offset-color: hsl(var(--background)); } +.tw-backdrop-blur-md { + --tw-backdrop-blur: blur(12px); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} .tw-transition { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); @@ -3050,6 +3060,19 @@ video:where(.pr-twp,.pr-twp *) { .\\[\\&_tr\\]\\:tw-border-b tr { border-bottom-width: 1px; } +.papi-menu-item { + background-color: transparent; +} + +.papi-menu-icon-trailing { + margin-left: 10px; + place-content: flex-end; +} + +.papi-menu-item img { + max-width: 24px; + max-height: 24px; +} .papi-icon-button { border: 0; border-radius: 3em; @@ -3117,19 +3140,6 @@ video:where(.pr-twp,.pr-twp *) { .banded-row[data-state='selected']:hover { cursor: default; } -.papi-menu-item { - background-color: transparent; -} - -.papi-menu-icon-trailing { - margin-left: 10px; - place-content: flex-end; -} - -.papi-menu-item img { - max-width: 24px; - max-height: 24px; -} .papi-menu-drawer-paper { height: fit-content !important; position: absolute !important; diff --git a/lib/platform-bible-react/dist/index.cjs.map b/lib/platform-bible-react/dist/index.cjs.map index c61dc1868a..ece1d1cafe 100644 --- a/lib/platform-bible-react/dist/index.cjs.map +++ b/lib/platform-bible-react/dist/index.cjs.map @@ -1 +1 @@ -{"version":3,"file":"index.cjs","sources":["../src/utils/shadcn-ui.util.ts","../src/components/shadcn-ui/input.tsx","../src/components/advanced/book-chapter-control/book-chapter-input.component.tsx","../../../node_modules/@sillsdev/scripture/dist/index.es.js","../src/components/shadcn-ui/dropdown-menu.tsx","../src/components/advanced/book-chapter-control/book-menu-item.component.tsx","../src/components/advanced/book-chapter-control/chapter-select.component.tsx","../src/components/advanced/book-chapter-control/go-to-menu-item.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.component.tsx","../src/components/shadcn-ui/button.tsx","../src/components/shadcn-ui/label.tsx","../src/components/shadcn-ui/radio-group.tsx","../src/components/shadcn-ui/popover.tsx","../src/components/shadcn-ui/dialog.tsx","../src/components/shadcn-ui/command.tsx","../src/components/basics/combo-box.component.tsx","../src/components/basics/chapter-range-selector.component.tsx","../src/components/advanced/book-selector.component.tsx","../src/components/advanced/data-table/data-table-column-toggle.component.tsx","../src/components/shadcn-ui/select.tsx","../src/components/advanced/data-table/data-table-pagination.component.tsx","../src/components/shadcn-ui/table.tsx","../src/components/advanced/data-table/data-table.component.tsx","../src/components/advanced/inventory/occurrences-table.component.tsx","../src/components/shadcn-ui/checkbox.tsx","../src/components/advanced/inventory/inventory-utils.ts","../src/components/shadcn-ui/toggle.tsx","../src/components/shadcn-ui/toggle-group.tsx","../src/components/advanced/inventory/inventory-columns.tsx","../src/components/advanced/inventory/inventory.component.tsx","../src/components/basics/search-bar.component.tsx","../src/components/basics/tabs-vertical.tsx","../src/components/advanced/navigation-content-search.component.tsx","../src/components/advanced/scripture-results-viewer/scripture-results-viewer.component.tsx","../src/components/advanced/scroll-group-selector.component.tsx","../src/components/shadcn-ui/separator.tsx","../src/components/advanced/settings-components/settings-list.component.tsx","../src/components/basics/checklist.component.tsx","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@mui/utils/chainPropTypes/chainPropTypes.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/@mui/utils/deepmerge/deepmerge.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/@mui/utils/elementAcceptingRef/elementAcceptingRef.js","../../../node_modules/@mui/utils/exactProp/exactProp.js","../../../node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/cjs/react-is.development.js","../../../node_modules/react-is/index.js","../../../node_modules/@mui/utils/getDisplayName/getDisplayName.js","../../../node_modules/@mui/utils/HTMLElementType/HTMLElementType.js","../../../node_modules/@mui/utils/refType/refType.js","../../../node_modules/@mui/utils/capitalize/capitalize.js","../../../node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../../../node_modules/@mui/utils/debounce/debounce.js","../../../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../../../node_modules/@mui/utils/isMuiElement/isMuiElement.js","../../../node_modules/@mui/utils/ownerDocument/ownerDocument.js","../../../node_modules/@mui/utils/ownerWindow/ownerWindow.js","../../../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../../../node_modules/@mui/utils/setRef/setRef.js","../../../node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/utils/useId/useId.js","../../../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../../../node_modules/@mui/utils/useControlled/useControlled.js","../../../node_modules/@mui/utils/useEventCallback/useEventCallback.js","../../../node_modules/@mui/utils/useForkRef/useForkRef.js","../../../node_modules/@mui/utils/useLazyRef/useLazyRef.js","../../../node_modules/@mui/utils/useOnMount/useOnMount.js","../../../node_modules/@mui/utils/useTimeout/useTimeout.js","../../../node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../../../node_modules/@mui/utils/resolveProps/resolveProps.js","../../../node_modules/@mui/utils/composeClasses/composeClasses.js","../../../node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/utils/clamp/clamp.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../../../node_modules/@mui/system/esm/createTheme/shape.js","../../../node_modules/@mui/system/esm/responsivePropType.js","../../../node_modules/@mui/system/esm/merge.js","../../../node_modules/@mui/system/esm/breakpoints.js","../../../node_modules/@mui/system/esm/style.js","../../../node_modules/@mui/system/esm/memoize.js","../../../node_modules/@mui/system/esm/spacing.js","../../../node_modules/@mui/system/esm/createTheme/createSpacing.js","../../../node_modules/@mui/system/esm/compose.js","../../../node_modules/@mui/system/esm/borders.js","../../../node_modules/@mui/system/esm/cssGrid.js","../../../node_modules/@mui/system/esm/palette.js","../../../node_modules/@mui/system/esm/sizing.js","../../../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../../../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../../../node_modules/@mui/system/esm/createTheme/applyStyles.js","../../../node_modules/@mui/system/esm/createTheme/createTheme.js","../../../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../../../node_modules/@mui/system/esm/useTheme.js","../../../node_modules/@mui/system/esm/createStyled.js","../../../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../../../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../../../node_modules/@mui/system/esm/colorManipulator.js","../../../node_modules/@mui/material/styles/createMixins.js","../../../node_modules/@mui/material/colors/common.js","../../../node_modules/@mui/material/colors/grey.js","../../../node_modules/@mui/material/colors/purple.js","../../../node_modules/@mui/material/colors/red.js","../../../node_modules/@mui/material/colors/orange.js","../../../node_modules/@mui/material/colors/blue.js","../../../node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/@mui/material/colors/green.js","../../../node_modules/@mui/material/styles/createPalette.js","../../../node_modules/@mui/material/styles/createTypography.js","../../../node_modules/@mui/material/styles/shadows.js","../../../node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/@mui/material/styles/zIndex.js","../../../node_modules/@mui/material/styles/createTheme.js","../../../node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/@mui/material/styles/identifier.js","../../../node_modules/@mui/material/styles/useThemeProps.js","../../../node_modules/@mui/material/styles/styled.js","../../../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../../../node_modules/@mui/material/SvgIcon/SvgIcon.js","../../../node_modules/@mui/material/utils/createSvgIcon.js","../../../node_modules/@mui/material/utils/index.js","../../../node_modules/@mui/icons-material/utils/createSvgIcon.js","../../../node_modules/@mui/icons-material/ArrowRight.js","../../../node_modules/@mui/base/utils/isHostComponent.js","../../../node_modules/@mui/base/utils/appendOwnerState.js","../../../node_modules/@mui/base/utils/ClassNameConfigurator.js","../../../node_modules/@mui/base/utils/extractEventHandlers.js","../../../node_modules/@mui/base/utils/resolveComponentProps.js","../../../node_modules/@mui/base/utils/omitEventHandlers.js","../../../node_modules/@mui/base/utils/mergeSlotProps.js","../../../node_modules/@mui/base/utils/useSlotProps.js","../../../node_modules/@mui/base/generateUtilityClass/index.js","../../../node_modules/@mui/base/generateUtilityClasses/index.js","../../../node_modules/@mui/base/Portal/Portal.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@mui/base/Popper/popperClasses.js","../../../node_modules/@mui/base/Popper/Popper.js","../../../node_modules/@mui/material/styles/useTheme.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-transition-group/esm/config.js","../../../node_modules/react-transition-group/esm/utils/PropTypes.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/@mui/material/transitions/utils.js","../../../node_modules/@mui/material/Grow/Grow.js","../../../node_modules/@mui/material/Popper/Popper.js","../../../node_modules/@mui/material/Tooltip/tooltipClasses.js","../../../node_modules/@mui/material/Tooltip/Tooltip.js","../src/components/mui/menu-item.component.tsx","../src/components/mui/grouped-menu-item-list.component.tsx","../src/components/mui/top-level-menu.component.tsx","../src/components/mui/grid-menu.component.tsx","../src/hooks/use-promise.hook.ts","../../../node_modules/@mui/icons-material/esm/Menu.js","../src/components/mui/hamburger-menu-button.component.tsx","../src/components/mui/icon-button.component.tsx","../src/components/basics/spinner.component.tsx","../src/components/basics/text-field.component.tsx","../src/components/mui/toolbar.component.tsx","../src/components/shadcn-ui/alert.tsx","../src/components/shadcn-ui/card.tsx","../src/components/shadcn-ui/sonner.tsx","../src/components/shadcn-ui/slider.tsx","../src/components/shadcn-ui/switch.tsx","../src/components/shadcn-ui/tabs.tsx","../src/components/advanced/extension-marketplace/buttons/install-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/enable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/disable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/update-button.component.tsx","../src/components/advanced/extension-marketplace/markdown-renderer.component.tsx","../src/components/advanced/extension-marketplace/buttons/filter-button.component.tsx","../src/components/advanced/extension-marketplace/filter-dropdown.component.tsx","../src/components/advanced/extension-marketplace/no-extensions-found.component.tsx","../src/components/advanced/extension-marketplace/more-info.component.tsx","../src/components/advanced/extension-marketplace/version-history.component.tsx","../src/components/advanced/extension-marketplace/footer.component.tsx","../src/hooks/use-event.hook.ts","../src/hooks/use-event-async.hook.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMergeCustom = extendTailwindMerge({ prefix: 'tw-' });\n\n/**\n * Tailwind and CSS class application helper function. Uses\n * [`clsx`](https://www.npmjs.com/package/clsx) to make it easy to apply classes conditionally using\n * object syntax, and uses [`tailwind-merge`](https://www.npmjs.com/package/tailwind-merge) to make\n * it easy to merge/overwrite Tailwind classes in a programmer-logic-friendly way.\n *\n * Note: `tailwind-merge` is configured to use the prefix `tw-`, so you must use the same prefix\n * with any Tailwind classes you use with this function to successfully overwrite other Tailwind\n * classes. `platform-bible-react` is configured to use `tw-` as its Tailwind prefix, so any\n * Tailwind classes you pass into `platform-bible-react` components will be compared using the `tw-`\n * prefix.\n *\n * This function was popularized by\n * [shadcn/ui](https://ui.shadcn.com/docs/installation/manual#add-a-cn-helper). See [ByteGrad's\n * explanation video](https://www.youtube.com/watch?v=re2JFITR7TI) for more information.\n *\n * @example\n *\n * ```typescript\n * const borderShouldBeBlue = true;\n * const textShouldBeRed = true;\n * const heightShouldBe20 = false;\n * const classString = cn(\n * 'tw-bg-primary tw-h-10 tw-text-primary-foreground',\n * 'tw-bg-secondary',\n * {\n * 'tw-border-blue-500': borderShouldBeBlue,\n * 'tw-text-red-500': textShouldBeRed,\n * 'tw-h-20': heightShouldBe20,\n * },\n * 'some-class',\n * );\n * ```\n *\n * The resulting `classString` is `'tw-h-10 tw-bg-secondary tw-border-blue-500 tw-text-red-500\n * some-class'`\n *\n * - Notice that `'tw-bg-secondary'`, specified later, overwrote `'tw-bg-primary'`, specified earlier,\n * because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-text-red-500'`, specified later, overwrote `'tw-text-primary-foreground'`,\n * specified earlier, because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-h-20'`, specified later, did not overwrite `'tw-h-10'`, specified earlier,\n * because `'tw-h-20'` is part of a conditional class object and its value evaluated to `false`;\n * therefore it was not applied\n * - Notice that `'some-class'` was applied. This function is not limited only to Tailwind classes.\n *\n *\n * @param inputs Class strings or `clsx` conditional class objects to merge. Tailwind classes\n * specified later in the arguments overwrite similar Tailwind classes specified earlier in the\n * arguments\n * @returns Class string containing all applicable classes from the arguments based on the rules\n * described above\n */\n// shadcn/ui uses this export in its boilerplate code\n// eslint-disable-next-line import/prefer-default-export\nexport function cn(...inputs: ClassValue[]) {\n return twMergeCustom(clsx(inputs));\n}\n","import React from 'react';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport interface InputProps extends React.InputHTMLAttributes {}\n\nexport const Input = React.forwardRef(\n ({ className, type, ...props }, ref) => {\n return (\n \n );\n },\n);\nInput.displayName = 'Input';\n","import { FocusEventHandler, forwardRef, KeyboardEvent, MouseEventHandler } from 'react';\nimport { History } from 'lucide-react';\nimport { Input as ShadInput } from '@/components/shadcn-ui/input';\n\nexport type BookChapterInputProps = {\n handleSearch: (searchString: string) => void;\n handleKeyDown: (event: KeyboardEvent) => void;\n handleOnClick: MouseEventHandler;\n handleSubmit: () => void;\n onFocus?: FocusEventHandler;\n value: string;\n placeholder: string;\n};\n\n// Shadcn Input sets type to \"button\"- HAVE to prop spread before setting type\nconst BookChapterInput = forwardRef(\n (\n { handleSearch, handleKeyDown, handleOnClick, handleSubmit, ...props }: BookChapterInputProps,\n ref,\n ) => {\n return (\n
\n handleSearch(event.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n handleKeyDown(e);\n }}\n onClick={handleOnClick}\n ref={ref}\n />\n {\n // eslint-disable-next-line no-console\n console.log('back in history');\n }}\n />\n
\n );\n },\n);\n\nexport default BookChapterInput;\n","var P = Object.defineProperty;\nvar R = (t, e, s) => e in t ? P(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar n = (t, e, s) => R(t, typeof e != \"symbol\" ? e + \"\" : e, s);\nclass _ {\n constructor() {\n n(this, \"books\");\n n(this, \"firstSelectedBookNum\");\n n(this, \"lastSelectedBookNum\");\n n(this, \"count\");\n n(this, \"selectedBookNumbers\");\n n(this, \"selectedBookIds\");\n }\n}\nconst N = [\n \"GEN\",\n \"EXO\",\n \"LEV\",\n \"NUM\",\n \"DEU\",\n \"JOS\",\n \"JDG\",\n \"RUT\",\n \"1SA\",\n \"2SA\",\n // 10\n \"1KI\",\n \"2KI\",\n \"1CH\",\n \"2CH\",\n \"EZR\",\n \"NEH\",\n \"EST\",\n \"JOB\",\n \"PSA\",\n \"PRO\",\n // 20\n \"ECC\",\n \"SNG\",\n \"ISA\",\n \"JER\",\n \"LAM\",\n \"EZK\",\n \"DAN\",\n \"HOS\",\n \"JOL\",\n \"AMO\",\n // 30\n \"OBA\",\n \"JON\",\n \"MIC\",\n \"NAM\",\n \"HAB\",\n \"ZEP\",\n \"HAG\",\n \"ZEC\",\n \"MAL\",\n \"MAT\",\n // 40\n \"MRK\",\n \"LUK\",\n \"JHN\",\n \"ACT\",\n \"ROM\",\n \"1CO\",\n \"2CO\",\n \"GAL\",\n \"EPH\",\n \"PHP\",\n // 50\n \"COL\",\n \"1TH\",\n \"2TH\",\n \"1TI\",\n \"2TI\",\n \"TIT\",\n \"PHM\",\n \"HEB\",\n \"JAS\",\n \"1PE\",\n // 60\n \"2PE\",\n \"1JN\",\n \"2JN\",\n \"3JN\",\n \"JUD\",\n \"REV\",\n \"TOB\",\n \"JDT\",\n \"ESG\",\n \"WIS\",\n // 70\n \"SIR\",\n \"BAR\",\n \"LJE\",\n \"S3Y\",\n \"SUS\",\n \"BEL\",\n \"1MA\",\n \"2MA\",\n \"3MA\",\n \"4MA\",\n // 80\n \"1ES\",\n \"2ES\",\n \"MAN\",\n \"PS2\",\n \"ODA\",\n \"PSS\",\n \"JSA\",\n // actual variant text for JOS, now in LXA text\n \"JDB\",\n // actual variant text for JDG, now in LXA text\n \"TBS\",\n // actual variant text for TOB, now in LXA text\n \"SST\",\n // actual variant text for SUS, now in LXA text // 90\n \"DNT\",\n // actual variant text for DAN, now in LXA text\n \"BLT\",\n // actual variant text for BEL, now in LXA text\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n // 100\n \"BAK\",\n \"OTH\",\n \"3ES\",\n // Used previously but really should be 2ES\n \"EZA\",\n // Used to be called 4ES, but not actually in any known project\n \"5EZ\",\n // Used to be called 5ES, but not actually in any known project\n \"6EZ\",\n // Used to be called 6ES, but not actually in any known project\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n // 110\n \"NDX\",\n \"DAG\",\n \"PS3\",\n \"2BA\",\n \"LBA\",\n \"JUB\",\n \"ENO\",\n \"1MQ\",\n \"2MQ\",\n \"3MQ\",\n // 120\n \"REP\",\n \"4BA\",\n \"LAO\"\n], B = [\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n \"BAK\",\n \"OTH\",\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n \"NDX\"\n], O = [\n \"Genesis\",\n \"Exodus\",\n \"Leviticus\",\n \"Numbers\",\n \"Deuteronomy\",\n \"Joshua\",\n \"Judges\",\n \"Ruth\",\n \"1 Samuel\",\n \"2 Samuel\",\n \"1 Kings\",\n \"2 Kings\",\n \"1 Chronicles\",\n \"2 Chronicles\",\n \"Ezra\",\n \"Nehemiah\",\n \"Esther (Hebrew)\",\n \"Job\",\n \"Psalms\",\n \"Proverbs\",\n \"Ecclesiastes\",\n \"Song of Songs\",\n \"Isaiah\",\n \"Jeremiah\",\n \"Lamentations\",\n \"Ezekiel\",\n \"Daniel (Hebrew)\",\n \"Hosea\",\n \"Joel\",\n \"Amos\",\n \"Obadiah\",\n \"Jonah\",\n \"Micah\",\n \"Nahum\",\n \"Habakkuk\",\n \"Zephaniah\",\n \"Haggai\",\n \"Zechariah\",\n \"Malachi\",\n \"Matthew\",\n \"Mark\",\n \"Luke\",\n \"John\",\n \"Acts\",\n \"Romans\",\n \"1 Corinthians\",\n \"2 Corinthians\",\n \"Galatians\",\n \"Ephesians\",\n \"Philippians\",\n \"Colossians\",\n \"1 Thessalonians\",\n \"2 Thessalonians\",\n \"1 Timothy\",\n \"2 Timothy\",\n \"Titus\",\n \"Philemon\",\n \"Hebrews\",\n \"James\",\n \"1 Peter\",\n \"2 Peter\",\n \"1 John\",\n \"2 John\",\n \"3 John\",\n \"Jude\",\n \"Revelation\",\n \"Tobit\",\n \"Judith\",\n \"Esther Greek\",\n \"Wisdom of Solomon\",\n \"Sirach (Ecclesiasticus)\",\n \"Baruch\",\n \"Letter of Jeremiah\",\n \"Song of 3 Young Men\",\n \"Susanna\",\n \"Bel and the Dragon\",\n \"1 Maccabees\",\n \"2 Maccabees\",\n \"3 Maccabees\",\n \"4 Maccabees\",\n \"1 Esdras (Greek)\",\n \"2 Esdras (Latin)\",\n \"Prayer of Manasseh\",\n \"Psalm 151\",\n \"Odes\",\n \"Psalms of Solomon\",\n // WARNING, if you change the spelling of the *obsolete* tag be sure to update\n // IsObsolete routine\n \"Joshua A. *obsolete*\",\n \"Judges B. *obsolete*\",\n \"Tobit S. *obsolete*\",\n \"Susanna Th. *obsolete*\",\n \"Daniel Th. *obsolete*\",\n \"Bel Th. *obsolete*\",\n \"Extra A\",\n \"Extra B\",\n \"Extra C\",\n \"Extra D\",\n \"Extra E\",\n \"Extra F\",\n \"Extra G\",\n \"Front Matter\",\n \"Back Matter\",\n \"Other Matter\",\n \"3 Ezra *obsolete*\",\n \"Apocalypse of Ezra\",\n \"5 Ezra (Latin Prologue)\",\n \"6 Ezra (Latin Epilogue)\",\n \"Introduction\",\n \"Concordance \",\n \"Glossary \",\n \"Topical Index\",\n \"Names Index\",\n \"Daniel Greek\",\n \"Psalms 152-155\",\n \"2 Baruch (Apocalypse)\",\n \"Letter of Baruch\",\n \"Jubilees\",\n \"Enoch\",\n \"1 Meqabyan\",\n \"2 Meqabyan\",\n \"3 Meqabyan\",\n \"Reproof (Proverbs 25-31)\",\n \"4 Baruch (Rest of Baruch)\",\n \"Laodiceans\"\n], S = K();\nfunction g(t, e = !0) {\n return e && (t = t.toUpperCase()), t in S ? S[t] : 0;\n}\nfunction k(t) {\n return g(t) > 0;\n}\nfunction x(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return e >= 40 && e <= 66;\n}\nfunction T(t) {\n return (typeof t == \"string\" ? g(t) : t) <= 39;\n}\nfunction X(t) {\n return t <= 66;\n}\nfunction V(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return w(e) && !X(e);\n}\nfunction* L() {\n for (let t = 1; t <= N.length; t++) yield t;\n}\nconst G = 1, A = N.length;\nfunction H() {\n return [\"XXA\", \"XXB\", \"XXC\", \"XXD\", \"XXE\", \"XXF\", \"XXG\"];\n}\nfunction C(t, e = \"***\") {\n const s = t - 1;\n return s < 0 || s >= N.length ? e : N[s];\n}\nfunction I(t) {\n return t <= 0 || t > A ? \"******\" : O[t - 1];\n}\nfunction y(t) {\n return I(g(t));\n}\nfunction w(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && !B.includes(e);\n}\nfunction q(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && B.includes(e);\n}\nfunction U(t) {\n return O[t - 1].includes(\"*obsolete*\");\n}\nfunction K() {\n const t = {};\n for (let e = 0; e < N.length; e++)\n t[N[e]] = e + 1;\n return t;\n}\nconst m = {\n allBookIds: N,\n nonCanonicalIds: B,\n bookIdToNumber: g,\n isBookIdValid: k,\n isBookNT: x,\n isBookOT: T,\n isBookOTNT: X,\n isBookDC: V,\n allBookNumbers: L,\n firstBook: G,\n lastBook: A,\n extraBooks: H,\n bookNumberToId: C,\n bookNumberToEnglishName: I,\n bookIdToEnglishName: y,\n isCanonical: w,\n isExtraMaterial: q,\n isObsolete: U\n};\nvar l = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = \"Unknown\", t[t.Original = 1] = \"Original\", t[t.Septuagint = 2] = \"Septuagint\", t[t.Vulgate = 3] = \"Vulgate\", t[t.English = 4] = \"English\", t[t.RussianProtestant = 5] = \"RussianProtestant\", t[t.RussianOrthodox = 6] = \"RussianOrthodox\", t))(l || {});\nconst h = class h {\n // private versInfo: Versification;\n constructor(e) {\n n(this, \"name\");\n n(this, \"fullPath\");\n n(this, \"isPresent\");\n n(this, \"hasVerseSegments\");\n n(this, \"isCustomized\");\n n(this, \"baseVersification\");\n n(this, \"scriptureBooks\");\n n(this, \"_type\");\n if (e == null)\n throw new Error(\"Argument undefined\");\n typeof e == \"string\" ? (this.name = e, this._type = l[e]) : (this._type = e, this.name = l[e]);\n }\n get type() {\n return this._type;\n }\n equals(e) {\n return !e.type || !this.type ? !1 : e.type === this.type;\n }\n};\nn(h, \"Original\", new h(l.Original)), n(h, \"Septuagint\", new h(l.Septuagint)), n(h, \"Vulgate\", new h(l.Vulgate)), n(h, \"English\", new h(l.English)), n(h, \"RussianProtestant\", new h(l.RussianProtestant)), n(h, \"RussianOrthodox\", new h(l.RussianOrthodox));\nlet c = h;\nfunction E(t, e) {\n const s = e[0];\n for (let r = 1; r < e.length; r++)\n t = t.split(e[r]).join(s);\n return t.split(s);\n}\nvar D = /* @__PURE__ */ ((t) => (t[t.Valid = 0] = \"Valid\", t[t.UnknownVersification = 1] = \"UnknownVersification\", t[t.OutOfRange = 2] = \"OutOfRange\", t[t.VerseOutOfOrder = 3] = \"VerseOutOfOrder\", t[t.VerseRepeated = 4] = \"VerseRepeated\", t))(D || {});\nconst i = class i {\n constructor(e, s, r, a) {\n /** Not yet implemented. */\n n(this, \"firstChapter\");\n /** Not yet implemented. */\n n(this, \"lastChapter\");\n /** Not yet implemented. */\n n(this, \"lastVerse\");\n /** Not yet implemented. */\n n(this, \"hasSegmentsDefined\");\n /** Not yet implemented. */\n n(this, \"text\");\n /** Not yet implemented. */\n n(this, \"BBBCCCVVVS\");\n /** Not yet implemented. */\n n(this, \"longHashCode\");\n /** The versification of the reference. */\n n(this, \"versification\");\n n(this, \"rtlMark\", \"‏\");\n n(this, \"_bookNum\", 0);\n n(this, \"_chapterNum\", 0);\n n(this, \"_verseNum\", 0);\n n(this, \"_verse\");\n if (r == null && a == null)\n if (e != null && typeof e == \"string\") {\n const o = e, u = s != null && s instanceof c ? s : void 0;\n this.setEmpty(u), this.parse(o);\n } else if (e != null && typeof e == \"number\") {\n const o = s != null && s instanceof c ? s : void 0;\n this.setEmpty(o), this._verseNum = e % i.chapterDigitShifter, this._chapterNum = Math.floor(\n e % i.bookDigitShifter / i.chapterDigitShifter\n ), this._bookNum = Math.floor(e / i.bookDigitShifter);\n } else if (s == null)\n if (e != null && e instanceof i) {\n const o = e;\n this._bookNum = o.bookNum, this._chapterNum = o.chapterNum, this._verseNum = o.verseNum, this._verse = o.verse, this.versification = o.versification;\n } else {\n if (e == null) return;\n const o = e instanceof c ? e : i.defaultVersification;\n this.setEmpty(o);\n }\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else if (e != null && s != null && r != null)\n if (typeof e == \"string\" && typeof s == \"string\" && typeof r == \"string\")\n this.setEmpty(a), this.updateInternal(e, s, r);\n else if (typeof e == \"number\" && typeof s == \"number\" && typeof r == \"number\")\n this._bookNum = e, this._chapterNum = s, this._verseNum = r, this.versification = a ?? i.defaultVersification;\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else\n throw new Error(\"VerseRef constructor not supported.\");\n }\n /**\n * Determines if the verse string is in a valid format (does not consider versification).\n */\n static isVerseParseable(e) {\n return e.length > 0 && \"0123456789\".includes(e[0]) && !e.endsWith(this.verseRangeSeparator) && !e.endsWith(this.verseSequenceIndicator);\n }\n /**\n * Tries to parse the specified string into a verse reference.\n * @param str - The string to attempt to parse.\n * @returns success: `true` if the specified string was successfully parsed, `false` otherwise.\n * @returns verseRef: The result of the parse if successful, or empty VerseRef if it failed\n */\n static tryParse(e) {\n let s;\n try {\n return s = new i(e), { success: !0, verseRef: s };\n } catch (r) {\n if (r instanceof v)\n return s = new i(), { success: !1, verseRef: s };\n throw r;\n }\n }\n /**\n * Gets the reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n * @param bookNum - Book number (this is 1-based, not an index).\n * @param chapterNum - Chapter number.\n * @param verseNum - Verse number.\n * @returns The reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n */\n static getBBBCCCVVV(e, s, r) {\n return e % i.bcvMaxValue * i.bookDigitShifter + (s >= 0 ? s % i.bcvMaxValue * i.chapterDigitShifter : 0) + (r >= 0 ? r % i.bcvMaxValue : 0);\n }\n /**\n * Deserializes a serialized VerseRef.\n * @param serializedVerseRef - Serialized VerseRef to create from.\n * @returns the deserialized VerseRef.\n */\n static fromJSON(e) {\n const { book: s, chapterNum: r, verseNum: a, verse: o, versificationStr: u } = e, f = o || a.toString();\n let d;\n return u && (d = new c(u)), s ? new i(s, r.toString(), f, d) : new i();\n }\n /**\n * Parses a verse string and gets the leading numeric portion as a number.\n * @param verseStr - verse string to parse\n * @returns true if the entire string could be parsed as a single, simple verse number (1-999);\n * false if the verse string represented a verse bridge, contained segment letters, or was invalid\n */\n static tryGetVerseNum(e) {\n let s;\n if (!e)\n return s = -1, { success: !0, vNum: s };\n s = 0;\n let r;\n for (let a = 0; a < e.length; a++) {\n if (r = e[a], r < \"0\" || r > \"9\")\n return a === 0 && (s = -1), { success: !1, vNum: s };\n if (s = s * 10 + +r - 0, s > i.bcvMaxValue)\n return s = -1, { success: !1, vNum: s };\n }\n return { success: !0, vNum: s };\n }\n /**\n * Checks to see if a VerseRef hasn't been set - all values are the default.\n */\n get isDefault() {\n return this.bookNum === 0 && this.chapterNum === 0 && this.verseNum === 0 && this.versification == null;\n }\n /**\n * Gets whether the verse contains multiple verses.\n */\n get hasMultiple() {\n return this._verse != null && (this._verse.includes(i.verseRangeSeparator) || this._verse.includes(i.verseSequenceIndicator));\n }\n /**\n * Gets or sets the book of the reference. Book is the 3-letter abbreviation in capital letters,\n * e.g. `'MAT'`.\n */\n get book() {\n return m.bookNumberToId(this.bookNum, \"\");\n }\n set book(e) {\n this.bookNum = m.bookIdToNumber(e);\n }\n /**\n * Gets or sets the chapter of the reference,. e.g. `'3'`.\n */\n get chapter() {\n return this.isDefault || this._chapterNum < 0 ? \"\" : this._chapterNum.toString();\n }\n set chapter(e) {\n const s = +e;\n this._chapterNum = Number.isInteger(s) ? s : -1;\n }\n /**\n * Gets or sets the verse of the reference, including range, segments, and sequences, e.g. `'4'`,\n * or `'4b-5a, 7'`.\n */\n get verse() {\n return this._verse != null ? this._verse : this.isDefault || this._verseNum < 0 ? \"\" : this._verseNum.toString();\n }\n set verse(e) {\n const { success: s, vNum: r } = i.tryGetVerseNum(e);\n this._verse = s ? void 0 : e.replace(this.rtlMark, \"\"), this._verseNum = r, !(this._verseNum >= 0) && ({ vNum: this._verseNum } = i.tryGetVerseNum(this._verse));\n }\n /**\n * Get or set Book based on book number, e.g. `42`.\n */\n get bookNum() {\n return this._bookNum;\n }\n set bookNum(e) {\n if (e <= 0 || e > m.lastBook)\n throw new v(\n \"BookNum must be greater than zero and less than or equal to last book\"\n );\n this._bookNum = e;\n }\n /**\n * Gets or sets the chapter number, e.g. `3`. `-1` if not valid.\n */\n get chapterNum() {\n return this._chapterNum;\n }\n set chapterNum(e) {\n this.chapterNum = e;\n }\n /**\n * Gets or sets verse start number, e.g. `4`. `-1` if not valid.\n */\n get verseNum() {\n return this._verseNum;\n }\n set verseNum(e) {\n this._verseNum = e;\n }\n /**\n * String representing the versification (should ONLY be used for serialization/deserialization).\n *\n * @remarks This is for backwards compatibility when ScrVers was an enumeration.\n */\n get versificationStr() {\n var e;\n return (e = this.versification) == null ? void 0 : e.name;\n }\n set versificationStr(e) {\n this.versification = this.versification != null ? new c(e) : void 0;\n }\n /**\n * Determines if the reference is valid.\n */\n get valid() {\n return this.validStatus === 0;\n }\n /**\n * Get the valid status for this reference.\n */\n get validStatus() {\n return this.validateVerse(i.verseRangeSeparators, i.verseSequenceIndicators);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits and the verse is 0.\n */\n get BBBCCC() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, 0);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits. If verse is not null\n * (i.e., this reference represents a complex reference with verse\n * segments or bridge) this cannot be used for an exact comparison.\n */\n get BBBCCCVVV() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, this._verseNum);\n }\n /**\n * Gets whether the verse is defined as an excluded verse in the versification.\n * Does not handle verse ranges.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get isExcluded() {\n return !1;\n }\n /**\n * Parses the reference in the specified string.\n * Optionally versification can follow reference as in GEN 3:11/4\n * Throw an exception if\n * - invalid book name\n * - chapter number is missing or not a number\n * - verse number is missing or does not start with a number\n * - versification is invalid\n * @param verseStr - string to parse e.g. 'MAT 3:11'\n */\n parse(e) {\n if (e = e.replace(this.rtlMark, \"\"), e.includes(\"/\")) {\n const o = e.split(\"/\");\n if (e = o[0], o.length > 1)\n try {\n const u = +o[1].trim();\n this.versification = new c(l[u]);\n } catch {\n throw new v(\"Invalid reference : \" + e);\n }\n }\n const s = e.trim().split(\" \");\n if (s.length !== 2)\n throw new v(\"Invalid reference : \" + e);\n const r = s[1].split(\":\"), a = +r[0];\n if (r.length !== 2 || m.bookIdToNumber(s[0]) === 0 || !Number.isInteger(a) || a < 0 || !i.isVerseParseable(r[1]))\n throw new v(\"Invalid reference : \" + e);\n this.updateInternal(s[0], r[0], r[1]);\n }\n /**\n * Simplifies this verse ref so that it has no bridging of verses or\n * verse segments like `'1a'`.\n */\n simplify() {\n this._verse = void 0;\n }\n /**\n * Makes a clone of the reference.\n *\n * @returns The cloned VerseRef.\n */\n clone() {\n return new i(this);\n }\n toString() {\n const e = this.book;\n return e === \"\" ? \"\" : `${e} ${this.chapter}:${this.verse}`;\n }\n toJSON() {\n let e = this.verse;\n (e === \"\" || e === this.verseNum.toString()) && (e = void 0);\n const s = {\n book: this.book,\n chapterNum: this.chapterNum,\n verseNum: this.verseNum,\n verse: e,\n versificationStr: this.versificationStr\n };\n return e || delete s.verse, s;\n }\n /**\n * Compares this `VerseRef` with supplied one.\n * @param verseRef - object to compare this one to.\n * @returns `true` if this `VerseRef` is equal to the supplied one, `false` otherwise.\n */\n equals(e) {\n return e instanceof i ? e._bookNum === this._bookNum && e._chapterNum === this._chapterNum && e._verseNum === this._verseNum && e.verse === this.verse && (e.versification == null && this.versification == null || e.versification != null && this.versification != null && e.versification.equals(this.versification)) : !1;\n }\n /**\n * Enumerate all individual verses contained in a VerseRef.\n * Verse ranges are indicated by \"-\" and consecutive verses by \",\"s.\n * Examples:\n * GEN 1:2 returns GEN 1:2\n * GEN 1:1a-3b,5 returns GEN 1:1a, GEN 1:2, GEN 1:3b, GEN 1:5\n * GEN 1:2a-2c returns //! ??????\n *\n * @param specifiedVersesOnly - if set to true return only verses that are\n * explicitly specified only, not verses within a range. Defaults to `false`.\n * @param verseRangeSeparators - Verse range separators.\n * Defaults to `VerseRef.verseRangeSeparators`.\n * @param verseSequenceSeparators - Verse sequence separators.\n * Defaults to `VerseRef.verseSequenceIndicators`.\n * @returns An array of all single verse references in this VerseRef.\n */\n allVerses(e = !1, s = i.verseRangeSeparators, r = i.verseSequenceIndicators) {\n if (this._verse == null || this.chapterNum <= 0)\n return [this.clone()];\n const a = [], o = E(this._verse, r);\n for (const u of o.map((f) => E(f, s))) {\n const f = this.clone();\n f.verse = u[0];\n const d = f.verseNum;\n if (a.push(f), u.length > 1) {\n const b = this.clone();\n if (b.verse = u[1], !e)\n for (let p = d + 1; p < b.verseNum; p++) {\n const J = new i(\n this._bookNum,\n this._chapterNum,\n p,\n this.versification\n );\n this.isExcluded || a.push(J);\n }\n a.push(b);\n }\n }\n return a;\n }\n /**\n * Validates a verse number using the supplied separators rather than the defaults.\n */\n validateVerse(e, s) {\n if (!this.verse)\n return this.internalValid;\n let r = 0;\n for (const a of this.allVerses(!0, e, s)) {\n const o = a.internalValid;\n if (o !== 0)\n return o;\n const u = a.BBBCCCVVV;\n if (r > u)\n return 3;\n if (r === u)\n return 4;\n r = u;\n }\n return 0;\n }\n /**\n * Gets whether a single verse reference is valid.\n */\n get internalValid() {\n return this.versification == null ? 1 : this._bookNum <= 0 || this._bookNum > m.lastBook ? 2 : (m.isCanonical(this._bookNum), 0);\n }\n setEmpty(e = i.defaultVersification) {\n this._bookNum = 0, this._chapterNum = -1, this._verse = void 0, this.versification = e;\n }\n updateInternal(e, s, r) {\n this.bookNum = m.bookIdToNumber(e), this.chapter = s, this.verse = r;\n }\n};\nn(i, \"defaultVersification\", c.English), n(i, \"verseRangeSeparator\", \"-\"), n(i, \"verseSequenceIndicator\", \",\"), n(i, \"verseRangeSeparators\", [i.verseRangeSeparator]), n(i, \"verseSequenceIndicators\", [i.verseSequenceIndicator]), n(i, \"chapterDigitShifter\", 1e3), n(i, \"bookDigitShifter\", i.chapterDigitShifter * i.chapterDigitShifter), n(i, \"bcvMaxValue\", i.chapterDigitShifter - 1), /**\n * The valid status of the VerseRef.\n */\nn(i, \"ValidStatusType\", D);\nlet M = i;\nclass v extends Error {\n}\nexport {\n _ as BookSet,\n m as Canon,\n c as ScrVers,\n l as ScrVersType,\n M as VerseRef,\n v as VerseRefException\n};\n//# sourceMappingURL=index.es.js.map\n","import React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport type DropdownMenuSubTriggerProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSubContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n className?: string;\n};\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n className?: string;\n sideOffset?: number;\n};\n\nexport type DropdownMenuItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuCheckboxItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n className?: string;\n checked?: boolean;\n};\n\nexport type DropdownMenuRadioItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.RadioItem\n> & {\n className?: string;\n};\n\nexport type DropdownMenuLabelProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSeparatorProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n className?: string;\n};\n\nexport type DropdownMenuShortcutProps = React.HTMLAttributes & {\n className?: string;\n};\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubTriggerProps\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\n/**\n * TODO: fix: direction is not automatically handled by this component, so that shortcuts are\n * display always to the right\n */\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuItemProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuCheckboxItemProps\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef,\n DropdownMenuLabelProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nexport function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps) {\n return (\n \n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n","import { Canon } from '@sillsdev/scripture';\nimport { PropsWithChildren, KeyboardEvent, forwardRef } from 'react';\nimport { DropdownMenuItem as ShadDropdownMenuItem } from '@/components/shadcn-ui/dropdown-menu';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport type BookType = 'OT' | 'NT' | 'DC';\n\ntype BookMenuItemProps = PropsWithChildren<{\n /** String id of book */\n bookId: string;\n /** Callback to run when a book menu item is selected */\n handleSelectBook: () => void;\n /** Indicates if this menu item is currently selected */\n isSelected: boolean;\n /** Function that is called upon highlighting a book in the dropdown menu */\n handleHighlightBook: () => void;\n /**\n * Function that is called on pressing a key\n *\n * @param event Event that contains information about the key stroke\n */\n handleKeyDown: (event: KeyboardEvent) => void;\n /**\n * Type of book associated with this menu item, coordinates color labels ? Mock up has the labels\n * coordinated to genre\n */\n bookType: BookType;\n}>;\n\nconst BookMenuItem = forwardRef(\n (\n {\n bookId,\n handleSelectBook,\n isSelected,\n handleHighlightBook,\n handleKeyDown,\n bookType,\n children,\n }: BookMenuItemProps,\n ref,\n ) => {\n return (\n {\n // preventDefault() here prevents the entire dropdown menu from closing when selecting this item\n event.preventDefault();\n handleSelectBook();\n }}\n onKeyDown={(event: KeyboardEvent) => {\n handleKeyDown(event);\n }}\n onFocus={handleHighlightBook}\n onMouseMove={handleHighlightBook}\n >\n \n {Canon.bookIdToEnglishName(bookId)}\n \n {isSelected &&
{children}
}\n \n );\n },\n);\n\nexport default BookMenuItem;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { useCallback } from 'react';\n\nexport type ChapterSelectProps = {\n /**\n * Callback to run when a chapter div is selected\n *\n * @param chapterNumber Number of the chapter that has been selected\n */\n handleSelectChapter: (chapterNumber: number) => void;\n /** The highest chapter number in the book (of course equal to number of chapters in the book) */\n endChapter: number;\n /** The chapter number that is currently selected */\n activeChapter: number;\n /** The chapter number that is currently highlighted using keyboard or mouse navigation */\n highlightedChapter: number;\n /**\n * Callback to run when a chapter is highlighted by the user\n *\n * @param chapterNumber The chapter that is highlighted\n */\n handleHighlightedChapter: (chapterNumber: number) => void;\n};\n\nfunction ChapterSelect({\n handleSelectChapter,\n endChapter,\n activeChapter,\n highlightedChapter,\n handleHighlightedChapter,\n}: ChapterSelectProps) {\n const chapters = Array.from({ length: endChapter }, (_, i) => i + 1);\n\n const handleMouse = useCallback(\n (chapterNumber: number) => {\n handleHighlightedChapter(chapterNumber);\n },\n [handleHighlightedChapter],\n );\n\n return (\n
\n {chapters.map((chapter) => (\n {\n event.preventDefault();\n event.stopPropagation();\n handleSelectChapter(chapter);\n }}\n role=\"button\"\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n handleSelectChapter(chapter);\n }\n }}\n tabIndex={0}\n onMouseMove={() => handleMouse(chapter)}\n >\n {chapter}\n
\n ))}\n \n );\n}\n\nexport default ChapterSelect;\n","import { DropdownMenuLabel as ShadDropdownMenuLabel } from '@/components/shadcn-ui/dropdown-menu';\nimport { Bookmark, Clock, ArrowDownWideNarrow } from 'lucide-react';\n\nexport type GoToMenuItemProps = {\n handleSort: () => void;\n handleLocationHistory: () => void;\n handleBookmarks: () => void;\n};\n\nfunction GoToMenuItem({ handleSort, handleLocationHistory, handleBookmarks }: GoToMenuItemProps) {\n return (\n \n

Go To

\n
\n \n \n \n
\n
\n );\n}\n\nexport default GoToMenuItem;\n","import BookChapterInput from '@/components/advanced/book-chapter-control/book-chapter-input.component';\nimport BookMenuItem, {\n BookType,\n} from '@/components/advanced/book-chapter-control/book-menu-item.component';\nimport ChapterSelect from '@/components/advanced/book-chapter-control/chapter-select.component';\nimport GoToMenuItem from '@/components/advanced/book-chapter-control/go-to-menu-item.component';\nimport {\n DropdownMenu as ShadDropdownMenu,\n DropdownMenuContent as ShadDropdownMenuContent,\n DropdownMenuLabel as ShadDropdownMenuLabel,\n DropdownMenuSeparator as ShadDropdownMenuSeparator,\n DropdownMenuTrigger as ShadDropdownMenuTrigger,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference, getChaptersForBook } from 'platform-bible-utils';\nimport {\n KeyboardEvent as ReactKeyboardEvent,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\ntype BookTypeLabels = {\n [bookType in BookType]: string;\n};\ntype BookChapterControlProps = {\n scrRef: ScriptureReference;\n handleSubmit: (scrRef: ScriptureReference) => void;\n};\n\nconst ALL_BOOK_IDS = Canon.allBookIds;\nconst BOOK_TYPE_LABELS: BookTypeLabels = {\n OT: 'Old Testament',\n NT: 'New Testament',\n DC: 'Deuterocanon',\n};\nconst BOOK_TYPE_ARRAY: BookType[] = ['OT', 'NT', 'DC'];\n// This is the height of three menu items to offset scrolling to the selected menu item\n// If you use menuItemRef.clientHeight- includes height of chapter div which is too big\nconst SCROLL_OFFSET = 32 + 32 + 32;\nconst SEARCH_QUERY_FORMATS = [\n /^(\\w+)$/i, // Matches a single word (book name or id)\n /^(\\w+)(?:\\s(\\d+))$/i, // Matches a word followed by a chapter number\n /^(\\w+)(?:\\s(\\d+):(\\d+))$/i, // Matches a word followed by a chapter and verse number\n];\nconst fetchGroupedBooks = (bookType: BookType) => {\n const groupedBooks = {\n OT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookOT(bookId)),\n NT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookNT(bookId)),\n DC: ALL_BOOK_IDS.filter((bookId) => Canon.isBookDC(bookId)),\n };\n return groupedBooks[bookType];\n};\nconst fetchEndChapter = (bookId: string) => {\n // getChaptersForBook returns -1 if not found in scrBookData\n // scrBookData only includes OT and NT, so all DC will return -1\n return getChaptersForBook(Canon.bookIdToNumber(bookId));\n};\n\n/**\n * Gets all of the English names from book ids\n *\n * @returns String[]\n */\nfunction getAllEnglishNames(): string[] {\n const allEnglishNames = ALL_BOOK_IDS.map((bookId) => {\n return Canon.bookIdToEnglishName(bookId);\n });\n return allEnglishNames;\n}\n\n/**\n * Determines if bookName is in allEnglishNames\n *\n * @param bookName Book English name\n * @returns True if bookName is included, false otherwise\n */\nfunction isValidBookEnglishName(bookName: string): boolean {\n return getAllEnglishNames().includes(bookName);\n}\n\n/**\n * Gets a bookId from given English name\n *\n * @param bookName Book English name\n * @returns BookId of provided bookName, undefined otherwise\n */\nfunction getBookIdFromEnglishName(bookName: string): string | undefined {\n // Convert bookName to lowercase and then capitalize the first letter\n const formattedBookName = bookName.toLowerCase().replace(/^\\w/, (c) => c.toUpperCase());\n\n if (isValidBookEnglishName(formattedBookName)) {\n const matchingBookId = ALL_BOOK_IDS.find((bookId) => {\n return Canon.bookIdToEnglishName(bookId) === formattedBookName;\n });\n return matchingBookId;\n }\n\n return undefined;\n}\n\nfunction BookChapterControl({ scrRef, handleSubmit }: BookChapterControlProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedBookId, setSelectedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [highlightedChapter, setHighlightedChapter] = useState(scrRef.chapterNum ?? 0);\n const [highlightedBookId, setHighlightedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [isContentOpen, setIsContentOpen] = useState(false);\n const [isContentOpenDelayed, setIsContentOpenDelayed] = useState(isContentOpen);\n\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const inputRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const contentRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const menuItemRef = useRef(undefined!);\n\n const fetchFilteredBooks = useCallback(\n (bookType: BookType) => {\n return fetchGroupedBooks(bookType).filter((bookId: string) => {\n const englishNameLowerCase = Canon.bookIdToEnglishName(bookId).toLowerCase();\n const normalizedQuery = searchQuery.replace(/[^a-zA-Z]/g, '').toLowerCase();\n return (\n englishNameLowerCase.includes(normalizedQuery) || // Match book name\n bookId.toLowerCase().includes(normalizedQuery) // Match book ID\n );\n });\n },\n [searchQuery],\n );\n\n const handleSearchInput = (searchString: string) => {\n setSearchQuery(searchString);\n };\n\n /**\n * Whether to prevent radix's logic from closing the dropdown. This is important because radix\n * tries to close the dropdown when the input first focuses, and we don't want it to do that. But\n * we don't want to prevent the dropdown from closing when we click away from the input, so we\n * don't want to just keep it open if the input is focused\n */\n const shouldPreventAutoClosing = useRef(false);\n\n const controlMenuState = useCallback((open: boolean) => {\n if (shouldPreventAutoClosing.current) {\n shouldPreventAutoClosing.current = false;\n return;\n }\n setIsContentOpen(open);\n }, []);\n\n const updateReference = useCallback(\n (bookId: string, shouldClose: boolean, chapter?: number, verse?: number) => {\n setHighlightedChapter(\n Canon.bookNumberToId(scrRef.bookNum) !== bookId ? 1 : scrRef.chapterNum,\n );\n\n if (shouldClose || fetchEndChapter(bookId) === -1) {\n handleSubmit({\n bookNum: Canon.bookIdToNumber(bookId),\n chapterNum: chapter || 1,\n verseNum: verse || 1,\n });\n\n setIsContentOpen(false);\n setSearchQuery('');\n return;\n }\n\n setSelectedBookId(selectedBookId !== bookId ? bookId : '');\n setIsContentOpen(!shouldClose);\n },\n [handleSubmit, scrRef.bookNum, scrRef.chapterNum, selectedBookId],\n );\n\n const handleSelectChapter = (chapterNumber: number) => {\n if (chapterNumber <= 0 || chapterNumber > fetchEndChapter(selectedBookId)) {\n return;\n }\n updateReference(selectedBookId, true, chapterNumber);\n };\n\n const handleInputSubmit = useCallback(() => {\n SEARCH_QUERY_FORMATS.forEach((format) => {\n const matches = searchQuery.match(format);\n if (matches) {\n // Book should be a bookId or an english name\n const [book, chapter = undefined, verse = undefined] = matches.slice(1);\n const englishName = getBookIdFromEnglishName(book);\n\n if (Canon.isBookIdValid(book) || englishName) {\n updateReference(\n englishName ?? book,\n true,\n chapter ? parseInt(chapter, 10) : 1,\n verse ? parseInt(verse, 10) : 1,\n );\n }\n }\n });\n }, [updateReference, searchQuery]);\n\n const handleKeyDownInput = useCallback(\n (event: ReactKeyboardEvent) => {\n if (!isContentOpen) {\n setIsContentOpen(true);\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (\n typeof menuItemRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n menuItemRef.current !== null\n ) {\n menuItemRef.current.focus();\n } else if (\n typeof contentRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n contentRef.current !== null\n ) {\n contentRef.current.focus();\n }\n event.preventDefault();\n }\n },\n [isContentOpen],\n );\n\n const handleKeyDownContent = (event: ReactKeyboardEvent) => {\n // When the dropdown menu has focus, key strokes should give focus to the input component,\n // unless they're navigation keys (arrows and enter)\n const { key } = event;\n if (\n key === 'ArrowRight' ||\n key === 'ArrowLeft' ||\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter'\n ) {\n return;\n }\n\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key }));\n inputRef.current.focus();\n };\n\n const handleKeyDownMenuItem = (event: ReactKeyboardEvent) => {\n const { key } = event;\n if (highlightedBookId === selectedBookId) {\n if (key === 'Enter') {\n event.preventDefault();\n updateReference(selectedBookId, true, highlightedChapter);\n return;\n }\n\n let chapterOffSet = 0;\n if (key === 'ArrowRight') {\n if (highlightedChapter < fetchEndChapter(highlightedBookId)) {\n chapterOffSet = 1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowLeft') {\n if (highlightedChapter > 1) {\n chapterOffSet = -1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowDown') {\n chapterOffSet = 6;\n } else if (key === 'ArrowUp') {\n chapterOffSet = -6;\n }\n if (\n highlightedChapter + chapterOffSet <= 0 ||\n highlightedChapter + chapterOffSet > fetchEndChapter(highlightedBookId)\n ) {\n setHighlightedChapter(0);\n } else if (chapterOffSet !== 0) {\n setHighlightedChapter(highlightedChapter + chapterOffSet);\n event.preventDefault();\n }\n }\n };\n\n useEffect(() => {\n if (selectedBookId === highlightedBookId) {\n if (selectedBookId === Canon.bookNumberToId(scrRef.bookNum)) {\n setHighlightedChapter(scrRef.chapterNum);\n } else {\n setHighlightedChapter(1);\n }\n } else {\n setHighlightedChapter(0);\n }\n }, [highlightedBookId, scrRef.bookNum, scrRef.chapterNum, selectedBookId]);\n\n // The purpose of these useLayoutEffects and timeout is to delay the scroll just\n // enough so that the refs are defined and available when they are used after the timeout\n useLayoutEffect(() => {\n setIsContentOpenDelayed(isContentOpen);\n }, [isContentOpen]);\n\n useLayoutEffect(() => {\n const scrollTimeout = setTimeout(() => {\n if (isContentOpenDelayed && contentRef.current && menuItemRef.current) {\n const menuItemOffsetTop = menuItemRef.current.offsetTop;\n const scrollPosition = menuItemOffsetTop - SCROLL_OFFSET;\n contentRef.current.scrollTo({ top: scrollPosition, behavior: 'instant' });\n }\n }, 10);\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [isContentOpenDelayed]);\n\n return (\n
\n \n \n {\n setSelectedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedChapter(scrRef.chapterNum > 0 ? scrRef.chapterNum : 0);\n setIsContentOpen(true);\n inputRef.current.focus();\n }}\n onFocus={() => {\n // Radix thinks we want to close because the input is being focused. Prevent that\n shouldPreventAutoClosing.current = true;\n }}\n handleSubmit={handleInputSubmit}\n placeholder={`${Canon.bookNumberToEnglishName(scrRef.bookNum)} ${scrRef.chapterNum}:${scrRef.verseNum}`}\n />\n \n \n console.log('sorting')}\n handleLocationHistory={() => console.log('location history')}\n handleBookmarks={() => console.log('bookmarks')}\n />\n {BOOK_TYPE_ARRAY.map(\n (bookType, bookTypeIndex) =>\n fetchFilteredBooks(bookType).length > 0 && (\n
\n \n {BOOK_TYPE_LABELS[bookType]}\n \n\n {fetchFilteredBooks(bookType).map((bookId) => (\n
\n updateReference(bookId, false)}\n isSelected={selectedBookId === bookId}\n handleHighlightBook={() => setHighlightedBookId(bookId)}\n handleKeyDown={handleKeyDownMenuItem}\n bookType={bookType}\n ref={(element: HTMLDivElement) => {\n if (selectedBookId === bookId) menuItemRef.current = element;\n }}\n >\n {\n setHighlightedChapter(chapterNumber);\n }}\n />\n \n
\n ))}\n {BOOK_TYPE_ARRAY.length - 1 !== bookTypeIndex ? (\n \n ) : undefined}\n
\n ),\n )}\n \n
\n
\n );\n}\n\nexport default BookChapterControl;\n","import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const buttonVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-whitespace-nowrap tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50',\n {\n variants: {\n variant: {\n default: 'tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90',\n destructive: 'tw-bg-destructive tw-text-destructive-foreground hover:tw-bg-destructive/90',\n outline:\n 'tw-border tw-border-input tw-bg-background hover:tw-bg-accent hover:tw-text-accent-foreground',\n secondary: 'tw-bg-secondary tw-text-secondary-foreground hover:tw-bg-secondary/80',\n ghost: 'hover:tw-bg-accent hover:tw-text-accent-foreground',\n link: 'tw-text-primary tw-underline-offset-4 hover:tw-underline',\n },\n size: {\n default: 'tw-h-10 tw-px-4 tw-py-2',\n sm: 'tw-h-9 tw-rounded-md tw-px-3',\n lg: 'tw-h-11 tw-rounded-md tw-px-8',\n icon: 'tw-h-10 tw-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return (\n \n );\n },\n);\nButton.displayName = 'Button';\n","import React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst labelVariants = cva(\n 'tw-text-sm tw-font-medium tw-leading-none peer-disabled:tw-cursor-not-allowed peer-disabled:tw-opacity-70',\n);\n\nexport const Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, ...props }, ref) => (\n \n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n","import React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n \n \n \n \n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import React from 'react';\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Dialog, DialogContent } from '@/components/shadcn-ui/dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nfunction CommandDialog({ children, ...props }: CommandDialogProps) {\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nfunction CommandShortcut({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import { useState } from 'react';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/shadcn-ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/shadcn-ui/command';\nimport { PopoverProps } from '@radix-ui/react-popover';\n\nexport type ComboBoxLabelOption = { label: string };\nexport type ComboBoxOption = string | number | ComboBoxLabelOption;\n\nexport type ComboBoxProps = {\n /** Optional unique identifier */\n id?: string;\n /** Text label title for combobox */\n /** List of available options for the dropdown menu */\n options?: readonly T[];\n /** Additional css classes to help with unique styling of the combo box */\n className?: string;\n /**\n * The selected value that the combo box currently holds. Must be shallow equal to one of the\n * options entries.\n */\n value?: T;\n /** Triggers when content of textfield is changed */\n onChange?: (newValue: T) => void;\n /** Used to determine the string value for a given option. */\n getOptionLabel?: (option: ComboBoxOption) => string;\n /** Text displayed on button if `value` is undefined */\n buttonPlaceholder?: string;\n /** Placeholder text for text field */\n textPlaceholder?: string;\n /** Text to display when no options match input */\n commandEmptyMessage?: string;\n /** Variant of button */\n buttonVariant?: ButtonProps['variant'];\n /** Text direction ltr or rtl */\n dir?: Direction;\n /** Optional boolean to set if trigger should be disabled */\n isDisabled?: boolean;\n} & PopoverProps;\n\ntype Direction = 'ltr' | 'rtl';\n\nfunction getOptionLabelDefault(option: ComboBoxOption): string {\n if (typeof option === 'string') {\n return option;\n }\n if (typeof option === 'number') {\n return option.toString();\n }\n return option.label;\n}\n\n/**\n * Autocomplete input and command palette with a list of suggestions.\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/combobox\n */\nfunction ComboBox({\n id,\n options = [],\n className,\n value,\n onChange = () => {},\n getOptionLabel = getOptionLabelDefault,\n buttonPlaceholder = '',\n textPlaceholder = '',\n commandEmptyMessage = 'No option found',\n buttonVariant = 'outline',\n dir = 'ltr',\n isDisabled = false,\n ...props\n}: ComboBoxProps) {\n const [open, setOpen] = useState(false);\n\n return (\n \n \n \n \n {value ? getOptionLabel(value) : buttonPlaceholder}\n \n \n \n \n \n \n \n {commandEmptyMessage}\n \n {options.map((option) => (\n {\n onChange(option);\n setOpen(false);\n }}\n >\n \n {getOptionLabel(option)}\n \n ))}\n \n \n \n \n );\n}\n\nexport default ComboBox;\n","import { useMemo } from 'react';\nimport ComboBox from '@/components/basics/combo-box.component';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChapterRangeSelectorProps = {\n startChapter: number;\n endChapter: number;\n handleSelectStartChapter: (chapter: number) => void;\n handleSelectEndChapter: (chapter: number) => void;\n isDisabled?: boolean;\n chapterCount: number;\n};\n\nexport default function ChapterRangeSelector({\n startChapter,\n endChapter,\n handleSelectStartChapter,\n handleSelectEndChapter,\n isDisabled = false,\n chapterCount,\n}: ChapterRangeSelectorProps) {\n const chapterOptions = useMemo(\n () => Array.from({ length: chapterCount }, (_, index) => index + 1),\n [chapterCount],\n );\n\n const onChangeStartChapter = (value: number) => {\n handleSelectStartChapter(value);\n if (value > endChapter) {\n handleSelectEndChapter(value);\n }\n };\n\n const onChangeEndChapter = (value: number) => {\n handleSelectEndChapter(value);\n if (value < startChapter) {\n handleSelectStartChapter(value);\n }\n };\n\n return (\n <>\n \n option.toString()}\n value={startChapter}\n />\n\n \n option.toString()}\n value={endChapter}\n />\n \n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport { Label } from '@/components/shadcn-ui/label';\nimport { RadioGroup, RadioGroupItem } from '@/components/shadcn-ui/radio-group';\nimport { Canon } from '@sillsdev/scripture';\nimport { LocalizedStringValue } from 'platform-bible-utils';\nimport { useState } from 'react';\nimport ChapterRangeSelector, {\n ChapterRangeSelectorProps,\n} from '../basics/chapter-range-selector.component';\n\nexport enum BookSelectionMode {\n CURRENT_BOOK = 'current book',\n CHOOSE_BOOKS = 'choose books',\n}\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const BOOK_SELECTOR_STRING_KEYS = Object.freeze([\n '%webView_bookSelector_currentBook%',\n '%webView_bookSelector_choose%',\n '%webView_bookSelector_chooseBooks%',\n] as const);\n\nexport type BookSelectorLocalizedStrings = {\n [localizedInventoryKey in (typeof BOOK_SELECTOR_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: BookSelectorLocalizedStrings,\n key: keyof BookSelectorLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\ntype BookSelectorProps = ChapterRangeSelectorProps & {\n handleBookSelectionModeChange: (newMode: BookSelectionMode) => void;\n currentBookName: string;\n onSelectBooks: () => void;\n selectedBookIds: string[];\n localizedStrings: BookSelectorLocalizedStrings;\n};\n\nexport default function BookSelector({\n handleBookSelectionModeChange,\n currentBookName,\n onSelectBooks,\n selectedBookIds,\n chapterCount,\n endChapter,\n handleSelectEndChapter,\n startChapter,\n handleSelectStartChapter,\n localizedStrings,\n}: BookSelectorProps) {\n const currentBookText = localizeString(localizedStrings, '%webView_bookSelector_currentBook%');\n const chooseText = localizeString(localizedStrings, '%webView_bookSelector_choose%');\n const chooseBooksText = localizeString(localizedStrings, '%webView_bookSelector_chooseBooks%');\n\n const [bookSelectionMode, setBookSelectionMode] = useState(\n BookSelectionMode.CURRENT_BOOK,\n );\n\n const onSelectionModeChange = (newMode: BookSelectionMode) => {\n setBookSelectionMode(newMode);\n handleBookSelectionModeChange(newMode);\n };\n\n return (\n onSelectionModeChange(value as BookSelectionMode)}\n >\n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n \n onSelectBooks()}\n >\n {chooseText}\n \n
\n
\n \n );\n}\n","import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';\nimport { FilterIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\n\ninterface DataTableViewOptionsProps {\n table: Table;\n}\n\nfunction DataTableViewOptions({ table }: DataTableViewOptionsProps) {\n return (\n \n \n \n \n \n Toggle columns\n \n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n column.toggleVisibility(!!value)}\n >\n {column.id}\n \n );\n })}\n \n \n );\n}\n\nexport default DataTableViewOptions;\n","import React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n span]:tw-line-clamp-1',\n className,\n )}\n {...props}\n >\n {children}\n \n \n \n \n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = 'popper', ...props }, ref) => (\n \n \n \n \n {children}\n \n \n \n \n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n\n {children}\n \n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import { ChevronLeftIcon, ChevronRightIcon, ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\ninterface DataTablePaginationProps {\n table: Table;\n}\n\nfunction DataTablePagination({ table }: DataTablePaginationProps) {\n return (\n
\n
\n
\n {table.getFilteredSelectedRowModel().rows.length} of{' '}\n {table.getFilteredRowModel().rows.length} row(s) selected\n
\n
\n

Rows per page

\n {\n table.setPageSize(Number(value));\n }}\n >\n \n \n \n \n {[10, 20, 30, 40, 50].map((pageSize) => (\n \n {pageSize}\n \n ))}\n \n \n
\n
\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n
\n
\n table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n Go to first page\n \n \n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Go to previous page\n \n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Go to next page\n \n \n table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n Go to last page\n \n \n
\n
\n
\n );\n}\n\nexport default DataTablePagination;\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n
\n \n
\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n \n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n tr]:last:tw-border-b-0', className)}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { useState } from 'react';\n\nimport {\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n ColumnDef as TSColumnDef,\n Row as TSRow,\n RowSelectionState as TSRowSelectionState,\n SortDirection as TSSortDirection,\n Table as TSTable,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table';\n\nimport DataTableViewOptions from '@/components/advanced/data-table/data-table-column-toggle.component';\nimport DataTablePagination from '@/components/advanced/data-table/data-table-pagination.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\n\nexport type ColumnDef = TSColumnDef;\nexport type RowContents = TSRow;\nexport type TableContents = TSTable;\nexport type SortDirection = TSSortDirection;\nexport type RowSelectionState = TSRowSelectionState;\n\ninterface DataTableProps {\n columns: ColumnDef[];\n data: TData[];\n enablePagination?: boolean;\n showPaginationControls?: boolean;\n showColumnVisibilityControls?: boolean;\n stickyHeader?: boolean;\n onRowClickHandler?: (row: RowContents, table: TableContents) => void;\n}\n\n/**\n * Feature-rich table component that infuses our basic shadcn-based Table component with features\n * from TanStack's React Table library\n */\nfunction DataTable({\n columns,\n data,\n enablePagination = false,\n showPaginationControls = false,\n showColumnVisibilityControls = false,\n stickyHeader = false,\n onRowClickHandler = () => {},\n}: DataTableProps) {\n const [sorting, setSorting] = useState([]);\n const [columnFilters, setColumnFilters] = useState([]);\n const [columnVisibility, setColumnVisibility] = useState({});\n const [rowSelection, setRowSelection] = useState({});\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n ...(enablePagination && { getPaginationRowModel: getPaginationRowModel() }),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n onColumnFiltersChange: setColumnFilters,\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n });\n\n return (\n
\n {showColumnVisibilityControls && }\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => {\n return (\n \n {header.isPlaceholder\n ? undefined\n : flexRender(header.column.columnDef.header, header.getContext())}\n \n );\n })}\n \n ))}\n \n \n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n onRowClickHandler(row, table)}\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n >\n {row.getVisibleCells().map((cell) => (\n \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n \n ))}\n \n ))\n ) : (\n \n \n No results.\n \n \n )}\n \n
\n {enablePagination && (\n
\n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n \n
\n )}\n {enablePagination && showPaginationControls && }\n
\n );\n}\n\nexport default DataTable;\n","import {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { Canon } from '@sillsdev/scripture';\nimport { deepEqual, LanguageStrings, ScriptureReference } from 'platform-bible-utils';\nimport { useMemo } from 'react';\nimport { InventoryItemOccurrence } from './inventory-utils';\n\n/** Props for the OccurrencesTable component */\ntype OccurrencesTableProps = {\n /** Data that contains scriptures references and snippets of scripture */\n occurrenceData: InventoryItemOccurrence[];\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the OccurrencesTable needs to work well across multiple\n * languages\n */\n localizedStrings: LanguageStrings;\n};\n\n/**\n * Table that shows occurrences of specified inventory item(s). The first column shows the related\n * scripture reference. The second column shows the snippet of scripture that contains the specified\n * inventory item\n */\nfunction OccurrencesTable({\n occurrenceData,\n setScriptureReference,\n localizedStrings,\n}: OccurrencesTableProps) {\n const referenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_reference%'];\n const occurrenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_occurrence%'];\n\n const occurrences: InventoryItemOccurrence[] = useMemo(() => {\n const uniqueOccurrences: InventoryItemOccurrence[] = [];\n\n occurrenceData.forEach((occurrence) => {\n if (!uniqueOccurrences.some((uniqueOccurrence) => deepEqual(uniqueOccurrence, occurrence))) {\n uniqueOccurrences.push(occurrence);\n }\n });\n\n return uniqueOccurrences;\n }, [occurrenceData]);\n\n return (\n \n \n \n {referenceHeaderText}\n {occurrenceHeaderText}\n \n \n \n {occurrences.length > 0 &&\n occurrences.map((occurrence) => (\n {\n setScriptureReference(occurrence.reference);\n }}\n >\n {`${Canon.bookNumberToEnglishName(occurrence.reference.bookNum)} ${occurrence.reference.chapterNum}:${occurrence.reference.verseNum}`}\n {occurrence.text}\n \n ))}\n \n
\n );\n}\n\nexport default OccurrencesTable;\n","import React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport default Checkbox;\n","import { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference } from 'platform-bible-utils';\n\n/* #region Types */\n\n/**\n * Status of items that appear in inventories. 'approved' and 'unapproved' items are defined in the\n * project's `Settings.xml`. All other items are defined as 'unknown'\n */\nexport type Status = 'approved' | 'unapproved' | 'unknown';\n\n/** Occurrence of item in inventory. Primarily used by table that shows occurrences */\nexport type InventoryItemOccurrence = {\n /** Reference to scripture where the item appears */\n reference: ScriptureReference;\n /** Snippet of scripture that contains the occurrence */\n text: string;\n};\n\n/** Data structure that contains all information on an item that is shown in an inventory */\nexport type InventoryTableData = {\n /**\n * The item (e.g. a character in the characters inventory, a marker in the marker inventory) In\n * most cases the array will only have one element. In case of additional items (e.g. the\n * preceding marker in the markers check), the primary item should be stored in the first index.\n * To show additional items in the inventory, make sure to configure the `additionalItemsLabels`\n * prop for the Inventory component\n */\n items: string[];\n /** The number of times this item occurs in the selected scope */\n count: number;\n /** The status of this item (see documentation for `Status` type for more information) */\n status: Status;\n /** Occurrences of this item in the scripture text for the selected scope */\n occurrences: InventoryItemOccurrence[];\n};\n\n/* #endregion */\n\n/* #region Functions */\n\n/**\n * Splits USFM string into shorter line-like segments\n *\n * @param text A single (likely very large) USFM string\n * @returns An array containing the input text, split into shorter segments\n */\nexport const getLinesFromUSFM = (text: string) => {\n // Splits on (CR)LF, CR, \\v, \\c and \\id\n return text.split(/(?:\\r?\\n|\\r)|(?=(?:\\\\(?:v|c|id)))/g);\n};\n\n/**\n * Extracts chapter or verse number from USFM strings that start with a \\c or \\v marker\n *\n * @param text USFM string that is expected to start with \\c or \\v marker\n * @returns Chapter or verse number if one is found. Else returns 0.\n */\nexport const getNumberFromUSFM = (text: string): number | undefined => {\n // Captures all digits that follow \\v or \\c markers followed by whitespace located at the start of a string\n const regex = /^\\\\[vc]\\s+(\\d+)/;\n const match = text.match(regex);\n\n if (match) {\n return +match[1];\n }\n return undefined;\n};\n\n/**\n * Gets book ID from USFM string that starts with the \\id marker, and returns book number for it\n *\n * @param text USFM string that is expected to start with \\id marker\n * @returns Book number corresponding to the \\id marker in the input text. Returns 0 if no marker is\n * found or the marker is not valid\n */\nexport const getBookNumFromId = (text: string): number => {\n // Captures all digits that follow an \\id marker followed by whitespace located at the start of a string\n const match = text.match(/^\\\\id\\s+([A-Za-z]+)/);\n if (match) {\n return Canon.bookIdToNumber(match[1]);\n }\n return 0;\n};\n\n/**\n * Gets the status for an item, typically used in the Inventory component\n *\n * @param item The item for which the status is being requested\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @returns The status for the specified item\n */\nexport const getStatusForItem = (\n item: string,\n approvedItems: string[],\n unapprovedItems: string[],\n): Status => {\n if (unapprovedItems.includes(item)) return 'unapproved';\n if (approvedItems.includes(item)) return 'approved';\n return 'unknown';\n};\n\n/* #endregion */\n","import React from 'react';\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst toggleVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors hover:tw-bg-muted hover:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=on]:tw-bg-accent data-[state=on]:tw-text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-transparent',\n outline:\n 'tw-border tw-border-input tw-bg-transparent hover:tw-bg-accent hover:tw-text-accent-foreground',\n },\n size: {\n default: 'tw-h-10 tw-px-3',\n sm: 'tw-h-9 tw-px-2.5',\n lg: 'tw-h-11 tw-px-5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst Toggle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, variant, size, ...props }, ref) => (\n \n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","import React from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { toggleVariants } from '@/components/shadcn-ui/toggle';\n\nconst ToggleGroupContext = React.createContext>({\n size: 'default',\n variant: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, size, children, ...props }, ref) => (\n \n \n {children}\n \n \n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n \n {children}\n \n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { ColumnDef, SortDirection } from '@/components/advanced/data-table/data-table.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/shadcn-ui/toggle-group';\nimport {\n ArrowDownIcon,\n ArrowUpDownIcon,\n ArrowUpIcon,\n CircleCheckIcon,\n CircleHelpIcon,\n CircleXIcon,\n} from 'lucide-react';\nimport { ReactNode } from 'react';\nimport { InventoryTableData, Status } from './inventory-utils';\n\n/**\n * Gets an icon that indicates the current sorting direction based on the provided input\n *\n * @param sortDirection Sorting direction. Can be ascending ('asc'), descending ('desc') or false (\n * i.e. not sorted)\n * @returns The appropriate sorting icon for the provided sorting direction\n */\nconst getSortingIcon = (sortDirection: false | SortDirection): ReactNode => {\n if (sortDirection === 'asc') {\n return ;\n }\n if (sortDirection === 'desc') {\n return ;\n }\n return ;\n};\n\n/**\n * Function that creates the item column for inventories\n *\n * @param itemLabel Localized label for the item column (e.g. 'Character', 'Repeated Word', etc.)\n * @returns Column that shows the inventory items. Should be used with the DataTable component\n */\nexport const inventoryItemColumn = (itemLabel: string): ColumnDef => {\n return {\n accessorKey: 'item',\n accessorFn: (row: InventoryTableData) => row.items[0],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the additional item columns for inventories\n *\n * @param additionalItemLabel Localized label for the additional item column (e.g. 'Preceding\n * Marker')\n * @param additionalItemIndex Index that locates the desired item in the items array of the\n * inventory\n * @returns Column that shows additional inventory items. Should be used with the DataTable\n * component\n */\nexport const inventoryAdditionalItemColumn = (\n additionalItemLabel: string,\n additionalItemIndex: number,\n): ColumnDef => {\n return {\n accessorKey: `item${additionalItemIndex}`,\n accessorFn: (row: InventoryTableData) => row.items[additionalItemIndex],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the count column for inventories. Should be used with the DataTable\n * component.\n *\n * @param itemLabel Localized label for the count column\n * @returns Column that shows the number of occurrences of the related inventory items\n */\nexport const inventoryCountColumn = (countLabel: string): ColumnDef => {\n return {\n accessorKey: 'count',\n header: ({ column }) => (\n
\n \n
\n ),\n cell: ({ row }) =>
{row.getValue('count')}
,\n };\n};\n\n/**\n * Function that updates project settings when status for item(s) changes\n *\n * @param changedItems Array of items for which the status is being updated\n * @param newStatus The status that the items are being given\n * @param approvedItems Array of currently approved items\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of currently unapproved items\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n */\nconst statusChangeHandler = (\n changedItems: string[],\n newStatus: Status,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n) => {\n let newApprovedItems: string[] = [...approvedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'approved') {\n if (!newApprovedItems.includes(item)) {\n newApprovedItems.push(item);\n }\n } else {\n newApprovedItems = newApprovedItems.filter((validItem) => validItem !== item);\n }\n });\n onApprovedItemsChange(newApprovedItems);\n\n let newUnapprovedItems: string[] = [...unapprovedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'unapproved') {\n if (!newUnapprovedItems.includes(item)) {\n newUnapprovedItems.push(item);\n }\n } else {\n newUnapprovedItems = newUnapprovedItems.filter((unapprovedItem) => unapprovedItem !== item);\n }\n });\n onUnapprovedItemsChange(newUnapprovedItems);\n};\n\n/**\n * Function that creates the status column for inventories. Should be used with the DataTable\n * component.\n *\n * @param statusLabel Localized label for the status column\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n * @returns Column that shows the status buttons for the related inventory item. The button for the\n * current status of the item is selected\n */\nexport const inventoryStatusColumn = (\n statusLabel: string,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n): ColumnDef => {\n return {\n accessorKey: 'status',\n header: ({ column }) => {\n return (\n
\n \n
\n );\n },\n cell: ({ row }) => {\n const status: Status = row.getValue('status');\n const item: string = row.getValue('item');\n return (\n \n \n statusChangeHandler(\n [item],\n 'approved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"approved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unapproved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unapproved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unknown',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unknown\"\n >\n \n \n \n );\n },\n };\n};\n","import DataTable, {\n ColumnDef,\n RowContents,\n RowSelectionState,\n TableContents,\n} from '@/components/advanced/data-table/data-table.component';\nimport OccurrencesTable from '@/components/advanced/inventory/occurrences-table.component';\nimport Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Input } from '@/components/shadcn-ui/input';\nimport { Label } from '@/components/shadcn-ui/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n deepEqual,\n LocalizedStringValue,\n ScriptureReference,\n substring,\n} from 'platform-bible-utils';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n getBookNumFromId,\n getLinesFromUSFM,\n getNumberFromUSFM,\n getStatusForItem,\n InventoryItemOccurrence,\n InventoryTableData,\n Status,\n} from './inventory-utils';\nimport { inventoryAdditionalItemColumn } from './inventory-columns';\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const INVENTORY_STRING_KEYS = Object.freeze([\n '%webView_inventory_all%',\n '%webView_inventory_approved%',\n '%webView_inventory_unapproved%',\n '%webView_inventory_unknown%',\n '%webView_inventory_scope_currentBook%',\n '%webView_inventory_scope_chapter%',\n '%webView_inventory_scope_verse%',\n '%webView_inventory_filter_text%',\n '%webView_inventory_show_additional_items%',\n '%webView_inventory_occurrences_table_header_reference%',\n '%webView_inventory_occurrences_table_header_occurrence%',\n] as const);\n\nexport type InventoryLocalizedStrings = {\n [localizedInventoryKey in (typeof INVENTORY_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/** Scope of scripture that the inventory can operate on */\nexport type Scope = 'book' | 'chapter' | 'verse';\n\n/** Status values that the status filter can select from */\ntype StatusFilter = Status | 'all';\n\n/** Text labels for the inventory columns and the control components of additional inventory items */\ntype AdditionalItemsLabels = {\n checkboxText?: string;\n tableHeaders?: string[];\n};\n\n/**\n * Filters data that is shown in the DataTable section of the Inventory\n *\n * @param itemData All inventory items and their related information\n * @param statusFilter Allows filtering by status (i.e. show all items, or only items that are\n * 'approved', 'unapproved' or 'unknown')\n * @param textFilter Allows filtering by text. All items that include the filter text will be\n * selected.\n * @returns Array of items and their related information that are matched by the specified filters\n */\nconst filterItemData = (\n itemData: InventoryTableData[],\n statusFilter: StatusFilter,\n textFilter: string,\n): InventoryTableData[] => {\n let filteredItemData: InventoryTableData[] = itemData;\n\n if (statusFilter !== 'all') {\n filteredItemData = filteredItemData.filter(\n (item) =>\n (statusFilter === 'approved' && item.status === 'approved') ||\n (statusFilter === 'unapproved' && item.status === 'unapproved') ||\n (statusFilter === 'unknown' && item.status === 'unknown'),\n );\n }\n\n if (textFilter !== '')\n filteredItemData = filteredItemData.filter((item) => item.items[0].includes(textFilter));\n\n return filteredItemData;\n};\n\n/**\n * Turns array of strings into array of inventory items, along with their count and status\n *\n * @param text The source scripture text that is searched for inventory items\n * @param scriptureRef The scripture reference that the application is currently set to\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param itemRegex Regular expression that describes what items this Inventory should extract from\n * the provided scripture text\n * @returns Array of inventory items, along with their count and status\n */\nconst createTableData = (\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n itemRegex: RegExp,\n): InventoryTableData[] => {\n if (!text) return [];\n\n const tableData: InventoryTableData[] = [];\n\n let currentBook: number | undefined = scriptureRef.bookNum;\n let currentChapter: number | undefined = scriptureRef.chapterNum;\n let currentVerse: number | undefined = scriptureRef.verseNum;\n\n const lines = getLinesFromUSFM(text);\n\n lines.forEach((line: string) => {\n if (line.startsWith('\\\\id')) {\n currentBook = getBookNumFromId(line);\n currentChapter = 0;\n currentVerse = 0;\n }\n if (line.startsWith('\\\\c')) {\n currentChapter = getNumberFromUSFM(line);\n currentVerse = 0;\n }\n if (line.startsWith('\\\\v')) {\n currentVerse = getNumberFromUSFM(line);\n if (currentChapter === 0) {\n currentChapter = scriptureRef.chapterNum;\n }\n }\n\n let match: RegExpExecArray | undefined = itemRegex.exec(line) ?? undefined;\n while (match) {\n const items: string[] = [];\n match.forEach((item) => items.push(item));\n const itemIndex = match.index;\n const existingItem = tableData.find((tableEntry) => deepEqual(tableEntry.items, items));\n const newReference: InventoryItemOccurrence = {\n reference: {\n bookNum: currentBook !== undefined ? currentBook : -1,\n chapterNum: currentChapter !== undefined ? currentChapter : -1,\n verseNum: currentVerse !== undefined ? currentVerse : -1,\n },\n text: substring(line, Math.max(0, itemIndex - 25), Math.min(itemIndex + 25, line.length)),\n };\n if (existingItem) {\n existingItem.count += 1;\n existingItem.occurrences.push(newReference);\n } else {\n const newItem: InventoryTableData = {\n items,\n count: 1,\n status: getStatusForItem(items[0], approvedItems, unapprovedItems),\n occurrences: [newReference],\n };\n tableData.push(newItem);\n }\n\n match = itemRegex.exec(line) ?? undefined;\n }\n });\n\n return tableData;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: InventoryLocalizedStrings,\n key: keyof InventoryLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\n/** Props for the Inventory component */\ntype InventoryProps = {\n /** The scripture reference that the application is currently set to */\n scriptureReference: ScriptureReference;\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the Inventory needs to work well across multiple\n * languages. When using this component with Platform.Bible, you can import\n * `INVENTORY_STRING_KEYS` from this library, pass it in to the Platform's localization hook, and\n * pass the localized keys that are returned by the hook into this prop.\n */\n localizedStrings: InventoryLocalizedStrings;\n /**\n * The logic that finds the desired items in the source text. This can either be a Regular\n * expression that captures one or multiple items (preferred), or a custom function that builds\n * and return an InventoryDataTable[] manually. Note: In case the logic captures more than one\n * item (i.e. InventoryTableData.items has a length greater than 1), you must provide text labels\n * for the related columns and control elements to show by setting the `additionalItemsLabels`\n * prop\n */\n extractItems:\n | RegExp\n | ((\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n ) => InventoryTableData[]);\n /**\n * Text labels for control elements and additional column headers in case your Inventory has more\n * than one item to show (e.g. The 'Preceding Marker' in the Markers Inventory)\n */\n additionalItemsLabels?: AdditionalItemsLabels;\n /** Array of approved items, typically as defined in `Settings.xml` */\n approvedItems: string[];\n /** Array of unapproved items, typically as defined in `Settings.xml` */\n unapprovedItems: string[];\n /** The source scripture text that is searched for in inventory items */\n text: string | undefined;\n /** Scope of scripture that the inventory will operate on */\n scope: Scope;\n /** Callback function that is executed when the scope is changed from the Inventory */\n onScopeChange: (scope: Scope) => void;\n /**\n * Column definitions for the Inventory data table. The most commonly used column definitions are\n * pre-configured for your convenience and can be imported (e.g. inventoryItemColumn,\n * inventoryAdditionalItemColumn inventoryCountColumn, and inventoryStatusColumn). If you need any\n * other columns you can add these yourself\n */\n columns: ColumnDef[];\n};\n\n/** Inventory component that is used to view and control the status of provided project settings */\nexport default function Inventory({\n scriptureReference,\n setScriptureReference,\n localizedStrings,\n extractItems,\n additionalItemsLabels,\n approvedItems,\n unapprovedItems,\n text,\n scope,\n onScopeChange,\n columns,\n}: InventoryProps) {\n const allItemsText = localizeString(localizedStrings, '%webView_inventory_all%');\n const approvedItemsText = localizeString(localizedStrings, '%webView_inventory_approved%');\n const unapprovedItemsText = localizeString(localizedStrings, '%webView_inventory_unapproved%');\n const unknownItemsText = localizeString(localizedStrings, '%webView_inventory_unknown%');\n const scopeBookText = localizeString(localizedStrings, '%webView_inventory_scope_currentBook%');\n const scopeChapterText = localizeString(localizedStrings, '%webView_inventory_scope_chapter%');\n const scopeVerseText = localizeString(localizedStrings, '%webView_inventory_scope_verse%');\n const filterText = localizeString(localizedStrings, '%webView_inventory_filter_text%');\n const showAdditionalItemsText = localizeString(\n localizedStrings,\n '%webView_inventory_show_additional_items%',\n );\n\n const [showAdditionalItems, setShowAdditionalItems] = useState(false);\n const [statusFilter, setStatusFilter] = useState('all');\n const [textFilter, setTextFilter] = useState('');\n const [selectedItem, setSelectedItem] = useState([]);\n\n const tableData: InventoryTableData[] = useMemo(() => {\n if (!text) return [];\n if (extractItems instanceof RegExp)\n return createTableData(\n text,\n scriptureReference,\n approvedItems,\n unapprovedItems,\n extractItems,\n );\n return extractItems(text, scriptureReference, approvedItems, unapprovedItems);\n }, [text, extractItems, scriptureReference, approvedItems, unapprovedItems]);\n\n const reducedTableData: InventoryTableData[] = useMemo(() => {\n if (showAdditionalItems) return tableData;\n\n const newTableData: InventoryTableData[] = [];\n\n tableData.forEach((tableEntry) => {\n const firstItem = tableEntry.items[0];\n\n const existingEntry = newTableData.find(\n (newTableEntry) => newTableEntry.items[0] === firstItem,\n );\n\n if (existingEntry) {\n existingEntry.count += tableEntry.count;\n existingEntry.occurrences = existingEntry.occurrences.concat(tableEntry.occurrences);\n } else {\n newTableData.push({\n items: [firstItem],\n count: tableEntry.count,\n occurrences: tableEntry.occurrences,\n status: tableEntry.status,\n });\n }\n });\n\n return newTableData;\n }, [showAdditionalItems, tableData]);\n\n const filteredTableData: InventoryTableData[] = useMemo(() => {\n return filterItemData(reducedTableData, statusFilter, textFilter);\n }, [reducedTableData, statusFilter, textFilter]);\n\n const allColumns: ColumnDef[] = useMemo(() => {\n if (!showAdditionalItems) return columns;\n\n const numberOfAdditionalItems = additionalItemsLabels?.tableHeaders?.length;\n if (!numberOfAdditionalItems) return columns;\n\n const additionalColumns: ColumnDef[] = [];\n\n for (let index = 0; index < numberOfAdditionalItems; index++) {\n additionalColumns.push(\n inventoryAdditionalItemColumn(\n additionalItemsLabels?.tableHeaders?.[index] || 'Additional Item',\n index + 1,\n ),\n );\n }\n\n return [...additionalColumns, ...columns];\n }, [additionalItemsLabels?.tableHeaders, columns, showAdditionalItems]);\n\n useEffect(() => {\n setSelectedItem([]);\n }, [filteredTableData]);\n\n const rowClickHandler = (\n row: RowContents,\n table: TableContents,\n ) => {\n table.setRowSelection(() => {\n const newSelection: RowSelectionState = {};\n newSelection[row.index] = true;\n return newSelection;\n });\n\n setSelectedItem(row.original.items);\n };\n\n const handleScopeChange = (value: string) => {\n if (value === 'book' || value === 'chapter' || value === 'verse') {\n onScopeChange(value);\n } else {\n throw new Error(`Invalid scope value: ${value}`);\n }\n };\n\n const handleStatusFilterChange = (value: string) => {\n if (value === 'all' || value === 'approved' || value === 'unapproved' || value === 'unknown') {\n setStatusFilter(value);\n } else {\n throw new Error(`Invalid status filter value: ${value}`);\n }\n };\n\n const occurrenceData: InventoryItemOccurrence[] = useMemo(() => {\n if (reducedTableData.length === 0 || selectedItem.length === 0) return [];\n const occurrence = reducedTableData.filter((tableEntry: InventoryTableData) => {\n return deepEqual(\n showAdditionalItems ? tableEntry.items : [tableEntry.items[0]],\n selectedItem,\n );\n });\n if (occurrence.length > 1) throw new Error('Selected item is not unique');\n return occurrence[0].occurrences;\n }, [selectedItem, showAdditionalItems, reducedTableData]);\n\n return (\n
\n
\n handleStatusFilterChange(value)}\n defaultValue={statusFilter}\n >\n \n \n \n \n {allItemsText}\n {approvedItemsText}\n {unapprovedItemsText}\n {unknownItemsText}\n \n \n \n {\n setTextFilter(event.target.value);\n }}\n />\n {additionalItemsLabels && (\n
\n {\n setSelectedItem([]);\n setShowAdditionalItems(checked);\n }}\n />\n \n
\n )}\n
\n
\n \n
\n {occurrenceData.length > 0 && (\n
\n \n
\n )}\n
\n );\n}\n","import { Input } from '@/components/shadcn-ui/input';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { useState } from 'react';\n\nexport type SearchBarProps = {\n /**\n * Callback fired to handle the search query when button pressed\n *\n * @param searchQuery\n */\n onSearch: (searchQuery: string) => void;\n\n /** Optional string that appears in the search bar without a search string */\n placeholder?: string;\n\n /** Optional boolean to set the input base to full width */\n isFullWidth?: boolean;\n};\n\nexport default function SearchBar({ onSearch, placeholder, isFullWidth }: SearchBarProps) {\n const [searchQuery, setSearchQuery] = useState('');\n\n const handleInputChange = (searchString: string) => {\n setSearchQuery(searchString);\n onSearch(searchString);\n };\n\n return (\n handleInputChange(e.target.value)}\n />\n );\n}\n","// adapted from: https://github.com/shadcn-ui/ui/discussions/752\n\n'use client';\n\nimport { TabsContentProps, TabsListProps, TabsTriggerProps } from '@/components/shadcn-ui/tabs';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport React from 'react';\n\nexport type VerticalTabsProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type LeftTabsTriggerProps = TabsTriggerProps & {\n value: string;\n ref?: React.Ref;\n};\n\nexport const VerticalTabs = React.forwardRef<\n React.ElementRef,\n VerticalTabsProps\n>(({ className, ...props }, ref) => (\n \n));\n\nVerticalTabs.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsTrigger = React.forwardRef<\n React.ElementRef,\n LeftTabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\n\nexport const VerticalTabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import SearchBar from '@/components/basics/search-bar.component';\nimport {\n VerticalTabs,\n VerticalTabsContent,\n VerticalTabsList,\n VerticalTabsTrigger,\n} from '@/components/basics/tabs-vertical';\nimport { ReactNode } from 'react';\n\nexport type TabKeyValueContent = {\n key: string;\n value: string;\n content: ReactNode;\n};\n\nexport type NavigationContentSearchProps = {\n /** List of values and keys for each tab this component should provide */\n tabList: TabKeyValueContent[];\n\n /** Handler to run when the value of the search bar changes */\n onSearch: (searchQuery: string) => void;\n\n /** Optional placeholder for the search bar */\n searchPlaceholder?: string;\n\n /** Optional title to include in the header */\n headerTitle?: string;\n\n /** Optional flag to make the search bar appear full width */\n isSearchBarFullWidth?: boolean;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nexport default function NavigationContentSearch({\n tabList,\n onSearch,\n searchPlaceholder,\n headerTitle,\n isSearchBarFullWidth = false,\n direction = 'ltr',\n}: NavigationContentSearchProps) {\n return (\n
\n
\n {headerTitle ?

{headerTitle}

: ''}\n \n
\n \n \n {tabList.map((tab) => (\n \n {tab.value}\n \n ))}\n \n {tabList.map((tab) => (\n \n {tab.content}\n \n ))}\n \n
\n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Canon } from '@sillsdev/scripture';\nimport {\n Cell,\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n GroupingState,\n Row,\n RowSelectionState,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport '@/components/advanced/scripture-results-viewer/scripture-results-viewer.component.css';\nimport {\n compareScrRefs,\n formatScrRef,\n ScriptureSelection,\n scrRefToBBBCCCVVV,\n} from 'platform-bible-utils';\nimport { MouseEvent, useEffect, useMemo, useState } from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\n\n/**\n * Information (e.g., a checking error or some other type of \"transient\" annotation) about something\n * noteworthy at a specific place in an instance of the Scriptures.\n */\nexport type ScriptureItemDetail = ScriptureSelection & {\n /**\n * Text of the error, note, etc. In the future, we might want to support something more than just\n * text so that a JSX element could be provided with a link or some other controls related to the\n * issue being reported.\n */\n detail: string;\n};\n\n/**\n * A uniquely identifiable source of results that can be displayed in the ScriptureResultsViewer.\n * Generally, the source will be a particular Scripture check, but there may be other types of\n * sources.\n */\nexport type ResultsSource = {\n /**\n * Uniquely identifies the source.\n *\n * @type {string}\n */\n id: string;\n\n /**\n * Name (potentially localized) of the source, suitable for display in the UI.\n *\n * @type {string}\n */\n displayName: string;\n};\n\nexport type ScriptureSrcItemDetail = ScriptureItemDetail & {\n /** Source/type of detail. Can be used for grouping. */\n source: ResultsSource;\n};\n\n/**\n * Represents a set of results keyed by Scripture reference. Generally, the source will be a\n * particular Scripture check, but this type also allows for other types of uniquely identifiable\n * sources.\n */\nexport type ResultsSet = {\n /**\n * The backing source associated with this set of results.\n *\n * @type {ResultsSource}\n */\n source: ResultsSource;\n\n /**\n * Array of Scripture item details (messages keyed by Scripture reference).\n *\n * @type {ScriptureItemDetail[]}\n */\n data: ScriptureItemDetail[];\n};\n\nconst scrBookColId = 'scrBook';\nconst scrRefColId = 'scrRef';\nconst typeColId = 'source';\nconst detailsColId = 'details';\n\nconst defaultScrRefColumnName = 'Scripture Reference';\nconst defaultScrBookGroupName = 'Scripture Book';\nconst defaultTypeColumnName = 'Type';\nconst defaultDetailsColumnName = 'Details';\n\nexport type ScriptureResultsViewerColumnInfo = {\n /** Optional header to display for the Reference column. Default value: 'Scripture Reference'. */\n scriptureReferenceColumnName?: string;\n\n /** Optional text to display to refer to the Scripture book group. Default value: 'Scripture Book'. */\n scriptureBookGroupName?: string;\n\n /** Optional header to display for the Type column. Default value: 'Type'. */\n typeColumnName?: string;\n\n /** Optional header to display for the Details column. Default value: 'Details' */\n detailsColumnName?: string;\n};\n\nexport type ScriptureResultsViewerProps = ScriptureResultsViewerColumnInfo & {\n /** Groups of ScriptureItemDetail objects from particular sources (e.g., Scripture checks) */\n sources: ResultsSet[];\n\n /** Flag indicating whether to display column headers. Default is false. */\n showColumnHeaders?: boolean;\n\n /** Flag indicating whether to display source column. Default is false. */\n showSourceColumn?: boolean;\n\n /** Callback function to notify when a row is selected */\n onRowSelected?: (selectedRow: ScriptureSrcItemDetail | undefined) => void;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nfunction getColumns(\n colInfo?: ScriptureResultsViewerColumnInfo,\n showSourceColumn?: boolean,\n): ColumnDef[] {\n const showSrcCol = showSourceColumn ?? false;\n return [\n {\n accessorFn: (row) =>\n `${Canon.bookNumberToId(row.start.bookNum)} ${row.start.chapterNum}:${row.start.verseNum}`,\n id: scrBookColId,\n header: colInfo?.scriptureReferenceColumnName ?? defaultScrRefColumnName,\n cell: (info) => {\n const row = info.row.original;\n if (info.row.getIsGrouped()) {\n return Canon.bookNumberToEnglishName(row.start.bookNum);\n }\n return info.row.groupingColumnId === scrBookColId ? formatScrRef(row.start) : undefined;\n },\n getGroupingValue: (row) => row.start.bookNum,\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: true,\n },\n {\n accessorFn: (row) => formatScrRef(row.start),\n id: scrRefColId,\n header: undefined,\n cell: (info) => {\n const row = info.row.original;\n return info.row.getIsGrouped() ? undefined : formatScrRef(row.start);\n },\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: false,\n },\n {\n accessorFn: (row) => row.source.displayName,\n id: typeColId,\n header: showSrcCol ? (colInfo?.typeColumnName ?? defaultTypeColumnName) : undefined,\n cell: (info) => (showSrcCol || info.row.getIsGrouped() ? info.getValue() : undefined),\n getGroupingValue: (row) => row.source.id,\n sortingFn: (a, b) =>\n a.original.source.displayName.localeCompare(b.original.source.displayName),\n enableGrouping: true,\n },\n {\n accessorFn: (row) => row.detail,\n id: detailsColId,\n header: colInfo?.detailsColumnName ?? defaultDetailsColumnName,\n cell: (info) => info.getValue(),\n enableGrouping: false,\n },\n ];\n}\n\nconst toRefOrRange = (scriptureSelection: ScriptureSelection) => {\n if (!('offset' in scriptureSelection.start))\n throw new Error('No offset available in range start');\n if (scriptureSelection.end && !('offset' in scriptureSelection.end))\n throw new Error('No offset available in range end');\n const { offset: offsetStart } = scriptureSelection.start;\n let offsetEnd: number = 0;\n if (scriptureSelection.end) ({ offset: offsetEnd } = scriptureSelection.end);\n if (\n !scriptureSelection.end ||\n compareScrRefs(scriptureSelection.start, scriptureSelection.end) === 0\n )\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}`;\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}-${scrRefToBBBCCCVVV(scriptureSelection.end)}+${offsetEnd}`;\n};\n\nconst getRowKey = (row: ScriptureSrcItemDetail) =>\n `${toRefOrRange({ start: row.start, end: row.end })} ${row.source.displayName} ${row.detail}`;\n\n/**\n * Component to display a combined list of detailed items from one or more sources, where the items\n * are keyed primarily by Scripture reference. This is particularly useful for displaying a list of\n * results from Scripture checks, but more generally could be used to display any \"results\" from any\n * source(s). The component allows for grouping by Scripture book, source, or both. By default, it\n * displays somewhat \"tree-like\" which allows it to be more horizontally compact and intuitive. But\n * it also has the option of displaying as a traditional table with column headings (with or without\n * the source column showing).\n */\nexport default function ScriptureResultsViewer({\n sources,\n showColumnHeaders = false,\n showSourceColumn = false,\n scriptureReferenceColumnName,\n scriptureBookGroupName,\n typeColumnName,\n detailsColumnName,\n onRowSelected,\n direction = 'ltr',\n}: ScriptureResultsViewerProps) {\n const [grouping, setGrouping] = useState([]);\n const [sorting, setSorting] = useState([{ id: scrBookColId, desc: false }]);\n const [rowSelection, setRowSelection] = useState({});\n\n const scriptureResults = useMemo(\n () =>\n sources.flatMap((source) => {\n return source.data.map((item) => ({\n ...item,\n source: source.source,\n }));\n }),\n [sources],\n );\n\n const columns = useMemo(\n () =>\n getColumns(\n {\n scriptureReferenceColumnName,\n typeColumnName,\n detailsColumnName,\n },\n showSourceColumn,\n ),\n [scriptureReferenceColumnName, typeColumnName, detailsColumnName, showSourceColumn],\n );\n\n useEffect(() => {\n // Ensure sorting is applied correctly when grouped by type\n if (grouping.includes(typeColId)) {\n setSorting([\n { id: typeColId, desc: false },\n { id: scrBookColId, desc: false },\n ]);\n } else {\n setSorting([{ id: scrBookColId, desc: false }]);\n }\n }, [grouping]);\n\n const table = useReactTable({\n data: scriptureResults,\n columns,\n state: {\n grouping,\n sorting,\n rowSelection,\n },\n onGroupingChange: setGrouping,\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getRowId: getRowKey,\n autoResetExpanded: false,\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n });\n\n useEffect(() => {\n if (onRowSelected) {\n const selectedRows = table.getSelectedRowModel().rowsById;\n const keys = Object.keys(selectedRows);\n if (keys.length === 1) {\n const selectedRow = scriptureResults.find((row) => getRowKey(row) === keys[0]) || undefined;\n if (selectedRow) onRowSelected(selectedRow);\n }\n }\n }, [rowSelection, scriptureResults, onRowSelected, table]);\n\n // Define possible grouping options\n const scrBookGroupName = scriptureBookGroupName ?? defaultScrBookGroupName;\n const typeGroupName = typeColumnName ?? defaultTypeColumnName;\n\n const groupingOptions = [\n { label: 'No Grouping', value: [] },\n { label: `Group by ${scrBookGroupName}`, value: [scrBookColId] },\n { label: `Group by ${typeGroupName}`, value: [typeColId] },\n {\n label: `Group by ${scrBookGroupName} and ${typeGroupName}`,\n value: [scrBookColId, typeColId],\n },\n {\n label: `Group by ${typeGroupName} and ${scrBookGroupName}`,\n value: [typeColId, scrBookColId],\n },\n ];\n\n const handleSelectChange = (selectedGrouping: string) => {\n setGrouping(JSON.parse(selectedGrouping));\n };\n\n const handleRowClick = (row: Row, event: MouseEvent) => {\n if (!row.getIsGrouped() && !row.getIsSelected()) {\n row.getToggleSelectedHandler()(event);\n }\n };\n\n const getEvenOrOddBandingStyle = (row: Row, index: number) => {\n if (row.getIsGrouped()) return '';\n // UX has now said they don't think they want banding. I'm leaving in the code to\n // set even and odd styles, but there's nothing in the CSS to style them differently.\n // The \"even\" style used to also have tw-bg-neutral-300 (along with even) to create\n // a visual banding effect. That could be added back in if UX changes the decision.\n return cn('banded-row', index % 2 === 0 ? 'even' : 'odd');\n };\n\n const getIndent = (\n groupingState: GroupingState,\n row: Row,\n cell: Cell,\n ) => {\n if (groupingState?.length === 0 || row.depth < cell.column.getGroupedIndex()) return undefined;\n if (row.getIsGrouped()) {\n switch (row.depth) {\n case 1:\n return 'tw-ps-4';\n default:\n return undefined;\n }\n }\n switch (row.depth) {\n case 1:\n return 'tw-ps-8';\n case 2:\n return 'tw-ps-12';\n default:\n return undefined;\n }\n };\n\n return (\n
\n {!showColumnHeaders && (\n {\n handleSelectChange(value);\n }}\n >\n \n \n \n \n \n {groupingOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n )}\n \n {showColumnHeaders && (\n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers\n .filter((h) => h.column.columnDef.header)\n .map((header) => (\n /* For sticky column headers to work, we probably need to change the default definition of the shadcn Table component. See https://github.com/shadcn-ui/ui/issues/1151 */\n \n {header.isPlaceholder ? undefined : (\n
\n {header.column.getCanGroup() ? (\n \n {header.column.getIsGrouped() ? `🛑` : `👊 `}\n \n ) : undefined}{' '}\n {flexRender(header.column.columnDef.header, header.getContext())}\n
\n )}\n
\n ))}\n
\n ))}\n
\n )}\n \n {table.getRowModel().rows.map((row, rowIndex) => {\n return (\n handleRowClick(row, event)}\n >\n {row.getVisibleCells().map((cell) => {\n if (\n cell.getIsPlaceholder() ||\n (cell.column.columnDef.enableGrouping &&\n !cell.getIsGrouped() &&\n (cell.column.columnDef.id !== typeColId || !showSourceColumn))\n )\n return undefined;\n return (\n \n {(() => {\n if (cell.getIsGrouped()) {\n return (\n \n {row.getIsExpanded() && }\n {!row.getIsExpanded() &&\n (direction === 'ltr' ? : )}{' '}\n {flexRender(cell.column.columnDef.cell, cell.getContext())} (\n {row.subRows.length})\n \n );\n }\n\n // if (cell.getIsAggregated()) {\n // flexRender(\n // cell.column.columnDef.aggregatedCell ?? cell.column.columnDef.cell,\n // cell.getContext(),\n // );\n // }\n\n return flexRender(cell.column.columnDef.cell, cell.getContext());\n })()}\n \n );\n })}\n \n );\n })}\n \n
\n
\n );\n}\n","import {\n getLocalizeKeyForScrollGroupId,\n LanguageStrings,\n ScrollGroupId,\n} from 'platform-bible-utils';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\nconst DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS = {\n [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n [getLocalizeKeyForScrollGroupId(0)]: 'A',\n [getLocalizeKeyForScrollGroupId(1)]: 'B',\n [getLocalizeKeyForScrollGroupId(2)]: 'C',\n [getLocalizeKeyForScrollGroupId(3)]: 'D',\n [getLocalizeKeyForScrollGroupId(4)]: 'E',\n [getLocalizeKeyForScrollGroupId(5)]: 'F',\n [getLocalizeKeyForScrollGroupId(6)]: 'G',\n [getLocalizeKeyForScrollGroupId(7)]: 'H',\n [getLocalizeKeyForScrollGroupId(8)]: 'I',\n [getLocalizeKeyForScrollGroupId(9)]: 'J',\n [getLocalizeKeyForScrollGroupId(10)]: 'K',\n [getLocalizeKeyForScrollGroupId(11)]: 'L',\n [getLocalizeKeyForScrollGroupId(12)]: 'M',\n [getLocalizeKeyForScrollGroupId(13)]: 'N',\n [getLocalizeKeyForScrollGroupId(14)]: 'O',\n [getLocalizeKeyForScrollGroupId(15)]: 'P',\n [getLocalizeKeyForScrollGroupId(16)]: 'Q',\n [getLocalizeKeyForScrollGroupId(17)]: 'R',\n [getLocalizeKeyForScrollGroupId(18)]: 'S',\n [getLocalizeKeyForScrollGroupId(19)]: 'T',\n [getLocalizeKeyForScrollGroupId(20)]: 'U',\n [getLocalizeKeyForScrollGroupId(21)]: 'V',\n [getLocalizeKeyForScrollGroupId(22)]: 'W',\n [getLocalizeKeyForScrollGroupId(23)]: 'X',\n [getLocalizeKeyForScrollGroupId(24)]: 'Y',\n [getLocalizeKeyForScrollGroupId(25)]: 'Z',\n};\n\nexport type ScrollGroupSelectorProps = {\n /**\n * List of scroll group ids to show to the user. Either a {@link ScrollGroupId} or `undefined` for\n * no scroll group\n */\n availableScrollGroupIds: (ScrollGroupId | undefined)[];\n /** Currently selected scroll group id. `undefined` for no scroll group */\n scrollGroupId: ScrollGroupId | undefined;\n /** Callback function run when the user tries to change the scroll group id */\n onChangeScrollGroupId: (newScrollGroupId: ScrollGroupId | undefined) => void;\n /**\n * Localized strings to use for displaying scroll group ids. Must be an object whose keys are\n * `getLocalizeKeyForScrollGroupId(scrollGroupId)` for all scroll group ids (and `undefined` if\n * included) in {@link ScrollGroupSelectorProps.availableScrollGroupIds} and whose values are the\n * localized strings to use for those scroll group ids.\n *\n * Defaults to English localizations of English alphabet for scroll groups 0-25 (e.g. 0 is A) and\n * Ø for `undefined`. Will fill in any that are not provided with these English localizations.\n * Also, if any values match the keys, the English localization will be used. This is useful in\n * case you want to pass in a temporary version of the localized strings while your localized\n * strings load.\n *\n * @example\n *\n * ```typescript\n * const myScrollGroupIdLocalizedStrings = {\n * [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n * [getLocalizeKeyForScrollGroupId(0)]: 'A',\n * [getLocalizeKeyForScrollGroupId(1)]: 'B',\n * [getLocalizeKeyForScrollGroupId(2)]: 'C',\n * [getLocalizeKeyForScrollGroupId(3)]: 'D',\n * [getLocalizeKeyForScrollGroupId(4)]: 'E',\n * };\n * ```\n *\n * @example\n *\n * ```tsx\n * const availableScrollGroupIds = [undefined, 0, 1, 2, 3, 4];\n *\n * const localizeKeys = getLocalizeKeysForScrollGroupIds();\n *\n * const [localizedStrings] = useLocalizedStrings(localizeKeys);\n *\n * ...\n *\n * \n * ```\n */\n localizedStrings?: LanguageStrings;\n};\n\n/** Selector component for choosing a scroll group */\nexport default function ScrollGroupSelector({\n availableScrollGroupIds,\n scrollGroupId,\n onChangeScrollGroupId,\n localizedStrings = {},\n}: ScrollGroupSelectorProps) {\n const localizedStringsDefaulted = {\n ...DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS,\n ...Object.fromEntries(\n Object.entries(localizedStrings).map(\n ([localizedStringKey, localizedStringValue]: [string, string]) => [\n localizedStringKey,\n localizedStringKey === localizedStringValue &&\n localizedStringKey in DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS\n ? DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS[localizedStringKey]\n : localizedStringValue,\n ],\n ),\n ),\n };\n return (\n \n onChangeScrollGroupId(\n newScrollGroupString === 'undefined' ? undefined : parseInt(newScrollGroupString, 10),\n )\n }\n >\n \n \n \n \n {availableScrollGroupIds.map((scrollGroupOptionId) => (\n \n {localizedStringsDefaulted[getLocalizeKeyForScrollGroupId(scrollGroupOptionId)]}\n \n ))}\n \n \n );\n}\n","import React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n \n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { PropsWithChildren } from 'react';\nimport { Separator } from '@/components/shadcn-ui/separator';\n\n/** Props for the SettingsList component, currently just children */\ntype SettingsListProps = PropsWithChildren;\n\n/**\n * SettingsList component is a wrapper for list items. Rendered with a formatted div\n *\n * @param children To populate the list with\n * @returns Formatted div encompassing the children\n */\nexport function SettingsList({ children }: SettingsListProps) {\n return
{children}
;\n}\n\n/** Props for SettingsListItem component */\ntype SettingsListItemProps = PropsWithChildren & {\n /** Primary text of the list item */\n primary: string;\n\n /** Optional text of the list item */\n secondary?: string | undefined;\n\n /** Optional boolean to display a message if the children aren't loaded yet. Defaults to false */\n isLoading?: boolean;\n\n /** Optional message to display if isLoading */\n loadingMessage?: string;\n};\n\n/**\n * SettingsListItem component is a common list item. Rendered with a formatted div\n *\n * @param primary Primary text of the list item\n * @param secondary Optional secondary text of the list item\n * @param isLoading Optional, to display a message if the action component isn't generated yet,\n * defaults to false\n * @param children The action component(s) to provide for this item\n * @param loadingMessage Optional, message to display if isLoading\n * @returns Formatted div encompassing the list item content\n */\nexport function SettingsListItem({\n primary,\n secondary,\n children,\n isLoading = false,\n loadingMessage,\n}: SettingsListItemProps) {\n return (\n
\n
\n

{primary}

\n

\n {secondary}\n

\n
\n\n {isLoading ? (\n

{loadingMessage}

\n ) : (\n
{children}
\n )}\n
\n );\n}\n\n/** Props for SettingsListHeader component */\ntype SettingsListHeaderProps = {\n /** The primary text of the list header */\n primary: string;\n\n /** Optional secondary text of the list header */\n secondary?: string | undefined;\n\n /** Optional boolean to include a separator underneath the secondary text. Defaults to false */\n includeSeparator?: boolean;\n};\n\n/**\n * SettingsListHeader component displays text above the list\n *\n * @param primary The primary text of the list header\n * @param secondary Optional secondary text of the list header\n * @param includeSeparator Optional boolean to include a separator underneath the secondary text.\n * Defaults to false\n * @returns Formatted div with list header content\n */\nexport function SettingsListHeader({\n primary,\n secondary,\n includeSeparator = false,\n}: SettingsListHeaderProps) {\n return (\n
\n
\n

{primary}

\n

{secondary}

\n
\n {includeSeparator ? : ''}\n
\n );\n}\n","import Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChecklistProps = {\n /** Optional string representing the id attribute of the Checklist */\n id?: string;\n /** Optional string representing CSS class name(s) for styling */\n className?: string;\n /** Array of strings representing the checkable items */\n listItems: string[];\n /** Array of strings representing the checked items */\n selectedListItems: string[];\n /**\n * Function that is called when a checkbox item is selected or deselected\n *\n * @param item The string description for this item\n * @param selected True if selected, false if not selected\n */\n handleSelectListItem: (item: string, selected: boolean) => void;\n\n /**\n * Optional function creates a label for a provided checkable item\n *\n * @param item The item for which a label is to be created\n * @returns A string representing the label text for the checkbox associated with that item\n */\n createLabel?: (item: string) => string;\n};\n\n/** Renders a list of checkboxes. Each checkbox corresponds to an item from the `listItems` array. */\nexport default function Checklist({\n id,\n className,\n listItems,\n selectedListItems,\n handleSelectListItem,\n createLabel,\n}: ChecklistProps) {\n return (\n
\n {listItems.map((item) => (\n
\n handleSelectListItem(item, value)}\n />\n \n
\n ))}\n
\n );\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n const element = props[propName];\n const safePropName = propFullName || propName;\n if (element == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for Emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n const elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n return _extends({}, propTypes, {\n [specialProperty]: props => {\n const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n if (unsupportedProps.length > 0) {\n return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n }\n return null;\n }\n });\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propValue = props[propName];\n const safePropName = propFullName || propName;\n if (propValue == null) {\n return null;\n }\n if (propValue && propValue.nodeType !== 1) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n }\n return null;\n}","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props(_extends({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style(_extends({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n return props => processStyleArg(stylesArg, _extends({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, _extends({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${capitalize(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // e.g. heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m10 17 5-5-5-5z\"\n}), 'ArrowRight');","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n return typeof element === 'string';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n const {\n disableDefaultClasses\n } = React.useContext(ClassNameConfiguratorContext);\n return slot => {\n if (disableDefaultClasses) {\n return '';\n }\n return generateUtilityClass(slot);\n };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport function ClassNameConfigurator(props) {\n const {\n disableDefaultClasses,\n children\n } = props;\n const contextValue = React.useMemo(() => ({\n disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n }), [disableDefaultClasses]);\n return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n value: contextValue,\n children: children\n });\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","import { globalStateClasses } from '@mui/utils/generateUtilityClass';\nconst GLOBAL_CLASS_PREFIX = 'base';\nfunction buildStateClass(state) {\n return `${GLOBAL_CLASS_PREFIX}--${state}`;\n}\nfunction buildSlotClass(componentName, slot) {\n return `${GLOBAL_CLASS_PREFIX}-${componentName}-${slot}`;\n}\nexport function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? buildStateClass(globalStateClass) : buildSlotClass(componentName, slot);\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import { generateUtilityClass } from '../generateUtilityClass';\nexport function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base-ui/react-portal/components-api/#portal)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, forwardedRef);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(forwardedRef, mountNode);\n return () => {\n setRef(forwardedRef, null);\n };\n }\n return undefined;\n }, [forwardedRef, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: children\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport { Portal };","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { generateUtilityClass } from '../generateUtilityClass';\nimport { generateUtilityClasses } from '../generateUtilityClasses';\nconst COMPONENT_NAME = 'Popper';\nexport function getPopperUtilityClass(slot) {\n return generateUtilityClass(COMPONENT_NAME, slot);\n}\nexport const popperClasses = generateUtilityClasses(COMPONENT_NAME, ['root']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\", \"ownerState\"],\n _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '../composeClasses';\nimport { Portal } from '../Portal';\nimport { getPopperUtilityClass } from './popperClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, useClassNamesOverride(getPopperUtilityClass));\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n var _slots$root;\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps\n // @ts-ignore internal logic\n // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, forwardedRef);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: popperModifiers\n }));\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses();\n const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: props,\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n children: typeof children === 'function' ? children(childProps) : children\n }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Popper](https://mui.com/base-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/base-ui/react-popper/components-api/#popper)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: forwardedRef,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display\n }, style),\n TransitionProps: transitionProps,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport { Popper };","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default {\n disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"component\", \"components\", \"componentsProps\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\", \"slots\", \"slotProps\"];\nimport { Popper as BasePopper } from '@mui/base/Popper';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n var _slots$root;\n const theme = useTheme();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n anchorEl,\n component,\n components,\n componentsProps,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n const otherProps = _extends({\n anchorEl,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition\n }, other);\n return /*#__PURE__*/_jsx(PopperRoot, _extends({\n as: component,\n direction: theme == null ? void 0 : theme.direction,\n slots: {\n root: RootComponent\n },\n slotProps: slotProps != null ? slotProps : componentsProps\n }, otherProps, {\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout, unstable_Timeout as Timeout } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, appendOwnerState } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(({\n theme,\n ownerState,\n open\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n pointerEvents: 'auto'\n}, !open && {\n pointerEvents: 'none'\n}, ownerState.arrow && {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n left: 0,\n marginLeft: '-0.71em'\n } : {\n right: 0,\n marginRight: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n }),\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n right: 0,\n marginRight: '-0.71em'\n } : {\n left: 0,\n marginLeft: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n })\n}));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n position: 'relative',\n margin: 0\n}, ownerState.touch && {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n}, {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n transformOrigin: 'right center'\n }, !ownerState.isRtl ? _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n }) : _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n transformOrigin: 'left center'\n }, !ownerState.isRtl ? _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n }) : _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n }, ownerState.touch && {\n marginBottom: '24px'\n }),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n transformOrigin: 'center top',\n marginTop: '14px'\n }, ownerState.touch && {\n marginTop: '24px'\n })\n}));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n}));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n return event => {\n if (eventHandler) {\n eventHandler(event);\n }\n handler(event);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children: childrenProp,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp = Grow,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n children: childrenProp\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = useTimeout();\n const enterTimer = useTimeout();\n const leaveTimer = useTimeout();\n const touchTimer = useTimeout();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = useEventCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n touchTimer.clear();\n });\n React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n const handleOpen = event => {\n hystersisTimer.clear();\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n hystersisTimer.start(800 + leaveDelay, () => {\n hystersisOpen = false;\n });\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n closeTimer.start(theme.transitions.duration.shortest, () => {\n ignoreNonTouchEvents.current = false;\n });\n });\n const handleEnter = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n enterTimer.clear();\n leaveTimer.clear();\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n handleOpen(event);\n });\n } else {\n handleOpen(event);\n }\n };\n const handleLeave = event => {\n enterTimer.clear();\n leaveTimer.start(leaveDelay, () => {\n handleClose(event);\n });\n };\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n // We just need to re-render the Tooltip if the focus-visible state changes.\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setChildIsFocusVisible(false);\n handleLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setChildIsFocusVisible(true);\n handleEnter(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleMouseOver = handleEnter;\n const handleMouseLeave = handleLeave;\n const handleTouchStart = event => {\n detectTouchStart(event);\n leaveTimer.clear();\n closeTimer.clear();\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.start(enterTouchDelay, () => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleEnter(event);\n });\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n leaveTimer.start(leaveTouchDelay, () => {\n handleClose(event);\n });\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(children.ref, focusVisibleRef, setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n // So we exclude all falsy values, except 0, which is valid.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef\n }, followCursor ? {\n onMouseMove: handleMouseMove\n } : {});\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of .', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const popperOptions = React.useMemo(() => {\n var _PopperProps$popperOp;\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n return _extends({}, PopperProps.popperOptions, {\n modifiers: tooltipModifiers\n });\n }, [arrowRef, PopperProps]);\n const ownerState = _extends({}, props, {\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n });\n const classes = useUtilityClasses(ownerState);\n const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n }), ownerState);\n const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n }), ownerState);\n const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n }), ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n as: PopperComponentProp != null ? PopperComponentProp : Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true\n }, interactiveWrapperListeners, popperProps, {\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n timeout: theme.transitions.duration.shorter\n }, TransitionPropsInner, transitionProps, {\n children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n ref: setArrowRef\n })) : null]\n }))\n }))\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import '@/components/mui/menu-item.component.css';\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport {\n ListItemIcon as MuiListItemIcon,\n ListItemText as MuiListItemText,\n MenuItem as MuiMenuItem,\n} from '@mui/material';\nimport Tooltip from '@mui/material/Tooltip';\nimport { Localized, ReferencedItem, SingleColumnMenu } from 'platform-bible-utils';\nimport { MouseEvent, PropsWithChildren } from 'react';\n\ntype MenuItemInfoBase = {\n /** Text (displayable in the UI) as the name of the menu item */\n label: string;\n /** Text to display when the mouse hovers over the menu item */\n tooltip?: string;\n};\n\nexport type Command = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n command: string;\n};\n\ntype SubMenu = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n items: MenuItemInfo[];\n};\n\nexport interface CommandHandler {\n (command: Command): void;\n}\n\nexport type MenuPropsBase = {\n /*\n * The JSON defining the menu whose items are to be rendered. This will typically be one of the\n * menus in the \"defs\" in a Platform.Bible menu (see PlatformMenus). The schema for this is\n * menuDocumentSchema (at the end of menus.model.ts). Note that while this is a\n * \"SingleColumnMenu\", somewhat bizarrely, a MultiColumnMenu is a SingleColumnMenu, so it really\n * could be a MultiColumnMenu, in which case, column had better be defined so it can be used\n * to filter out the actual groups and items to display on the column.\n */\n menuDefinition: Localized;\n\n commandHandler: CommandHandler;\n\n /**\n * Additional action to perform when any menu item is clicked. Allows the caller to handle event\n * (e.g., to close the menu).\n */\n onClick?: (event: MouseEvent) => void;\n};\n\nexport type MenuItemListProps = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type MenuItemProps = Omit &\n PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n\n onClick: (event: MouseEvent) => void;\n }>;\n\ntype MenuItemInfo = (Command | SubMenu) & {\n /**\n * If specified, menu item will be inset if it does not have a leading icon.\n *\n * @default true\n */\n allowForLeadingIcons?: boolean;\n /**\n * If specified, the path to the icon image to display on the leading side of the menu text.\n *\n * @default undefined (no leading icon will be shown)\n */\n iconPathBefore?: string;\n /**\n * If specified, the path to the icon image to display on the trailing side of the menu text.\n *\n * @default undefined (no trailing icon will be shown)\n */\n iconPathAfter?: string;\n /**\n * If true, list item is focused during the first mount\n *\n * @default false\n */\n hasAutoFocus?: boolean;\n\n /** Additional css classes to help with unique styling of the menu item */\n className?: string;\n\n /**\n * If true, the menu item will appear disabled and it will not respond to clicks or mouse hovers.\n *\n * @default false\n */\n isDisabled?: boolean;\n\n /**\n * If true, compact vertical padding designed for keyboard and mouse input is used.\n *\n * @default true\n */\n isDense?: boolean;\n\n /**\n * If true, a right-arrow icon will be displayed (iconPathAfter, if specified, will be ignored).\n *\n * @default false\n */\n isSubMenuParent?: boolean;\n\n /**\n * If true, the left and right padding is removed\n *\n * @default false\n */\n hasDisabledGutters?: boolean;\n\n /**\n * If true, a 1px light border is added to bottom of menu item\n *\n * @default false\n */\n hasDivider?: boolean;\n\n /** Help identify which element has keyboard focus */\n focusVisibleClassName?: string;\n\n /** If it's a submenu, it should have the items property */\n items?: MenuItemInfo[];\n};\n\nfunction getIcon(icon: string | undefined, menuLabel: string, leading: boolean) {\n return icon ? (\n \n {`${leading\n \n ) : undefined;\n}\n\nexport default function MenuItem(props: MenuItemProps) {\n const {\n onClick,\n label,\n tooltip,\n allowForLeadingIcons = true,\n iconPathBefore = undefined,\n iconPathAfter = undefined,\n hasAutoFocus = false,\n className,\n isDisabled = false,\n isDense = true,\n isSubMenuParent = false,\n hasDisabledGutters = false,\n hasDivider = false,\n focusVisibleClassName,\n id,\n children,\n } = props;\n\n const menuItem = (\n \n {label ? (\n <>\n {getIcon(iconPathBefore, label, true)}\n \n {isSubMenuParent ? (\n \n \n \n ) : (\n getIcon(iconPathAfter, label, false)\n )}\n \n ) : (\n children\n )}\n \n );\n\n return tooltip ? (\n \n
{menuItem}
\n
\n ) : (\n menuItem\n );\n}\n","import MenuItem, {\n MenuItemListProps,\n MenuItemProps,\n MenuPropsBase,\n} from '@/components/mui/menu-item.component';\nimport { Menu } from '@mui/material';\nimport {\n Localized,\n MenuGroupDetailsInSubMenu,\n MenuItemContainingCommand,\n MenuItemContainingSubmenu,\n OrderedExtensibleContainer,\n ReferencedItem,\n SingleColumnMenu,\n} from 'platform-bible-utils';\nimport { MouseEvent, useMemo, useState } from 'react';\n\n/**\n * All the exported types in this file should be regarded as \"internal\" (i.e., they should not be\n * exposed via index.ts).\n */\n\nexport type GroupedMenuPropsBase = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type GroupedMenuItemListProps = MenuItemListProps & {\n /**\n * If the menuDefinition includes \"top-level\" groups (i.e., those that belong to a column as\n * opposed to those that belong to a submenu) that should not be included in the list, then this\n * array specifies which groups to include. Likewise, for a submenu, this list indicates which\n * groups are pertinent for that submenu. So then for a context menu this property need not be\n * specified since it is a top-level menu based on a \"true\" SingleColumnMenu (i.e., one that is\n * not a MultiColumnMenu).\n */\n includedGroups?: {\n id: string;\n group: Localized;\n }[];\n};\n\ninterface ItemInfo {\n item: Localized;\n isLastItemInGroup: boolean;\n}\n\ntype SubMenuProps = MenuPropsBase & {\n parentMenuItem: Localized;\n parentItemProps: Omit, 'iconPathAfter'>;\n};\n\nfunction getAllGroups(menuDefinition: Localized) {\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n return groupEntries.map(([key, value]) => ({ id: key, group: value }));\n}\n\nfunction SubMenu(props: SubMenuProps) {\n const [anchorEl, setAnchorEl] = useState(undefined);\n\n const { parentMenuItem, parentItemProps, menuDefinition } = props;\n\n const handleParentMenuItemClick = (event: MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(undefined);\n };\n\n const renderSubMenuItems = () => {\n let includedGroups = getAllGroups(menuDefinition).filter((g) => 'menuItem' in g.group);\n\n // Ensure valid parent menu was provided. (If not, submenu will contain all groups!)\n if (!parentMenuItem?.id) throw new Error('A valid parent menu item is required for submenus.');\n\n // When laying out a submenu, only include groups associated with the provided parent menu.\n // Note: without the (annoying) redundant check that the included groups\n // have the menuItem field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (group) => 'menuItem' in group.group && group.group.menuItem === parentMenuItem.id,\n );\n\n return ;\n };\n\n return (\n <>\n \n \n {renderSubMenuItems()}\n \n \n );\n}\n\nconst getOrderedGroupItems = (\n groupId: string,\n allItems: Localized[],\n) => {\n // Filter items that belong to the specified group\n const itemsForGroup = allItems.filter((item) => item.group === groupId);\n // Sort items based on order\n const sortedItems = itemsForGroup.sort((a, b) => (a.order || 0) - (b.order || 0));\n return sortedItems;\n};\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. It is used to generate and lay out the MenuItems that appear either on a\n * top-level menu (in a GridMenu or ContextMenu) or in a submenu.\n */\nexport default function GroupedMenuItemList(menuProps: GroupedMenuItemListProps) {\n const { menuDefinition, onClick, commandHandler, includedGroups } = menuProps;\n\n const { items, allowForLeadingIcons } = useMemo(() => {\n const groupsToInclude =\n includedGroups && includedGroups.length > 0\n ? includedGroups\n : // We're apparently laying out a single-column menu (presumably a context menu). In this\n // case, all groups should be included except ones that belong to a submenu.\n getAllGroups(menuDefinition).filter((g) => !('menuItem' in g.group));\n\n const sortedGroups = Object.values(groupsToInclude).sort(\n (a, b) => (a.group.order || 0) - (b.group.order || 0),\n );\n\n const itemArray: ItemInfo[] = [];\n\n sortedGroups.forEach((group) => {\n getOrderedGroupItems(group.id, menuDefinition.items).forEach((item) =>\n itemArray.push({ item, isLastItemInGroup: false }),\n );\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = true;\n });\n\n // No divider after last item in final group.\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = false;\n\n const allowSpaceForLeadingIcons = itemArray.some(\n (i) => 'iconPathBefore' in i.item && i.item.iconPathBefore,\n );\n\n return { items: itemArray, allowForLeadingIcons: allowSpaceForLeadingIcons };\n }, [includedGroups, menuDefinition]);\n\n // Create props for MenuItem component including setting hasDivider for the last item in a group\n const createMenuItemProps = ({ item, isLastItemInGroup }: ItemInfo) => {\n const menuItemProps = {\n className: 'papi-menu-item',\n label: item.label,\n tooltip: item.tooltip,\n iconPathBefore: 'iconPathBefore' in item ? item.iconPathBefore : undefined,\n iconPathAfter: 'iconPathAfter' in item ? item.iconPathAfter : undefined,\n hasDivider: isLastItemInGroup, // Set hasDivider to true for the last item in a group\n allowForLeadingIcons,\n };\n\n return menuItemProps;\n };\n\n const [firstItem] = items;\n\n if (!firstItem) return
;\n\n const divKey = firstItem.item.group;\n\n return (\n
\n {items.map((itemInfo, index) => {\n const { item } = itemInfo;\n const menuItemProps = createMenuItemProps(itemInfo);\n if ('command' in item) {\n const key = item.group + index;\n return (\n ) => {\n onClick?.(event);\n commandHandler(item);\n }}\n {...menuItemProps}\n />\n );\n }\n return (\n \n );\n })}\n
\n );\n}\n","import GroupedMenuItemList from '@/components/mui/grouped-menu-item-list.component';\nimport { MenuItemListProps } from '@/components/mui/menu-item.component';\nimport { MultiColumnMenu } from 'platform-bible-utils';\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. Use either GridMenu or ContextMenu.\n */\nexport default function TopLevelMenu(props: MenuItemListProps) {\n const { menuDefinition, columnId } = props;\n\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n const groups = groupEntries.map(([key, value]) => ({ id: key, group: value }));\n let includedGroups = groups.filter((g) => 'column' in g.group);\n\n // Check if column is provided and menuDefinition is a MultiColumnMenu\n if (\n columnId &&\n 'columns' in menuDefinition &&\n // Without this type assertion, TS doesn't know what columns is.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n (menuDefinition as MultiColumnMenu).columns[columnId]\n ) {\n // When laying out a single column in a MultiColumnMenu, only include groups associated with\n // the provided column. Note: without the (annoying) redundant check that the included groups\n // have the colum field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (g) => 'column' in g.group && g.group.column === columnId,\n );\n }\n\n return ;\n}\n","import '@/components/mui/grid-menu.component.css';\nimport { GroupedMenuPropsBase } from '@/components/mui/grouped-menu-item-list.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport TopLevelMenu from '@/components/mui/top-level-menu.component';\nimport { Grid, List } from '@mui/material';\nimport {\n Localized,\n MenuColumnWithHeader,\n MultiColumnMenu,\n ReferencedItem,\n} from 'platform-bible-utils';\nimport { useMemo } from 'react';\n\ntype ColumnInfo = {\n /*\n * The ID (`${string}.${string}`) of a specific menu column.\n */\n id: ReferencedItem;\n\n /*\n * Metadata (label, order, etc.) for a specific menu column.\n */\n metadata: Localized;\n};\n\ntype MenuColumnProps = ColumnInfo &\n GroupedMenuPropsBase & {\n /** Additional css classes to help with unique styling of the menu column */\n className?: string;\n };\n\nexport type GridMenuInfo = {\n /** The menu object containing information about the columns, groups, and items to display. */\n multiColumnMenu: Localized;\n};\n\nexport type GridMenuProps = GridMenuInfo & {\n /** Optional unique identifier */\n id?: string;\n\n commandHandler: CommandHandler;\n\n /** Additional css classes to help with unique styling of the grid menu */\n className?: string;\n};\n\nfunction MenuColumn({\n commandHandler,\n menuDefinition,\n id,\n metadata,\n onClick,\n className,\n}: MenuColumnProps) {\n return (\n \n

\n {metadata.label}\n

\n {/* It would seem as though this List component were unnecessary, since it only contains one\n thing, but the \"dense\" property does affect the layout of the items (in a way I don't fully\n understand). There might be a better way. */}\n \n \n \n \n );\n}\n\nexport default function GridMenu({\n commandHandler,\n className,\n multiColumnMenu,\n id,\n}: GridMenuProps) {\n const { columns } = multiColumnMenu;\n\n const sortedColumns = useMemo(() => {\n const columnNumbers = new Map();\n Object.getOwnPropertyNames(columns).forEach((columnName: string) => {\n // We know for sure there is a (boolean) property 'isExtensible' that we are not interested in.\n if (columnName === 'isExtensible') return;\n // TS doesn't allow `columnName` above to be a ReferencedItem even though the type says it is\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const columnId = columnName as ReferencedItem;\n const column = columns[columnId];\n // As of right now (and hopefully forever after), all remaining properties of the\n // ColumnsWithHeaders object are columns whose property names are the IDs of the columns.\n // This is an additional (redundant) sanity check. Specifically we're interested in\n // MenuColumnWithHeader objects, which TypeScript now \"knows\" we have, but at runtime all we\n // can check for is that it's an object with a valid numeric order field. That's likely good\n // enough.\n if (\n typeof column === 'object' &&\n typeof column.order === 'number' &&\n !Number.isNaN(column.order)\n )\n columnNumbers.set(column.order, { id: columnId, metadata: column });\n else\n console.warn(\n `Property ${columnName} (${typeof column}) on menu ${id} is not a valid column and is being ignored. This might indicate data corruption`,\n );\n });\n\n // Extract values and sort them based on the 'order' property\n return Array.from(columnNumbers.values()).sort((a, b) => {\n return (a.metadata.order || 0) - (b.metadata.order || 0);\n });\n }, [columns, id]);\n\n // We might need something like this if we need to be able to prevent empty columns\n // sortedColumns.filter((c) => multiColumnMenu.groups.some((g) => 'column' in g && (g as .column)...\n\n return (\n \n {sortedColumns.map((col, index) => (\n \n ))}\n \n );\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport type UsePromiseOptions = {\n /**\n * Whether to leave the value as the most recent resolved promise value or set it back to\n * defaultValue while running the promise again. Defaults to true\n */\n preserveValue?: boolean;\n};\n\n/** Set up defaults for options for usePromise hook */\nfunction getUsePromiseOptionsDefaults(options: UsePromiseOptions): UsePromiseOptions {\n return {\n preserveValue: true,\n ...options,\n };\n}\n\n/**\n * Awaits a promise and returns a loading value while the promise is unresolved\n *\n * @param promiseFactoryCallback A function that returns the promise to await. If this callback is\n * undefined, the current value will be returned (defaultValue unless it was previously changed\n * and `options.preserveValue` is true), and there will be no loading.\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n * @param defaultValue The initial value to return while first awaiting the promise. If\n * `options.preserveValue` is false, this value is also shown while awaiting the promise on\n * subsequent calls.\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. This means that, if the `promiseFactoryCallback` changes and\n * `options.preserveValue` is `false`, the returned value will be set to the current\n * `defaultValue`. However, the returned value will not be updated if`defaultValue` changes.\n * @param options Various options for adjusting how this hook runs the `promiseFactoryCallback`\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. However, the latest `options.preserveValue` will always be used\n * appropriately to determine whether to preserve the returned value when changing the\n * `promiseFactoryCallback`\n * @returns `[value, isLoading]`\n *\n * - `value`: the current value for the promise, either the defaultValue or the resolved promise value\n * - `isLoading`: whether the promise is waiting to be resolved\n */\nconst usePromise = (\n promiseFactoryCallback: (() => Promise) | undefined,\n defaultValue: T,\n options: UsePromiseOptions = {},\n): [value: T, isLoading: boolean] => {\n // Use defaultValue as a ref so it doesn't update dependency arrays\n const defaultValueRef = useRef(defaultValue);\n defaultValueRef.current = defaultValue;\n // Use options as a ref so it doesn't update dependency arrays\n const optionsDefaultedRef = useRef(options);\n optionsDefaultedRef.current = getUsePromiseOptionsDefaults(optionsDefaultedRef.current);\n\n const [value, setValue] = useState(() => defaultValueRef.current);\n const [isLoading, setIsLoading] = useState(true);\n useEffect(() => {\n let promiseIsCurrent = true;\n // If a promiseFactoryCallback was provided, we are loading. Otherwise, there is no loading to do\n setIsLoading(!!promiseFactoryCallback);\n (async () => {\n // If there is a callback to run, run it\n if (promiseFactoryCallback) {\n const result = await promiseFactoryCallback();\n // If the promise was not already replaced, update the value\n if (promiseIsCurrent) {\n setValue(() => result);\n setIsLoading(false);\n }\n }\n })();\n\n return () => {\n // Mark this promise as old and not to be used\n promiseIsCurrent = false;\n if (!optionsDefaultedRef.current.preserveValue) setValue(() => defaultValueRef.current);\n };\n }, [promiseFactoryCallback]);\n\n return [value, isLoading];\n};\nexport default usePromise;\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","import GridMenu from '@/components/mui/grid-menu.component';\nimport { Command, CommandHandler } from '@/components/mui/menu-item.component';\nimport usePromise from '@/hooks/use-promise.hook';\nimport { Menu as MenuIcon } from '@mui/icons-material';\nimport { Drawer, IconButton } from '@mui/material';\nimport { Localized, MultiColumnMenu } from 'platform-bible-utils';\nimport {\n MouseEvent,\n MutableRefObject,\n PropsWithChildren,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nexport interface MultiColumnMenuProvider {\n (isSupportAndDevelopment: boolean): Promise>;\n}\n\nexport type HamburgerMenuButtonProps = PropsWithChildren & {\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * Optional reference to the \"div\" container that determines the where the menu should appear. If\n * not defined, then (1,1) used.\n */\n containerRef?: MutableRefObject;\n\n /**\n * The delegate to use to get the menu data. If not specified or if it returns undefined, the data\n * in normalMenu or fullMenu property will be used.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /**\n * The menu data to show when the menu is opened if the menuProvider property is not defined.\n * (This allows for a default or test-only static menu to be used.)\n */\n normalMenu?: Localized;\n\n /**\n * The menu data to show for \"full\" menu (when opened with the SHIFT key pressed) if the\n * menuProvider property is not defined. (This allows for a default or test-only static menu to be\n * used.)\n */\n fullMenu?: Localized;\n\n /** Additional css class(es) to help with unique styling of the sub-components */\n className?: string;\n\n /** Value to use as prefix for ARIA labels on interactive sub-components */\n ariaLabelPrefix?: string;\n};\n\nexport default function HamburgerMenuButton({\n menuProvider,\n normalMenu,\n fullMenu,\n commandHandler,\n containerRef,\n className,\n ariaLabelPrefix,\n children,\n}: HamburgerMenuButtonProps) {\n const [isMenuOpen, setMenuOpen] = useState(false);\n const [showFullMenu, setShowFullMenu] = useState(false);\n\n const handleMenuItemClick = useCallback(() => {\n if (isMenuOpen) setMenuOpen(false);\n setShowFullMenu(false);\n }, [isMenuOpen]);\n\n const handleMenuButtonClick = useCallback((e: MouseEvent) => {\n e.stopPropagation();\n setMenuOpen((prevIsOpen) => {\n const isOpening = !prevIsOpen;\n if (isOpening && e.shiftKey) setShowFullMenu(true);\n else if (!isOpening) setShowFullMenu(false);\n return isOpening;\n });\n }, []);\n\n const menuCommandHandler = useCallback(\n (command: Command) => {\n handleMenuItemClick();\n return commandHandler(command);\n },\n [commandHandler, handleMenuItemClick],\n );\n\n const [offset, setOffset] = useState({ top: 1, left: 1 });\n\n useEffect(() => {\n if (isMenuOpen) {\n const node = containerRef?.current;\n if (node) {\n const rect = node.getBoundingClientRect();\n const scrollTop = window.scrollY;\n const scrollLeft = window.scrollX;\n const top = rect.top + scrollTop + node.clientHeight;\n const left = rect.left + scrollLeft;\n setOffset({ top, left });\n }\n }\n }, [isMenuOpen, containerRef]);\n\n const [normalMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(false) ?? normalMenu;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, normalMenu, isMenuOpen]),\n normalMenu,\n );\n\n const [fullMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(true) ?? fullMenu ?? normalMenuData;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, fullMenu, normalMenuData, isMenuOpen]),\n fullMenu ?? normalMenuData,\n );\n\n const menu = showFullMenu && fullMenuData ? fullMenuData : normalMenuData;\n\n return (\n <>\n \n {children ?? }\n \n \n {menu ? (\n \n ) : undefined}\n \n \n );\n}\n","import '@/components/mui/icon-button.component.css';\nimport { IconButton as MuiIconButton } from '@mui/material';\nimport { MouseEventHandler, PropsWithChildren } from 'react';\n\nexport type IconButtonProps = PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n /**\n * Required. Used as both the tooltip (aka, title) and the aria-label (used for accessibility,\n * testing, etc.), unless a distinct tooltip is supplied.\n */\n label: string;\n /**\n * Enabled status of button\n *\n * @default false\n */\n isDisabled?: boolean;\n /** Optional tooltip to display if different from the aria-label. */\n tooltip?: string;\n /** If true, no tooltip will be displayed. */\n isTooltipSuppressed?: boolean;\n /**\n * If given, uses a negative margin to counteract the padding on one side (this is often helpful\n * for aligning the left or right side of the icon with content above or below, without ruining\n * the border size and shape).\n *\n * @default false\n */\n adjustMarginToAlignToEdge?: 'end' | 'start' | false;\n /**\n * The size of the component. small is equivalent to the dense button styling.\n *\n * @default false\n */\n size: 'small' | 'medium' | 'large';\n /** Additional css classes to help with unique styling of the button */\n className?: string;\n /** Optional click handler */\n onClick?: MouseEventHandler;\n}>;\n\n/**\n * Iconic button a user can click to do something\n *\n * Thanks to MUI for heavy inspiration and documentation\n * https://mui.com/material-ui/getting-started/overview/\n */\nfunction IconButton({\n id,\n label,\n isDisabled = false,\n tooltip,\n isTooltipSuppressed = false,\n adjustMarginToAlignToEdge = false,\n size = 'medium',\n className,\n onClick,\n children,\n}: IconButtonProps) {\n return (\n \n {children /* the icon to display */}\n \n );\n}\n\nexport default IconButton;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { LoaderCircle, LucideProps } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nexport type SpinnerProps = LucideProps;\n\nconst Spinner = forwardRef(({ className, ...props }, ref) => {\n return (\n \n );\n});\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","import { Input as ShadInput } from '@/components/shadcn-ui/input';\nimport { Label as ShadLabel } from '@/components/shadcn-ui/label';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { ChangeEventHandler, FocusEventHandler } from 'react';\n\nexport type TextFieldProps = {\n /** Optional unique identifier */\n id?: string;\n /**\n * If `true`, the component is disabled.\n *\n * @default false\n */\n isDisabled?: boolean;\n /**\n * If `true`, the label is displayed in an error state.\n *\n * @default false\n */\n hasError?: boolean;\n /**\n * If `true`, the input will take up the full width of its container.\n *\n * @default false\n */\n isFullWidth?: boolean;\n /** Text that gives the user instructions on what contents the TextField expects */\n helperText?: string;\n /** The title of the TextField */\n label?: string;\n /** The short hint displayed in the `input` before the user enters a value. */\n placeholder?: string;\n /**\n * If `true`, the label is displayed as required and the `input` element is required.\n *\n * @default false\n */\n isRequired?: boolean;\n /** Additional css classes to help with unique styling of the text field */\n className?: string;\n /** Starting value for the text field if it is not controlled */\n defaultValue?: string | number;\n /** Value of the text field if controlled */\n value?: string | number;\n /** Triggers when content of textfield is changed */\n onChange?: ChangeEventHandler;\n /** Triggers when textfield gets focus */\n onFocus?: FocusEventHandler;\n /** Triggers when textfield loses focus */\n onBlur?: FocusEventHandler;\n};\n\n/**\n * Text input field\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/input#with-label\n */\nfunction TextField({\n id,\n isDisabled = false,\n hasError = false,\n isFullWidth = false,\n helperText,\n label,\n placeholder,\n isRequired = false,\n className,\n defaultValue,\n value,\n onChange,\n onFocus,\n onBlur,\n}: TextFieldProps) {\n return (\n
\n {`${label}${isRequired ? '*' : ''}`}\n \n

{helperText}

\n
\n );\n}\n\nexport default TextField;\n","import HamburgerMenuButton, {\n MultiColumnMenuProvider,\n} from '@/components/mui/hamburger-menu-button.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport '@/components/mui/toolbar.component.css';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { AppBar, Toolbar as MuiToolbar } from '@mui/material';\nimport { PropsWithChildren, useRef } from 'react';\n\nexport type ToolbarProps = PropsWithChildren<{\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * The optional delegate to use to get the menu data. If not specified, the \"hamburger\" menu will\n * not display.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /** Optional unique identifier */\n id?: string;\n\n /** Additional css classes to help with unique styling of the toolbar */\n className?: string;\n}>;\n\nexport default function Toolbar({\n menuProvider,\n commandHandler,\n className,\n id,\n children,\n}: ToolbarProps) {\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const containerRef = useRef(undefined!);\n\n return (\n
\n \n \n {menuProvider ? (\n \n ) : undefined}\n {children ?
{children}
: undefined}\n \n
\n
\n );\n}\n","import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst alertVariants = cva(\n 'tw-relative tw-w-full tw-rounded-lg tw-border tw-p-4 [&>svg~*]:tw-pl-7 [&>svg+div]:tw-translate-y-[-3px] [&>svg]:tw-absolute [&>svg]:tw-left-4 [&>svg]:tw-top-4 [&>svg]:tw-text-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-background tw-text-foreground',\n destructive:\n 'tw-border-destructive/50 tw-text-destructive dark:tw-border-destructive [&>svg]:tw-text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n
\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}{' '}\n \n ),\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertTitle, AlertDescription };\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Card = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}\n \n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n

\n));\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef>(\n ({ className, ...props }, ref) => (\n

\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { ComponentProps } from 'react';\nimport { toast as sonner, Toaster } from 'sonner';\n\ntype SonnerProps = ComponentProps;\n\nfunction Sonner({ ...props }: SonnerProps) {\n return (\n \n );\n}\n\n// The re-export of the sonner function was added manually\nexport { Sonner, sonner };\n","import React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Slider = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n \n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsTriggerProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsContentProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport const TabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef,\n TabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Download } from 'lucide-react';\n\ntype InstallButtonProps = {\n /** The installing boolean value determines the state of the button. */\n isInstalling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n /** Optional text for the button. */\n buttonText?: string;\n} & ButtonProps;\n\n/**\n * The InstallButton component is a button designed for initiating installs. It includes visuals for\n * active installing and idle states.\n *\n * @param isInstalling The installing boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @param buttonText Optional text for the button.\n * @returns A install button.\n */\nexport default function InstallButton({\n isInstalling,\n handleClick,\n buttonText,\n className,\n ...props\n}: InstallButtonProps) {\n return (\n \n {isInstalling ? (\n \n ) : (\n <>\n \n {buttonText}\n \n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype EnableButtonProps = {\n /** The enabling boolean value determines the state of the button. */\n isEnabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The EnableButton component is a button designed for initiating enabling of downloads. It includes\n * visuals for active enabling and idle states.\n *\n * @param isEnabling The enabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to enable.\n */\nexport default function EnableButton({\n isEnabling,\n handleClick,\n className,\n ...props\n}: EnableButtonProps) {\n return (\n \n {isEnabling ? (\n <>\n \n Enabling...\n \n ) : (\n 'Enable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype DisableButtonProps = {\n /** The disabling boolean value determines the state of the button. */\n isDisabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The DisableButton component is a button designed for initiating disabling of downloads. It\n * includes visuals for active disabling and idle states.\n *\n * @param isDisabling The disabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to disable.\n */\nexport default function DisableButton({\n isDisabling,\n handleClick,\n className,\n ...props\n}: DisableButtonProps) {\n return (\n \n {isDisabling ? (\n <>\n \n Disabling...\n \n ) : (\n 'Disable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype UpdateButtonProps = {\n /** The updating boolean value determines the state of the button. */\n isUpdating: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The UpdateButton component is a button designed for initiating updates for downloaded extensions.\n * It includes visuals for active updating and idle states.\n *\n * @param isUpdating The updating boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to update.\n */\nexport default function UpdateButton({\n isUpdating,\n handleClick,\n className,\n ...props\n}: UpdateButtonProps) {\n return (\n \n {isUpdating ? (\n <>\n \n Updating...\n \n ) : (\n 'Update'\n )}\n \n );\n}\n","import { cn } from '@/utils/shadcn-ui.util';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useMemo } from 'react';\n\ninterface MarkdownRendererProps {\n /** Optional unique identifier */\n id?: string;\n /** The markdown string to render */\n markdown: string;\n className?: string;\n /**\n * The [`target` attribute for `a` html\n * tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target). Defaults to not\n * adding a `target` to `a` tags\n */\n anchorTarget?: string;\n}\n\n/**\n * This component renders markdown content given a markdown string. It uses typography styles from\n * the platform.\n *\n * @param markdown The markdown string to render.\n * @param id Optional unique identifier\n * @returns A div containing the rendered markdown content.\n */\nexport default function MarkdownRenderer({\n id,\n markdown,\n className,\n anchorTarget,\n}: MarkdownRendererProps) {\n const options: MarkdownToJSX.Options = useMemo(\n () => ({\n overrides: {\n a: {\n props: {\n target: anchorTarget,\n },\n },\n },\n }),\n [anchorTarget],\n );\n return (\n
\n {markdown}\n
\n );\n}\n","import { Filter, ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport { Button } from '@/components/shadcn-ui/button';\n\n/**\n * The FilterButton component is a button designed for initiating filtering of data. It is designed\n * to be used with the dropdown menu. It uses forwardRef to pass the button to the dropdown trigger\n * asChild.\n *\n * @returns A button that can be used to filter.\n */\nconst FilterButton = forwardRef((props, ref) => {\n return (\n \n \n Filter\n \n \n );\n});\n\nexport default FilterButton;\n","import {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuGroup,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport FilterButton from './buttons/filter-button.component';\n\nexport enum DropdownMenuItemType {\n Check,\n Radio,\n}\n\nexport type DropdownItem = {\n /** The label is the text that will be displayed on the dropdown item. */\n label: string;\n /** The itemType determines the DropdownMenuItemType type as either Check or Radio. */\n itemType: DropdownMenuItemType;\n /** The onClick function is called when the item is clicked. */\n onClick: () => void;\n};\n\nexport type DropdownGroup = {\n /**\n * The label is the text that will be displayed on the dropdown group. It is used to categorize\n * the items in the group.\n */\n label: string;\n /** The items array contains the items that will be displayed in the dropdown group */\n items: DropdownItem[];\n};\n\nexport type FilterDropdownProps = {\n /** Object unique identifier */\n id?: string;\n /** The groups array contains the groups that will be displayed in the dropdown */\n groups: DropdownGroup[];\n}; // TODO: extend the props later\n\n/**\n * The FilterDropdown component is a dropdown designed for filtering content. It includes groups of\n * items that can be checkboxes or radio items.\n *\n * @param id Optional unique identifier\n * @param groups The groups array contains the groups that will be displayed in the dropdown\n * @returns A filter dropdown.\n */\nexport default function FilterDropdown({ id, groups }: FilterDropdownProps) {\n return (\n
\n {/* TODO: remove this once the DropDown Menu shadcn has an id prop */}\n \n \n \n \n \n {groups.map((group) => (\n
\n {group.label}\n \n {group.items.map((item) => (\n
\n {item.itemType === DropdownMenuItemType.Check ? (\n \n {item.label}\n \n ) : (\n \n {item.label}\n \n )}\n
\n ))}\n
\n \n
\n ))}\n
\n
\n
\n );\n}\n","interface NoExtensionsFoundProps {\n /** Optional unique identifier */\n id?: string;\n /** The message to display */\n message: string;\n}\n/**\n * This component displays a message to the user when no extensions are found in the marketplace.\n *\n * @param id Optional unique identifier\n * @param message The message to display.\n * @returns {JSX.Element} - Returns the message component that displays the message to the user.\n */\nexport default function NoExtensionsFound({ id, message }: NoExtensionsFoundProps) {\n return (\n
\n
\n

{message}

\n
\n
\n );\n}\n","import { CircleHelp, Link as LucideLink, User } from 'lucide-react';\nimport { NumberFormat } from 'platform-bible-utils';\n\n/** Interface that stores the parameters passed to the More Info component */\ninterface MoreInfoProps {\n /** Optional unique identifier */\n id?: string;\n /** The category of the extension */\n category: string;\n /** The number of downloads for the extension */\n downloads: Record;\n /** The languages supported by the extension */\n languages: string[];\n /** The URL to the more info page of the extension */\n moreInfoUrl: string;\n}\n/**\n * This component displays the more info section of the extension which includes the category,\n * number of downloads, languages, and links to the website and support\n *\n * @param id Optional unique identifier\n * @param category The category of the extension\n * @param downloads The number of downloads for the extension\n * @param languages The languages supported by the extension\n * @param moreInfoUrl The URL to the more info page of the extension\n * @returns {JSX.Element} - Returns the more info component that displays the category, number of\n * downloads, languages, and links to the website and support\n */\nexport default function MoreInfo({\n id,\n category,\n downloads,\n languages,\n moreInfoUrl,\n}: MoreInfoProps) {\n /**\n * This constant formats the number of downloads into a more readable format.\n *\n * @example 1000 -> 1K\n *\n * @example 1000000 -> 1M\n *\n * @returns The formatted number of downloads\n */\n const numberFormatted = new NumberFormat('en', {\n notation: 'compact',\n compactDisplay: 'short',\n }).format(Object.values(downloads).reduce((a: number, b: number) => a + b, 0));\n\n /** This function scrolls the window to the bottom of the page. */\n const handleScrollToBottom = () => {\n window.scrollTo(0, document.body.scrollHeight);\n };\n\n return (\n \n
\n
\n {category}\n
\n CATEGORY\n
\n
\n
\n
\n \n {numberFormatted}\n
\n USERS\n
\n
\n
\n
\n {languages.slice(0, 3).map((locale) => (\n \n {locale.toUpperCase()}\n \n ))}\n
\n {languages.length > 3 && (\n handleScrollToBottom()}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n +{languages.length - 3} more languages\n \n )}\n
\n
\n
\n \n Website\n \n \n \n Support\n \n \n
\n
\n );\n}\n","import { useState } from 'react';\n\nexport type VersionInformation = {\n /** Date the version was published */\n date: string;\n /** Description of the changes in the version */\n description: string;\n};\n\n/** Type to store the version history information */\nexport type VersionHistoryType = Record;\n\n/** Interface that stores the parameters passed to the Version History component */\ninterface VersionHistoryProps {\n /** Optional unique identifier */\n id?: string;\n /** Object containing the versions mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the version history information shown in the footer component. Lists the 5\n * most recent versions, with the options to show all versions by pressing a button.\n *\n * @param versionHistory Object containing the versions mapped with their information\n * @param id Optional unique identifier\n * @returns Rendered version history for the Footer component\n */\nexport default function VersionHistory({ id, versionHistory }: VersionHistoryProps) {\n const [showAllVersions, setShowAllVersions] = useState(false);\n const currentDate = new Date();\n\n /**\n * Function to format the time string for the version history in the form of 'X year(s) ago'.\n *\n * @param dateString ISO Date string to determine the time string from\n * @returns Formatted time string\n */\n function formatTimeString(dateString: string) {\n const date = new Date(dateString);\n const dateDiff = new Date(currentDate.getTime() - date.getTime());\n const yearDiff = dateDiff.getUTCFullYear() - 1970;\n const monthDiff = dateDiff.getUTCMonth();\n const dayDiff = dateDiff.getUTCDate() - 1;\n\n // Determines how long ago the version was published\n let timeString = '';\n if (yearDiff > 0) {\n timeString = `${yearDiff.toString()} year${yearDiff === 1 ? '' : 's'} ago`;\n } else if (monthDiff > 0) {\n timeString = `${monthDiff.toString()} month${monthDiff === 1 ? '' : 's'} ago`;\n } else if (dayDiff === 0) {\n timeString = 'today';\n } else {\n timeString = `${dayDiff.toString()} day${dayDiff === 1 ? '' : 's'} ago`;\n }\n\n return timeString;\n }\n\n // Sorts the version history by version number\n const sortedEntries = Object.entries(versionHistory).sort((a, b) => b[0].localeCompare(a[0]));\n\n return (\n
\n

What`s New

\n
    \n {(showAllVersions ? sortedEntries : sortedEntries.slice(0, 5)).map((entry) => (\n
    \n
    \n
  • \n {entry[1].description}\n
  • \n
    \n
    \n
    Version {entry[0]}
    \n
    {formatTimeString(entry[1].date)}
    \n
    \n
    \n ))}\n
\n {sortedEntries.length > 5 && (\n setShowAllVersions(!showAllVersions)}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n {showAllVersions ? 'Show Less Version History' : 'Show All Version History'}\n \n )}\n
\n );\n}\n","import { useMemo } from 'react';\nimport { formatBytes } from 'platform-bible-utils';\nimport VersionHistory, { VersionHistoryType } from './version-history.component';\n\n/** Interface to store the parameters passed to the Footer component */\ninterface FooterProps {\n /** Optional unique identifier */\n id?: string;\n /** Name of the publisher */\n publisherDisplayName: string;\n /** Size of the extension file in bytes */\n fileSize: number;\n /** List of language codes supported by the extension */\n locales: string[];\n /** Object containing the version history mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the footer for the extension details which contains information on the\n * publisher, version history, languages, and file size.\n *\n * @param id Optional unique identifier\n * @param publisherDisplayName Name of the publisher\n * @param fileSize Size of the extension file in bytes\n * @param locales List of language codes supported by the extension\n * @param versionHistory Object containing the version history mapped with their information\n * @returns The rendered Footer component\n */\nexport default function Footer({\n id,\n publisherDisplayName,\n fileSize,\n locales,\n versionHistory,\n}: FooterProps) {\n /** Formats the file size into a human-readable format */\n const formattedFileSize = useMemo(() => formatBytes(fileSize), [fileSize]);\n\n /**\n * This function gets the display names of the languages based on the language codes.\n *\n * @param codes The list of language codes\n * @returns The list of language names\n */\n const getLanguageNames = (codes: string[]) => {\n const displayNames = new Intl.DisplayNames(navigator.language, { type: 'language' });\n return codes.map((code) => displayNames.of(code));\n };\n\n const languageNames = getLanguageNames(locales);\n\n return (\n
\n
\n \n
\n
\n

Information

\n
\n

\n Publisher\n {publisherDisplayName}\n Size\n {formattedFileSize}\n

\n
\n

\n Languages\n {languageNames.join(', ')}\n

\n
\n
\n
\n
\n
\n );\n}\n","import { PlatformEvent, PlatformEventHandler } from 'platform-bible-utils';\nimport { useEffect } from 'react';\n\n/**\n * Adds an event handler to an event so the event handler runs when the event is emitted. Use\n * `papi.network.getNetworkEvent` to use a networked event with this hook.\n *\n * @param event The event to subscribe to.\n *\n * - If event is a `PlatformEvent`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEvent = (\n event: PlatformEvent | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n useEffect(() => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return () => {};\n\n const unsubscriber = event(eventHandler);\n return () => {\n unsubscriber();\n };\n }, [event, eventHandler]);\n};\nexport default useEvent;\n","import { useCallback, useEffect } from 'react';\nimport { PlatformEvent, PlatformEventAsync, PlatformEventHandler } from 'platform-bible-utils';\nimport usePromise from './use-promise.hook';\n\nconst noopUnsubscriber = () => false;\n\n/**\n * Adds an event handler to an asynchronously subscribing/unsubscribing event so the event handler\n * runs when the event is emitted. Use `papi.network.getNetworkEvent` to use a networked event with\n * this hook.\n *\n * @param event The asynchronously (un)subscribing event to subscribe to.\n *\n * - If event is a `PlatformEvent` or `PlatformEventAsync`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEventAsync = (\n event: PlatformEvent | PlatformEventAsync | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n // Subscribe to the event asynchronously\n const [unsubscribe] = usePromise(\n useCallback(async () => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return noopUnsubscriber;\n\n // Wrap subscribe and unsubscribe in promises to allow normal events to be used as well\n const unsub = await Promise.resolve(event(eventHandler));\n return async () => unsub();\n }, [eventHandler, event]),\n noopUnsubscriber,\n // We want the unsubscriber to return to default value immediately upon changing subscription\n // So the useEffect below will unsubscribe asap\n { preserveValue: false },\n );\n\n // Unsubscribe from the event asynchronously (but we aren't awaiting the unsub)\n useEffect(() => {\n return () => {\n if (unsubscribe !== noopUnsubscriber) {\n unsubscribe();\n }\n };\n }, [unsubscribe]);\n};\n\nexport default useEventAsync;\n"],"names":["twMergeCustom","extendTailwindMerge","cn","inputs","clsx","Input","React","className","type","props","ref","jsx","BookChapterInput","forwardRef","handleSearch","handleKeyDown","handleOnClick","handleSubmit","jsxs","ShadInput","event","e","History","P","R","t","s","n","N","B","O","S","K","g","k","x","T","X","V","w","L","G","A","H","C","I","y","q","U","m","l","h","c","E","D","i","a","o","u","v","f","d","b","p","J","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","children","ChevronRight","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","Check","DropdownMenuRadioItem","Circle","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","BookMenuItem","bookId","handleSelectBook","isSelected","handleHighlightBook","bookType","ShadDropdownMenuItem","Canon","ChapterSelect","handleSelectChapter","endChapter","activeChapter","highlightedChapter","handleHighlightedChapter","chapters","_","handleMouse","useCallback","chapterNumber","chapter","GoToMenuItem","handleSort","handleLocationHistory","handleBookmarks","ShadDropdownMenuLabel","ArrowDownWideNarrow","Clock","Bookmark","ALL_BOOK_IDS","BOOK_TYPE_LABELS","BOOK_TYPE_ARRAY","SCROLL_OFFSET","SEARCH_QUERY_FORMATS","fetchGroupedBooks","fetchEndChapter","getChaptersForBook","getAllEnglishNames","isValidBookEnglishName","bookName","getBookIdFromEnglishName","formattedBookName","BookChapterControl","scrRef","searchQuery","setSearchQuery","useState","selectedBookId","setSelectedBookId","setHighlightedChapter","highlightedBookId","setHighlightedBookId","isContentOpen","setIsContentOpen","isContentOpenDelayed","setIsContentOpenDelayed","inputRef","useRef","contentRef","menuItemRef","fetchFilteredBooks","englishNameLowerCase","normalizedQuery","handleSearchInput","searchString","shouldPreventAutoClosing","controlMenuState","open","updateReference","shouldClose","verse","handleInputSubmit","format","matches","book","englishName","handleKeyDownInput","handleKeyDownContent","key","handleKeyDownMenuItem","chapterOffSet","useEffect","useLayoutEffect","scrollTimeout","scrollPosition","ShadDropdownMenu","ShadDropdownMenuTrigger","ShadDropdownMenuContent","bookTypeIndex","element","ShadDropdownMenuSeparator","buttonVariants","cva","Button","variant","size","asChild","Comp","Slot","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","DialogPortal","DialogPrimitive","DialogOverlay","DialogContent","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","getOptionLabelDefault","option","ComboBox","id","options","value","onChange","getOptionLabel","buttonPlaceholder","textPlaceholder","commandEmptyMessage","buttonVariant","dir","isDisabled","setOpen","ChevronsUpDown","ChapterRangeSelector","startChapter","handleSelectStartChapter","handleSelectEndChapter","chapterCount","chapterOptions","useMemo","index","onChangeStartChapter","onChangeEndChapter","Fragment","BookSelectionMode","BOOK_SELECTOR_STRING_KEYS","localizeString","strings","BookSelector","handleBookSelectionModeChange","currentBookName","onSelectBooks","selectedBookIds","localizedStrings","currentBookText","chooseText","chooseBooksText","bookSelectionMode","setBookSelectionMode","onSelectionModeChange","newMode","DataTableViewOptions","table","FilterIcon","column","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","DataTablePagination","pageSize","ArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","ArrowRightIcon","Table","stickyHeader","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTable","columns","data","enablePagination","showPaginationControls","showColumnVisibilityControls","onRowClickHandler","sorting","setSorting","columnFilters","setColumnFilters","columnVisibility","setColumnVisibility","rowSelection","setRowSelection","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","headerGroup","header","flexRender","_a","row","cell","OccurrencesTable","occurrenceData","setScriptureReference","referenceHeaderText","occurrenceHeaderText","occurrences","uniqueOccurrences","occurrence","uniqueOccurrence","deepEqual","Checkbox","CheckboxPrimitive","getLinesFromUSFM","text","getNumberFromUSFM","regex","match","getBookNumFromId","getStatusForItem","item","approvedItems","unapprovedItems","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","context","getSortingIcon","sortDirection","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","inventoryItemColumn","itemLabel","inventoryAdditionalItemColumn","additionalItemLabel","additionalItemIndex","inventoryCountColumn","countLabel","statusChangeHandler","changedItems","newStatus","onApprovedItemsChange","onUnapprovedItemsChange","newApprovedItems","validItem","newUnapprovedItems","unapprovedItem","inventoryStatusColumn","statusLabel","status","CircleCheckIcon","CircleXIcon","CircleHelpIcon","INVENTORY_STRING_KEYS","filterItemData","itemData","statusFilter","textFilter","filteredItemData","createTableData","scriptureRef","itemRegex","tableData","currentBook","currentChapter","currentVerse","line","items","itemIndex","existingItem","tableEntry","newReference","substring","newItem","Inventory","scriptureReference","extractItems","additionalItemsLabels","scope","onScopeChange","allItemsText","approvedItemsText","unapprovedItemsText","unknownItemsText","scopeBookText","scopeChapterText","scopeVerseText","filterText","showAdditionalItemsText","showAdditionalItems","setShowAdditionalItems","setStatusFilter","setTextFilter","selectedItem","setSelectedItem","reducedTableData","newTableData","firstItem","existingEntry","newTableEntry","filteredTableData","allColumns","numberOfAdditionalItems","additionalColumns","_b","rowClickHandler","newSelection","handleScopeChange","handleStatusFilterChange","SearchBar","onSearch","placeholder","isFullWidth","handleInputChange","VerticalTabs","TabsPrimitive","VerticalTabsList","VerticalTabsTrigger","VerticalTabsContent","NavigationContentSearch","tabList","searchPlaceholder","headerTitle","isSearchBarFullWidth","direction","tab","scrBookColId","scrRefColId","typeColId","detailsColId","defaultScrRefColumnName","defaultScrBookGroupName","defaultTypeColumnName","defaultDetailsColumnName","getColumns","colInfo","showSourceColumn","showSrcCol","info","formatScrRef","compareScrRefs","toRefOrRange","scriptureSelection","offsetStart","offsetEnd","scrRefToBBBCCCVVV","getRowKey","ScriptureResultsViewer","sources","showColumnHeaders","scriptureReferenceColumnName","scriptureBookGroupName","typeColumnName","detailsColumnName","onRowSelected","grouping","setGrouping","scriptureResults","source","getExpandedRowModel","getGroupedRowModel","selectedRows","keys","selectedRow","scrBookGroupName","typeGroupName","groupingOptions","handleSelectChange","selectedGrouping","handleRowClick","getEvenOrOddBandingStyle","getIndent","groupingState","rowIndex","ChevronLeft","DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS","getLocalizeKeyForScrollGroupId","ScrollGroupSelector","availableScrollGroupIds","scrollGroupId","onChangeScrollGroupId","localizedStringsDefaulted","localizedStringKey","localizedStringValue","newScrollGroupString","scrollGroupOptionId","Separator","orientation","decorative","SeparatorPrimitive","SettingsList","SettingsListItem","primary","secondary","isLoading","loadingMessage","SettingsListHeader","includeSeparator","Checklist","listItems","selectedListItems","handleSelectListItem","createLabel","_interopRequireDefault","obj","module","chainPropTypes","propType1","propType2","args","_extends","target","isPlainObject","prototype","deepClone","output","deepmerge","r","z","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","from","to","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","has","printWarning","loggedTypeFailures","message","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","error","err","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propName","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","step","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","isClassComponent","elementType","acceptingRef","safePropName","warningHint","elementAcceptingRef","PropTypes","elementAcceptingRef$1","specialProperty","exactProp","propTypes","unsupportedProps","prop","formatMuiErrorMessage","code","url","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","SuspenseList","hasWarnedAboutDeprecatedIsConcurrentMode","isSuspenseList","fnNameMatchRegex","getFunctionName","fn","getFunctionComponentName","Component","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","HTMLElementType","refType","refType$1","capitalize","string","_formatMuiErrorMessage","createChainedFunction","funcs","acc","func","debounce","wait","timeout","debounced","later","deprecatedPropType","validator","reason","componentNameSafe","propFullNameSafe","isMuiElement","muiNames","_muiName","_element$type","ownerDocument","node","ownerWindow","requirePropFactory","componentNameInError","prevPropTypes","requiredProp","defaultTypeChecker","typeCheckerResult","setRef","useEnhancedEffect","useEnhancedEffect$1","globalId","useGlobalId","idOverride","defaultId","setDefaultId","maybeReactUseId","useId","reactId","unsupportedProp","useControlled","controlled","defaultProp","name","state","isControlled","valueState","setValue","defaultValue","setValueIfUncontrolled","newValue","useEventCallback","useForkRef","refs","instance","UNINITIALIZED","useLazyRef","init","initArg","EMPTY","useOnMount","Timeout","delay","useTimeout","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","focusTriggersKeyboardModality","tagName","handlePointerDown","handleVisibilityChange","prepare","doc","isFocusVisible","useIsFocusVisible","isFocusVisibleRef","handleBlurVisible","handleFocusVisible","resolveProps","defaultProps","defaultSlotProps","slotProps","slotPropName","composeClasses","slots","getUtilityClass","classes","slot","utilityClass","defaultGenerator","createClassNameGenerator","generate","generator","ClassNameGenerator","ClassNameGenerator$1","globalStateClasses","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","result","clamp","min","max","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","sortBreakpointsValues","breakpointsAsArray","breakpoint1","breakpoint2","createBreakpoints","breakpoints","unit","other","sortedValues","up","down","between","start","end","endIndex","only","not","keyIndex","shape","shape$1","responsivePropType","responsivePropType$1","merge","defaultBreakpoints","handleBreakpoints","styleFromPropValue","theme","themeBreakpoints","breakpoint","mediaKey","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","breakpointStyleKey","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","getPath","path","checkVars","getStyleValue","themeMapping","transform","propValueFinal","userValue","cssProperty","themeKey","memoize","cache","arg","properties","directions","aliases","getCssProperties","property","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","_getPath","themeSpacing","abs","createUnarySpacing","getValue","transformer","transformed","getStyleFromPropValue","cssProperties","resolveCssProperty","margin","padding","createSpacing","spacingInput","spacing","argsInput","argument","compose","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","borderRadius","gap","columnGap","rowGap","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","paletteTransform","color","bgcolor","backgroundColor","sizingTransform","width","maxWidth","_props$theme","_props$theme2","breakpointsValues","minWidth","height","maxHeight","minHeight","boxSizing","defaultSxConfig","defaultSxConfig$1","objectsHaveSameKeys","objects","union","callIfFn","maybeFn","unstable_createStyleFunctionSx","getThemeValue","config","styleFunctionSx","_theme$unstable_sxCon","sx","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsKeys","css","styleKey","styleFunctionSx$1","applyStyles","createTheme","paletteInput","shapeInput","muiTheme","isObjectEmpty","useTheme","defaultTheme","contextTheme","ThemeContext","systemDefaultTheme","useThemeWithoutDefault","_excluded2","_excluded3","isEmpty","isStringTag","tag","shouldForwardProp","lowercaseFirstLetter","resolveTheme","themeId","defaultOverridesResolver","processStyleArg","callableStyle","_ref","ownerState","resolvedStylesArg","resolvedStyle","variants","isMatch","createStyled","input","rootShouldForwardProp","slotShouldForwardProp","systemSx","inputOptions","processStyles","componentSlot","inputSkipVariantsResolver","inputSkipSx","overridesResolver","skipVariantsResolver","skipSx","label","shouldForwardPropOption","defaultStyledResolver","styledEngineStyled","transformStyleArg","stylesArg","muiStyledResolver","styleArg","expressions","transformedStyleArg","expressionsWithDefaultTheme","styleOverrides","resolvedStyleOverrides","slotKey","slotStyle","_theme$components","themeVariants","numOfCustomFnsApplied","placeholders","displayName","getThemeProps","params","useThemeProps","clampWrapper","hexToRgb","re","colors","decomposeColor","marker","colorSpace","recomposeColor","hslToRgb","rgb","getLuminance","getContrastRatio","foreground","background","lumA","lumB","alpha","darken","coefficient","lighten","createMixins","mixins","common","common$1","grey","grey$1","purple","purple$1","red","red$1","orange","orange$1","blue","blue$1","lightBlue","lightBlue$1","green","green$1","light","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","getDefaultPrimary","mode","getDefaultSecondary","getDefaultError","getDefaultInfo","getDefaultSuccess","getDefaultWarning","createPalette","palette","contrastThreshold","success","warning","getContrastText","contrastText","contrast","augmentColor","mainShade","lightShade","darkShade","modes","round","caseAllCaps","defaultFontFamily","createTypography","typography","fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem2","coef","pxToRem","buildVariant","fontWeight","lineHeight","letterSpacing","casing","shadowKeyUmbraOpacity","shadowKeyPenumbraOpacity","shadowAmbientShadowOpacity","createShadow","px","shadows","shadows$1","easing","duration","formatMs","milliseconds","getAutoHeightDuration","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","isString","isNumber","animatedProp","zIndex","zIndex$1","mixinsInput","transitionsInput","typographyInput","systemTheme","systemCreateTheme","stateClasses","component","child","stateClass","defaultTheme$1","THEME_ID","systemUseThemeProps","styled","styled$1","getSvgIconUtilityClass","useUtilityClasses","SvgIconRoot","_theme$transitions","_theme$transitions$cr","_theme$transitions2","_theme$typography","_theme$typography$pxT","_theme$typography2","_theme$typography2$px","_theme$typography3","_theme$typography3$px","_palette$ownerState$c","_palette","_palette2","_palette3","SvgIcon","inProps","htmlColor","inheritViewBox","titleAccess","viewBox","hasSvgAsChild","more","_jsxs","_jsx","SvgIcon$1","createSvgIcon","unstable_ClassNameGenerator","exports","_utils","ArrowRight","default_1","_createSvgIcon","_jsxRuntime","isHostComponent","appendOwnerState","otherProps","defaultContextValue","ClassNameConfiguratorContext","useClassNamesOverride","disableDefaultClasses","extractEventHandlers","excludeKeys","resolveComponentProps","componentProps","slotState","omitEventHandlers","mergeSlotProps","parameters","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","useSlotProps","_parameters$additiona","skipResolvingSlotProps","rest","resolvedComponentsProps","mergedProps","internalRef","GLOBAL_CLASS_PREFIX","buildStateClass","buildSlotClass","getContainer","container","forwardedRef","disablePortal","mountNode","setMountNode","handleRef","newProps","ReactDOM","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","OwnElement","isHTMLElement","isShadowRoot","attributes","effect","_ref2","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","COMPONENT_NAME","getPopperUtilityClass","flipPlacement","resolveAnchorEl","anchorEl","isVirtualElement","defaultPopperOptions","PopperTooltip","_slots$root","initialPlacement","popperOptions","popperRefProp","TransitionProps","tooltipRef","ownRef","popperRef","handlePopperRef","handlePopperRefRef","rtlPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","handlePopperUpdate","box","popperModifiers","childProps","Root","rootProps","Popper","containerProp","keepMounted","transition","exited","setExited","handleEnter","handleExited","resolvedAnchorEl","display","transitionProps","useThemeSystem","_setPrototypeOf","_inheritsLoose","subClass","superClass","setPrototypeOf","timeoutsShape","TransitionGroupContext","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","parentGroup","appear","initialStatus","prevState","nextIn","_proto","prevProps","nextStatus","exit","enter","mounting","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","_this3","nextState","callback","_this4","active","handler","doesNotHaveTimeoutOrListener","maybeNextCallback","_this$props","pt","noop","Transition$1","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","getScale","isWebKit154","Grow","addEndListener","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","TransitionComponent","timer","autoTimeout","nodeRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","isAppearing","transitionDuration","transitionTimingFunction","handleEntered","handleExiting","handleExit","handleAddEndListener","Grow$1","PopperRoot","BasePopper","components","componentsProps","RootComponent","Popper$1","getTooltipUtilityClass","tooltipClasses","tooltipClasses$1","disableInteractive","touch","TooltipPopper","TooltipTooltip","TooltipArrow","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","Tooltip","_slots$popper","_slots$transition","_slots$tooltip","_slots$arrow","_slotProps$popper","_ref6","_slotProps$popper2","_slotProps$transition","_slotProps$tooltip","_ref7","_slotProps$tooltip2","_slotProps$arrow","_ref8","_slotProps$arrow2","childrenProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponentProp","PopperProps","title","TransitionComponentProp","isRtl","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","handleOpen","handleClose","handleLeave","focusVisibleRef","setChildIsFocusVisible","handleBlur","handleFocus","detectTouchStart","childrenProps","handleMouseOver","handleMouseLeave","handleTouchStart","handleTouchEnd","nativeEvent","handleMouseMove","nameOrDescProps","titleIsString","interactiveWrapperListeners","_PopperProps$popperOp","tooltipModifiers","PopperComponent","TooltipComponent","ArrowComponent","popperProps","tooltipProps","tooltipArrowProps","TransitionPropsInner","Tooltip$1","getIcon","icon","menuLabel","leading","MuiListItemIcon","MenuItem","onClick","tooltip","allowForLeadingIcons","iconPathBefore","iconPathAfter","hasAutoFocus","isDense","isSubMenuParent","hasDisabledGutters","hasDivider","focusVisibleClassName","menuItem","MuiMenuItem","MuiListItemText","getAllGroups","menuDefinition","SubMenu","setAnchorEl","parentMenuItem","parentItemProps","handleParentMenuItemClick","renderSubMenuItems","includedGroups","group","GroupedMenuItemList","Menu","getOrderedGroupItems","groupId","allItems","menuProps","commandHandler","groupsToInclude","sortedGroups","itemArray","allowSpaceForLeadingIcons","createMenuItemProps","isLastItemInGroup","divKey","itemInfo","menuItemProps","TopLevelMenu","columnId","MenuColumn","metadata","Grid","List","GridMenu","multiColumnMenu","sortedColumns","columnNumbers","columnName","col","getUsePromiseOptionsDefaults","usePromise","promiseFactoryCallback","defaultValueRef","optionsDefaultedRef","setIsLoading","promiseIsCurrent","MenuIcon","HamburgerMenuButton","menuProvider","normalMenu","fullMenu","containerRef","ariaLabelPrefix","isMenuOpen","setMenuOpen","showFullMenu","setShowFullMenu","handleMenuItemClick","handleMenuButtonClick","prevIsOpen","isOpening","menuCommandHandler","command","setOffset","normalMenuData","fullMenuData","menu","IconButton","Drawer","isTooltipSuppressed","adjustMarginToAlignToEdge","MuiIconButton","Spinner","LoaderCircle","TextField","hasError","helperText","onFocus","onBlur","ShadLabel","Toolbar","AppBar","MuiToolbar","alertVariants","Alert","AlertTitle","AlertDescription","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Sonner","Toaster","Slider","SliderPrimitive","Switch","SwitchPrimitives","Tabs","TabsList","TabsTrigger","TabsContent","InstallButton","isInstalling","handleClick","buttonText","Download","EnableButton","isEnabling","DisableButton","isDisabling","UpdateButton","isUpdating","MarkdownRenderer","markdown","anchorTarget","Markdown","FilterButton","Filter","DropdownMenuItemType","DropdownMenuItemType2","FilterDropdown","groups","NoExtensionsFound","MoreInfo","category","downloads","languages","moreInfoUrl","numberFormatted","NumberFormat","handleScrollToBottom","User","locale","LucideLink","CircleHelp","VersionHistory","versionHistory","showAllVersions","setShowAllVersions","currentDate","formatTimeString","dateString","date","dateDiff","yearDiff","monthDiff","dayDiff","timeString","sortedEntries","Footer","publisherDisplayName","fileSize","locales","formattedFileSize","formatBytes","languageNames","codes","displayNames","useEvent","unsubscriber","noopUnsubscriber","useEventAsync","unsubscribe","unsub"],"mappings":"45CAGA,MAAMA,GAAgBC,GAAAA,oBAAoB,CAAE,OAAQ,KAAO,CAAA,EAyDpD,SAASC,KAAMC,EAAsB,CACnC,OAAAH,GAAcI,GAAAA,KAAKD,CAAM,CAAC,CACnC,CCzDO,MAAME,GAAQC,EAAM,WACzB,CAAC,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,CAAA,EAASC,IAE5BC,EAAA,IAAC,QAAA,CACC,KAAAH,EACA,UAAWN,EACT,sbACAK,CACF,EACA,IAAAG,EAEC,GAAGD,CAAA,CAAA,CAIZ,EACAJ,GAAM,YAAc,QCNpB,MAAMO,GAAmBC,EAAA,WACvB,CACE,CAAE,aAAAC,EAAc,cAAAC,EAAe,cAAAC,EAAe,aAAAC,EAAc,GAAGR,CAAM,EACrEC,IAGEQ,EAAA,KAAC,MAAI,CAAA,UAAU,cACb,SAAA,CAAAP,EAAA,IAACQ,GAAA,CACE,GAAGV,EACJ,KAAK,OACL,UAAU,0JACV,SAAWW,GAAUN,EAAaM,EAAM,OAAO,KAAK,EACpD,UAAYC,GAAM,CACZA,EAAE,MAAQ,SACCJ,IAEfF,EAAcM,CAAC,CACjB,EACA,QAASL,EACT,IAAAN,CAAA,CACF,EACAC,EAAA,IAACW,GAAA,QAAA,CACC,UAAU,8HACV,QAAS,IAAM,CAEb,QAAQ,IAAI,iBAAiB,CAC/B,CAAA,CACF,CACF,CAAA,CAAA,CAGN,EC9CA,IAAIC,GAAI,OAAO,eACXC,GAAI,CAACC,EAAGJ,EAAGK,IAAML,KAAKI,EAAIF,GAAEE,EAAGJ,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAOK,CAAC,CAAE,EAAID,EAAEJ,CAAC,EAAIK,EACzGC,GAAI,CAACF,EAAGJ,EAAGK,IAAMF,GAAEC,EAAG,OAAOJ,GAAK,SAAWA,EAAI,GAAKA,EAAGK,CAAC,EAW9D,MAAME,GAAI,CACR,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MAEA,MAEA,MAEA,MAEA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MAEA,MAEA,MAEA,MAEA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,KACF,EAAGC,GAAI,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACF,EAAGC,GAAI,CACL,UACA,SACA,YACA,UACA,cACA,SACA,SACA,OACA,WACA,WACA,UACA,UACA,eACA,eACA,OACA,WACA,kBACA,MACA,SACA,WACA,eACA,gBACA,SACA,WACA,eACA,UACA,kBACA,QACA,OACA,OACA,UACA,QACA,QACA,QACA,WACA,YACA,SACA,YACA,UACA,UACA,OACA,OACA,OACA,OACA,SACA,gBACA,gBACA,YACA,YACA,cACA,aACA,kBACA,kBACA,YACA,YACA,QACA,WACA,UACA,QACA,UACA,UACA,SACA,SACA,SACA,OACA,aACA,QACA,SACA,eACA,oBACA,0BACA,SACA,qBACA,sBACA,UACA,qBACA,cACA,cACA,cACA,cACA,mBACA,mBACA,qBACA,YACA,OACA,oBAGA,uBACA,uBACA,sBACA,yBACA,wBACA,qBACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,eACA,cACA,eACA,oBACA,qBACA,0BACA,0BACA,eACA,eACA,YACA,gBACA,cACA,eACA,iBACA,wBACA,mBACA,WACA,QACA,aACA,aACA,aACA,2BACA,4BACA,YACF,EAAGC,G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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[3,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,221]} \ No newline at end of file +{"version":3,"file":"index.cjs","sources":["../src/utils/shadcn-ui.util.ts","../src/components/shadcn-ui/input.tsx","../src/components/advanced/book-chapter-control/book-chapter-input.component.tsx","../../../node_modules/@sillsdev/scripture/dist/index.es.js","../src/components/shadcn-ui/dropdown-menu.tsx","../src/components/advanced/book-chapter-control/book-menu-item.component.tsx","../src/components/advanced/book-chapter-control/chapter-select.component.tsx","../src/components/advanced/book-chapter-control/go-to-menu-item.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.component.tsx","../src/components/shadcn-ui/button.tsx","../src/components/shadcn-ui/label.tsx","../src/components/shadcn-ui/radio-group.tsx","../src/components/shadcn-ui/popover.tsx","../src/components/shadcn-ui/dialog.tsx","../src/components/shadcn-ui/command.tsx","../src/components/basics/combo-box.component.tsx","../src/components/basics/chapter-range-selector.component.tsx","../src/components/advanced/book-selector.component.tsx","../src/components/advanced/data-table/data-table-column-toggle.component.tsx","../src/components/shadcn-ui/select.tsx","../src/components/advanced/data-table/data-table-pagination.component.tsx","../src/components/shadcn-ui/table.tsx","../src/components/advanced/data-table/data-table.component.tsx","../src/components/advanced/inventory/occurrences-table.component.tsx","../src/components/shadcn-ui/checkbox.tsx","../src/components/advanced/inventory/inventory-utils.ts","../src/components/shadcn-ui/toggle.tsx","../src/components/shadcn-ui/toggle-group.tsx","../src/components/advanced/inventory/inventory-columns.tsx","../src/components/advanced/inventory/inventory.component.tsx","../src/components/basics/search-bar.component.tsx","../src/components/basics/tabs-vertical.tsx","../src/components/advanced/navigation-content-search.component.tsx","../src/components/advanced/scripture-results-viewer/scripture-results-viewer.component.tsx","../src/components/advanced/scroll-group-selector.component.tsx","../src/components/shadcn-ui/separator.tsx","../src/components/advanced/settings-components/settings-list.component.tsx","../src/components/basics/checklist.component.tsx","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@mui/utils/chainPropTypes/chainPropTypes.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/@mui/utils/deepmerge/deepmerge.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/@mui/utils/elementAcceptingRef/elementAcceptingRef.js","../../../node_modules/@mui/utils/exactProp/exactProp.js","../../../node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/cjs/react-is.development.js","../../../node_modules/react-is/index.js","../../../node_modules/@mui/utils/getDisplayName/getDisplayName.js","../../../node_modules/@mui/utils/HTMLElementType/HTMLElementType.js","../../../node_modules/@mui/utils/refType/refType.js","../../../node_modules/@mui/utils/capitalize/capitalize.js","../../../node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../../../node_modules/@mui/utils/debounce/debounce.js","../../../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../../../node_modules/@mui/utils/isMuiElement/isMuiElement.js","../../../node_modules/@mui/utils/ownerDocument/ownerDocument.js","../../../node_modules/@mui/utils/ownerWindow/ownerWindow.js","../../../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../../../node_modules/@mui/utils/setRef/setRef.js","../../../node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/utils/useId/useId.js","../../../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../../../node_modules/@mui/utils/useControlled/useControlled.js","../../../node_modules/@mui/utils/useEventCallback/useEventCallback.js","../../../node_modules/@mui/utils/useForkRef/useForkRef.js","../../../node_modules/@mui/utils/useLazyRef/useLazyRef.js","../../../node_modules/@mui/utils/useOnMount/useOnMount.js","../../../node_modules/@mui/utils/useTimeout/useTimeout.js","../../../node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../../../node_modules/@mui/utils/resolveProps/resolveProps.js","../../../node_modules/@mui/utils/composeClasses/composeClasses.js","../../../node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/utils/clamp/clamp.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../../../node_modules/@mui/system/esm/createTheme/shape.js","../../../node_modules/@mui/system/esm/responsivePropType.js","../../../node_modules/@mui/system/esm/merge.js","../../../node_modules/@mui/system/esm/breakpoints.js","../../../node_modules/@mui/system/esm/style.js","../../../node_modules/@mui/system/esm/memoize.js","../../../node_modules/@mui/system/esm/spacing.js","../../../node_modules/@mui/system/esm/createTheme/createSpacing.js","../../../node_modules/@mui/system/esm/compose.js","../../../node_modules/@mui/system/esm/borders.js","../../../node_modules/@mui/system/esm/cssGrid.js","../../../node_modules/@mui/system/esm/palette.js","../../../node_modules/@mui/system/esm/sizing.js","../../../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../../../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../../../node_modules/@mui/system/esm/createTheme/applyStyles.js","../../../node_modules/@mui/system/esm/createTheme/createTheme.js","../../../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../../../node_modules/@mui/system/esm/useTheme.js","../../../node_modules/@mui/system/esm/createStyled.js","../../../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../../../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../../../node_modules/@mui/system/esm/colorManipulator.js","../../../node_modules/@mui/material/styles/createMixins.js","../../../node_modules/@mui/material/colors/common.js","../../../node_modules/@mui/material/colors/grey.js","../../../node_modules/@mui/material/colors/purple.js","../../../node_modules/@mui/material/colors/red.js","../../../node_modules/@mui/material/colors/orange.js","../../../node_modules/@mui/material/colors/blue.js","../../../node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/@mui/material/colors/green.js","../../../node_modules/@mui/material/styles/createPalette.js","../../../node_modules/@mui/material/styles/createTypography.js","../../../node_modules/@mui/material/styles/shadows.js","../../../node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/@mui/material/styles/zIndex.js","../../../node_modules/@mui/material/styles/createTheme.js","../../../node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/@mui/material/styles/identifier.js","../../../node_modules/@mui/material/styles/useThemeProps.js","../../../node_modules/@mui/material/styles/styled.js","../../../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../../../node_modules/@mui/material/SvgIcon/SvgIcon.js","../../../node_modules/@mui/material/utils/createSvgIcon.js","../../../node_modules/@mui/material/utils/index.js","../../../node_modules/@mui/icons-material/utils/createSvgIcon.js","../../../node_modules/@mui/icons-material/ArrowRight.js","../../../node_modules/@mui/base/utils/isHostComponent.js","../../../node_modules/@mui/base/utils/appendOwnerState.js","../../../node_modules/@mui/base/utils/ClassNameConfigurator.js","../../../node_modules/@mui/base/utils/extractEventHandlers.js","../../../node_modules/@mui/base/utils/resolveComponentProps.js","../../../node_modules/@mui/base/utils/omitEventHandlers.js","../../../node_modules/@mui/base/utils/mergeSlotProps.js","../../../node_modules/@mui/base/utils/useSlotProps.js","../../../node_modules/@mui/base/generateUtilityClass/index.js","../../../node_modules/@mui/base/generateUtilityClasses/index.js","../../../node_modules/@mui/base/Portal/Portal.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@mui/base/Popper/popperClasses.js","../../../node_modules/@mui/base/Popper/Popper.js","../../../node_modules/@mui/material/styles/useTheme.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-transition-group/esm/config.js","../../../node_modules/react-transition-group/esm/utils/PropTypes.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/@mui/material/transitions/utils.js","../../../node_modules/@mui/material/Grow/Grow.js","../../../node_modules/@mui/material/Popper/Popper.js","../../../node_modules/@mui/material/Tooltip/tooltipClasses.js","../../../node_modules/@mui/material/Tooltip/Tooltip.js","../src/components/mui/menu-item.component.tsx","../src/components/mui/grouped-menu-item-list.component.tsx","../src/components/mui/top-level-menu.component.tsx","../src/components/mui/grid-menu.component.tsx","../src/hooks/use-promise.hook.ts","../../../node_modules/@mui/icons-material/esm/Menu.js","../src/components/mui/hamburger-menu-button.component.tsx","../src/components/mui/icon-button.component.tsx","../src/components/basics/spinner.component.tsx","../src/components/basics/text-field.component.tsx","../src/components/mui/toolbar.component.tsx","../src/components/shadcn-ui/alert.tsx","../src/components/shadcn-ui/card.tsx","../src/components/shadcn-ui/sonner.tsx","../src/components/shadcn-ui/slider.tsx","../src/components/shadcn-ui/switch.tsx","../src/components/shadcn-ui/tabs.tsx","../src/components/advanced/extension-marketplace/buttons/install-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/enable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/disable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/update-button.component.tsx","../src/components/advanced/extension-marketplace/markdown-renderer.component.tsx","../src/components/advanced/extension-marketplace/buttons/filter-button.component.tsx","../src/components/advanced/extension-marketplace/filter-dropdown.component.tsx","../src/components/advanced/extension-marketplace/no-extensions-found.component.tsx","../src/components/advanced/extension-marketplace/more-info.component.tsx","../src/components/advanced/extension-marketplace/version-history.component.tsx","../src/components/advanced/extension-marketplace/footer.component.tsx","../src/hooks/use-event.hook.ts","../src/hooks/use-event-async.hook.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMergeCustom = extendTailwindMerge({ prefix: 'tw-' });\n\n/**\n * Tailwind and CSS class application helper function. Uses\n * [`clsx`](https://www.npmjs.com/package/clsx) to make it easy to apply classes conditionally using\n * object syntax, and uses [`tailwind-merge`](https://www.npmjs.com/package/tailwind-merge) to make\n * it easy to merge/overwrite Tailwind classes in a programmer-logic-friendly way.\n *\n * Note: `tailwind-merge` is configured to use the prefix `tw-`, so you must use the same prefix\n * with any Tailwind classes you use with this function to successfully overwrite other Tailwind\n * classes. `platform-bible-react` is configured to use `tw-` as its Tailwind prefix, so any\n * Tailwind classes you pass into `platform-bible-react` components will be compared using the `tw-`\n * prefix.\n *\n * This function was popularized by\n * [shadcn/ui](https://ui.shadcn.com/docs/installation/manual#add-a-cn-helper). See [ByteGrad's\n * explanation video](https://www.youtube.com/watch?v=re2JFITR7TI) for more information.\n *\n * @example\n *\n * ```typescript\n * const borderShouldBeBlue = true;\n * const textShouldBeRed = true;\n * const heightShouldBe20 = false;\n * const classString = cn(\n * 'tw-bg-primary tw-h-10 tw-text-primary-foreground',\n * 'tw-bg-secondary',\n * {\n * 'tw-border-blue-500': borderShouldBeBlue,\n * 'tw-text-red-500': textShouldBeRed,\n * 'tw-h-20': heightShouldBe20,\n * },\n * 'some-class',\n * );\n * ```\n *\n * The resulting `classString` is `'tw-h-10 tw-bg-secondary tw-border-blue-500 tw-text-red-500\n * some-class'`\n *\n * - Notice that `'tw-bg-secondary'`, specified later, overwrote `'tw-bg-primary'`, specified earlier,\n * because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-text-red-500'`, specified later, overwrote `'tw-text-primary-foreground'`,\n * specified earlier, because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-h-20'`, specified later, did not overwrite `'tw-h-10'`, specified earlier,\n * because `'tw-h-20'` is part of a conditional class object and its value evaluated to `false`;\n * therefore it was not applied\n * - Notice that `'some-class'` was applied. This function is not limited only to Tailwind classes.\n *\n *\n * @param inputs Class strings or `clsx` conditional class objects to merge. Tailwind classes\n * specified later in the arguments overwrite similar Tailwind classes specified earlier in the\n * arguments\n * @returns Class string containing all applicable classes from the arguments based on the rules\n * described above\n */\n// shadcn/ui uses this export in its boilerplate code\n// eslint-disable-next-line import/prefer-default-export\nexport function cn(...inputs: ClassValue[]) {\n return twMergeCustom(clsx(inputs));\n}\n","import React from 'react';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport interface InputProps extends React.InputHTMLAttributes {}\n\nexport const Input = React.forwardRef(\n ({ className, type, ...props }, ref) => {\n return (\n \n );\n },\n);\nInput.displayName = 'Input';\n","import { FocusEventHandler, forwardRef, KeyboardEvent, MouseEventHandler } from 'react';\nimport { History } from 'lucide-react';\nimport { Input as ShadInput } from '@/components/shadcn-ui/input';\n\nexport type BookChapterInputProps = {\n handleSearch: (searchString: string) => void;\n handleKeyDown: (event: KeyboardEvent) => void;\n handleOnClick: MouseEventHandler;\n handleSubmit: () => void;\n onFocus?: FocusEventHandler;\n value: string;\n placeholder: string;\n};\n\n// Shadcn Input sets type to \"button\"- HAVE to prop spread before setting type\nconst BookChapterInput = forwardRef(\n (\n { handleSearch, handleKeyDown, handleOnClick, handleSubmit, ...props }: BookChapterInputProps,\n ref,\n ) => {\n return (\n
\n handleSearch(event.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n handleKeyDown(e);\n }}\n onClick={handleOnClick}\n ref={ref}\n />\n {\n // eslint-disable-next-line no-console\n console.log('back in history');\n }}\n />\n
\n );\n },\n);\n\nexport default BookChapterInput;\n","var P = Object.defineProperty;\nvar R = (t, e, s) => e in t ? P(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar n = (t, e, s) => R(t, typeof e != \"symbol\" ? e + \"\" : e, s);\nclass _ {\n constructor() {\n n(this, \"books\");\n n(this, \"firstSelectedBookNum\");\n n(this, \"lastSelectedBookNum\");\n n(this, \"count\");\n n(this, \"selectedBookNumbers\");\n n(this, \"selectedBookIds\");\n }\n}\nconst N = [\n \"GEN\",\n \"EXO\",\n \"LEV\",\n \"NUM\",\n \"DEU\",\n \"JOS\",\n \"JDG\",\n \"RUT\",\n \"1SA\",\n \"2SA\",\n // 10\n \"1KI\",\n \"2KI\",\n \"1CH\",\n \"2CH\",\n \"EZR\",\n \"NEH\",\n \"EST\",\n \"JOB\",\n \"PSA\",\n \"PRO\",\n // 20\n \"ECC\",\n \"SNG\",\n \"ISA\",\n \"JER\",\n \"LAM\",\n \"EZK\",\n \"DAN\",\n \"HOS\",\n \"JOL\",\n \"AMO\",\n // 30\n \"OBA\",\n \"JON\",\n \"MIC\",\n \"NAM\",\n \"HAB\",\n \"ZEP\",\n \"HAG\",\n \"ZEC\",\n \"MAL\",\n \"MAT\",\n // 40\n \"MRK\",\n \"LUK\",\n \"JHN\",\n \"ACT\",\n \"ROM\",\n \"1CO\",\n \"2CO\",\n \"GAL\",\n \"EPH\",\n \"PHP\",\n // 50\n \"COL\",\n \"1TH\",\n \"2TH\",\n \"1TI\",\n \"2TI\",\n \"TIT\",\n \"PHM\",\n \"HEB\",\n \"JAS\",\n \"1PE\",\n // 60\n \"2PE\",\n \"1JN\",\n \"2JN\",\n \"3JN\",\n \"JUD\",\n \"REV\",\n \"TOB\",\n \"JDT\",\n \"ESG\",\n \"WIS\",\n // 70\n \"SIR\",\n \"BAR\",\n \"LJE\",\n \"S3Y\",\n \"SUS\",\n \"BEL\",\n \"1MA\",\n \"2MA\",\n \"3MA\",\n \"4MA\",\n // 80\n \"1ES\",\n \"2ES\",\n \"MAN\",\n \"PS2\",\n \"ODA\",\n \"PSS\",\n \"JSA\",\n // actual variant text for JOS, now in LXA text\n \"JDB\",\n // actual variant text for JDG, now in LXA text\n \"TBS\",\n // actual variant text for TOB, now in LXA text\n \"SST\",\n // actual variant text for SUS, now in LXA text // 90\n \"DNT\",\n // actual variant text for DAN, now in LXA text\n \"BLT\",\n // actual variant text for BEL, now in LXA text\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n // 100\n \"BAK\",\n \"OTH\",\n \"3ES\",\n // Used previously but really should be 2ES\n \"EZA\",\n // Used to be called 4ES, but not actually in any known project\n \"5EZ\",\n // Used to be called 5ES, but not actually in any known project\n \"6EZ\",\n // Used to be called 6ES, but not actually in any known project\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n // 110\n \"NDX\",\n \"DAG\",\n \"PS3\",\n \"2BA\",\n \"LBA\",\n \"JUB\",\n \"ENO\",\n \"1MQ\",\n \"2MQ\",\n \"3MQ\",\n // 120\n \"REP\",\n \"4BA\",\n \"LAO\"\n], B = [\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n \"BAK\",\n \"OTH\",\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n \"NDX\"\n], O = [\n \"Genesis\",\n \"Exodus\",\n \"Leviticus\",\n \"Numbers\",\n \"Deuteronomy\",\n \"Joshua\",\n \"Judges\",\n \"Ruth\",\n \"1 Samuel\",\n \"2 Samuel\",\n \"1 Kings\",\n \"2 Kings\",\n \"1 Chronicles\",\n \"2 Chronicles\",\n \"Ezra\",\n \"Nehemiah\",\n \"Esther (Hebrew)\",\n \"Job\",\n \"Psalms\",\n \"Proverbs\",\n \"Ecclesiastes\",\n \"Song of Songs\",\n \"Isaiah\",\n \"Jeremiah\",\n \"Lamentations\",\n \"Ezekiel\",\n \"Daniel (Hebrew)\",\n \"Hosea\",\n \"Joel\",\n \"Amos\",\n \"Obadiah\",\n \"Jonah\",\n \"Micah\",\n \"Nahum\",\n \"Habakkuk\",\n \"Zephaniah\",\n \"Haggai\",\n \"Zechariah\",\n \"Malachi\",\n \"Matthew\",\n \"Mark\",\n \"Luke\",\n \"John\",\n \"Acts\",\n \"Romans\",\n \"1 Corinthians\",\n \"2 Corinthians\",\n \"Galatians\",\n \"Ephesians\",\n \"Philippians\",\n \"Colossians\",\n \"1 Thessalonians\",\n \"2 Thessalonians\",\n \"1 Timothy\",\n \"2 Timothy\",\n \"Titus\",\n \"Philemon\",\n \"Hebrews\",\n \"James\",\n \"1 Peter\",\n \"2 Peter\",\n \"1 John\",\n \"2 John\",\n \"3 John\",\n \"Jude\",\n \"Revelation\",\n \"Tobit\",\n \"Judith\",\n \"Esther Greek\",\n \"Wisdom of Solomon\",\n \"Sirach (Ecclesiasticus)\",\n \"Baruch\",\n \"Letter of Jeremiah\",\n \"Song of 3 Young Men\",\n \"Susanna\",\n \"Bel and the Dragon\",\n \"1 Maccabees\",\n \"2 Maccabees\",\n \"3 Maccabees\",\n \"4 Maccabees\",\n \"1 Esdras (Greek)\",\n \"2 Esdras (Latin)\",\n \"Prayer of Manasseh\",\n \"Psalm 151\",\n \"Odes\",\n \"Psalms of Solomon\",\n // WARNING, if you change the spelling of the *obsolete* tag be sure to update\n // IsObsolete routine\n \"Joshua A. *obsolete*\",\n \"Judges B. *obsolete*\",\n \"Tobit S. *obsolete*\",\n \"Susanna Th. *obsolete*\",\n \"Daniel Th. *obsolete*\",\n \"Bel Th. *obsolete*\",\n \"Extra A\",\n \"Extra B\",\n \"Extra C\",\n \"Extra D\",\n \"Extra E\",\n \"Extra F\",\n \"Extra G\",\n \"Front Matter\",\n \"Back Matter\",\n \"Other Matter\",\n \"3 Ezra *obsolete*\",\n \"Apocalypse of Ezra\",\n \"5 Ezra (Latin Prologue)\",\n \"6 Ezra (Latin Epilogue)\",\n \"Introduction\",\n \"Concordance \",\n \"Glossary \",\n \"Topical Index\",\n \"Names Index\",\n \"Daniel Greek\",\n \"Psalms 152-155\",\n \"2 Baruch (Apocalypse)\",\n \"Letter of Baruch\",\n \"Jubilees\",\n \"Enoch\",\n \"1 Meqabyan\",\n \"2 Meqabyan\",\n \"3 Meqabyan\",\n \"Reproof (Proverbs 25-31)\",\n \"4 Baruch (Rest of Baruch)\",\n \"Laodiceans\"\n], S = K();\nfunction g(t, e = !0) {\n return e && (t = t.toUpperCase()), t in S ? S[t] : 0;\n}\nfunction k(t) {\n return g(t) > 0;\n}\nfunction x(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return e >= 40 && e <= 66;\n}\nfunction T(t) {\n return (typeof t == \"string\" ? g(t) : t) <= 39;\n}\nfunction X(t) {\n return t <= 66;\n}\nfunction V(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return w(e) && !X(e);\n}\nfunction* L() {\n for (let t = 1; t <= N.length; t++) yield t;\n}\nconst G = 1, A = N.length;\nfunction H() {\n return [\"XXA\", \"XXB\", \"XXC\", \"XXD\", \"XXE\", \"XXF\", \"XXG\"];\n}\nfunction C(t, e = \"***\") {\n const s = t - 1;\n return s < 0 || s >= N.length ? e : N[s];\n}\nfunction I(t) {\n return t <= 0 || t > A ? \"******\" : O[t - 1];\n}\nfunction y(t) {\n return I(g(t));\n}\nfunction w(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && !B.includes(e);\n}\nfunction q(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && B.includes(e);\n}\nfunction U(t) {\n return O[t - 1].includes(\"*obsolete*\");\n}\nfunction K() {\n const t = {};\n for (let e = 0; e < N.length; e++)\n t[N[e]] = e + 1;\n return t;\n}\nconst m = {\n allBookIds: N,\n nonCanonicalIds: B,\n bookIdToNumber: g,\n isBookIdValid: k,\n isBookNT: x,\n isBookOT: T,\n isBookOTNT: X,\n isBookDC: V,\n allBookNumbers: L,\n firstBook: G,\n lastBook: A,\n extraBooks: H,\n bookNumberToId: C,\n bookNumberToEnglishName: I,\n bookIdToEnglishName: y,\n isCanonical: w,\n isExtraMaterial: q,\n isObsolete: U\n};\nvar l = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = \"Unknown\", t[t.Original = 1] = \"Original\", t[t.Septuagint = 2] = \"Septuagint\", t[t.Vulgate = 3] = \"Vulgate\", t[t.English = 4] = \"English\", t[t.RussianProtestant = 5] = \"RussianProtestant\", t[t.RussianOrthodox = 6] = \"RussianOrthodox\", t))(l || {});\nconst h = class h {\n // private versInfo: Versification;\n constructor(e) {\n n(this, \"name\");\n n(this, \"fullPath\");\n n(this, \"isPresent\");\n n(this, \"hasVerseSegments\");\n n(this, \"isCustomized\");\n n(this, \"baseVersification\");\n n(this, \"scriptureBooks\");\n n(this, \"_type\");\n if (e == null)\n throw new Error(\"Argument undefined\");\n typeof e == \"string\" ? (this.name = e, this._type = l[e]) : (this._type = e, this.name = l[e]);\n }\n get type() {\n return this._type;\n }\n equals(e) {\n return !e.type || !this.type ? !1 : e.type === this.type;\n }\n};\nn(h, \"Original\", new h(l.Original)), n(h, \"Septuagint\", new h(l.Septuagint)), n(h, \"Vulgate\", new h(l.Vulgate)), n(h, \"English\", new h(l.English)), n(h, \"RussianProtestant\", new h(l.RussianProtestant)), n(h, \"RussianOrthodox\", new h(l.RussianOrthodox));\nlet c = h;\nfunction E(t, e) {\n const s = e[0];\n for (let r = 1; r < e.length; r++)\n t = t.split(e[r]).join(s);\n return t.split(s);\n}\nvar D = /* @__PURE__ */ ((t) => (t[t.Valid = 0] = \"Valid\", t[t.UnknownVersification = 1] = \"UnknownVersification\", t[t.OutOfRange = 2] = \"OutOfRange\", t[t.VerseOutOfOrder = 3] = \"VerseOutOfOrder\", t[t.VerseRepeated = 4] = \"VerseRepeated\", t))(D || {});\nconst i = class i {\n constructor(e, s, r, a) {\n /** Not yet implemented. */\n n(this, \"firstChapter\");\n /** Not yet implemented. */\n n(this, \"lastChapter\");\n /** Not yet implemented. */\n n(this, \"lastVerse\");\n /** Not yet implemented. */\n n(this, \"hasSegmentsDefined\");\n /** Not yet implemented. */\n n(this, \"text\");\n /** Not yet implemented. */\n n(this, \"BBBCCCVVVS\");\n /** Not yet implemented. */\n n(this, \"longHashCode\");\n /** The versification of the reference. */\n n(this, \"versification\");\n n(this, \"rtlMark\", \"‏\");\n n(this, \"_bookNum\", 0);\n n(this, \"_chapterNum\", 0);\n n(this, \"_verseNum\", 0);\n n(this, \"_verse\");\n if (r == null && a == null)\n if (e != null && typeof e == \"string\") {\n const o = e, u = s != null && s instanceof c ? s : void 0;\n this.setEmpty(u), this.parse(o);\n } else if (e != null && typeof e == \"number\") {\n const o = s != null && s instanceof c ? s : void 0;\n this.setEmpty(o), this._verseNum = e % i.chapterDigitShifter, this._chapterNum = Math.floor(\n e % i.bookDigitShifter / i.chapterDigitShifter\n ), this._bookNum = Math.floor(e / i.bookDigitShifter);\n } else if (s == null)\n if (e != null && e instanceof i) {\n const o = e;\n this._bookNum = o.bookNum, this._chapterNum = o.chapterNum, this._verseNum = o.verseNum, this._verse = o.verse, this.versification = o.versification;\n } else {\n if (e == null) return;\n const o = e instanceof c ? e : i.defaultVersification;\n this.setEmpty(o);\n }\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else if (e != null && s != null && r != null)\n if (typeof e == \"string\" && typeof s == \"string\" && typeof r == \"string\")\n this.setEmpty(a), this.updateInternal(e, s, r);\n else if (typeof e == \"number\" && typeof s == \"number\" && typeof r == \"number\")\n this._bookNum = e, this._chapterNum = s, this._verseNum = r, this.versification = a ?? i.defaultVersification;\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else\n throw new Error(\"VerseRef constructor not supported.\");\n }\n /**\n * Determines if the verse string is in a valid format (does not consider versification).\n */\n static isVerseParseable(e) {\n return e.length > 0 && \"0123456789\".includes(e[0]) && !e.endsWith(this.verseRangeSeparator) && !e.endsWith(this.verseSequenceIndicator);\n }\n /**\n * Tries to parse the specified string into a verse reference.\n * @param str - The string to attempt to parse.\n * @returns success: `true` if the specified string was successfully parsed, `false` otherwise.\n * @returns verseRef: The result of the parse if successful, or empty VerseRef if it failed\n */\n static tryParse(e) {\n let s;\n try {\n return s = new i(e), { success: !0, verseRef: s };\n } catch (r) {\n if (r instanceof v)\n return s = new i(), { success: !1, verseRef: s };\n throw r;\n }\n }\n /**\n * Gets the reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n * @param bookNum - Book number (this is 1-based, not an index).\n * @param chapterNum - Chapter number.\n * @param verseNum - Verse number.\n * @returns The reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n */\n static getBBBCCCVVV(e, s, r) {\n return e % i.bcvMaxValue * i.bookDigitShifter + (s >= 0 ? s % i.bcvMaxValue * i.chapterDigitShifter : 0) + (r >= 0 ? r % i.bcvMaxValue : 0);\n }\n /**\n * Deserializes a serialized VerseRef.\n * @param serializedVerseRef - Serialized VerseRef to create from.\n * @returns the deserialized VerseRef.\n */\n static fromJSON(e) {\n const { book: s, chapterNum: r, verseNum: a, verse: o, versificationStr: u } = e, f = o || a.toString();\n let d;\n return u && (d = new c(u)), s ? new i(s, r.toString(), f, d) : new i();\n }\n /**\n * Parses a verse string and gets the leading numeric portion as a number.\n * @param verseStr - verse string to parse\n * @returns true if the entire string could be parsed as a single, simple verse number (1-999);\n * false if the verse string represented a verse bridge, contained segment letters, or was invalid\n */\n static tryGetVerseNum(e) {\n let s;\n if (!e)\n return s = -1, { success: !0, vNum: s };\n s = 0;\n let r;\n for (let a = 0; a < e.length; a++) {\n if (r = e[a], r < \"0\" || r > \"9\")\n return a === 0 && (s = -1), { success: !1, vNum: s };\n if (s = s * 10 + +r - 0, s > i.bcvMaxValue)\n return s = -1, { success: !1, vNum: s };\n }\n return { success: !0, vNum: s };\n }\n /**\n * Checks to see if a VerseRef hasn't been set - all values are the default.\n */\n get isDefault() {\n return this.bookNum === 0 && this.chapterNum === 0 && this.verseNum === 0 && this.versification == null;\n }\n /**\n * Gets whether the verse contains multiple verses.\n */\n get hasMultiple() {\n return this._verse != null && (this._verse.includes(i.verseRangeSeparator) || this._verse.includes(i.verseSequenceIndicator));\n }\n /**\n * Gets or sets the book of the reference. Book is the 3-letter abbreviation in capital letters,\n * e.g. `'MAT'`.\n */\n get book() {\n return m.bookNumberToId(this.bookNum, \"\");\n }\n set book(e) {\n this.bookNum = m.bookIdToNumber(e);\n }\n /**\n * Gets or sets the chapter of the reference,. e.g. `'3'`.\n */\n get chapter() {\n return this.isDefault || this._chapterNum < 0 ? \"\" : this._chapterNum.toString();\n }\n set chapter(e) {\n const s = +e;\n this._chapterNum = Number.isInteger(s) ? s : -1;\n }\n /**\n * Gets or sets the verse of the reference, including range, segments, and sequences, e.g. `'4'`,\n * or `'4b-5a, 7'`.\n */\n get verse() {\n return this._verse != null ? this._verse : this.isDefault || this._verseNum < 0 ? \"\" : this._verseNum.toString();\n }\n set verse(e) {\n const { success: s, vNum: r } = i.tryGetVerseNum(e);\n this._verse = s ? void 0 : e.replace(this.rtlMark, \"\"), this._verseNum = r, !(this._verseNum >= 0) && ({ vNum: this._verseNum } = i.tryGetVerseNum(this._verse));\n }\n /**\n * Get or set Book based on book number, e.g. `42`.\n */\n get bookNum() {\n return this._bookNum;\n }\n set bookNum(e) {\n if (e <= 0 || e > m.lastBook)\n throw new v(\n \"BookNum must be greater than zero and less than or equal to last book\"\n );\n this._bookNum = e;\n }\n /**\n * Gets or sets the chapter number, e.g. `3`. `-1` if not valid.\n */\n get chapterNum() {\n return this._chapterNum;\n }\n set chapterNum(e) {\n this.chapterNum = e;\n }\n /**\n * Gets or sets verse start number, e.g. `4`. `-1` if not valid.\n */\n get verseNum() {\n return this._verseNum;\n }\n set verseNum(e) {\n this._verseNum = e;\n }\n /**\n * String representing the versification (should ONLY be used for serialization/deserialization).\n *\n * @remarks This is for backwards compatibility when ScrVers was an enumeration.\n */\n get versificationStr() {\n var e;\n return (e = this.versification) == null ? void 0 : e.name;\n }\n set versificationStr(e) {\n this.versification = this.versification != null ? new c(e) : void 0;\n }\n /**\n * Determines if the reference is valid.\n */\n get valid() {\n return this.validStatus === 0;\n }\n /**\n * Get the valid status for this reference.\n */\n get validStatus() {\n return this.validateVerse(i.verseRangeSeparators, i.verseSequenceIndicators);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits and the verse is 0.\n */\n get BBBCCC() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, 0);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits. If verse is not null\n * (i.e., this reference represents a complex reference with verse\n * segments or bridge) this cannot be used for an exact comparison.\n */\n get BBBCCCVVV() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, this._verseNum);\n }\n /**\n * Gets whether the verse is defined as an excluded verse in the versification.\n * Does not handle verse ranges.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get isExcluded() {\n return !1;\n }\n /**\n * Parses the reference in the specified string.\n * Optionally versification can follow reference as in GEN 3:11/4\n * Throw an exception if\n * - invalid book name\n * - chapter number is missing or not a number\n * - verse number is missing or does not start with a number\n * - versification is invalid\n * @param verseStr - string to parse e.g. 'MAT 3:11'\n */\n parse(e) {\n if (e = e.replace(this.rtlMark, \"\"), e.includes(\"/\")) {\n const o = e.split(\"/\");\n if (e = o[0], o.length > 1)\n try {\n const u = +o[1].trim();\n this.versification = new c(l[u]);\n } catch {\n throw new v(\"Invalid reference : \" + e);\n }\n }\n const s = e.trim().split(\" \");\n if (s.length !== 2)\n throw new v(\"Invalid reference : \" + e);\n const r = s[1].split(\":\"), a = +r[0];\n if (r.length !== 2 || m.bookIdToNumber(s[0]) === 0 || !Number.isInteger(a) || a < 0 || !i.isVerseParseable(r[1]))\n throw new v(\"Invalid reference : \" + e);\n this.updateInternal(s[0], r[0], r[1]);\n }\n /**\n * Simplifies this verse ref so that it has no bridging of verses or\n * verse segments like `'1a'`.\n */\n simplify() {\n this._verse = void 0;\n }\n /**\n * Makes a clone of the reference.\n *\n * @returns The cloned VerseRef.\n */\n clone() {\n return new i(this);\n }\n toString() {\n const e = this.book;\n return e === \"\" ? \"\" : `${e} ${this.chapter}:${this.verse}`;\n }\n toJSON() {\n let e = this.verse;\n (e === \"\" || e === this.verseNum.toString()) && (e = void 0);\n const s = {\n book: this.book,\n chapterNum: this.chapterNum,\n verseNum: this.verseNum,\n verse: e,\n versificationStr: this.versificationStr\n };\n return e || delete s.verse, s;\n }\n /**\n * Compares this `VerseRef` with supplied one.\n * @param verseRef - object to compare this one to.\n * @returns `true` if this `VerseRef` is equal to the supplied one, `false` otherwise.\n */\n equals(e) {\n return e instanceof i ? e._bookNum === this._bookNum && e._chapterNum === this._chapterNum && e._verseNum === this._verseNum && e.verse === this.verse && (e.versification == null && this.versification == null || e.versification != null && this.versification != null && e.versification.equals(this.versification)) : !1;\n }\n /**\n * Enumerate all individual verses contained in a VerseRef.\n * Verse ranges are indicated by \"-\" and consecutive verses by \",\"s.\n * Examples:\n * GEN 1:2 returns GEN 1:2\n * GEN 1:1a-3b,5 returns GEN 1:1a, GEN 1:2, GEN 1:3b, GEN 1:5\n * GEN 1:2a-2c returns //! ??????\n *\n * @param specifiedVersesOnly - if set to true return only verses that are\n * explicitly specified only, not verses within a range. Defaults to `false`.\n * @param verseRangeSeparators - Verse range separators.\n * Defaults to `VerseRef.verseRangeSeparators`.\n * @param verseSequenceSeparators - Verse sequence separators.\n * Defaults to `VerseRef.verseSequenceIndicators`.\n * @returns An array of all single verse references in this VerseRef.\n */\n allVerses(e = !1, s = i.verseRangeSeparators, r = i.verseSequenceIndicators) {\n if (this._verse == null || this.chapterNum <= 0)\n return [this.clone()];\n const a = [], o = E(this._verse, r);\n for (const u of o.map((f) => E(f, s))) {\n const f = this.clone();\n f.verse = u[0];\n const d = f.verseNum;\n if (a.push(f), u.length > 1) {\n const b = this.clone();\n if (b.verse = u[1], !e)\n for (let p = d + 1; p < b.verseNum; p++) {\n const J = new i(\n this._bookNum,\n this._chapterNum,\n p,\n this.versification\n );\n this.isExcluded || a.push(J);\n }\n a.push(b);\n }\n }\n return a;\n }\n /**\n * Validates a verse number using the supplied separators rather than the defaults.\n */\n validateVerse(e, s) {\n if (!this.verse)\n return this.internalValid;\n let r = 0;\n for (const a of this.allVerses(!0, e, s)) {\n const o = a.internalValid;\n if (o !== 0)\n return o;\n const u = a.BBBCCCVVV;\n if (r > u)\n return 3;\n if (r === u)\n return 4;\n r = u;\n }\n return 0;\n }\n /**\n * Gets whether a single verse reference is valid.\n */\n get internalValid() {\n return this.versification == null ? 1 : this._bookNum <= 0 || this._bookNum > m.lastBook ? 2 : (m.isCanonical(this._bookNum), 0);\n }\n setEmpty(e = i.defaultVersification) {\n this._bookNum = 0, this._chapterNum = -1, this._verse = void 0, this.versification = e;\n }\n updateInternal(e, s, r) {\n this.bookNum = m.bookIdToNumber(e), this.chapter = s, this.verse = r;\n }\n};\nn(i, \"defaultVersification\", c.English), n(i, \"verseRangeSeparator\", \"-\"), n(i, \"verseSequenceIndicator\", \",\"), n(i, \"verseRangeSeparators\", [i.verseRangeSeparator]), n(i, \"verseSequenceIndicators\", [i.verseSequenceIndicator]), n(i, \"chapterDigitShifter\", 1e3), n(i, \"bookDigitShifter\", i.chapterDigitShifter * i.chapterDigitShifter), n(i, \"bcvMaxValue\", i.chapterDigitShifter - 1), /**\n * The valid status of the VerseRef.\n */\nn(i, \"ValidStatusType\", D);\nlet M = i;\nclass v extends Error {\n}\nexport {\n _ as BookSet,\n m as Canon,\n c as ScrVers,\n l as ScrVersType,\n M as VerseRef,\n v as VerseRefException\n};\n//# sourceMappingURL=index.es.js.map\n","import React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport type DropdownMenuSubTriggerProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSubContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n className?: string;\n};\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n className?: string;\n sideOffset?: number;\n};\n\nexport type DropdownMenuItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuCheckboxItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n className?: string;\n checked?: boolean;\n};\n\nexport type DropdownMenuRadioItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.RadioItem\n> & {\n className?: string;\n};\n\nexport type DropdownMenuLabelProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSeparatorProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n className?: string;\n};\n\nexport type DropdownMenuShortcutProps = React.HTMLAttributes & {\n className?: string;\n};\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubTriggerProps\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\n/**\n * TODO: fix: direction is not automatically handled by this component, so that shortcuts are\n * display always to the right\n */\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuItemProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuCheckboxItemProps\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef,\n DropdownMenuLabelProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nexport function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps) {\n return (\n \n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n","import { Canon } from '@sillsdev/scripture';\nimport { PropsWithChildren, KeyboardEvent, forwardRef } from 'react';\nimport { DropdownMenuItem as ShadDropdownMenuItem } from '@/components/shadcn-ui/dropdown-menu';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport type BookType = 'OT' | 'NT' | 'DC';\n\ntype BookMenuItemProps = PropsWithChildren<{\n /** String id of book */\n bookId: string;\n /** Callback to run when a book menu item is selected */\n handleSelectBook: () => void;\n /** Indicates if this menu item is currently selected */\n isSelected: boolean;\n /** Function that is called upon highlighting a book in the dropdown menu */\n handleHighlightBook: () => void;\n /**\n * Function that is called on pressing a key\n *\n * @param event Event that contains information about the key stroke\n */\n handleKeyDown: (event: KeyboardEvent) => void;\n /**\n * Type of book associated with this menu item, coordinates color labels ? Mock up has the labels\n * coordinated to genre\n */\n bookType: BookType;\n}>;\n\nconst BookMenuItem = forwardRef(\n (\n {\n bookId,\n handleSelectBook,\n isSelected,\n handleHighlightBook,\n handleKeyDown,\n bookType,\n children,\n }: BookMenuItemProps,\n ref,\n ) => {\n return (\n {\n // preventDefault() here prevents the entire dropdown menu from closing when selecting this item\n event.preventDefault();\n handleSelectBook();\n }}\n onKeyDown={(event: KeyboardEvent) => {\n handleKeyDown(event);\n }}\n onFocus={handleHighlightBook}\n onMouseMove={handleHighlightBook}\n >\n \n {Canon.bookIdToEnglishName(bookId)}\n \n {isSelected &&
{children}
}\n \n );\n },\n);\n\nexport default BookMenuItem;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { useCallback } from 'react';\n\nexport type ChapterSelectProps = {\n /**\n * Callback to run when a chapter div is selected\n *\n * @param chapterNumber Number of the chapter that has been selected\n */\n handleSelectChapter: (chapterNumber: number) => void;\n /** The highest chapter number in the book (of course equal to number of chapters in the book) */\n endChapter: number;\n /** The chapter number that is currently selected */\n activeChapter: number;\n /** The chapter number that is currently highlighted using keyboard or mouse navigation */\n highlightedChapter: number;\n /**\n * Callback to run when a chapter is highlighted by the user\n *\n * @param chapterNumber The chapter that is highlighted\n */\n handleHighlightedChapter: (chapterNumber: number) => void;\n};\n\nfunction ChapterSelect({\n handleSelectChapter,\n endChapter,\n activeChapter,\n highlightedChapter,\n handleHighlightedChapter,\n}: ChapterSelectProps) {\n const chapters = Array.from({ length: endChapter }, (_, i) => i + 1);\n\n const handleMouse = useCallback(\n (chapterNumber: number) => {\n handleHighlightedChapter(chapterNumber);\n },\n [handleHighlightedChapter],\n );\n\n return (\n
\n {chapters.map((chapter) => (\n {\n event.preventDefault();\n event.stopPropagation();\n handleSelectChapter(chapter);\n }}\n role=\"button\"\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n handleSelectChapter(chapter);\n }\n }}\n tabIndex={0}\n onMouseMove={() => handleMouse(chapter)}\n >\n {chapter}\n
\n ))}\n
\n );\n}\n\nexport default ChapterSelect;\n","import { DropdownMenuLabel as ShadDropdownMenuLabel } from '@/components/shadcn-ui/dropdown-menu';\nimport { Bookmark, Clock, ArrowDownWideNarrow } from 'lucide-react';\n\nexport type GoToMenuItemProps = {\n handleSort: () => void;\n handleLocationHistory: () => void;\n handleBookmarks: () => void;\n};\n\nfunction GoToMenuItem({ handleSort, handleLocationHistory, handleBookmarks }: GoToMenuItemProps) {\n return (\n \n

Go To

\n
\n \n \n \n
\n
\n );\n}\n\nexport default GoToMenuItem;\n","import BookChapterInput from '@/components/advanced/book-chapter-control/book-chapter-input.component';\nimport BookMenuItem, {\n BookType,\n} from '@/components/advanced/book-chapter-control/book-menu-item.component';\nimport ChapterSelect from '@/components/advanced/book-chapter-control/chapter-select.component';\nimport GoToMenuItem from '@/components/advanced/book-chapter-control/go-to-menu-item.component';\nimport {\n DropdownMenu as ShadDropdownMenu,\n DropdownMenuContent as ShadDropdownMenuContent,\n DropdownMenuLabel as ShadDropdownMenuLabel,\n DropdownMenuSeparator as ShadDropdownMenuSeparator,\n DropdownMenuTrigger as ShadDropdownMenuTrigger,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference, getChaptersForBook } from 'platform-bible-utils';\nimport {\n KeyboardEvent as ReactKeyboardEvent,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\ntype BookTypeLabels = {\n [bookType in BookType]: string;\n};\ntype BookChapterControlProps = {\n scrRef: ScriptureReference;\n handleSubmit: (scrRef: ScriptureReference) => void;\n};\n\nconst ALL_BOOK_IDS = Canon.allBookIds;\nconst BOOK_TYPE_LABELS: BookTypeLabels = {\n OT: 'Old Testament',\n NT: 'New Testament',\n DC: 'Deuterocanon',\n};\nconst BOOK_TYPE_ARRAY: BookType[] = ['OT', 'NT', 'DC'];\n// This is the height of three menu items to offset scrolling to the selected menu item\n// If you use menuItemRef.clientHeight- includes height of chapter div which is too big\nconst SCROLL_OFFSET = 32 + 32 + 32;\nconst SEARCH_QUERY_FORMATS = [\n /^(\\w+)$/i, // Matches a single word (book name or id)\n /^(\\w+)(?:\\s(\\d+))$/i, // Matches a word followed by a chapter number\n /^(\\w+)(?:\\s(\\d+):(\\d+))$/i, // Matches a word followed by a chapter and verse number\n];\nconst fetchGroupedBooks = (bookType: BookType) => {\n const groupedBooks = {\n OT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookOT(bookId)),\n NT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookNT(bookId)),\n DC: ALL_BOOK_IDS.filter((bookId) => Canon.isBookDC(bookId)),\n };\n return groupedBooks[bookType];\n};\nconst fetchEndChapter = (bookId: string) => {\n // getChaptersForBook returns -1 if not found in scrBookData\n // scrBookData only includes OT and NT, so all DC will return -1\n return getChaptersForBook(Canon.bookIdToNumber(bookId));\n};\n\n/**\n * Gets all of the English names from book ids\n *\n * @returns String[]\n */\nfunction getAllEnglishNames(): string[] {\n const allEnglishNames = ALL_BOOK_IDS.map((bookId) => {\n return Canon.bookIdToEnglishName(bookId);\n });\n return allEnglishNames;\n}\n\n/**\n * Determines if bookName is in allEnglishNames\n *\n * @param bookName Book English name\n * @returns True if bookName is included, false otherwise\n */\nfunction isValidBookEnglishName(bookName: string): boolean {\n return getAllEnglishNames().includes(bookName);\n}\n\n/**\n * Gets a bookId from given English name\n *\n * @param bookName Book English name\n * @returns BookId of provided bookName, undefined otherwise\n */\nfunction getBookIdFromEnglishName(bookName: string): string | undefined {\n // Convert bookName to lowercase and then capitalize the first letter\n const formattedBookName = bookName.toLowerCase().replace(/^\\w/, (c) => c.toUpperCase());\n\n if (isValidBookEnglishName(formattedBookName)) {\n const matchingBookId = ALL_BOOK_IDS.find((bookId) => {\n return Canon.bookIdToEnglishName(bookId) === formattedBookName;\n });\n return matchingBookId;\n }\n\n return undefined;\n}\n\nfunction BookChapterControl({ scrRef, handleSubmit }: BookChapterControlProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedBookId, setSelectedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [highlightedChapter, setHighlightedChapter] = useState(scrRef.chapterNum ?? 0);\n const [highlightedBookId, setHighlightedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [isContentOpen, setIsContentOpen] = useState(false);\n const [isContentOpenDelayed, setIsContentOpenDelayed] = useState(isContentOpen);\n\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const inputRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const contentRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const menuItemRef = useRef(undefined!);\n\n const fetchFilteredBooks = useCallback(\n (bookType: BookType) => {\n return fetchGroupedBooks(bookType).filter((bookId: string) => {\n const englishNameLowerCase = Canon.bookIdToEnglishName(bookId).toLowerCase();\n const normalizedQuery = searchQuery.replace(/[^a-zA-Z]/g, '').toLowerCase();\n return (\n englishNameLowerCase.includes(normalizedQuery) || // Match book name\n bookId.toLowerCase().includes(normalizedQuery) // Match book ID\n );\n });\n },\n [searchQuery],\n );\n\n const handleSearchInput = (searchString: string) => {\n setSearchQuery(searchString);\n };\n\n /**\n * Whether to prevent radix's logic from closing the dropdown. This is important because radix\n * tries to close the dropdown when the input first focuses, and we don't want it to do that. But\n * we don't want to prevent the dropdown from closing when we click away from the input, so we\n * don't want to just keep it open if the input is focused\n */\n const shouldPreventAutoClosing = useRef(false);\n\n const controlMenuState = useCallback((open: boolean) => {\n if (shouldPreventAutoClosing.current) {\n shouldPreventAutoClosing.current = false;\n return;\n }\n setIsContentOpen(open);\n }, []);\n\n const updateReference = useCallback(\n (bookId: string, shouldClose: boolean, chapter?: number, verse?: number) => {\n setHighlightedChapter(\n Canon.bookNumberToId(scrRef.bookNum) !== bookId ? 1 : scrRef.chapterNum,\n );\n\n if (shouldClose || fetchEndChapter(bookId) === -1) {\n handleSubmit({\n bookNum: Canon.bookIdToNumber(bookId),\n chapterNum: chapter || 1,\n verseNum: verse || 1,\n });\n\n setIsContentOpen(false);\n setSearchQuery('');\n return;\n }\n\n setSelectedBookId(selectedBookId !== bookId ? bookId : '');\n setIsContentOpen(!shouldClose);\n },\n [handleSubmit, scrRef.bookNum, scrRef.chapterNum, selectedBookId],\n );\n\n const handleSelectChapter = (chapterNumber: number) => {\n if (chapterNumber <= 0 || chapterNumber > fetchEndChapter(selectedBookId)) {\n return;\n }\n updateReference(selectedBookId, true, chapterNumber);\n };\n\n const handleInputSubmit = useCallback(() => {\n SEARCH_QUERY_FORMATS.forEach((format) => {\n const matches = searchQuery.match(format);\n if (matches) {\n // Book should be a bookId or an english name\n const [book, chapter = undefined, verse = undefined] = matches.slice(1);\n const englishName = getBookIdFromEnglishName(book);\n\n if (Canon.isBookIdValid(book) || englishName) {\n updateReference(\n englishName ?? book,\n true,\n chapter ? parseInt(chapter, 10) : 1,\n verse ? parseInt(verse, 10) : 1,\n );\n }\n }\n });\n }, [updateReference, searchQuery]);\n\n const handleKeyDownInput = useCallback(\n (event: ReactKeyboardEvent) => {\n if (!isContentOpen) {\n setIsContentOpen(true);\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (\n typeof menuItemRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n menuItemRef.current !== null\n ) {\n menuItemRef.current.focus();\n } else if (\n typeof contentRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n contentRef.current !== null\n ) {\n contentRef.current.focus();\n }\n event.preventDefault();\n }\n },\n [isContentOpen],\n );\n\n const handleKeyDownContent = (event: ReactKeyboardEvent) => {\n // When the dropdown menu has focus, key strokes should give focus to the input component,\n // unless they're navigation keys (arrows and enter)\n const { key } = event;\n if (\n key === 'ArrowRight' ||\n key === 'ArrowLeft' ||\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter'\n ) {\n return;\n }\n\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key }));\n inputRef.current.focus();\n };\n\n const handleKeyDownMenuItem = (event: ReactKeyboardEvent) => {\n const { key } = event;\n if (highlightedBookId === selectedBookId) {\n if (key === 'Enter') {\n event.preventDefault();\n updateReference(selectedBookId, true, highlightedChapter);\n return;\n }\n\n let chapterOffSet = 0;\n if (key === 'ArrowRight') {\n if (highlightedChapter < fetchEndChapter(highlightedBookId)) {\n chapterOffSet = 1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowLeft') {\n if (highlightedChapter > 1) {\n chapterOffSet = -1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowDown') {\n chapterOffSet = 6;\n } else if (key === 'ArrowUp') {\n chapterOffSet = -6;\n }\n if (\n highlightedChapter + chapterOffSet <= 0 ||\n highlightedChapter + chapterOffSet > fetchEndChapter(highlightedBookId)\n ) {\n setHighlightedChapter(0);\n } else if (chapterOffSet !== 0) {\n setHighlightedChapter(highlightedChapter + chapterOffSet);\n event.preventDefault();\n }\n }\n };\n\n useEffect(() => {\n if (selectedBookId === highlightedBookId) {\n if (selectedBookId === Canon.bookNumberToId(scrRef.bookNum)) {\n setHighlightedChapter(scrRef.chapterNum);\n } else {\n setHighlightedChapter(1);\n }\n } else {\n setHighlightedChapter(0);\n }\n }, [highlightedBookId, scrRef.bookNum, scrRef.chapterNum, selectedBookId]);\n\n // The purpose of these useLayoutEffects and timeout is to delay the scroll just\n // enough so that the refs are defined and available when they are used after the timeout\n useLayoutEffect(() => {\n setIsContentOpenDelayed(isContentOpen);\n }, [isContentOpen]);\n\n useLayoutEffect(() => {\n const scrollTimeout = setTimeout(() => {\n if (isContentOpenDelayed && contentRef.current && menuItemRef.current) {\n const menuItemOffsetTop = menuItemRef.current.offsetTop;\n const scrollPosition = menuItemOffsetTop - SCROLL_OFFSET;\n contentRef.current.scrollTo({ top: scrollPosition, behavior: 'instant' });\n }\n }, 10);\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [isContentOpenDelayed]);\n\n return (\n
\n \n \n {\n setSelectedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedChapter(scrRef.chapterNum > 0 ? scrRef.chapterNum : 0);\n setIsContentOpen(true);\n inputRef.current.focus();\n }}\n onFocus={() => {\n // Radix thinks we want to close because the input is being focused. Prevent that\n shouldPreventAutoClosing.current = true;\n }}\n handleSubmit={handleInputSubmit}\n placeholder={`${Canon.bookNumberToEnglishName(scrRef.bookNum)} ${scrRef.chapterNum}:${scrRef.verseNum}`}\n />\n \n \n console.log('sorting')}\n handleLocationHistory={() => console.log('location history')}\n handleBookmarks={() => console.log('bookmarks')}\n />\n {BOOK_TYPE_ARRAY.map(\n (bookType, bookTypeIndex) =>\n fetchFilteredBooks(bookType).length > 0 && (\n
\n \n {BOOK_TYPE_LABELS[bookType]}\n \n\n {fetchFilteredBooks(bookType).map((bookId) => (\n
\n updateReference(bookId, false)}\n isSelected={selectedBookId === bookId}\n handleHighlightBook={() => setHighlightedBookId(bookId)}\n handleKeyDown={handleKeyDownMenuItem}\n bookType={bookType}\n ref={(element: HTMLDivElement) => {\n if (selectedBookId === bookId) menuItemRef.current = element;\n }}\n >\n {\n setHighlightedChapter(chapterNumber);\n }}\n />\n \n
\n ))}\n {BOOK_TYPE_ARRAY.length - 1 !== bookTypeIndex ? (\n \n ) : undefined}\n
\n ),\n )}\n \n
\n
\n );\n}\n\nexport default BookChapterControl;\n","import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const buttonVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-whitespace-nowrap tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50',\n {\n variants: {\n variant: {\n default: 'tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90',\n destructive: 'tw-bg-destructive tw-text-destructive-foreground hover:tw-bg-destructive/90',\n outline:\n 'tw-border tw-border-input tw-bg-background hover:tw-bg-accent hover:tw-text-accent-foreground',\n secondary: 'tw-bg-secondary tw-text-secondary-foreground hover:tw-bg-secondary/80',\n ghost: 'hover:tw-bg-accent hover:tw-text-accent-foreground',\n link: 'tw-text-primary tw-underline-offset-4 hover:tw-underline',\n },\n size: {\n default: 'tw-h-10 tw-px-4 tw-py-2',\n sm: 'tw-h-9 tw-rounded-md tw-px-3',\n lg: 'tw-h-11 tw-rounded-md tw-px-8',\n icon: 'tw-h-10 tw-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return (\n \n );\n },\n);\nButton.displayName = 'Button';\n","import React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst labelVariants = cva(\n 'tw-text-sm tw-font-medium tw-leading-none peer-disabled:tw-cursor-not-allowed peer-disabled:tw-opacity-70',\n);\n\nexport const Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, ...props }, ref) => (\n \n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n","import React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n \n \n \n \n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import React from 'react';\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Dialog, DialogContent } from '@/components/shadcn-ui/dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nfunction CommandDialog({ children, ...props }: CommandDialogProps) {\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nfunction CommandShortcut({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import { useState } from 'react';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/shadcn-ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/shadcn-ui/command';\nimport { PopoverProps } from '@radix-ui/react-popover';\n\nexport type ComboBoxLabelOption = { label: string };\nexport type ComboBoxOption = string | number | ComboBoxLabelOption;\n\nexport type ComboBoxProps = {\n /** Optional unique identifier */\n id?: string;\n /** Text label title for combobox */\n /** List of available options for the dropdown menu */\n options?: readonly T[];\n /** Additional css classes to help with unique styling of the combo box */\n className?: string;\n /**\n * The selected value that the combo box currently holds. Must be shallow equal to one of the\n * options entries.\n */\n value?: T;\n /** Triggers when content of textfield is changed */\n onChange?: (newValue: T) => void;\n /** Used to determine the string value for a given option. */\n getOptionLabel?: (option: ComboBoxOption) => string;\n /** Text displayed on button if `value` is undefined */\n buttonPlaceholder?: string;\n /** Placeholder text for text field */\n textPlaceholder?: string;\n /** Text to display when no options match input */\n commandEmptyMessage?: string;\n /** Variant of button */\n buttonVariant?: ButtonProps['variant'];\n /** Text direction ltr or rtl */\n dir?: Direction;\n /** Optional boolean to set if trigger should be disabled */\n isDisabled?: boolean;\n} & PopoverProps;\n\ntype Direction = 'ltr' | 'rtl';\n\nfunction getOptionLabelDefault(option: ComboBoxOption): string {\n if (typeof option === 'string') {\n return option;\n }\n if (typeof option === 'number') {\n return option.toString();\n }\n return option.label;\n}\n\n/**\n * Autocomplete input and command palette with a list of suggestions.\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/combobox\n */\nfunction ComboBox({\n id,\n options = [],\n className,\n value,\n onChange = () => {},\n getOptionLabel = getOptionLabelDefault,\n buttonPlaceholder = '',\n textPlaceholder = '',\n commandEmptyMessage = 'No option found',\n buttonVariant = 'outline',\n dir = 'ltr',\n isDisabled = false,\n ...props\n}: ComboBoxProps) {\n const [open, setOpen] = useState(false);\n\n return (\n \n \n \n \n {value ? getOptionLabel(value) : buttonPlaceholder}\n \n \n \n \n \n \n \n {commandEmptyMessage}\n \n {options.map((option) => (\n {\n onChange(option);\n setOpen(false);\n }}\n >\n \n {getOptionLabel(option)}\n \n ))}\n \n \n \n \n );\n}\n\nexport default ComboBox;\n","import { useMemo } from 'react';\nimport ComboBox from '@/components/basics/combo-box.component';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChapterRangeSelectorProps = {\n startChapter: number;\n endChapter: number;\n handleSelectStartChapter: (chapter: number) => void;\n handleSelectEndChapter: (chapter: number) => void;\n isDisabled?: boolean;\n chapterCount: number;\n};\n\nexport default function ChapterRangeSelector({\n startChapter,\n endChapter,\n handleSelectStartChapter,\n handleSelectEndChapter,\n isDisabled = false,\n chapterCount,\n}: ChapterRangeSelectorProps) {\n const chapterOptions = useMemo(\n () => Array.from({ length: chapterCount }, (_, index) => index + 1),\n [chapterCount],\n );\n\n const onChangeStartChapter = (value: number) => {\n handleSelectStartChapter(value);\n if (value > endChapter) {\n handleSelectEndChapter(value);\n }\n };\n\n const onChangeEndChapter = (value: number) => {\n handleSelectEndChapter(value);\n if (value < startChapter) {\n handleSelectStartChapter(value);\n }\n };\n\n return (\n <>\n \n option.toString()}\n value={startChapter}\n />\n\n \n option.toString()}\n value={endChapter}\n />\n \n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport { Label } from '@/components/shadcn-ui/label';\nimport { RadioGroup, RadioGroupItem } from '@/components/shadcn-ui/radio-group';\nimport { Canon } from '@sillsdev/scripture';\nimport { LocalizedStringValue } from 'platform-bible-utils';\nimport { useState } from 'react';\nimport ChapterRangeSelector, {\n ChapterRangeSelectorProps,\n} from '../basics/chapter-range-selector.component';\n\nexport enum BookSelectionMode {\n CURRENT_BOOK = 'current book',\n CHOOSE_BOOKS = 'choose books',\n}\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const BOOK_SELECTOR_STRING_KEYS = Object.freeze([\n '%webView_bookSelector_currentBook%',\n '%webView_bookSelector_choose%',\n '%webView_bookSelector_chooseBooks%',\n] as const);\n\nexport type BookSelectorLocalizedStrings = {\n [localizedInventoryKey in (typeof BOOK_SELECTOR_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: BookSelectorLocalizedStrings,\n key: keyof BookSelectorLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\ntype BookSelectorProps = ChapterRangeSelectorProps & {\n handleBookSelectionModeChange: (newMode: BookSelectionMode) => void;\n currentBookName: string;\n onSelectBooks: () => void;\n selectedBookIds: string[];\n localizedStrings: BookSelectorLocalizedStrings;\n};\n\nexport default function BookSelector({\n handleBookSelectionModeChange,\n currentBookName,\n onSelectBooks,\n selectedBookIds,\n chapterCount,\n endChapter,\n handleSelectEndChapter,\n startChapter,\n handleSelectStartChapter,\n localizedStrings,\n}: BookSelectorProps) {\n const currentBookText = localizeString(localizedStrings, '%webView_bookSelector_currentBook%');\n const chooseText = localizeString(localizedStrings, '%webView_bookSelector_choose%');\n const chooseBooksText = localizeString(localizedStrings, '%webView_bookSelector_chooseBooks%');\n\n const [bookSelectionMode, setBookSelectionMode] = useState(\n BookSelectionMode.CURRENT_BOOK,\n );\n\n const onSelectionModeChange = (newMode: BookSelectionMode) => {\n setBookSelectionMode(newMode);\n handleBookSelectionModeChange(newMode);\n };\n\n return (\n onSelectionModeChange(value as BookSelectionMode)}\n >\n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n \n onSelectBooks()}\n >\n {chooseText}\n \n
\n
\n \n );\n}\n","import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';\nimport { FilterIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\n\ninterface DataTableViewOptionsProps {\n table: Table;\n}\n\nfunction DataTableViewOptions({ table }: DataTableViewOptionsProps) {\n return (\n \n \n \n \n \n Toggle columns\n \n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n column.toggleVisibility(!!value)}\n >\n {column.id}\n \n );\n })}\n \n \n );\n}\n\nexport default DataTableViewOptions;\n","import React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n span]:tw-line-clamp-1',\n className,\n )}\n {...props}\n >\n {children}\n \n \n \n \n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = 'popper', ...props }, ref) => (\n \n \n \n \n {children}\n \n \n \n \n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n\n {children}\n \n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import { ChevronLeftIcon, ChevronRightIcon, ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\ninterface DataTablePaginationProps {\n table: Table;\n}\n\nfunction DataTablePagination({ table }: DataTablePaginationProps) {\n return (\n
\n
\n
\n {table.getFilteredSelectedRowModel().rows.length} of{' '}\n {table.getFilteredRowModel().rows.length} row(s) selected\n
\n
\n

Rows per page

\n {\n table.setPageSize(Number(value));\n }}\n >\n \n \n \n \n {[10, 20, 30, 40, 50].map((pageSize) => (\n \n {pageSize}\n \n ))}\n \n \n
\n
\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n
\n
\n table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n Go to first page\n \n \n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Go to previous page\n \n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Go to next page\n \n \n table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n Go to last page\n \n \n
\n
\n
\n );\n}\n\nexport default DataTablePagination;\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n
\n \n
\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n \n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n tr]:last:tw-border-b-0', className)}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { useState } from 'react';\n\nimport {\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n ColumnDef as TSColumnDef,\n Row as TSRow,\n RowSelectionState as TSRowSelectionState,\n SortDirection as TSSortDirection,\n Table as TSTable,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table';\n\nimport DataTableViewOptions from '@/components/advanced/data-table/data-table-column-toggle.component';\nimport DataTablePagination from '@/components/advanced/data-table/data-table-pagination.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\n\nexport type ColumnDef = TSColumnDef;\nexport type RowContents = TSRow;\nexport type TableContents = TSTable;\nexport type SortDirection = TSSortDirection;\nexport type RowSelectionState = TSRowSelectionState;\n\ninterface DataTableProps {\n columns: ColumnDef[];\n data: TData[];\n enablePagination?: boolean;\n showPaginationControls?: boolean;\n showColumnVisibilityControls?: boolean;\n stickyHeader?: boolean;\n onRowClickHandler?: (row: RowContents, table: TableContents) => void;\n}\n\n/**\n * Feature-rich table component that infuses our basic shadcn-based Table component with features\n * from TanStack's React Table library\n */\nfunction DataTable({\n columns,\n data,\n enablePagination = false,\n showPaginationControls = false,\n showColumnVisibilityControls = false,\n stickyHeader = false,\n onRowClickHandler = () => {},\n}: DataTableProps) {\n const [sorting, setSorting] = useState([]);\n const [columnFilters, setColumnFilters] = useState([]);\n const [columnVisibility, setColumnVisibility] = useState({});\n const [rowSelection, setRowSelection] = useState({});\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n ...(enablePagination && { getPaginationRowModel: getPaginationRowModel() }),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n onColumnFiltersChange: setColumnFilters,\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n });\n\n return (\n
\n {showColumnVisibilityControls && }\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => {\n return (\n \n {header.isPlaceholder\n ? undefined\n : flexRender(header.column.columnDef.header, header.getContext())}\n \n );\n })}\n \n ))}\n \n \n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n onRowClickHandler(row, table)}\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n >\n {row.getVisibleCells().map((cell) => (\n \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n \n ))}\n \n ))\n ) : (\n \n \n No results.\n \n \n )}\n \n
\n {enablePagination && (\n
\n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n \n
\n )}\n {enablePagination && showPaginationControls && }\n
\n );\n}\n\nexport default DataTable;\n","import {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { Canon } from '@sillsdev/scripture';\nimport { deepEqual, LanguageStrings, ScriptureReference } from 'platform-bible-utils';\nimport { useMemo } from 'react';\nimport { InventoryItemOccurrence } from './inventory-utils';\n\n/** Props for the OccurrencesTable component */\ntype OccurrencesTableProps = {\n /** Data that contains scriptures references and snippets of scripture */\n occurrenceData: InventoryItemOccurrence[];\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the OccurrencesTable needs to work well across multiple\n * languages\n */\n localizedStrings: LanguageStrings;\n};\n\n/**\n * Table that shows occurrences of specified inventory item(s). The first column shows the related\n * scripture reference. The second column shows the snippet of scripture that contains the specified\n * inventory item\n */\nfunction OccurrencesTable({\n occurrenceData,\n setScriptureReference,\n localizedStrings,\n}: OccurrencesTableProps) {\n const referenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_reference%'];\n const occurrenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_occurrence%'];\n\n const occurrences: InventoryItemOccurrence[] = useMemo(() => {\n const uniqueOccurrences: InventoryItemOccurrence[] = [];\n\n occurrenceData.forEach((occurrence) => {\n if (!uniqueOccurrences.some((uniqueOccurrence) => deepEqual(uniqueOccurrence, occurrence))) {\n uniqueOccurrences.push(occurrence);\n }\n });\n\n return uniqueOccurrences;\n }, [occurrenceData]);\n\n return (\n \n \n \n {referenceHeaderText}\n {occurrenceHeaderText}\n \n \n \n {occurrences.length > 0 &&\n occurrences.map((occurrence) => (\n {\n setScriptureReference(occurrence.reference);\n }}\n >\n {`${Canon.bookNumberToEnglishName(occurrence.reference.bookNum)} ${occurrence.reference.chapterNum}:${occurrence.reference.verseNum}`}\n {occurrence.text}\n \n ))}\n \n
\n );\n}\n\nexport default OccurrencesTable;\n","import React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport default Checkbox;\n","import { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference } from 'platform-bible-utils';\n\n/* #region Types */\n\n/**\n * Status of items that appear in inventories. 'approved' and 'unapproved' items are defined in the\n * project's `Settings.xml`. All other items are defined as 'unknown'\n */\nexport type Status = 'approved' | 'unapproved' | 'unknown';\n\n/** Occurrence of item in inventory. Primarily used by table that shows occurrences */\nexport type InventoryItemOccurrence = {\n /** Reference to scripture where the item appears */\n reference: ScriptureReference;\n /** Snippet of scripture that contains the occurrence */\n text: string;\n};\n\n/** Data structure that contains all information on an item that is shown in an inventory */\nexport type InventoryTableData = {\n /**\n * The item (e.g. a character in the characters inventory, a marker in the marker inventory) In\n * most cases the array will only have one element. In case of additional items (e.g. the\n * preceding marker in the markers check), the primary item should be stored in the first index.\n * To show additional items in the inventory, make sure to configure the `additionalItemsLabels`\n * prop for the Inventory component\n */\n items: string[];\n /** The number of times this item occurs in the selected scope */\n count: number;\n /** The status of this item (see documentation for `Status` type for more information) */\n status: Status;\n /** Occurrences of this item in the scripture text for the selected scope */\n occurrences: InventoryItemOccurrence[];\n};\n\n/* #endregion */\n\n/* #region Functions */\n\n/**\n * Splits USFM string into shorter line-like segments\n *\n * @param text A single (likely very large) USFM string\n * @returns An array containing the input text, split into shorter segments\n */\nexport const getLinesFromUSFM = (text: string) => {\n // Splits on (CR)LF, CR, \\v, \\c and \\id\n return text.split(/(?:\\r?\\n|\\r)|(?=(?:\\\\(?:v|c|id)))/g);\n};\n\n/**\n * Extracts chapter or verse number from USFM strings that start with a \\c or \\v marker\n *\n * @param text USFM string that is expected to start with \\c or \\v marker\n * @returns Chapter or verse number if one is found. Else returns 0.\n */\nexport const getNumberFromUSFM = (text: string): number | undefined => {\n // Captures all digits that follow \\v or \\c markers followed by whitespace located at the start of a string\n const regex = /^\\\\[vc]\\s+(\\d+)/;\n const match = text.match(regex);\n\n if (match) {\n return +match[1];\n }\n return undefined;\n};\n\n/**\n * Gets book ID from USFM string that starts with the \\id marker, and returns book number for it\n *\n * @param text USFM string that is expected to start with \\id marker\n * @returns Book number corresponding to the \\id marker in the input text. Returns 0 if no marker is\n * found or the marker is not valid\n */\nexport const getBookNumFromId = (text: string): number => {\n // Captures all digits that follow an \\id marker followed by whitespace located at the start of a string\n const match = text.match(/^\\\\id\\s+([A-Za-z]+)/);\n if (match) {\n return Canon.bookIdToNumber(match[1]);\n }\n return 0;\n};\n\n/**\n * Gets the status for an item, typically used in the Inventory component\n *\n * @param item The item for which the status is being requested\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @returns The status for the specified item\n */\nexport const getStatusForItem = (\n item: string,\n approvedItems: string[],\n unapprovedItems: string[],\n): Status => {\n if (unapprovedItems.includes(item)) return 'unapproved';\n if (approvedItems.includes(item)) return 'approved';\n return 'unknown';\n};\n\n/* #endregion */\n","import React from 'react';\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst toggleVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors hover:tw-bg-muted hover:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=on]:tw-bg-accent data-[state=on]:tw-text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-transparent',\n outline:\n 'tw-border tw-border-input tw-bg-transparent hover:tw-bg-accent hover:tw-text-accent-foreground',\n },\n size: {\n default: 'tw-h-10 tw-px-3',\n sm: 'tw-h-9 tw-px-2.5',\n lg: 'tw-h-11 tw-px-5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst Toggle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, variant, size, ...props }, ref) => (\n \n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","import React from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { toggleVariants } from '@/components/shadcn-ui/toggle';\n\nconst ToggleGroupContext = React.createContext>({\n size: 'default',\n variant: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, size, children, ...props }, ref) => (\n \n \n {children}\n \n \n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n \n {children}\n \n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { ColumnDef, SortDirection } from '@/components/advanced/data-table/data-table.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/shadcn-ui/toggle-group';\nimport {\n ArrowDownIcon,\n ArrowUpDownIcon,\n ArrowUpIcon,\n CircleCheckIcon,\n CircleHelpIcon,\n CircleXIcon,\n} from 'lucide-react';\nimport { ReactNode } from 'react';\nimport { InventoryTableData, Status } from './inventory-utils';\n\n/**\n * Gets an icon that indicates the current sorting direction based on the provided input\n *\n * @param sortDirection Sorting direction. Can be ascending ('asc'), descending ('desc') or false (\n * i.e. not sorted)\n * @returns The appropriate sorting icon for the provided sorting direction\n */\nconst getSortingIcon = (sortDirection: false | SortDirection): ReactNode => {\n if (sortDirection === 'asc') {\n return ;\n }\n if (sortDirection === 'desc') {\n return ;\n }\n return ;\n};\n\n/**\n * Function that creates the item column for inventories\n *\n * @param itemLabel Localized label for the item column (e.g. 'Character', 'Repeated Word', etc.)\n * @returns Column that shows the inventory items. Should be used with the DataTable component\n */\nexport const inventoryItemColumn = (itemLabel: string): ColumnDef => {\n return {\n accessorKey: 'item',\n accessorFn: (row: InventoryTableData) => row.items[0],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the additional item columns for inventories\n *\n * @param additionalItemLabel Localized label for the additional item column (e.g. 'Preceding\n * Marker')\n * @param additionalItemIndex Index that locates the desired item in the items array of the\n * inventory\n * @returns Column that shows additional inventory items. Should be used with the DataTable\n * component\n */\nexport const inventoryAdditionalItemColumn = (\n additionalItemLabel: string,\n additionalItemIndex: number,\n): ColumnDef => {\n return {\n accessorKey: `item${additionalItemIndex}`,\n accessorFn: (row: InventoryTableData) => row.items[additionalItemIndex],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the count column for inventories. Should be used with the DataTable\n * component.\n *\n * @param itemLabel Localized label for the count column\n * @returns Column that shows the number of occurrences of the related inventory items\n */\nexport const inventoryCountColumn = (countLabel: string): ColumnDef => {\n return {\n accessorKey: 'count',\n header: ({ column }) => (\n
\n \n
\n ),\n cell: ({ row }) =>
{row.getValue('count')}
,\n };\n};\n\n/**\n * Function that updates project settings when status for item(s) changes\n *\n * @param changedItems Array of items for which the status is being updated\n * @param newStatus The status that the items are being given\n * @param approvedItems Array of currently approved items\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of currently unapproved items\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n */\nconst statusChangeHandler = (\n changedItems: string[],\n newStatus: Status,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n) => {\n let newApprovedItems: string[] = [...approvedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'approved') {\n if (!newApprovedItems.includes(item)) {\n newApprovedItems.push(item);\n }\n } else {\n newApprovedItems = newApprovedItems.filter((validItem) => validItem !== item);\n }\n });\n onApprovedItemsChange(newApprovedItems);\n\n let newUnapprovedItems: string[] = [...unapprovedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'unapproved') {\n if (!newUnapprovedItems.includes(item)) {\n newUnapprovedItems.push(item);\n }\n } else {\n newUnapprovedItems = newUnapprovedItems.filter((unapprovedItem) => unapprovedItem !== item);\n }\n });\n onUnapprovedItemsChange(newUnapprovedItems);\n};\n\n/**\n * Function that creates the status column for inventories. Should be used with the DataTable\n * component.\n *\n * @param statusLabel Localized label for the status column\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n * @returns Column that shows the status buttons for the related inventory item. The button for the\n * current status of the item is selected\n */\nexport const inventoryStatusColumn = (\n statusLabel: string,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n): ColumnDef => {\n return {\n accessorKey: 'status',\n header: ({ column }) => {\n return (\n
\n \n
\n );\n },\n cell: ({ row }) => {\n const status: Status = row.getValue('status');\n const item: string = row.getValue('item');\n return (\n \n \n statusChangeHandler(\n [item],\n 'approved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"approved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unapproved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unapproved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unknown',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unknown\"\n >\n \n \n \n );\n },\n };\n};\n","import DataTable, {\n ColumnDef,\n RowContents,\n RowSelectionState,\n TableContents,\n} from '@/components/advanced/data-table/data-table.component';\nimport OccurrencesTable from '@/components/advanced/inventory/occurrences-table.component';\nimport Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Input } from '@/components/shadcn-ui/input';\nimport { Label } from '@/components/shadcn-ui/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n deepEqual,\n LocalizedStringValue,\n ScriptureReference,\n substring,\n} from 'platform-bible-utils';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n getBookNumFromId,\n getLinesFromUSFM,\n getNumberFromUSFM,\n getStatusForItem,\n InventoryItemOccurrence,\n InventoryTableData,\n Status,\n} from './inventory-utils';\nimport { inventoryAdditionalItemColumn } from './inventory-columns';\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const INVENTORY_STRING_KEYS = Object.freeze([\n '%webView_inventory_all%',\n '%webView_inventory_approved%',\n '%webView_inventory_unapproved%',\n '%webView_inventory_unknown%',\n '%webView_inventory_scope_currentBook%',\n '%webView_inventory_scope_chapter%',\n '%webView_inventory_scope_verse%',\n '%webView_inventory_filter_text%',\n '%webView_inventory_show_additional_items%',\n '%webView_inventory_occurrences_table_header_reference%',\n '%webView_inventory_occurrences_table_header_occurrence%',\n] as const);\n\nexport type InventoryLocalizedStrings = {\n [localizedInventoryKey in (typeof INVENTORY_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/** Scope of scripture that the inventory can operate on */\nexport type Scope = 'book' | 'chapter' | 'verse';\n\n/** Status values that the status filter can select from */\ntype StatusFilter = Status | 'all';\n\n/** Text labels for the inventory columns and the control components of additional inventory items */\ntype AdditionalItemsLabels = {\n checkboxText?: string;\n tableHeaders?: string[];\n};\n\n/**\n * Filters data that is shown in the DataTable section of the Inventory\n *\n * @param itemData All inventory items and their related information\n * @param statusFilter Allows filtering by status (i.e. show all items, or only items that are\n * 'approved', 'unapproved' or 'unknown')\n * @param textFilter Allows filtering by text. All items that include the filter text will be\n * selected.\n * @returns Array of items and their related information that are matched by the specified filters\n */\nconst filterItemData = (\n itemData: InventoryTableData[],\n statusFilter: StatusFilter,\n textFilter: string,\n): InventoryTableData[] => {\n let filteredItemData: InventoryTableData[] = itemData;\n\n if (statusFilter !== 'all') {\n filteredItemData = filteredItemData.filter(\n (item) =>\n (statusFilter === 'approved' && item.status === 'approved') ||\n (statusFilter === 'unapproved' && item.status === 'unapproved') ||\n (statusFilter === 'unknown' && item.status === 'unknown'),\n );\n }\n\n if (textFilter !== '')\n filteredItemData = filteredItemData.filter((item) => item.items[0].includes(textFilter));\n\n return filteredItemData;\n};\n\n/**\n * Turns array of strings into array of inventory items, along with their count and status\n *\n * @param text The source scripture text that is searched for inventory items\n * @param scriptureRef The scripture reference that the application is currently set to\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param itemRegex Regular expression that describes what items this Inventory should extract from\n * the provided scripture text\n * @returns Array of inventory items, along with their count and status\n */\nconst createTableData = (\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n itemRegex: RegExp,\n): InventoryTableData[] => {\n if (!text) return [];\n\n const tableData: InventoryTableData[] = [];\n\n let currentBook: number | undefined = scriptureRef.bookNum;\n let currentChapter: number | undefined = scriptureRef.chapterNum;\n let currentVerse: number | undefined = scriptureRef.verseNum;\n\n const lines = getLinesFromUSFM(text);\n\n lines.forEach((line: string) => {\n if (line.startsWith('\\\\id')) {\n currentBook = getBookNumFromId(line);\n currentChapter = 0;\n currentVerse = 0;\n }\n if (line.startsWith('\\\\c')) {\n currentChapter = getNumberFromUSFM(line);\n currentVerse = 0;\n }\n if (line.startsWith('\\\\v')) {\n currentVerse = getNumberFromUSFM(line);\n if (currentChapter === 0) {\n currentChapter = scriptureRef.chapterNum;\n }\n }\n\n let match: RegExpExecArray | undefined = itemRegex.exec(line) ?? undefined;\n while (match) {\n const items: string[] = [];\n match.forEach((item) => items.push(item));\n const itemIndex = match.index;\n const existingItem = tableData.find((tableEntry) => deepEqual(tableEntry.items, items));\n const newReference: InventoryItemOccurrence = {\n reference: {\n bookNum: currentBook !== undefined ? currentBook : -1,\n chapterNum: currentChapter !== undefined ? currentChapter : -1,\n verseNum: currentVerse !== undefined ? currentVerse : -1,\n },\n text: substring(line, Math.max(0, itemIndex - 25), Math.min(itemIndex + 25, line.length)),\n };\n if (existingItem) {\n existingItem.count += 1;\n existingItem.occurrences.push(newReference);\n } else {\n const newItem: InventoryTableData = {\n items,\n count: 1,\n status: getStatusForItem(items[0], approvedItems, unapprovedItems),\n occurrences: [newReference],\n };\n tableData.push(newItem);\n }\n\n match = itemRegex.exec(line) ?? undefined;\n }\n });\n\n return tableData;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: InventoryLocalizedStrings,\n key: keyof InventoryLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\n/** Props for the Inventory component */\ntype InventoryProps = {\n /** The scripture reference that the application is currently set to */\n scriptureReference: ScriptureReference;\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the Inventory needs to work well across multiple\n * languages. When using this component with Platform.Bible, you can import\n * `INVENTORY_STRING_KEYS` from this library, pass it in to the Platform's localization hook, and\n * pass the localized keys that are returned by the hook into this prop.\n */\n localizedStrings: InventoryLocalizedStrings;\n /**\n * The logic that finds the desired items in the source text. This can either be a Regular\n * expression that captures one or multiple items (preferred), or a custom function that builds\n * and return an InventoryDataTable[] manually. Note: In case the logic captures more than one\n * item (i.e. InventoryTableData.items has a length greater than 1), you must provide text labels\n * for the related columns and control elements to show by setting the `additionalItemsLabels`\n * prop\n */\n extractItems:\n | RegExp\n | ((\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n ) => InventoryTableData[]);\n /**\n * Text labels for control elements and additional column headers in case your Inventory has more\n * than one item to show (e.g. The 'Preceding Marker' in the Markers Inventory)\n */\n additionalItemsLabels?: AdditionalItemsLabels;\n /** Array of approved items, typically as defined in `Settings.xml` */\n approvedItems: string[];\n /** Array of unapproved items, typically as defined in `Settings.xml` */\n unapprovedItems: string[];\n /** The source scripture text that is searched for in inventory items */\n text: string | undefined;\n /** Scope of scripture that the inventory will operate on */\n scope: Scope;\n /** Callback function that is executed when the scope is changed from the Inventory */\n onScopeChange: (scope: Scope) => void;\n /**\n * Column definitions for the Inventory data table. The most commonly used column definitions are\n * pre-configured for your convenience and can be imported (e.g. inventoryItemColumn,\n * inventoryAdditionalItemColumn inventoryCountColumn, and inventoryStatusColumn). If you need any\n * other columns you can add these yourself\n */\n columns: ColumnDef[];\n};\n\n/** Inventory component that is used to view and control the status of provided project settings */\nexport default function Inventory({\n scriptureReference,\n setScriptureReference,\n localizedStrings,\n extractItems,\n additionalItemsLabels,\n approvedItems,\n unapprovedItems,\n text,\n scope,\n onScopeChange,\n columns,\n}: InventoryProps) {\n const allItemsText = localizeString(localizedStrings, '%webView_inventory_all%');\n const approvedItemsText = localizeString(localizedStrings, '%webView_inventory_approved%');\n const unapprovedItemsText = localizeString(localizedStrings, '%webView_inventory_unapproved%');\n const unknownItemsText = localizeString(localizedStrings, '%webView_inventory_unknown%');\n const scopeBookText = localizeString(localizedStrings, '%webView_inventory_scope_currentBook%');\n const scopeChapterText = localizeString(localizedStrings, '%webView_inventory_scope_chapter%');\n const scopeVerseText = localizeString(localizedStrings, '%webView_inventory_scope_verse%');\n const filterText = localizeString(localizedStrings, '%webView_inventory_filter_text%');\n const showAdditionalItemsText = localizeString(\n localizedStrings,\n '%webView_inventory_show_additional_items%',\n );\n\n const [showAdditionalItems, setShowAdditionalItems] = useState(false);\n const [statusFilter, setStatusFilter] = useState('all');\n const [textFilter, setTextFilter] = useState('');\n const [selectedItem, setSelectedItem] = useState([]);\n\n const tableData: InventoryTableData[] = useMemo(() => {\n if (!text) return [];\n if (extractItems instanceof RegExp)\n return createTableData(\n text,\n scriptureReference,\n approvedItems,\n unapprovedItems,\n extractItems,\n );\n return extractItems(text, scriptureReference, approvedItems, unapprovedItems);\n }, [text, extractItems, scriptureReference, approvedItems, unapprovedItems]);\n\n const reducedTableData: InventoryTableData[] = useMemo(() => {\n if (showAdditionalItems) return tableData;\n\n const newTableData: InventoryTableData[] = [];\n\n tableData.forEach((tableEntry) => {\n const firstItem = tableEntry.items[0];\n\n const existingEntry = newTableData.find(\n (newTableEntry) => newTableEntry.items[0] === firstItem,\n );\n\n if (existingEntry) {\n existingEntry.count += tableEntry.count;\n existingEntry.occurrences = existingEntry.occurrences.concat(tableEntry.occurrences);\n } else {\n newTableData.push({\n items: [firstItem],\n count: tableEntry.count,\n occurrences: tableEntry.occurrences,\n status: tableEntry.status,\n });\n }\n });\n\n return newTableData;\n }, [showAdditionalItems, tableData]);\n\n const filteredTableData: InventoryTableData[] = useMemo(() => {\n return filterItemData(reducedTableData, statusFilter, textFilter);\n }, [reducedTableData, statusFilter, textFilter]);\n\n const allColumns: ColumnDef[] = useMemo(() => {\n if (!showAdditionalItems) return columns;\n\n const numberOfAdditionalItems = additionalItemsLabels?.tableHeaders?.length;\n if (!numberOfAdditionalItems) return columns;\n\n const additionalColumns: ColumnDef[] = [];\n\n for (let index = 0; index < numberOfAdditionalItems; index++) {\n additionalColumns.push(\n inventoryAdditionalItemColumn(\n additionalItemsLabels?.tableHeaders?.[index] || 'Additional Item',\n index + 1,\n ),\n );\n }\n\n return [...additionalColumns, ...columns];\n }, [additionalItemsLabels?.tableHeaders, columns, showAdditionalItems]);\n\n useEffect(() => {\n setSelectedItem([]);\n }, [filteredTableData]);\n\n const rowClickHandler = (\n row: RowContents,\n table: TableContents,\n ) => {\n table.setRowSelection(() => {\n const newSelection: RowSelectionState = {};\n newSelection[row.index] = true;\n return newSelection;\n });\n\n setSelectedItem(row.original.items);\n };\n\n const handleScopeChange = (value: string) => {\n if (value === 'book' || value === 'chapter' || value === 'verse') {\n onScopeChange(value);\n } else {\n throw new Error(`Invalid scope value: ${value}`);\n }\n };\n\n const handleStatusFilterChange = (value: string) => {\n if (value === 'all' || value === 'approved' || value === 'unapproved' || value === 'unknown') {\n setStatusFilter(value);\n } else {\n throw new Error(`Invalid status filter value: ${value}`);\n }\n };\n\n const occurrenceData: InventoryItemOccurrence[] = useMemo(() => {\n if (reducedTableData.length === 0 || selectedItem.length === 0) return [];\n const occurrence = reducedTableData.filter((tableEntry: InventoryTableData) => {\n return deepEqual(\n showAdditionalItems ? tableEntry.items : [tableEntry.items[0]],\n selectedItem,\n );\n });\n if (occurrence.length > 1) throw new Error('Selected item is not unique');\n return occurrence[0].occurrences;\n }, [selectedItem, showAdditionalItems, reducedTableData]);\n\n return (\n
\n
\n handleStatusFilterChange(value)}\n defaultValue={statusFilter}\n >\n \n \n \n \n {allItemsText}\n {approvedItemsText}\n {unapprovedItemsText}\n {unknownItemsText}\n \n \n \n {\n setTextFilter(event.target.value);\n }}\n />\n {additionalItemsLabels && (\n
\n {\n setSelectedItem([]);\n setShowAdditionalItems(checked);\n }}\n />\n \n
\n )}\n
\n
\n \n
\n {occurrenceData.length > 0 && (\n
\n \n
\n )}\n
\n );\n}\n","import { Input } from '@/components/shadcn-ui/input';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { useState } from 'react';\n\nexport type SearchBarProps = {\n /**\n * Callback fired to handle the search query when button pressed\n *\n * @param searchQuery\n */\n onSearch: (searchQuery: string) => void;\n\n /** Optional string that appears in the search bar without a search string */\n placeholder?: string;\n\n /** Optional boolean to set the input base to full width */\n isFullWidth?: boolean;\n};\n\nexport default function SearchBar({ onSearch, placeholder, isFullWidth }: SearchBarProps) {\n const [searchQuery, setSearchQuery] = useState('');\n\n const handleInputChange = (searchString: string) => {\n setSearchQuery(searchString);\n onSearch(searchString);\n };\n\n return (\n handleInputChange(e.target.value)}\n />\n );\n}\n","// adapted from: https://github.com/shadcn-ui/ui/discussions/752\n\n'use client';\n\nimport { TabsContentProps, TabsListProps, TabsTriggerProps } from '@/components/shadcn-ui/tabs';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport React from 'react';\n\nexport type VerticalTabsProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type LeftTabsTriggerProps = TabsTriggerProps & {\n value: string;\n ref?: React.Ref;\n};\n\nexport const VerticalTabs = React.forwardRef<\n React.ElementRef,\n VerticalTabsProps\n>(({ className, ...props }, ref) => (\n \n));\n\nVerticalTabs.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsTrigger = React.forwardRef<\n React.ElementRef,\n LeftTabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\n\nexport const VerticalTabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import SearchBar from '@/components/basics/search-bar.component';\nimport {\n VerticalTabs,\n VerticalTabsContent,\n VerticalTabsList,\n VerticalTabsTrigger,\n} from '@/components/basics/tabs-vertical';\nimport { ReactNode } from 'react';\n\nexport type TabKeyValueContent = {\n key: string;\n value: string;\n content: ReactNode;\n};\n\nexport type NavigationContentSearchProps = {\n /** List of values and keys for each tab this component should provide */\n tabList: TabKeyValueContent[];\n\n /** Handler to run when the value of the search bar changes */\n onSearch: (searchQuery: string) => void;\n\n /** Optional placeholder for the search bar */\n searchPlaceholder?: string;\n\n /** Optional title to include in the header */\n headerTitle?: string;\n\n /** Optional flag to make the search bar appear full width */\n isSearchBarFullWidth?: boolean;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nexport default function NavigationContentSearch({\n tabList,\n onSearch,\n searchPlaceholder,\n headerTitle,\n isSearchBarFullWidth = false,\n direction = 'ltr',\n}: NavigationContentSearchProps) {\n return (\n
\n
\n {headerTitle ?

{headerTitle}

: ''}\n \n
\n \n \n {tabList.map((tab) => (\n \n {tab.value}\n \n ))}\n \n {tabList.map((tab) => (\n \n {tab.content}\n \n ))}\n \n
\n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Canon } from '@sillsdev/scripture';\nimport {\n Cell,\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n GroupingState,\n Row,\n RowSelectionState,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport '@/components/advanced/scripture-results-viewer/scripture-results-viewer.component.css';\nimport {\n compareScrRefs,\n formatScrRef,\n ScriptureSelection,\n scrRefToBBBCCCVVV,\n} from 'platform-bible-utils';\nimport { MouseEvent, useEffect, useMemo, useState } from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\n\n/**\n * Information (e.g., a checking error or some other type of \"transient\" annotation) about something\n * noteworthy at a specific place in an instance of the Scriptures.\n */\nexport type ScriptureItemDetail = ScriptureSelection & {\n /**\n * Text of the error, note, etc. In the future, we might want to support something more than just\n * text so that a JSX element could be provided with a link or some other controls related to the\n * issue being reported.\n */\n detail: string;\n};\n\n/**\n * A uniquely identifiable source of results that can be displayed in the ScriptureResultsViewer.\n * Generally, the source will be a particular Scripture check, but there may be other types of\n * sources.\n */\nexport type ResultsSource = {\n /**\n * Uniquely identifies the source.\n *\n * @type {string}\n */\n id: string;\n\n /**\n * Name (potentially localized) of the source, suitable for display in the UI.\n *\n * @type {string}\n */\n displayName: string;\n};\n\nexport type ScriptureSrcItemDetail = ScriptureItemDetail & {\n /** Source/type of detail. Can be used for grouping. */\n source: ResultsSource;\n};\n\n/**\n * Represents a set of results keyed by Scripture reference. Generally, the source will be a\n * particular Scripture check, but this type also allows for other types of uniquely identifiable\n * sources.\n */\nexport type ResultsSet = {\n /**\n * The backing source associated with this set of results.\n *\n * @type {ResultsSource}\n */\n source: ResultsSource;\n\n /**\n * Array of Scripture item details (messages keyed by Scripture reference).\n *\n * @type {ScriptureItemDetail[]}\n */\n data: ScriptureItemDetail[];\n};\n\nconst scrBookColId = 'scrBook';\nconst scrRefColId = 'scrRef';\nconst typeColId = 'source';\nconst detailsColId = 'details';\n\nconst defaultScrRefColumnName = 'Scripture Reference';\nconst defaultScrBookGroupName = 'Scripture Book';\nconst defaultTypeColumnName = 'Type';\nconst defaultDetailsColumnName = 'Details';\n\nexport type ScriptureResultsViewerColumnInfo = {\n /** Optional header to display for the Reference column. Default value: 'Scripture Reference'. */\n scriptureReferenceColumnName?: string;\n\n /** Optional text to display to refer to the Scripture book group. Default value: 'Scripture Book'. */\n scriptureBookGroupName?: string;\n\n /** Optional header to display for the Type column. Default value: 'Type'. */\n typeColumnName?: string;\n\n /** Optional header to display for the Details column. Default value: 'Details' */\n detailsColumnName?: string;\n};\n\nexport type ScriptureResultsViewerProps = ScriptureResultsViewerColumnInfo & {\n /** Groups of ScriptureItemDetail objects from particular sources (e.g., Scripture checks) */\n sources: ResultsSet[];\n\n /** Flag indicating whether to display column headers. Default is false. */\n showColumnHeaders?: boolean;\n\n /** Flag indicating whether to display source column. Default is false. */\n showSourceColumn?: boolean;\n\n /** Callback function to notify when a row is selected */\n onRowSelected?: (selectedRow: ScriptureSrcItemDetail | undefined) => void;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nfunction getColumns(\n colInfo?: ScriptureResultsViewerColumnInfo,\n showSourceColumn?: boolean,\n): ColumnDef[] {\n const showSrcCol = showSourceColumn ?? false;\n return [\n {\n accessorFn: (row) =>\n `${Canon.bookNumberToId(row.start.bookNum)} ${row.start.chapterNum}:${row.start.verseNum}`,\n id: scrBookColId,\n header: colInfo?.scriptureReferenceColumnName ?? defaultScrRefColumnName,\n cell: (info) => {\n const row = info.row.original;\n if (info.row.getIsGrouped()) {\n return Canon.bookNumberToEnglishName(row.start.bookNum);\n }\n return info.row.groupingColumnId === scrBookColId ? formatScrRef(row.start) : undefined;\n },\n getGroupingValue: (row) => row.start.bookNum,\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: true,\n },\n {\n accessorFn: (row) => formatScrRef(row.start),\n id: scrRefColId,\n header: undefined,\n cell: (info) => {\n const row = info.row.original;\n return info.row.getIsGrouped() ? undefined : formatScrRef(row.start);\n },\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: false,\n },\n {\n accessorFn: (row) => row.source.displayName,\n id: typeColId,\n header: showSrcCol ? (colInfo?.typeColumnName ?? defaultTypeColumnName) : undefined,\n cell: (info) => (showSrcCol || info.row.getIsGrouped() ? info.getValue() : undefined),\n getGroupingValue: (row) => row.source.id,\n sortingFn: (a, b) =>\n a.original.source.displayName.localeCompare(b.original.source.displayName),\n enableGrouping: true,\n },\n {\n accessorFn: (row) => row.detail,\n id: detailsColId,\n header: colInfo?.detailsColumnName ?? defaultDetailsColumnName,\n cell: (info) => info.getValue(),\n enableGrouping: false,\n },\n ];\n}\n\nconst toRefOrRange = (scriptureSelection: ScriptureSelection) => {\n if (!('offset' in scriptureSelection.start))\n throw new Error('No offset available in range start');\n if (scriptureSelection.end && !('offset' in scriptureSelection.end))\n throw new Error('No offset available in range end');\n const { offset: offsetStart } = scriptureSelection.start;\n let offsetEnd: number = 0;\n if (scriptureSelection.end) ({ offset: offsetEnd } = scriptureSelection.end);\n if (\n !scriptureSelection.end ||\n compareScrRefs(scriptureSelection.start, scriptureSelection.end) === 0\n )\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}`;\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}-${scrRefToBBBCCCVVV(scriptureSelection.end)}+${offsetEnd}`;\n};\n\nconst getRowKey = (row: ScriptureSrcItemDetail) =>\n `${toRefOrRange({ start: row.start, end: row.end })} ${row.source.displayName} ${row.detail}`;\n\n/**\n * Component to display a combined list of detailed items from one or more sources, where the items\n * are keyed primarily by Scripture reference. This is particularly useful for displaying a list of\n * results from Scripture checks, but more generally could be used to display any \"results\" from any\n * source(s). The component allows for grouping by Scripture book, source, or both. By default, it\n * displays somewhat \"tree-like\" which allows it to be more horizontally compact and intuitive. But\n * it also has the option of displaying as a traditional table with column headings (with or without\n * the source column showing).\n */\nexport default function ScriptureResultsViewer({\n sources,\n showColumnHeaders = false,\n showSourceColumn = false,\n scriptureReferenceColumnName,\n scriptureBookGroupName,\n typeColumnName,\n detailsColumnName,\n onRowSelected,\n direction = 'ltr',\n}: ScriptureResultsViewerProps) {\n const [grouping, setGrouping] = useState([]);\n const [sorting, setSorting] = useState([{ id: scrBookColId, desc: false }]);\n const [rowSelection, setRowSelection] = useState({});\n\n const scriptureResults = useMemo(\n () =>\n sources.flatMap((source) => {\n return source.data.map((item) => ({\n ...item,\n source: source.source,\n }));\n }),\n [sources],\n );\n\n const columns = useMemo(\n () =>\n getColumns(\n {\n scriptureReferenceColumnName,\n typeColumnName,\n detailsColumnName,\n },\n showSourceColumn,\n ),\n [scriptureReferenceColumnName, typeColumnName, detailsColumnName, showSourceColumn],\n );\n\n useEffect(() => {\n // Ensure sorting is applied correctly when grouped by type\n if (grouping.includes(typeColId)) {\n setSorting([\n { id: typeColId, desc: false },\n { id: scrBookColId, desc: false },\n ]);\n } else {\n setSorting([{ id: scrBookColId, desc: false }]);\n }\n }, [grouping]);\n\n const table = useReactTable({\n data: scriptureResults,\n columns,\n state: {\n grouping,\n sorting,\n rowSelection,\n },\n onGroupingChange: setGrouping,\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getRowId: getRowKey,\n autoResetExpanded: false,\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n });\n\n useEffect(() => {\n if (onRowSelected) {\n const selectedRows = table.getSelectedRowModel().rowsById;\n const keys = Object.keys(selectedRows);\n if (keys.length === 1) {\n const selectedRow = scriptureResults.find((row) => getRowKey(row) === keys[0]) || undefined;\n if (selectedRow) onRowSelected(selectedRow);\n }\n }\n }, [rowSelection, scriptureResults, onRowSelected, table]);\n\n // Define possible grouping options\n const scrBookGroupName = scriptureBookGroupName ?? defaultScrBookGroupName;\n const typeGroupName = typeColumnName ?? defaultTypeColumnName;\n\n const groupingOptions = [\n { label: 'No Grouping', value: [] },\n { label: `Group by ${scrBookGroupName}`, value: [scrBookColId] },\n { label: `Group by ${typeGroupName}`, value: [typeColId] },\n {\n label: `Group by ${scrBookGroupName} and ${typeGroupName}`,\n value: [scrBookColId, typeColId],\n },\n {\n label: `Group by ${typeGroupName} and ${scrBookGroupName}`,\n value: [typeColId, scrBookColId],\n },\n ];\n\n const handleSelectChange = (selectedGrouping: string) => {\n setGrouping(JSON.parse(selectedGrouping));\n };\n\n const handleRowClick = (row: Row, event: MouseEvent) => {\n if (!row.getIsGrouped() && !row.getIsSelected()) {\n row.getToggleSelectedHandler()(event);\n }\n };\n\n const getEvenOrOddBandingStyle = (row: Row, index: number) => {\n if (row.getIsGrouped()) return '';\n // UX has now said they don't think they want banding. I'm leaving in the code to\n // set even and odd styles, but there's nothing in the CSS to style them differently.\n // The \"even\" style used to also have tw-bg-neutral-300 (along with even) to create\n // a visual banding effect. That could be added back in if UX changes the decision.\n return cn('banded-row', index % 2 === 0 ? 'even' : 'odd');\n };\n\n const getIndent = (\n groupingState: GroupingState,\n row: Row,\n cell: Cell,\n ) => {\n if (groupingState?.length === 0 || row.depth < cell.column.getGroupedIndex()) return undefined;\n if (row.getIsGrouped()) {\n switch (row.depth) {\n case 1:\n return 'tw-ps-4';\n default:\n return undefined;\n }\n }\n switch (row.depth) {\n case 1:\n return 'tw-ps-8';\n case 2:\n return 'tw-ps-12';\n default:\n return undefined;\n }\n };\n\n return (\n
\n {!showColumnHeaders && (\n {\n handleSelectChange(value);\n }}\n >\n \n \n \n \n \n {groupingOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n )}\n \n {showColumnHeaders && (\n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers\n .filter((h) => h.column.columnDef.header)\n .map((header) => (\n /* For sticky column headers to work, we probably need to change the default definition of the shadcn Table component. See https://github.com/shadcn-ui/ui/issues/1151 */\n \n {header.isPlaceholder ? undefined : (\n
\n {header.column.getCanGroup() ? (\n \n {header.column.getIsGrouped() ? `🛑` : `👊 `}\n \n ) : undefined}{' '}\n {flexRender(header.column.columnDef.header, header.getContext())}\n
\n )}\n
\n ))}\n
\n ))}\n
\n )}\n \n {table.getRowModel().rows.map((row, rowIndex) => {\n return (\n handleRowClick(row, event)}\n >\n {row.getVisibleCells().map((cell) => {\n if (\n cell.getIsPlaceholder() ||\n (cell.column.columnDef.enableGrouping &&\n !cell.getIsGrouped() &&\n (cell.column.columnDef.id !== typeColId || !showSourceColumn))\n )\n return undefined;\n return (\n \n {(() => {\n if (cell.getIsGrouped()) {\n return (\n \n {row.getIsExpanded() && }\n {!row.getIsExpanded() &&\n (direction === 'ltr' ? : )}{' '}\n {flexRender(cell.column.columnDef.cell, cell.getContext())} (\n {row.subRows.length})\n \n );\n }\n\n // if (cell.getIsAggregated()) {\n // flexRender(\n // cell.column.columnDef.aggregatedCell ?? cell.column.columnDef.cell,\n // cell.getContext(),\n // );\n // }\n\n return flexRender(cell.column.columnDef.cell, cell.getContext());\n })()}\n \n );\n })}\n \n );\n })}\n \n
\n
\n );\n}\n","import {\n getLocalizeKeyForScrollGroupId,\n LanguageStrings,\n ScrollGroupId,\n} from 'platform-bible-utils';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\nconst DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS = {\n [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n [getLocalizeKeyForScrollGroupId(0)]: 'A',\n [getLocalizeKeyForScrollGroupId(1)]: 'B',\n [getLocalizeKeyForScrollGroupId(2)]: 'C',\n [getLocalizeKeyForScrollGroupId(3)]: 'D',\n [getLocalizeKeyForScrollGroupId(4)]: 'E',\n [getLocalizeKeyForScrollGroupId(5)]: 'F',\n [getLocalizeKeyForScrollGroupId(6)]: 'G',\n [getLocalizeKeyForScrollGroupId(7)]: 'H',\n [getLocalizeKeyForScrollGroupId(8)]: 'I',\n [getLocalizeKeyForScrollGroupId(9)]: 'J',\n [getLocalizeKeyForScrollGroupId(10)]: 'K',\n [getLocalizeKeyForScrollGroupId(11)]: 'L',\n [getLocalizeKeyForScrollGroupId(12)]: 'M',\n [getLocalizeKeyForScrollGroupId(13)]: 'N',\n [getLocalizeKeyForScrollGroupId(14)]: 'O',\n [getLocalizeKeyForScrollGroupId(15)]: 'P',\n [getLocalizeKeyForScrollGroupId(16)]: 'Q',\n [getLocalizeKeyForScrollGroupId(17)]: 'R',\n [getLocalizeKeyForScrollGroupId(18)]: 'S',\n [getLocalizeKeyForScrollGroupId(19)]: 'T',\n [getLocalizeKeyForScrollGroupId(20)]: 'U',\n [getLocalizeKeyForScrollGroupId(21)]: 'V',\n [getLocalizeKeyForScrollGroupId(22)]: 'W',\n [getLocalizeKeyForScrollGroupId(23)]: 'X',\n [getLocalizeKeyForScrollGroupId(24)]: 'Y',\n [getLocalizeKeyForScrollGroupId(25)]: 'Z',\n};\n\nexport type ScrollGroupSelectorProps = {\n /**\n * List of scroll group ids to show to the user. Either a {@link ScrollGroupId} or `undefined` for\n * no scroll group\n */\n availableScrollGroupIds: (ScrollGroupId | undefined)[];\n /** Currently selected scroll group id. `undefined` for no scroll group */\n scrollGroupId: ScrollGroupId | undefined;\n /** Callback function run when the user tries to change the scroll group id */\n onChangeScrollGroupId: (newScrollGroupId: ScrollGroupId | undefined) => void;\n /**\n * Localized strings to use for displaying scroll group ids. Must be an object whose keys are\n * `getLocalizeKeyForScrollGroupId(scrollGroupId)` for all scroll group ids (and `undefined` if\n * included) in {@link ScrollGroupSelectorProps.availableScrollGroupIds} and whose values are the\n * localized strings to use for those scroll group ids.\n *\n * Defaults to English localizations of English alphabet for scroll groups 0-25 (e.g. 0 is A) and\n * Ø for `undefined`. Will fill in any that are not provided with these English localizations.\n * Also, if any values match the keys, the English localization will be used. This is useful in\n * case you want to pass in a temporary version of the localized strings while your localized\n * strings load.\n *\n * @example\n *\n * ```typescript\n * const myScrollGroupIdLocalizedStrings = {\n * [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n * [getLocalizeKeyForScrollGroupId(0)]: 'A',\n * [getLocalizeKeyForScrollGroupId(1)]: 'B',\n * [getLocalizeKeyForScrollGroupId(2)]: 'C',\n * [getLocalizeKeyForScrollGroupId(3)]: 'D',\n * [getLocalizeKeyForScrollGroupId(4)]: 'E',\n * };\n * ```\n *\n * @example\n *\n * ```tsx\n * const availableScrollGroupIds = [undefined, 0, 1, 2, 3, 4];\n *\n * const localizeKeys = getLocalizeKeysForScrollGroupIds();\n *\n * const [localizedStrings] = useLocalizedStrings(localizeKeys);\n *\n * ...\n *\n * \n * ```\n */\n localizedStrings?: LanguageStrings;\n};\n\n/** Selector component for choosing a scroll group */\nexport default function ScrollGroupSelector({\n availableScrollGroupIds,\n scrollGroupId,\n onChangeScrollGroupId,\n localizedStrings = {},\n}: ScrollGroupSelectorProps) {\n const localizedStringsDefaulted = {\n ...DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS,\n ...Object.fromEntries(\n Object.entries(localizedStrings).map(\n ([localizedStringKey, localizedStringValue]: [string, string]) => [\n localizedStringKey,\n localizedStringKey === localizedStringValue &&\n localizedStringKey in DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS\n ? DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS[localizedStringKey]\n : localizedStringValue,\n ],\n ),\n ),\n };\n return (\n \n onChangeScrollGroupId(\n newScrollGroupString === 'undefined' ? undefined : parseInt(newScrollGroupString, 10),\n )\n }\n >\n \n \n \n \n {availableScrollGroupIds.map((scrollGroupOptionId) => (\n \n {localizedStringsDefaulted[getLocalizeKeyForScrollGroupId(scrollGroupOptionId)]}\n \n ))}\n \n \n );\n}\n","import React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n \n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { PropsWithChildren } from 'react';\nimport { Separator } from '@/components/shadcn-ui/separator';\n\n/** Props for the SettingsList component, currently just children */\ntype SettingsListProps = PropsWithChildren;\n\n/**\n * SettingsList component is a wrapper for list items. Rendered with a formatted div\n *\n * @param children To populate the list with\n * @returns Formatted div encompassing the children\n */\nexport function SettingsList({ children }: SettingsListProps) {\n return
{children}
;\n}\n\n/** Props for SettingsListItem component */\ntype SettingsListItemProps = PropsWithChildren & {\n /** Primary text of the list item */\n primary: string;\n\n /** Optional text of the list item */\n secondary?: string | undefined;\n\n /** Optional boolean to display a message if the children aren't loaded yet. Defaults to false */\n isLoading?: boolean;\n\n /** Optional message to display if isLoading */\n loadingMessage?: string;\n};\n\n/**\n * SettingsListItem component is a common list item. Rendered with a formatted div\n *\n * @param primary Primary text of the list item\n * @param secondary Optional secondary text of the list item\n * @param isLoading Optional, to display a message if the action component isn't generated yet,\n * defaults to false\n * @param children The action component(s) to provide for this item\n * @param loadingMessage Optional, message to display if isLoading\n * @returns Formatted div encompassing the list item content\n */\nexport function SettingsListItem({\n primary,\n secondary,\n children,\n isLoading = false,\n loadingMessage,\n}: SettingsListItemProps) {\n return (\n
\n
\n

{primary}

\n

\n {secondary}\n

\n
\n\n {isLoading ? (\n

{loadingMessage}

\n ) : (\n
{children}
\n )}\n
\n );\n}\n\n/** Props for SettingsListHeader component */\ntype SettingsListHeaderProps = {\n /** The primary text of the list header */\n primary: string;\n\n /** Optional secondary text of the list header */\n secondary?: string | undefined;\n\n /** Optional boolean to include a separator underneath the secondary text. Defaults to false */\n includeSeparator?: boolean;\n};\n\n/**\n * SettingsListHeader component displays text above the list\n *\n * @param primary The primary text of the list header\n * @param secondary Optional secondary text of the list header\n * @param includeSeparator Optional boolean to include a separator underneath the secondary text.\n * Defaults to false\n * @returns Formatted div with list header content\n */\nexport function SettingsListHeader({\n primary,\n secondary,\n includeSeparator = false,\n}: SettingsListHeaderProps) {\n return (\n
\n
\n

{primary}

\n

{secondary}

\n
\n {includeSeparator ? : ''}\n
\n );\n}\n","import Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChecklistProps = {\n /** Optional string representing the id attribute of the Checklist */\n id?: string;\n /** Optional string representing CSS class name(s) for styling */\n className?: string;\n /** Array of strings representing the checkable items */\n listItems: string[];\n /** Array of strings representing the checked items */\n selectedListItems: string[];\n /**\n * Function that is called when a checkbox item is selected or deselected\n *\n * @param item The string description for this item\n * @param selected True if selected, false if not selected\n */\n handleSelectListItem: (item: string, selected: boolean) => void;\n\n /**\n * Optional function creates a label for a provided checkable item\n *\n * @param item The item for which a label is to be created\n * @returns A string representing the label text for the checkbox associated with that item\n */\n createLabel?: (item: string) => string;\n};\n\n/** Renders a list of checkboxes. Each checkbox corresponds to an item from the `listItems` array. */\nexport default function Checklist({\n id,\n className,\n listItems,\n selectedListItems,\n handleSelectListItem,\n createLabel,\n}: ChecklistProps) {\n return (\n
\n {listItems.map((item) => (\n
\n handleSelectListItem(item, value)}\n />\n \n
\n ))}\n
\n );\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n const element = props[propName];\n const safePropName = propFullName || propName;\n if (element == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for Emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n const elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n return _extends({}, propTypes, {\n [specialProperty]: props => {\n const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n if (unsupportedProps.length > 0) {\n return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n }\n return null;\n }\n });\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propValue = props[propName];\n const safePropName = propFullName || propName;\n if (propValue == null) {\n return null;\n }\n if (propValue && propValue.nodeType !== 1) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n }\n return null;\n}","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props(_extends({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style(_extends({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n return props => processStyleArg(stylesArg, _extends({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, _extends({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${capitalize(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // e.g. heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m10 17 5-5-5-5z\"\n}), 'ArrowRight');","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n return typeof element === 'string';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n const {\n disableDefaultClasses\n } = React.useContext(ClassNameConfiguratorContext);\n return slot => {\n if (disableDefaultClasses) {\n return '';\n }\n return generateUtilityClass(slot);\n };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport function ClassNameConfigurator(props) {\n const {\n disableDefaultClasses,\n children\n } = props;\n const contextValue = React.useMemo(() => ({\n disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n }), [disableDefaultClasses]);\n return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n value: contextValue,\n children: children\n });\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","import { globalStateClasses } from '@mui/utils/generateUtilityClass';\nconst GLOBAL_CLASS_PREFIX = 'base';\nfunction buildStateClass(state) {\n return `${GLOBAL_CLASS_PREFIX}--${state}`;\n}\nfunction buildSlotClass(componentName, slot) {\n return `${GLOBAL_CLASS_PREFIX}-${componentName}-${slot}`;\n}\nexport function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? buildStateClass(globalStateClass) : buildSlotClass(componentName, slot);\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import { generateUtilityClass } from '../generateUtilityClass';\nexport function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base-ui/react-portal/components-api/#portal)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, forwardedRef);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(forwardedRef, mountNode);\n return () => {\n setRef(forwardedRef, null);\n };\n }\n return undefined;\n }, [forwardedRef, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: children\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport { Portal };","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { generateUtilityClass } from '../generateUtilityClass';\nimport { generateUtilityClasses } from '../generateUtilityClasses';\nconst COMPONENT_NAME = 'Popper';\nexport function getPopperUtilityClass(slot) {\n return generateUtilityClass(COMPONENT_NAME, slot);\n}\nexport const popperClasses = generateUtilityClasses(COMPONENT_NAME, ['root']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\", \"ownerState\"],\n _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '../composeClasses';\nimport { Portal } from '../Portal';\nimport { getPopperUtilityClass } from './popperClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, useClassNamesOverride(getPopperUtilityClass));\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n var _slots$root;\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps\n // @ts-ignore internal logic\n // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, forwardedRef);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: popperModifiers\n }));\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses();\n const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: props,\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n children: typeof children === 'function' ? children(childProps) : children\n }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Popper](https://mui.com/base-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/base-ui/react-popper/components-api/#popper)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: forwardedRef,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display\n }, style),\n TransitionProps: transitionProps,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport { Popper };","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default {\n disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"component\", \"components\", \"componentsProps\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\", \"slots\", \"slotProps\"];\nimport { Popper as BasePopper } from '@mui/base/Popper';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n var _slots$root;\n const theme = useTheme();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n anchorEl,\n component,\n components,\n componentsProps,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n const otherProps = _extends({\n anchorEl,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition\n }, other);\n return /*#__PURE__*/_jsx(PopperRoot, _extends({\n as: component,\n direction: theme == null ? void 0 : theme.direction,\n slots: {\n root: RootComponent\n },\n slotProps: slotProps != null ? slotProps : componentsProps\n }, otherProps, {\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout, unstable_Timeout as Timeout } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, appendOwnerState } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(({\n theme,\n ownerState,\n open\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n pointerEvents: 'auto'\n}, !open && {\n pointerEvents: 'none'\n}, ownerState.arrow && {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n left: 0,\n marginLeft: '-0.71em'\n } : {\n right: 0,\n marginRight: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n }),\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n right: 0,\n marginRight: '-0.71em'\n } : {\n left: 0,\n marginLeft: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n })\n}));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n position: 'relative',\n margin: 0\n}, ownerState.touch && {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n}, {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n transformOrigin: 'right center'\n }, !ownerState.isRtl ? _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n }) : _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n transformOrigin: 'left center'\n }, !ownerState.isRtl ? _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n }) : _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n }, ownerState.touch && {\n marginBottom: '24px'\n }),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n transformOrigin: 'center top',\n marginTop: '14px'\n }, ownerState.touch && {\n marginTop: '24px'\n })\n}));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n}));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n return event => {\n if (eventHandler) {\n eventHandler(event);\n }\n handler(event);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children: childrenProp,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp = Grow,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n children: childrenProp\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = useTimeout();\n const enterTimer = useTimeout();\n const leaveTimer = useTimeout();\n const touchTimer = useTimeout();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = useEventCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n touchTimer.clear();\n });\n React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n const handleOpen = event => {\n hystersisTimer.clear();\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n hystersisTimer.start(800 + leaveDelay, () => {\n hystersisOpen = false;\n });\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n closeTimer.start(theme.transitions.duration.shortest, () => {\n ignoreNonTouchEvents.current = false;\n });\n });\n const handleEnter = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n enterTimer.clear();\n leaveTimer.clear();\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n handleOpen(event);\n });\n } else {\n handleOpen(event);\n }\n };\n const handleLeave = event => {\n enterTimer.clear();\n leaveTimer.start(leaveDelay, () => {\n handleClose(event);\n });\n };\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n // We just need to re-render the Tooltip if the focus-visible state changes.\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setChildIsFocusVisible(false);\n handleLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setChildIsFocusVisible(true);\n handleEnter(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleMouseOver = handleEnter;\n const handleMouseLeave = handleLeave;\n const handleTouchStart = event => {\n detectTouchStart(event);\n leaveTimer.clear();\n closeTimer.clear();\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.start(enterTouchDelay, () => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleEnter(event);\n });\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n leaveTimer.start(leaveTouchDelay, () => {\n handleClose(event);\n });\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(children.ref, focusVisibleRef, setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n // So we exclude all falsy values, except 0, which is valid.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef\n }, followCursor ? {\n onMouseMove: handleMouseMove\n } : {});\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of .', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const popperOptions = React.useMemo(() => {\n var _PopperProps$popperOp;\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n return _extends({}, PopperProps.popperOptions, {\n modifiers: tooltipModifiers\n });\n }, [arrowRef, PopperProps]);\n const ownerState = _extends({}, props, {\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n });\n const classes = useUtilityClasses(ownerState);\n const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n }), ownerState);\n const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n }), ownerState);\n const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n }), ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n as: PopperComponentProp != null ? PopperComponentProp : Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true\n }, interactiveWrapperListeners, popperProps, {\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n timeout: theme.transitions.duration.shorter\n }, TransitionPropsInner, transitionProps, {\n children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n ref: setArrowRef\n })) : null]\n }))\n }))\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import '@/components/mui/menu-item.component.css';\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport {\n ListItemIcon as MuiListItemIcon,\n ListItemText as MuiListItemText,\n MenuItem as MuiMenuItem,\n} from '@mui/material';\nimport Tooltip from '@mui/material/Tooltip';\nimport { Localized, ReferencedItem, SingleColumnMenu } from 'platform-bible-utils';\nimport { MouseEvent, PropsWithChildren } from 'react';\n\ntype MenuItemInfoBase = {\n /** Text (displayable in the UI) as the name of the menu item */\n label: string;\n /** Text to display when the mouse hovers over the menu item */\n tooltip?: string;\n};\n\nexport type Command = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n command: string;\n};\n\ntype SubMenu = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n items: MenuItemInfo[];\n};\n\nexport interface CommandHandler {\n (command: Command): void;\n}\n\nexport type MenuPropsBase = {\n /*\n * The JSON defining the menu whose items are to be rendered. This will typically be one of the\n * menus in the \"defs\" in a Platform.Bible menu (see PlatformMenus). The schema for this is\n * menuDocumentSchema (at the end of menus.model.ts). Note that while this is a\n * \"SingleColumnMenu\", somewhat bizarrely, a MultiColumnMenu is a SingleColumnMenu, so it really\n * could be a MultiColumnMenu, in which case, column had better be defined so it can be used\n * to filter out the actual groups and items to display on the column.\n */\n menuDefinition: Localized;\n\n commandHandler: CommandHandler;\n\n /**\n * Additional action to perform when any menu item is clicked. Allows the caller to handle event\n * (e.g., to close the menu).\n */\n onClick?: (event: MouseEvent) => void;\n};\n\nexport type MenuItemListProps = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type MenuItemProps = Omit &\n PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n\n onClick: (event: MouseEvent) => void;\n }>;\n\ntype MenuItemInfo = (Command | SubMenu) & {\n /**\n * If specified, menu item will be inset if it does not have a leading icon.\n *\n * @default true\n */\n allowForLeadingIcons?: boolean;\n /**\n * If specified, the path to the icon image to display on the leading side of the menu text.\n *\n * @default undefined (no leading icon will be shown)\n */\n iconPathBefore?: string;\n /**\n * If specified, the path to the icon image to display on the trailing side of the menu text.\n *\n * @default undefined (no trailing icon will be shown)\n */\n iconPathAfter?: string;\n /**\n * If true, list item is focused during the first mount\n *\n * @default false\n */\n hasAutoFocus?: boolean;\n\n /** Additional css classes to help with unique styling of the menu item */\n className?: string;\n\n /**\n * If true, the menu item will appear disabled and it will not respond to clicks or mouse hovers.\n *\n * @default false\n */\n isDisabled?: boolean;\n\n /**\n * If true, compact vertical padding designed for keyboard and mouse input is used.\n *\n * @default true\n */\n isDense?: boolean;\n\n /**\n * If true, a right-arrow icon will be displayed (iconPathAfter, if specified, will be ignored).\n *\n * @default false\n */\n isSubMenuParent?: boolean;\n\n /**\n * If true, the left and right padding is removed\n *\n * @default false\n */\n hasDisabledGutters?: boolean;\n\n /**\n * If true, a 1px light border is added to bottom of menu item\n *\n * @default false\n */\n hasDivider?: boolean;\n\n /** Help identify which element has keyboard focus */\n focusVisibleClassName?: string;\n\n /** If it's a submenu, it should have the items property */\n items?: MenuItemInfo[];\n};\n\nfunction getIcon(icon: string | undefined, menuLabel: string, leading: boolean) {\n return icon ? (\n \n {`${leading\n \n ) : undefined;\n}\n\nexport default function MenuItem(props: MenuItemProps) {\n const {\n onClick,\n label,\n tooltip,\n allowForLeadingIcons = true,\n iconPathBefore = undefined,\n iconPathAfter = undefined,\n hasAutoFocus = false,\n className,\n isDisabled = false,\n isDense = true,\n isSubMenuParent = false,\n hasDisabledGutters = false,\n hasDivider = false,\n focusVisibleClassName,\n id,\n children,\n } = props;\n\n const menuItem = (\n \n {label ? (\n <>\n {getIcon(iconPathBefore, label, true)}\n \n {isSubMenuParent ? (\n \n \n \n ) : (\n getIcon(iconPathAfter, label, false)\n )}\n \n ) : (\n children\n )}\n \n );\n\n return tooltip ? (\n \n
{menuItem}
\n
\n ) : (\n menuItem\n );\n}\n","import MenuItem, {\n MenuItemListProps,\n MenuItemProps,\n MenuPropsBase,\n} from '@/components/mui/menu-item.component';\nimport { Menu } from '@mui/material';\nimport {\n Localized,\n MenuGroupDetailsInSubMenu,\n MenuItemContainingCommand,\n MenuItemContainingSubmenu,\n OrderedExtensibleContainer,\n ReferencedItem,\n SingleColumnMenu,\n} from 'platform-bible-utils';\nimport { MouseEvent, useMemo, useState } from 'react';\n\n/**\n * All the exported types in this file should be regarded as \"internal\" (i.e., they should not be\n * exposed via index.ts).\n */\n\nexport type GroupedMenuPropsBase = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type GroupedMenuItemListProps = MenuItemListProps & {\n /**\n * If the menuDefinition includes \"top-level\" groups (i.e., those that belong to a column as\n * opposed to those that belong to a submenu) that should not be included in the list, then this\n * array specifies which groups to include. Likewise, for a submenu, this list indicates which\n * groups are pertinent for that submenu. So then for a context menu this property need not be\n * specified since it is a top-level menu based on a \"true\" SingleColumnMenu (i.e., one that is\n * not a MultiColumnMenu).\n */\n includedGroups?: {\n id: string;\n group: Localized;\n }[];\n};\n\ninterface ItemInfo {\n item: Localized;\n isLastItemInGroup: boolean;\n}\n\ntype SubMenuProps = MenuPropsBase & {\n parentMenuItem: Localized;\n parentItemProps: Omit, 'iconPathAfter'>;\n};\n\nfunction getAllGroups(menuDefinition: Localized) {\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n return groupEntries.map(([key, value]) => ({ id: key, group: value }));\n}\n\nfunction SubMenu(props: SubMenuProps) {\n const [anchorEl, setAnchorEl] = useState(undefined);\n\n const { parentMenuItem, parentItemProps, menuDefinition } = props;\n\n const handleParentMenuItemClick = (event: MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(undefined);\n };\n\n const renderSubMenuItems = () => {\n let includedGroups = getAllGroups(menuDefinition).filter((g) => 'menuItem' in g.group);\n\n // Ensure valid parent menu was provided. (If not, submenu will contain all groups!)\n if (!parentMenuItem?.id) throw new Error('A valid parent menu item is required for submenus.');\n\n // When laying out a submenu, only include groups associated with the provided parent menu.\n // Note: without the (annoying) redundant check that the included groups\n // have the menuItem field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (group) => 'menuItem' in group.group && group.group.menuItem === parentMenuItem.id,\n );\n\n return ;\n };\n\n return (\n <>\n \n \n {renderSubMenuItems()}\n \n \n );\n}\n\nconst getOrderedGroupItems = (\n groupId: string,\n allItems: Localized[],\n) => {\n // Filter items that belong to the specified group\n const itemsForGroup = allItems.filter((item) => item.group === groupId);\n // Sort items based on order\n const sortedItems = itemsForGroup.sort((a, b) => (a.order || 0) - (b.order || 0));\n return sortedItems;\n};\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. It is used to generate and lay out the MenuItems that appear either on a\n * top-level menu (in a GridMenu or ContextMenu) or in a submenu.\n */\nexport default function GroupedMenuItemList(menuProps: GroupedMenuItemListProps) {\n const { menuDefinition, onClick, commandHandler, includedGroups } = menuProps;\n\n const { items, allowForLeadingIcons } = useMemo(() => {\n const groupsToInclude =\n includedGroups && includedGroups.length > 0\n ? includedGroups\n : // We're apparently laying out a single-column menu (presumably a context menu). In this\n // case, all groups should be included except ones that belong to a submenu.\n getAllGroups(menuDefinition).filter((g) => !('menuItem' in g.group));\n\n const sortedGroups = Object.values(groupsToInclude).sort(\n (a, b) => (a.group.order || 0) - (b.group.order || 0),\n );\n\n const itemArray: ItemInfo[] = [];\n\n sortedGroups.forEach((group) => {\n getOrderedGroupItems(group.id, menuDefinition.items).forEach((item) =>\n itemArray.push({ item, isLastItemInGroup: false }),\n );\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = true;\n });\n\n // No divider after last item in final group.\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = false;\n\n const allowSpaceForLeadingIcons = itemArray.some(\n (i) => 'iconPathBefore' in i.item && i.item.iconPathBefore,\n );\n\n return { items: itemArray, allowForLeadingIcons: allowSpaceForLeadingIcons };\n }, [includedGroups, menuDefinition]);\n\n // Create props for MenuItem component including setting hasDivider for the last item in a group\n const createMenuItemProps = ({ item, isLastItemInGroup }: ItemInfo) => {\n const menuItemProps = {\n className: 'papi-menu-item',\n label: item.label,\n tooltip: item.tooltip,\n iconPathBefore: 'iconPathBefore' in item ? item.iconPathBefore : undefined,\n iconPathAfter: 'iconPathAfter' in item ? item.iconPathAfter : undefined,\n hasDivider: isLastItemInGroup, // Set hasDivider to true for the last item in a group\n allowForLeadingIcons,\n };\n\n return menuItemProps;\n };\n\n const [firstItem] = items;\n\n if (!firstItem) return
;\n\n const divKey = firstItem.item.group;\n\n return (\n
\n {items.map((itemInfo, index) => {\n const { item } = itemInfo;\n const menuItemProps = createMenuItemProps(itemInfo);\n if ('command' in item) {\n const key = item.group + index;\n return (\n ) => {\n onClick?.(event);\n commandHandler(item);\n }}\n {...menuItemProps}\n />\n );\n }\n return (\n \n );\n })}\n
\n );\n}\n","import GroupedMenuItemList from '@/components/mui/grouped-menu-item-list.component';\nimport { MenuItemListProps } from '@/components/mui/menu-item.component';\nimport { MultiColumnMenu } from 'platform-bible-utils';\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. Use either GridMenu or ContextMenu.\n */\nexport default function TopLevelMenu(props: MenuItemListProps) {\n const { menuDefinition, columnId } = props;\n\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n const groups = groupEntries.map(([key, value]) => ({ id: key, group: value }));\n let includedGroups = groups.filter((g) => 'column' in g.group);\n\n // Check if column is provided and menuDefinition is a MultiColumnMenu\n if (\n columnId &&\n 'columns' in menuDefinition &&\n // Without this type assertion, TS doesn't know what columns is.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n (menuDefinition as MultiColumnMenu).columns[columnId]\n ) {\n // When laying out a single column in a MultiColumnMenu, only include groups associated with\n // the provided column. Note: without the (annoying) redundant check that the included groups\n // have the colum field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (g) => 'column' in g.group && g.group.column === columnId,\n );\n }\n\n return ;\n}\n","import '@/components/mui/grid-menu.component.css';\nimport { GroupedMenuPropsBase } from '@/components/mui/grouped-menu-item-list.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport TopLevelMenu from '@/components/mui/top-level-menu.component';\nimport { Grid, List } from '@mui/material';\nimport {\n Localized,\n MenuColumnWithHeader,\n MultiColumnMenu,\n ReferencedItem,\n} from 'platform-bible-utils';\nimport { useMemo } from 'react';\n\ntype ColumnInfo = {\n /*\n * The ID (`${string}.${string}`) of a specific menu column.\n */\n id: ReferencedItem;\n\n /*\n * Metadata (label, order, etc.) for a specific menu column.\n */\n metadata: Localized;\n};\n\ntype MenuColumnProps = ColumnInfo &\n GroupedMenuPropsBase & {\n /** Additional css classes to help with unique styling of the menu column */\n className?: string;\n };\n\nexport type GridMenuInfo = {\n /** The menu object containing information about the columns, groups, and items to display. */\n multiColumnMenu: Localized;\n};\n\nexport type GridMenuProps = GridMenuInfo & {\n /** Optional unique identifier */\n id?: string;\n\n commandHandler: CommandHandler;\n\n /** Additional css classes to help with unique styling of the grid menu */\n className?: string;\n};\n\nfunction MenuColumn({\n commandHandler,\n menuDefinition,\n id,\n metadata,\n onClick,\n className,\n}: MenuColumnProps) {\n return (\n \n

\n {metadata.label}\n

\n {/* It would seem as though this List component were unnecessary, since it only contains one\n thing, but the \"dense\" property does affect the layout of the items (in a way I don't fully\n understand). There might be a better way. */}\n \n \n \n \n );\n}\n\nexport default function GridMenu({\n commandHandler,\n className,\n multiColumnMenu,\n id,\n}: GridMenuProps) {\n const { columns } = multiColumnMenu;\n\n const sortedColumns = useMemo(() => {\n const columnNumbers = new Map();\n Object.getOwnPropertyNames(columns).forEach((columnName: string) => {\n // We know for sure there is a (boolean) property 'isExtensible' that we are not interested in.\n if (columnName === 'isExtensible') return;\n // TS doesn't allow `columnName` above to be a ReferencedItem even though the type says it is\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const columnId = columnName as ReferencedItem;\n const column = columns[columnId];\n // As of right now (and hopefully forever after), all remaining properties of the\n // ColumnsWithHeaders object are columns whose property names are the IDs of the columns.\n // This is an additional (redundant) sanity check. Specifically we're interested in\n // MenuColumnWithHeader objects, which TypeScript now \"knows\" we have, but at runtime all we\n // can check for is that it's an object with a valid numeric order field. That's likely good\n // enough.\n if (\n typeof column === 'object' &&\n typeof column.order === 'number' &&\n !Number.isNaN(column.order)\n )\n columnNumbers.set(column.order, { id: columnId, metadata: column });\n else\n console.warn(\n `Property ${columnName} (${typeof column}) on menu ${id} is not a valid column and is being ignored. This might indicate data corruption`,\n );\n });\n\n // Extract values and sort them based on the 'order' property\n return Array.from(columnNumbers.values()).sort((a, b) => {\n return (a.metadata.order || 0) - (b.metadata.order || 0);\n });\n }, [columns, id]);\n\n // We might need something like this if we need to be able to prevent empty columns\n // sortedColumns.filter((c) => multiColumnMenu.groups.some((g) => 'column' in g && (g as .column)...\n\n return (\n \n {sortedColumns.map((col, index) => (\n \n ))}\n \n );\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport type UsePromiseOptions = {\n /**\n * Whether to leave the value as the most recent resolved promise value or set it back to\n * defaultValue while running the promise again. Defaults to true\n */\n preserveValue?: boolean;\n};\n\n/** Set up defaults for options for usePromise hook */\nfunction getUsePromiseOptionsDefaults(options: UsePromiseOptions): UsePromiseOptions {\n return {\n preserveValue: true,\n ...options,\n };\n}\n\n/**\n * Awaits a promise and returns a loading value while the promise is unresolved\n *\n * @param promiseFactoryCallback A function that returns the promise to await. If this callback is\n * undefined, the current value will be returned (defaultValue unless it was previously changed\n * and `options.preserveValue` is true), and there will be no loading.\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n * @param defaultValue The initial value to return while first awaiting the promise. If\n * `options.preserveValue` is false, this value is also shown while awaiting the promise on\n * subsequent calls.\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. This means that, if the `promiseFactoryCallback` changes and\n * `options.preserveValue` is `false`, the returned value will be set to the current\n * `defaultValue`. However, the returned value will not be updated if`defaultValue` changes.\n * @param options Various options for adjusting how this hook runs the `promiseFactoryCallback`\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. However, the latest `options.preserveValue` will always be used\n * appropriately to determine whether to preserve the returned value when changing the\n * `promiseFactoryCallback`\n * @returns `[value, isLoading]`\n *\n * - `value`: the current value for the promise, either the defaultValue or the resolved promise value\n * - `isLoading`: whether the promise is waiting to be resolved\n */\nconst usePromise = (\n promiseFactoryCallback: (() => Promise) | undefined,\n defaultValue: T,\n options: UsePromiseOptions = {},\n): [value: T, isLoading: boolean] => {\n // Use defaultValue as a ref so it doesn't update dependency arrays\n const defaultValueRef = useRef(defaultValue);\n defaultValueRef.current = defaultValue;\n // Use options as a ref so it doesn't update dependency arrays\n const optionsDefaultedRef = useRef(options);\n optionsDefaultedRef.current = getUsePromiseOptionsDefaults(optionsDefaultedRef.current);\n\n const [value, setValue] = useState(() => defaultValueRef.current);\n const [isLoading, setIsLoading] = useState(true);\n useEffect(() => {\n let promiseIsCurrent = true;\n // If a promiseFactoryCallback was provided, we are loading. Otherwise, there is no loading to do\n setIsLoading(!!promiseFactoryCallback);\n (async () => {\n // If there is a callback to run, run it\n if (promiseFactoryCallback) {\n const result = await promiseFactoryCallback();\n // If the promise was not already replaced, update the value\n if (promiseIsCurrent) {\n setValue(() => result);\n setIsLoading(false);\n }\n }\n })();\n\n return () => {\n // Mark this promise as old and not to be used\n promiseIsCurrent = false;\n if (!optionsDefaultedRef.current.preserveValue) setValue(() => defaultValueRef.current);\n };\n }, [promiseFactoryCallback]);\n\n return [value, isLoading];\n};\nexport default usePromise;\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","import GridMenu from '@/components/mui/grid-menu.component';\nimport { Command, CommandHandler } from '@/components/mui/menu-item.component';\nimport usePromise from '@/hooks/use-promise.hook';\nimport { Menu as MenuIcon } from '@mui/icons-material';\nimport { Drawer, IconButton } from '@mui/material';\nimport { Localized, MultiColumnMenu } from 'platform-bible-utils';\nimport {\n MouseEvent,\n MutableRefObject,\n PropsWithChildren,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nexport interface MultiColumnMenuProvider {\n (isSupportAndDevelopment: boolean): Promise>;\n}\n\nexport type HamburgerMenuButtonProps = PropsWithChildren & {\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * Optional reference to the \"div\" container that determines the where the menu should appear. If\n * not defined, then (1,1) used.\n */\n containerRef?: MutableRefObject;\n\n /**\n * The delegate to use to get the menu data. If not specified or if it returns undefined, the data\n * in normalMenu or fullMenu property will be used.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /**\n * The menu data to show when the menu is opened if the menuProvider property is not defined.\n * (This allows for a default or test-only static menu to be used.)\n */\n normalMenu?: Localized;\n\n /**\n * The menu data to show for \"full\" menu (when opened with the SHIFT key pressed) if the\n * menuProvider property is not defined. (This allows for a default or test-only static menu to be\n * used.)\n */\n fullMenu?: Localized;\n\n /** Additional css class(es) to help with unique styling of the sub-components */\n className?: string;\n\n /** Value to use as prefix for ARIA labels on interactive sub-components */\n ariaLabelPrefix?: string;\n};\n\nexport default function HamburgerMenuButton({\n menuProvider,\n normalMenu,\n fullMenu,\n commandHandler,\n containerRef,\n className,\n ariaLabelPrefix,\n children,\n}: HamburgerMenuButtonProps) {\n const [isMenuOpen, setMenuOpen] = useState(false);\n const [showFullMenu, setShowFullMenu] = useState(false);\n\n const handleMenuItemClick = useCallback(() => {\n if (isMenuOpen) setMenuOpen(false);\n setShowFullMenu(false);\n }, [isMenuOpen]);\n\n const handleMenuButtonClick = useCallback((e: MouseEvent) => {\n e.stopPropagation();\n setMenuOpen((prevIsOpen) => {\n const isOpening = !prevIsOpen;\n if (isOpening && e.shiftKey) setShowFullMenu(true);\n else if (!isOpening) setShowFullMenu(false);\n return isOpening;\n });\n }, []);\n\n const menuCommandHandler = useCallback(\n (command: Command) => {\n handleMenuItemClick();\n return commandHandler(command);\n },\n [commandHandler, handleMenuItemClick],\n );\n\n const [offset, setOffset] = useState({ top: 1, left: 1 });\n\n useEffect(() => {\n if (isMenuOpen) {\n const node = containerRef?.current;\n if (node) {\n const rect = node.getBoundingClientRect();\n const scrollTop = window.scrollY;\n const scrollLeft = window.scrollX;\n const top = rect.top + scrollTop + node.clientHeight;\n const left = rect.left + scrollLeft;\n setOffset({ top, left });\n }\n }\n }, [isMenuOpen, containerRef]);\n\n const [normalMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(false) ?? normalMenu;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, normalMenu, isMenuOpen]),\n normalMenu,\n );\n\n const [fullMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(true) ?? fullMenu ?? normalMenuData;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, fullMenu, normalMenuData, isMenuOpen]),\n fullMenu ?? normalMenuData,\n );\n\n const menu = showFullMenu && fullMenuData ? fullMenuData : normalMenuData;\n\n return (\n <>\n \n {children ?? }\n \n \n {menu ? (\n \n ) : undefined}\n \n \n );\n}\n","import '@/components/mui/icon-button.component.css';\nimport { IconButton as MuiIconButton } from '@mui/material';\nimport { MouseEventHandler, PropsWithChildren } from 'react';\n\nexport type IconButtonProps = PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n /**\n * Required. Used as both the tooltip (aka, title) and the aria-label (used for accessibility,\n * testing, etc.), unless a distinct tooltip is supplied.\n */\n label: string;\n /**\n * Enabled status of button\n *\n * @default false\n */\n isDisabled?: boolean;\n /** Optional tooltip to display if different from the aria-label. */\n tooltip?: string;\n /** If true, no tooltip will be displayed. */\n isTooltipSuppressed?: boolean;\n /**\n * If given, uses a negative margin to counteract the padding on one side (this is often helpful\n * for aligning the left or right side of the icon with content above or below, without ruining\n * the border size and shape).\n *\n * @default false\n */\n adjustMarginToAlignToEdge?: 'end' | 'start' | false;\n /**\n * The size of the component. small is equivalent to the dense button styling.\n *\n * @default false\n */\n size: 'small' | 'medium' | 'large';\n /** Additional css classes to help with unique styling of the button */\n className?: string;\n /** Optional click handler */\n onClick?: MouseEventHandler;\n}>;\n\n/**\n * Iconic button a user can click to do something\n *\n * Thanks to MUI for heavy inspiration and documentation\n * https://mui.com/material-ui/getting-started/overview/\n */\nfunction IconButton({\n id,\n label,\n isDisabled = false,\n tooltip,\n isTooltipSuppressed = false,\n adjustMarginToAlignToEdge = false,\n size = 'medium',\n className,\n onClick,\n children,\n}: IconButtonProps) {\n return (\n \n {children /* the icon to display */}\n \n );\n}\n\nexport default IconButton;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { LoaderCircle, LucideProps } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nexport type SpinnerProps = LucideProps;\n\nconst Spinner = forwardRef(({ className, ...props }, ref) => {\n return (\n \n );\n});\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","import { Input as ShadInput } from '@/components/shadcn-ui/input';\nimport { Label as ShadLabel } from '@/components/shadcn-ui/label';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { ChangeEventHandler, FocusEventHandler } from 'react';\n\nexport type TextFieldProps = {\n /** Optional unique identifier */\n id?: string;\n /**\n * If `true`, the component is disabled.\n *\n * @default false\n */\n isDisabled?: boolean;\n /**\n * If `true`, the label is displayed in an error state.\n *\n * @default false\n */\n hasError?: boolean;\n /**\n * If `true`, the input will take up the full width of its container.\n *\n * @default false\n */\n isFullWidth?: boolean;\n /** Text that gives the user instructions on what contents the TextField expects */\n helperText?: string;\n /** The title of the TextField */\n label?: string;\n /** The short hint displayed in the `input` before the user enters a value. */\n placeholder?: string;\n /**\n * If `true`, the label is displayed as required and the `input` element is required.\n *\n * @default false\n */\n isRequired?: boolean;\n /** Additional css classes to help with unique styling of the text field */\n className?: string;\n /** Starting value for the text field if it is not controlled */\n defaultValue?: string | number;\n /** Value of the text field if controlled */\n value?: string | number;\n /** Triggers when content of textfield is changed */\n onChange?: ChangeEventHandler;\n /** Triggers when textfield gets focus */\n onFocus?: FocusEventHandler;\n /** Triggers when textfield loses focus */\n onBlur?: FocusEventHandler;\n};\n\n/**\n * Text input field\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/input#with-label\n */\nfunction TextField({\n id,\n isDisabled = false,\n hasError = false,\n isFullWidth = false,\n helperText,\n label,\n placeholder,\n isRequired = false,\n className,\n defaultValue,\n value,\n onChange,\n onFocus,\n onBlur,\n}: TextFieldProps) {\n return (\n
\n {`${label}${isRequired ? '*' : ''}`}\n \n

{helperText}

\n
\n );\n}\n\nexport default TextField;\n","import HamburgerMenuButton, {\n MultiColumnMenuProvider,\n} from '@/components/mui/hamburger-menu-button.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport '@/components/mui/toolbar.component.css';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { AppBar, Toolbar as MuiToolbar } from '@mui/material';\nimport { PropsWithChildren, useRef } from 'react';\n\nexport type ToolbarProps = PropsWithChildren<{\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * The optional delegate to use to get the menu data. If not specified, the \"hamburger\" menu will\n * not display.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /** Optional unique identifier */\n id?: string;\n\n /** Additional css classes to help with unique styling of the toolbar */\n className?: string;\n}>;\n\nexport default function Toolbar({\n menuProvider,\n commandHandler,\n className,\n id,\n children,\n}: ToolbarProps) {\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const containerRef = useRef(undefined!);\n\n return (\n
\n \n \n {menuProvider ? (\n \n ) : undefined}\n {children ?
{children}
: undefined}\n \n
\n
\n );\n}\n","import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst alertVariants = cva(\n 'tw-relative tw-w-full tw-rounded-lg tw-border tw-p-4 [&>svg~*]:tw-pl-7 [&>svg+div]:tw-translate-y-[-3px] [&>svg]:tw-absolute [&>svg]:tw-left-4 [&>svg]:tw-top-4 [&>svg]:tw-text-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-background tw-text-foreground',\n destructive:\n 'tw-border-destructive/50 tw-text-destructive dark:tw-border-destructive [&>svg]:tw-text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n
\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}{' '}\n \n ),\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertTitle, AlertDescription };\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Card = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}\n \n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n

\n));\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef>(\n ({ className, ...props }, ref) => (\n

\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { ComponentProps } from 'react';\nimport { toast as sonner, Toaster } from 'sonner';\n\ntype SonnerProps = ComponentProps;\n\nfunction Sonner({ ...props }: SonnerProps) {\n return (\n \n );\n}\n\n// The re-export of the sonner function was added manually\nexport { Sonner, sonner };\n","import React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Slider = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n \n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsTriggerProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsContentProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport const TabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef,\n TabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Download } from 'lucide-react';\n\ntype InstallButtonProps = {\n /** The installing boolean value determines the state of the button. */\n isInstalling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n /** Optional text for the button. */\n buttonText?: string;\n} & ButtonProps;\n\n/**\n * The InstallButton component is a button designed for initiating installs. It includes visuals for\n * active installing and idle states.\n *\n * @param isInstalling The installing boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @param buttonText Optional text for the button.\n * @returns A install button.\n */\nexport default function InstallButton({\n isInstalling,\n handleClick,\n buttonText,\n className,\n ...props\n}: InstallButtonProps) {\n return (\n \n {isInstalling ? (\n \n ) : (\n <>\n \n {buttonText}\n \n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype EnableButtonProps = {\n /** The enabling boolean value determines the state of the button. */\n isEnabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The EnableButton component is a button designed for initiating enabling of downloads. It includes\n * visuals for active enabling and idle states.\n *\n * @param isEnabling The enabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to enable.\n */\nexport default function EnableButton({\n isEnabling,\n handleClick,\n className,\n ...props\n}: EnableButtonProps) {\n return (\n \n {isEnabling ? (\n <>\n \n Enabling...\n \n ) : (\n 'Enable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype DisableButtonProps = {\n /** The disabling boolean value determines the state of the button. */\n isDisabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The DisableButton component is a button designed for initiating disabling of downloads. It\n * includes visuals for active disabling and idle states.\n *\n * @param isDisabling The disabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to disable.\n */\nexport default function DisableButton({\n isDisabling,\n handleClick,\n className,\n ...props\n}: DisableButtonProps) {\n return (\n \n {isDisabling ? (\n <>\n \n Disabling...\n \n ) : (\n 'Disable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype UpdateButtonProps = {\n /** The updating boolean value determines the state of the button. */\n isUpdating: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The UpdateButton component is a button designed for initiating updates for downloaded extensions.\n * It includes visuals for active updating and idle states.\n *\n * @param isUpdating The updating boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to update.\n */\nexport default function UpdateButton({\n isUpdating,\n handleClick,\n className,\n ...props\n}: UpdateButtonProps) {\n return (\n \n {isUpdating ? (\n <>\n \n Updating...\n \n ) : (\n 'Update'\n )}\n \n );\n}\n","import { cn } from '@/utils/shadcn-ui.util';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useMemo } from 'react';\n\ninterface MarkdownRendererProps {\n /** Optional unique identifier */\n id?: string;\n /** The markdown string to render */\n markdown: string;\n className?: string;\n /**\n * The [`target` attribute for `a` html\n * tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target). Defaults to not\n * adding a `target` to `a` tags\n */\n anchorTarget?: string;\n}\n\n/**\n * This component renders markdown content given a markdown string. It uses typography styles from\n * the platform.\n *\n * @param markdown The markdown string to render.\n * @param id Optional unique identifier\n * @returns A div containing the rendered markdown content.\n */\nexport default function MarkdownRenderer({\n id,\n markdown,\n className,\n anchorTarget,\n}: MarkdownRendererProps) {\n const options: MarkdownToJSX.Options = useMemo(\n () => ({\n overrides: {\n a: {\n props: {\n target: anchorTarget,\n },\n },\n },\n }),\n [anchorTarget],\n );\n return (\n
\n {markdown}\n
\n );\n}\n","import { Filter, ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport { Button } from '@/components/shadcn-ui/button';\n\n/**\n * The FilterButton component is a button designed for initiating filtering of data. It is designed\n * to be used with the dropdown menu. It uses forwardRef to pass the button to the dropdown trigger\n * asChild.\n *\n * @returns A button that can be used to filter.\n */\nconst FilterButton = forwardRef((props, ref) => {\n return (\n \n \n Filter\n \n \n );\n});\n\nexport default FilterButton;\n","import {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuGroup,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport FilterButton from './buttons/filter-button.component';\n\nexport enum DropdownMenuItemType {\n Check,\n Radio,\n}\n\nexport type DropdownItem = {\n /** The label is the text that will be displayed on the dropdown item. */\n label: string;\n /** The itemType determines the DropdownMenuItemType type as either Check or Radio. */\n itemType: DropdownMenuItemType;\n /** The onClick function is called when the item is clicked. */\n onClick: () => void;\n};\n\nexport type DropdownGroup = {\n /**\n * The label is the text that will be displayed on the dropdown group. It is used to categorize\n * the items in the group.\n */\n label: string;\n /** The items array contains the items that will be displayed in the dropdown group */\n items: DropdownItem[];\n};\n\nexport type FilterDropdownProps = {\n /** Object unique identifier */\n id?: string;\n /** The groups array contains the groups that will be displayed in the dropdown */\n groups: DropdownGroup[];\n}; // TODO: extend the props later\n\n/**\n * The FilterDropdown component is a dropdown designed for filtering content. It includes groups of\n * items that can be checkboxes or radio items.\n *\n * @param id Optional unique identifier\n * @param groups The groups array contains the groups that will be displayed in the dropdown\n * @returns A filter dropdown.\n */\nexport default function FilterDropdown({ id, groups }: FilterDropdownProps) {\n return (\n
\n {/* TODO: remove this once the DropDown Menu shadcn has an id prop */}\n \n \n \n \n \n {groups.map((group) => (\n
\n {group.label}\n \n {group.items.map((item) => (\n
\n {item.itemType === DropdownMenuItemType.Check ? (\n \n {item.label}\n \n ) : (\n \n {item.label}\n \n )}\n
\n ))}\n
\n \n
\n ))}\n
\n
\n
\n );\n}\n","interface NoExtensionsFoundProps {\n /** Optional unique identifier */\n id?: string;\n /** The message to display */\n message: string;\n}\n/**\n * This component displays a message to the user when no extensions are found in the marketplace.\n *\n * @param id Optional unique identifier\n * @param message The message to display.\n * @returns {JSX.Element} - Returns the message component that displays the message to the user.\n */\nexport default function NoExtensionsFound({ id, message }: NoExtensionsFoundProps) {\n return (\n
\n
\n

{message}

\n
\n
\n );\n}\n","import { CircleHelp, Link as LucideLink, User } from 'lucide-react';\nimport { NumberFormat } from 'platform-bible-utils';\n\n/** Interface that stores the parameters passed to the More Info component */\ninterface MoreInfoProps {\n /** Optional unique identifier */\n id?: string;\n /** The category of the extension */\n category: string;\n /** The number of downloads for the extension */\n downloads: Record;\n /** The languages supported by the extension */\n languages: string[];\n /** The URL to the more info page of the extension */\n moreInfoUrl: string;\n}\n/**\n * This component displays the more info section of the extension which includes the category,\n * number of downloads, languages, and links to the website and support\n *\n * @param id Optional unique identifier\n * @param category The category of the extension\n * @param downloads The number of downloads for the extension\n * @param languages The languages supported by the extension\n * @param moreInfoUrl The URL to the more info page of the extension\n * @returns {JSX.Element} - Returns the more info component that displays the category, number of\n * downloads, languages, and links to the website and support\n */\nexport default function MoreInfo({\n id,\n category,\n downloads,\n languages,\n moreInfoUrl,\n}: MoreInfoProps) {\n /**\n * This constant formats the number of downloads into a more readable format.\n *\n * @example 1000 -> 1K\n *\n * @example 1000000 -> 1M\n *\n * @returns The formatted number of downloads\n */\n const numberFormatted = new NumberFormat('en', {\n notation: 'compact',\n compactDisplay: 'short',\n }).format(Object.values(downloads).reduce((a: number, b: number) => a + b, 0));\n\n /** This function scrolls the window to the bottom of the page. */\n const handleScrollToBottom = () => {\n window.scrollTo(0, document.body.scrollHeight);\n };\n\n return (\n \n
\n
\n {category}\n
\n CATEGORY\n
\n
\n
\n
\n \n {numberFormatted}\n
\n USERS\n
\n
\n
\n
\n {languages.slice(0, 3).map((locale) => (\n \n {locale.toUpperCase()}\n \n ))}\n
\n {languages.length > 3 && (\n handleScrollToBottom()}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n +{languages.length - 3} more languages\n \n )}\n
\n
\n
\n \n Website\n \n \n \n Support\n \n \n
\n
\n );\n}\n","import { useState } from 'react';\n\nexport type VersionInformation = {\n /** Date the version was published */\n date: string;\n /** Description of the changes in the version */\n description: string;\n};\n\n/** Type to store the version history information */\nexport type VersionHistoryType = Record;\n\n/** Interface that stores the parameters passed to the Version History component */\ninterface VersionHistoryProps {\n /** Optional unique identifier */\n id?: string;\n /** Object containing the versions mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the version history information shown in the footer component. Lists the 5\n * most recent versions, with the options to show all versions by pressing a button.\n *\n * @param versionHistory Object containing the versions mapped with their information\n * @param id Optional unique identifier\n * @returns Rendered version history for the Footer component\n */\nexport default function VersionHistory({ id, versionHistory }: VersionHistoryProps) {\n const [showAllVersions, setShowAllVersions] = useState(false);\n const currentDate = new Date();\n\n /**\n * Function to format the time string for the version history in the form of 'X year(s) ago'.\n *\n * @param dateString ISO Date string to determine the time string from\n * @returns Formatted time string\n */\n function formatTimeString(dateString: string) {\n const date = new Date(dateString);\n const dateDiff = new Date(currentDate.getTime() - date.getTime());\n const yearDiff = dateDiff.getUTCFullYear() - 1970;\n const monthDiff = dateDiff.getUTCMonth();\n const dayDiff = dateDiff.getUTCDate() - 1;\n\n // Determines how long ago the version was published\n let timeString = '';\n if (yearDiff > 0) {\n timeString = `${yearDiff.toString()} year${yearDiff === 1 ? '' : 's'} ago`;\n } else if (monthDiff > 0) {\n timeString = `${monthDiff.toString()} month${monthDiff === 1 ? '' : 's'} ago`;\n } else if (dayDiff === 0) {\n timeString = 'today';\n } else {\n timeString = `${dayDiff.toString()} day${dayDiff === 1 ? '' : 's'} ago`;\n }\n\n return timeString;\n }\n\n // Sorts the version history by version number\n const sortedEntries = Object.entries(versionHistory).sort((a, b) => b[0].localeCompare(a[0]));\n\n return (\n
\n

What`s New

\n
    \n {(showAllVersions ? sortedEntries : sortedEntries.slice(0, 5)).map((entry) => (\n
    \n
    \n
  • \n {entry[1].description}\n
  • \n
    \n
    \n
    Version {entry[0]}
    \n
    {formatTimeString(entry[1].date)}
    \n
    \n
    \n ))}\n
\n {sortedEntries.length > 5 && (\n setShowAllVersions(!showAllVersions)}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n {showAllVersions ? 'Show Less Version History' : 'Show All Version History'}\n \n )}\n
\n );\n}\n","import { useMemo } from 'react';\nimport { formatBytes } from 'platform-bible-utils';\nimport VersionHistory, { VersionHistoryType } from './version-history.component';\n\n/** Interface to store the parameters passed to the Footer component */\ninterface FooterProps {\n /** Optional unique identifier */\n id?: string;\n /** Name of the publisher */\n publisherDisplayName: string;\n /** Size of the extension file in bytes */\n fileSize: number;\n /** List of language codes supported by the extension */\n locales: string[];\n /** Object containing the version history mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the footer for the extension details which contains information on the\n * publisher, version history, languages, and file size.\n *\n * @param id Optional unique identifier\n * @param publisherDisplayName Name of the publisher\n * @param fileSize Size of the extension file in bytes\n * @param locales List of language codes supported by the extension\n * @param versionHistory Object containing the version history mapped with their information\n * @returns The rendered Footer component\n */\nexport default function Footer({\n id,\n publisherDisplayName,\n fileSize,\n locales,\n versionHistory,\n}: FooterProps) {\n /** Formats the file size into a human-readable format */\n const formattedFileSize = useMemo(() => formatBytes(fileSize), [fileSize]);\n\n /**\n * This function gets the display names of the languages based on the language codes.\n *\n * @param codes The list of language codes\n * @returns The list of language names\n */\n const getLanguageNames = (codes: string[]) => {\n const displayNames = new Intl.DisplayNames(navigator.language, { type: 'language' });\n return codes.map((code) => displayNames.of(code));\n };\n\n const languageNames = getLanguageNames(locales);\n\n return (\n
\n
\n \n
\n
\n

Information

\n
\n

\n Publisher\n {publisherDisplayName}\n Size\n {formattedFileSize}\n

\n
\n

\n Languages\n {languageNames.join(', ')}\n

\n
\n
\n
\n
\n
\n );\n}\n","import { PlatformEvent, PlatformEventHandler } from 'platform-bible-utils';\nimport { useEffect } from 'react';\n\n/**\n * Adds an event handler to an event so the event handler runs when the event is emitted. Use\n * `papi.network.getNetworkEvent` to use a networked event with this hook.\n *\n * @param event The event to subscribe to.\n *\n * - If event is a `PlatformEvent`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEvent = (\n event: PlatformEvent | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n useEffect(() => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return () => {};\n\n const unsubscriber = event(eventHandler);\n return () => {\n unsubscriber();\n };\n }, [event, eventHandler]);\n};\nexport default useEvent;\n","import { useCallback, useEffect } from 'react';\nimport { PlatformEvent, PlatformEventAsync, PlatformEventHandler } from 'platform-bible-utils';\nimport usePromise from './use-promise.hook';\n\nconst noopUnsubscriber = () => false;\n\n/**\n * Adds an event handler to an asynchronously subscribing/unsubscribing event so the event handler\n * runs when the event is emitted. Use `papi.network.getNetworkEvent` to use a networked event with\n * this hook.\n *\n * @param event The asynchronously (un)subscribing event to subscribe to.\n *\n * - If event is a `PlatformEvent` or `PlatformEventAsync`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEventAsync = (\n event: PlatformEvent | PlatformEventAsync | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n // Subscribe to the event asynchronously\n const [unsubscribe] = usePromise(\n useCallback(async () => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return noopUnsubscriber;\n\n // Wrap subscribe and unsubscribe in promises to allow normal events to be used as well\n const unsub = await Promise.resolve(event(eventHandler));\n return async () => unsub();\n }, [eventHandler, event]),\n noopUnsubscriber,\n // We want the unsubscriber to return to default value immediately upon changing subscription\n // So the useEffect below will unsubscribe asap\n { preserveValue: false },\n );\n\n // Unsubscribe from the event asynchronously (but we aren't awaiting the unsub)\n useEffect(() => {\n return () => {\n if (unsubscribe !== noopUnsubscriber) {\n unsubscribe();\n }\n };\n }, [unsubscribe]);\n};\n\nexport default useEventAsync;\n"],"names":["twMergeCustom","extendTailwindMerge","cn","inputs","clsx","Input","React","className","type","props","ref","jsx","BookChapterInput","forwardRef","handleSearch","handleKeyDown","handleOnClick","handleSubmit","jsxs","ShadInput","event","e","History","P","R","t","s","n","N","B","O","S","K","g","k","x","T","X","V","w","L","G","A","H","C","I","y","q","U","m","l","h","c","E","D","i","a","o","u","v","f","d","b","p","J","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","children","ChevronRight","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","Check","DropdownMenuRadioItem","Circle","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","BookMenuItem","bookId","handleSelectBook","isSelected","handleHighlightBook","bookType","ShadDropdownMenuItem","Canon","ChapterSelect","handleSelectChapter","endChapter","activeChapter","highlightedChapter","handleHighlightedChapter","chapters","_","handleMouse","useCallback","chapterNumber","chapter","GoToMenuItem","handleSort","handleLocationHistory","handleBookmarks","ShadDropdownMenuLabel","ArrowDownWideNarrow","Clock","Bookmark","ALL_BOOK_IDS","BOOK_TYPE_LABELS","BOOK_TYPE_ARRAY","SCROLL_OFFSET","SEARCH_QUERY_FORMATS","fetchGroupedBooks","fetchEndChapter","getChaptersForBook","getAllEnglishNames","isValidBookEnglishName","bookName","getBookIdFromEnglishName","formattedBookName","BookChapterControl","scrRef","searchQuery","setSearchQuery","useState","selectedBookId","setSelectedBookId","setHighlightedChapter","highlightedBookId","setHighlightedBookId","isContentOpen","setIsContentOpen","isContentOpenDelayed","setIsContentOpenDelayed","inputRef","useRef","contentRef","menuItemRef","fetchFilteredBooks","englishNameLowerCase","normalizedQuery","handleSearchInput","searchString","shouldPreventAutoClosing","controlMenuState","open","updateReference","shouldClose","verse","handleInputSubmit","format","matches","book","englishName","handleKeyDownInput","handleKeyDownContent","key","handleKeyDownMenuItem","chapterOffSet","useEffect","useLayoutEffect","scrollTimeout","scrollPosition","ShadDropdownMenu","ShadDropdownMenuTrigger","ShadDropdownMenuContent","bookTypeIndex","element","ShadDropdownMenuSeparator","buttonVariants","cva","Button","variant","size","asChild","Comp","Slot","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","DialogPortal","DialogPrimitive","DialogOverlay","DialogContent","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","getOptionLabelDefault","option","ComboBox","id","options","value","onChange","getOptionLabel","buttonPlaceholder","textPlaceholder","commandEmptyMessage","buttonVariant","dir","isDisabled","setOpen","ChevronsUpDown","ChapterRangeSelector","startChapter","handleSelectStartChapter","handleSelectEndChapter","chapterCount","chapterOptions","useMemo","index","onChangeStartChapter","onChangeEndChapter","Fragment","BookSelectionMode","BOOK_SELECTOR_STRING_KEYS","localizeString","strings","BookSelector","handleBookSelectionModeChange","currentBookName","onSelectBooks","selectedBookIds","localizedStrings","currentBookText","chooseText","chooseBooksText","bookSelectionMode","setBookSelectionMode","onSelectionModeChange","newMode","DataTableViewOptions","table","FilterIcon","column","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","DataTablePagination","pageSize","ArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","ArrowRightIcon","Table","stickyHeader","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTable","columns","data","enablePagination","showPaginationControls","showColumnVisibilityControls","onRowClickHandler","sorting","setSorting","columnFilters","setColumnFilters","columnVisibility","setColumnVisibility","rowSelection","setRowSelection","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","headerGroup","header","flexRender","_a","row","cell","OccurrencesTable","occurrenceData","setScriptureReference","referenceHeaderText","occurrenceHeaderText","occurrences","uniqueOccurrences","occurrence","uniqueOccurrence","deepEqual","Checkbox","CheckboxPrimitive","getLinesFromUSFM","text","getNumberFromUSFM","regex","match","getBookNumFromId","getStatusForItem","item","approvedItems","unapprovedItems","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","context","getSortingIcon","sortDirection","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","inventoryItemColumn","itemLabel","inventoryAdditionalItemColumn","additionalItemLabel","additionalItemIndex","inventoryCountColumn","countLabel","statusChangeHandler","changedItems","newStatus","onApprovedItemsChange","onUnapprovedItemsChange","newApprovedItems","validItem","newUnapprovedItems","unapprovedItem","inventoryStatusColumn","statusLabel","status","CircleCheckIcon","CircleXIcon","CircleHelpIcon","INVENTORY_STRING_KEYS","filterItemData","itemData","statusFilter","textFilter","filteredItemData","createTableData","scriptureRef","itemRegex","tableData","currentBook","currentChapter","currentVerse","line","items","itemIndex","existingItem","tableEntry","newReference","substring","newItem","Inventory","scriptureReference","extractItems","additionalItemsLabels","scope","onScopeChange","allItemsText","approvedItemsText","unapprovedItemsText","unknownItemsText","scopeBookText","scopeChapterText","scopeVerseText","filterText","showAdditionalItemsText","showAdditionalItems","setShowAdditionalItems","setStatusFilter","setTextFilter","selectedItem","setSelectedItem","reducedTableData","newTableData","firstItem","existingEntry","newTableEntry","filteredTableData","allColumns","numberOfAdditionalItems","additionalColumns","_b","rowClickHandler","newSelection","handleScopeChange","handleStatusFilterChange","SearchBar","onSearch","placeholder","isFullWidth","handleInputChange","VerticalTabs","TabsPrimitive","VerticalTabsList","VerticalTabsTrigger","VerticalTabsContent","NavigationContentSearch","tabList","searchPlaceholder","headerTitle","isSearchBarFullWidth","direction","tab","scrBookColId","scrRefColId","typeColId","detailsColId","defaultScrRefColumnName","defaultScrBookGroupName","defaultTypeColumnName","defaultDetailsColumnName","getColumns","colInfo","showSourceColumn","showSrcCol","info","formatScrRef","compareScrRefs","toRefOrRange","scriptureSelection","offsetStart","offsetEnd","scrRefToBBBCCCVVV","getRowKey","ScriptureResultsViewer","sources","showColumnHeaders","scriptureReferenceColumnName","scriptureBookGroupName","typeColumnName","detailsColumnName","onRowSelected","grouping","setGrouping","scriptureResults","source","getExpandedRowModel","getGroupedRowModel","selectedRows","keys","selectedRow","scrBookGroupName","typeGroupName","groupingOptions","handleSelectChange","selectedGrouping","handleRowClick","getEvenOrOddBandingStyle","getIndent","groupingState","rowIndex","ChevronLeft","DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS","getLocalizeKeyForScrollGroupId","ScrollGroupSelector","availableScrollGroupIds","scrollGroupId","onChangeScrollGroupId","localizedStringsDefaulted","localizedStringKey","localizedStringValue","newScrollGroupString","scrollGroupOptionId","Separator","orientation","decorative","SeparatorPrimitive","SettingsList","SettingsListItem","primary","secondary","isLoading","loadingMessage","SettingsListHeader","includeSeparator","Checklist","listItems","selectedListItems","handleSelectListItem","createLabel","_interopRequireDefault","obj","module","chainPropTypes","propType1","propType2","args","_extends","target","isPlainObject","prototype","deepClone","output","deepmerge","r","z","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","from","to","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","has","printWarning","loggedTypeFailures","message","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","error","err","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propName","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","step","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","isClassComponent","elementType","acceptingRef","safePropName","warningHint","elementAcceptingRef","PropTypes","elementAcceptingRef$1","specialProperty","exactProp","propTypes","unsupportedProps","prop","formatMuiErrorMessage","code","url","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","SuspenseList","hasWarnedAboutDeprecatedIsConcurrentMode","isSuspenseList","fnNameMatchRegex","getFunctionName","fn","getFunctionComponentName","Component","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","HTMLElementType","refType","refType$1","capitalize","string","_formatMuiErrorMessage","createChainedFunction","funcs","acc","func","debounce","wait","timeout","debounced","later","deprecatedPropType","validator","reason","componentNameSafe","propFullNameSafe","isMuiElement","muiNames","_muiName","_element$type","ownerDocument","node","ownerWindow","requirePropFactory","componentNameInError","prevPropTypes","requiredProp","defaultTypeChecker","typeCheckerResult","setRef","useEnhancedEffect","useEnhancedEffect$1","globalId","useGlobalId","idOverride","defaultId","setDefaultId","maybeReactUseId","useId","reactId","unsupportedProp","useControlled","controlled","defaultProp","name","state","isControlled","valueState","setValue","defaultValue","setValueIfUncontrolled","newValue","useEventCallback","useForkRef","refs","instance","UNINITIALIZED","useLazyRef","init","initArg","EMPTY","useOnMount","Timeout","delay","useTimeout","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","focusTriggersKeyboardModality","tagName","handlePointerDown","handleVisibilityChange","prepare","doc","isFocusVisible","useIsFocusVisible","isFocusVisibleRef","handleBlurVisible","handleFocusVisible","resolveProps","defaultProps","defaultSlotProps","slotProps","slotPropName","composeClasses","slots","getUtilityClass","classes","slot","utilityClass","defaultGenerator","createClassNameGenerator","generate","generator","ClassNameGenerator","ClassNameGenerator$1","globalStateClasses","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","result","clamp","min","max","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","sortBreakpointsValues","breakpointsAsArray","breakpoint1","breakpoint2","createBreakpoints","breakpoints","unit","other","sortedValues","up","down","between","start","end","endIndex","only","not","keyIndex","shape","shape$1","responsivePropType","responsivePropType$1","merge","defaultBreakpoints","handleBreakpoints","styleFromPropValue","theme","themeBreakpoints","breakpoint","mediaKey","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","breakpointStyleKey","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","getPath","path","checkVars","getStyleValue","themeMapping","transform","propValueFinal","userValue","cssProperty","themeKey","memoize","cache","arg","properties","directions","aliases","getCssProperties","property","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","_getPath","themeSpacing","abs","createUnarySpacing","getValue","transformer","transformed","getStyleFromPropValue","cssProperties","resolveCssProperty","margin","padding","createSpacing","spacingInput","spacing","argsInput","argument","compose","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","borderRadius","gap","columnGap","rowGap","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","paletteTransform","color","bgcolor","backgroundColor","sizingTransform","width","maxWidth","_props$theme","_props$theme2","breakpointsValues","minWidth","height","maxHeight","minHeight","boxSizing","defaultSxConfig","defaultSxConfig$1","objectsHaveSameKeys","objects","union","callIfFn","maybeFn","unstable_createStyleFunctionSx","getThemeValue","config","styleFunctionSx","_theme$unstable_sxCon","sx","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsKeys","css","styleKey","styleFunctionSx$1","applyStyles","createTheme","paletteInput","shapeInput","muiTheme","isObjectEmpty","useTheme","defaultTheme","contextTheme","ThemeContext","systemDefaultTheme","useThemeWithoutDefault","_excluded2","_excluded3","isEmpty","isStringTag","tag","shouldForwardProp","lowercaseFirstLetter","resolveTheme","themeId","defaultOverridesResolver","processStyleArg","callableStyle","_ref","ownerState","resolvedStylesArg","resolvedStyle","variants","isMatch","createStyled","input","rootShouldForwardProp","slotShouldForwardProp","systemSx","inputOptions","processStyles","componentSlot","inputSkipVariantsResolver","inputSkipSx","overridesResolver","skipVariantsResolver","skipSx","label","shouldForwardPropOption","defaultStyledResolver","styledEngineStyled","transformStyleArg","stylesArg","muiStyledResolver","styleArg","expressions","transformedStyleArg","expressionsWithDefaultTheme","styleOverrides","resolvedStyleOverrides","slotKey","slotStyle","_theme$components","themeVariants","numOfCustomFnsApplied","placeholders","displayName","getThemeProps","params","useThemeProps","clampWrapper","hexToRgb","re","colors","decomposeColor","marker","colorSpace","recomposeColor","hslToRgb","rgb","getLuminance","getContrastRatio","foreground","background","lumA","lumB","alpha","darken","coefficient","lighten","createMixins","mixins","common","common$1","grey","grey$1","purple","purple$1","red","red$1","orange","orange$1","blue","blue$1","lightBlue","lightBlue$1","green","green$1","light","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","getDefaultPrimary","mode","getDefaultSecondary","getDefaultError","getDefaultInfo","getDefaultSuccess","getDefaultWarning","createPalette","palette","contrastThreshold","success","warning","getContrastText","contrastText","contrast","augmentColor","mainShade","lightShade","darkShade","modes","round","caseAllCaps","defaultFontFamily","createTypography","typography","fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem2","coef","pxToRem","buildVariant","fontWeight","lineHeight","letterSpacing","casing","shadowKeyUmbraOpacity","shadowKeyPenumbraOpacity","shadowAmbientShadowOpacity","createShadow","px","shadows","shadows$1","easing","duration","formatMs","milliseconds","getAutoHeightDuration","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","isString","isNumber","animatedProp","zIndex","zIndex$1","mixinsInput","transitionsInput","typographyInput","systemTheme","systemCreateTheme","stateClasses","component","child","stateClass","defaultTheme$1","THEME_ID","systemUseThemeProps","styled","styled$1","getSvgIconUtilityClass","useUtilityClasses","SvgIconRoot","_theme$transitions","_theme$transitions$cr","_theme$transitions2","_theme$typography","_theme$typography$pxT","_theme$typography2","_theme$typography2$px","_theme$typography3","_theme$typography3$px","_palette$ownerState$c","_palette","_palette2","_palette3","SvgIcon","inProps","htmlColor","inheritViewBox","titleAccess","viewBox","hasSvgAsChild","more","_jsxs","_jsx","SvgIcon$1","createSvgIcon","unstable_ClassNameGenerator","exports","_utils","ArrowRight","default_1","_createSvgIcon","_jsxRuntime","isHostComponent","appendOwnerState","otherProps","defaultContextValue","ClassNameConfiguratorContext","useClassNamesOverride","disableDefaultClasses","extractEventHandlers","excludeKeys","resolveComponentProps","componentProps","slotState","omitEventHandlers","mergeSlotProps","parameters","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","useSlotProps","_parameters$additiona","skipResolvingSlotProps","rest","resolvedComponentsProps","mergedProps","internalRef","GLOBAL_CLASS_PREFIX","buildStateClass","buildSlotClass","getContainer","container","forwardedRef","disablePortal","mountNode","setMountNode","handleRef","newProps","ReactDOM","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","OwnElement","isHTMLElement","isShadowRoot","attributes","effect","_ref2","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","COMPONENT_NAME","getPopperUtilityClass","flipPlacement","resolveAnchorEl","anchorEl","isVirtualElement","defaultPopperOptions","PopperTooltip","_slots$root","initialPlacement","popperOptions","popperRefProp","TransitionProps","tooltipRef","ownRef","popperRef","handlePopperRef","handlePopperRefRef","rtlPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","handlePopperUpdate","box","popperModifiers","childProps","Root","rootProps","Popper","containerProp","keepMounted","transition","exited","setExited","handleEnter","handleExited","resolvedAnchorEl","display","transitionProps","useThemeSystem","_setPrototypeOf","_inheritsLoose","subClass","superClass","setPrototypeOf","timeoutsShape","TransitionGroupContext","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","parentGroup","appear","initialStatus","prevState","nextIn","_proto","prevProps","nextStatus","exit","enter","mounting","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","_this3","nextState","callback","_this4","active","handler","doesNotHaveTimeoutOrListener","maybeNextCallback","_this$props","pt","noop","Transition$1","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","getScale","isWebKit154","Grow","addEndListener","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","TransitionComponent","timer","autoTimeout","nodeRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","isAppearing","transitionDuration","transitionTimingFunction","handleEntered","handleExiting","handleExit","handleAddEndListener","Grow$1","PopperRoot","BasePopper","components","componentsProps","RootComponent","Popper$1","getTooltipUtilityClass","tooltipClasses","tooltipClasses$1","disableInteractive","touch","TooltipPopper","TooltipTooltip","TooltipArrow","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","Tooltip","_slots$popper","_slots$transition","_slots$tooltip","_slots$arrow","_slotProps$popper","_ref6","_slotProps$popper2","_slotProps$transition","_slotProps$tooltip","_ref7","_slotProps$tooltip2","_slotProps$arrow","_ref8","_slotProps$arrow2","childrenProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponentProp","PopperProps","title","TransitionComponentProp","isRtl","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","handleOpen","handleClose","handleLeave","focusVisibleRef","setChildIsFocusVisible","handleBlur","handleFocus","detectTouchStart","childrenProps","handleMouseOver","handleMouseLeave","handleTouchStart","handleTouchEnd","nativeEvent","handleMouseMove","nameOrDescProps","titleIsString","interactiveWrapperListeners","_PopperProps$popperOp","tooltipModifiers","PopperComponent","TooltipComponent","ArrowComponent","popperProps","tooltipProps","tooltipArrowProps","TransitionPropsInner","Tooltip$1","getIcon","icon","menuLabel","leading","MuiListItemIcon","MenuItem","onClick","tooltip","allowForLeadingIcons","iconPathBefore","iconPathAfter","hasAutoFocus","isDense","isSubMenuParent","hasDisabledGutters","hasDivider","focusVisibleClassName","menuItem","MuiMenuItem","MuiListItemText","getAllGroups","menuDefinition","SubMenu","setAnchorEl","parentMenuItem","parentItemProps","handleParentMenuItemClick","renderSubMenuItems","includedGroups","group","GroupedMenuItemList","Menu","getOrderedGroupItems","groupId","allItems","menuProps","commandHandler","groupsToInclude","sortedGroups","itemArray","allowSpaceForLeadingIcons","createMenuItemProps","isLastItemInGroup","divKey","itemInfo","menuItemProps","TopLevelMenu","columnId","MenuColumn","metadata","Grid","List","GridMenu","multiColumnMenu","sortedColumns","columnNumbers","columnName","col","getUsePromiseOptionsDefaults","usePromise","promiseFactoryCallback","defaultValueRef","optionsDefaultedRef","setIsLoading","promiseIsCurrent","MenuIcon","HamburgerMenuButton","menuProvider","normalMenu","fullMenu","containerRef","ariaLabelPrefix","isMenuOpen","setMenuOpen","showFullMenu","setShowFullMenu","handleMenuItemClick","handleMenuButtonClick","prevIsOpen","isOpening","menuCommandHandler","command","setOffset","normalMenuData","fullMenuData","menu","IconButton","Drawer","isTooltipSuppressed","adjustMarginToAlignToEdge","MuiIconButton","Spinner","LoaderCircle","TextField","hasError","helperText","onFocus","onBlur","ShadLabel","Toolbar","AppBar","MuiToolbar","alertVariants","Alert","AlertTitle","AlertDescription","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Sonner","Toaster","Slider","SliderPrimitive","Switch","SwitchPrimitives","Tabs","TabsList","TabsTrigger","TabsContent","InstallButton","isInstalling","handleClick","buttonText","Download","EnableButton","isEnabling","DisableButton","isDisabling","UpdateButton","isUpdating","MarkdownRenderer","markdown","anchorTarget","Markdown","FilterButton","Filter","DropdownMenuItemType","DropdownMenuItemType2","FilterDropdown","groups","NoExtensionsFound","MoreInfo","category","downloads","languages","moreInfoUrl","numberFormatted","NumberFormat","handleScrollToBottom","User","locale","LucideLink","CircleHelp","VersionHistory","versionHistory","showAllVersions","setShowAllVersions","currentDate","formatTimeString","dateString","date","dateDiff","yearDiff","monthDiff","dayDiff","timeString","sortedEntries","Footer","publisherDisplayName","fileSize","locales","formattedFileSize","formatBytes","languageNames","codes","displayNames","useEvent","unsubscriber","noopUnsubscriber","useEventAsync","unsubscribe","unsub"],"mappings":"45CAGA,MAAMA,GAAgBC,GAAAA,oBAAoB,CAAE,OAAQ,KAAO,CAAA,EAyDpD,SAASC,KAAMC,EAAsB,CACnC,OAAAH,GAAcI,GAAAA,KAAKD,CAAM,CAAC,CACnC,CCzDO,MAAME,GAAQC,EAAM,WACzB,CAAC,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,CAAA,EAASC,IAE5BC,EAAA,IAAC,QAAA,CACC,KAAAH,EACA,UAAWN,EACT,sbACAK,CACF,EACA,IAAAG,EAEC,GAAGD,CAAA,CAAA,CAIZ,EACAJ,GAAM,YAAc,QCNpB,MAAMO,GAAmBC,EAAA,WACvB,CACE,CAAE,aAAAC,EAAc,cAAAC,EAAe,cAAAC,EAAe,aAAAC,EAAc,GAAGR,CAAM,EACrEC,IAGEQ,EAAA,KAAC,MAAI,CAAA,UAAU,cACb,SAAA,CAAAP,EAAA,IAACQ,GAAA,CACE,GAAGV,EACJ,KAAK,OACL,UAAU,0JACV,SAAWW,GAAUN,EAAaM,EAAM,OAAO,KAAK,EACpD,UAAYC,GAAM,CACZA,EAAE,MAAQ,SACCJ,IAEfF,EAAcM,CAAC,CACjB,EACA,QAASL,EACT,IAAAN,CAAA,CACF,EACAC,EAAA,IAACW,GAAA,QAAA,CACC,UAAU,8HACV,QAAS,IAAM,CAEb,QAAQ,IAAI,iBAAiB,CAC/B,CAAA,CACF,CACF,CAAA,CAAA,CAGN,EC9CA,IAAIC,GAAI,OAAO,eACXC,GAAI,CAACC,EAAGJ,EAAGK,IAAML,KAAKI,EAAIF,GAAEE,EAAGJ,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAOK,CAAC,CAAE,EAAID,EAAEJ,CAAC,EAAIK,EACzGC,GAAI,CAACF,EAAGJ,EAAGK,IAAMF,GAAEC,EAAG,OAAOJ,GAAK,SAAWA,EAAI,GAAKA,EAAGK,CAAC,EAW9D,MAAME,GAAI,CACR,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MAEA,MAEA,MAEA,MAEA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,MAEA,MAEA,MAEA,MAEA,MACA,MACA,MACA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,MACA,MACA,KACF,EAAGC,GAAI,CACL,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACF,EAAGC,GAAI,CACL,UACA,SACA,YACA,UACA,cACA,SACA,SACA,OACA,WACA,WACA,UACA,UACA,eACA,eACA,OACA,WACA,kBACA,MACA,SACA,WACA,eACA,gBACA,SACA,WACA,eACA,UACA,kBACA,QACA,OACA,OACA,UACA,QACA,QACA,QACA,WACA,YACA,SACA,YACA,UACA,UACA,OACA,OACA,OACA,OACA,SACA,gBACA,gBACA,YACA,YACA,cACA,aACA,kBACA,kBACA,YACA,YACA,QACA,WACA,UACA,QACA,UACA,UACA,SACA,SACA,SACA,OACA,aACA,QACA,SACA,eACA,oBACA,0BACA,SACA,qBACA,sBACA,UACA,qBACA,cACA,cACA,cACA,cACA,mBACA,mBACA,qBACA,YACA,OACA,oBAGA,uBACA,uBACA,sBACA,yBACA,wBACA,qBACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,eACA,cACA,eACA,oBACA,qBACA,0BACA,0BACA,eACA,eACA,YACA,gBACA,cACA,eACA,iBACA,wBACA,mBACA,WACA,QACA,aACA,aACA,aACA,2BACA,4BACA,YACF,EAAGC,G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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[3,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,221]} \ No newline at end of file diff --git a/lib/platform-bible-react/dist/index.js b/lib/platform-bible-react/dist/index.js index 7a846e8e4a..71d9f1f651 100644 --- a/lib/platform-bible-react/dist/index.js +++ b/lib/platform-bible-react/dist/index.js @@ -1862,7 +1862,7 @@ const or = I.forwardRef(({ className: e, stickyHeader: t, ...n }, r) => /* @__PU { ref: r, className: T( - { "tw-sticky tw-top-0 tw-bg-muted": t }, + { "tw-sticky tw-top-0 tw-backdrop-blur-md": t }, "[&_tr]:tw-border-b", e ), @@ -10747,6 +10747,9 @@ video:where(.pr-twp,.pr-twp *) { .tw-mr-2 { margin-right: 0.5rem; } +.tw-mr-4 { + margin-right: 1rem; +} .tw-ms-2 { margin-inline-start: 0.5rem; } @@ -10879,6 +10882,9 @@ video:where(.pr-twp,.pr-twp *) { .tw-h-px { height: 1px; } +.tw-max-h-80 { + max-height: 20rem; +} .tw-max-h-96 { max-height: 24rem; } @@ -11787,6 +11793,10 @@ video:where(.pr-twp,.pr-twp *) { .tw-ring-offset-background { --tw-ring-offset-color: hsl(var(--background)); } +.tw-backdrop-blur-md { + --tw-backdrop-blur: blur(12px); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} .tw-transition { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); @@ -12557,6 +12567,19 @@ video:where(.pr-twp,.pr-twp *) { .\\[\\&_tr\\]\\:tw-border-b tr { border-bottom-width: 1px; } +.papi-menu-item { + background-color: transparent; +} + +.papi-menu-icon-trailing { + margin-left: 10px; + place-content: flex-end; +} + +.papi-menu-item img { + max-width: 24px; + max-height: 24px; +} .papi-icon-button { border: 0; border-radius: 3em; @@ -12624,19 +12647,6 @@ video:where(.pr-twp,.pr-twp *) { .banded-row[data-state='selected']:hover { cursor: default; } -.papi-menu-item { - background-color: transparent; -} - -.papi-menu-icon-trailing { - margin-left: 10px; - place-content: flex-end; -} - -.papi-menu-item img { - max-width: 24px; - max-height: 24px; -} .papi-menu-drawer-paper { height: fit-content !important; position: absolute !important; diff --git a/lib/platform-bible-react/dist/index.js.map b/lib/platform-bible-react/dist/index.js.map index 146dbded3c..311dc3fee0 100644 --- a/lib/platform-bible-react/dist/index.js.map +++ b/lib/platform-bible-react/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/utils/shadcn-ui.util.ts","../src/components/shadcn-ui/input.tsx","../src/components/advanced/book-chapter-control/book-chapter-input.component.tsx","../../../node_modules/@sillsdev/scripture/dist/index.es.js","../src/components/shadcn-ui/dropdown-menu.tsx","../src/components/advanced/book-chapter-control/book-menu-item.component.tsx","../src/components/advanced/book-chapter-control/chapter-select.component.tsx","../src/components/advanced/book-chapter-control/go-to-menu-item.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.component.tsx","../src/components/shadcn-ui/button.tsx","../src/components/shadcn-ui/label.tsx","../src/components/shadcn-ui/radio-group.tsx","../src/components/shadcn-ui/popover.tsx","../src/components/shadcn-ui/dialog.tsx","../src/components/shadcn-ui/command.tsx","../src/components/basics/combo-box.component.tsx","../src/components/basics/chapter-range-selector.component.tsx","../src/components/advanced/book-selector.component.tsx","../src/components/advanced/data-table/data-table-column-toggle.component.tsx","../src/components/shadcn-ui/select.tsx","../src/components/advanced/data-table/data-table-pagination.component.tsx","../src/components/shadcn-ui/table.tsx","../src/components/advanced/data-table/data-table.component.tsx","../src/components/advanced/inventory/occurrences-table.component.tsx","../src/components/shadcn-ui/checkbox.tsx","../src/components/advanced/inventory/inventory-utils.ts","../src/components/shadcn-ui/toggle.tsx","../src/components/shadcn-ui/toggle-group.tsx","../src/components/advanced/inventory/inventory-columns.tsx","../src/components/advanced/inventory/inventory.component.tsx","../src/components/basics/search-bar.component.tsx","../src/components/basics/tabs-vertical.tsx","../src/components/advanced/navigation-content-search.component.tsx","../src/components/advanced/scripture-results-viewer/scripture-results-viewer.component.tsx","../src/components/advanced/scroll-group-selector.component.tsx","../src/components/shadcn-ui/separator.tsx","../src/components/advanced/settings-components/settings-list.component.tsx","../src/components/basics/checklist.component.tsx","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@mui/utils/chainPropTypes/chainPropTypes.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/@mui/utils/deepmerge/deepmerge.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/@mui/utils/elementAcceptingRef/elementAcceptingRef.js","../../../node_modules/@mui/utils/exactProp/exactProp.js","../../../node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/cjs/react-is.development.js","../../../node_modules/react-is/index.js","../../../node_modules/@mui/utils/getDisplayName/getDisplayName.js","../../../node_modules/@mui/utils/HTMLElementType/HTMLElementType.js","../../../node_modules/@mui/utils/refType/refType.js","../../../node_modules/@mui/utils/capitalize/capitalize.js","../../../node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../../../node_modules/@mui/utils/debounce/debounce.js","../../../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../../../node_modules/@mui/utils/isMuiElement/isMuiElement.js","../../../node_modules/@mui/utils/ownerDocument/ownerDocument.js","../../../node_modules/@mui/utils/ownerWindow/ownerWindow.js","../../../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../../../node_modules/@mui/utils/setRef/setRef.js","../../../node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/utils/useId/useId.js","../../../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../../../node_modules/@mui/utils/useControlled/useControlled.js","../../../node_modules/@mui/utils/useEventCallback/useEventCallback.js","../../../node_modules/@mui/utils/useForkRef/useForkRef.js","../../../node_modules/@mui/utils/useLazyRef/useLazyRef.js","../../../node_modules/@mui/utils/useOnMount/useOnMount.js","../../../node_modules/@mui/utils/useTimeout/useTimeout.js","../../../node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../../../node_modules/@mui/utils/resolveProps/resolveProps.js","../../../node_modules/@mui/utils/composeClasses/composeClasses.js","../../../node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/utils/clamp/clamp.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../../../node_modules/@mui/system/esm/createTheme/shape.js","../../../node_modules/@mui/system/esm/responsivePropType.js","../../../node_modules/@mui/system/esm/merge.js","../../../node_modules/@mui/system/esm/breakpoints.js","../../../node_modules/@mui/system/esm/style.js","../../../node_modules/@mui/system/esm/memoize.js","../../../node_modules/@mui/system/esm/spacing.js","../../../node_modules/@mui/system/esm/createTheme/createSpacing.js","../../../node_modules/@mui/system/esm/compose.js","../../../node_modules/@mui/system/esm/borders.js","../../../node_modules/@mui/system/esm/cssGrid.js","../../../node_modules/@mui/system/esm/palette.js","../../../node_modules/@mui/system/esm/sizing.js","../../../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../../../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../../../node_modules/@mui/system/esm/createTheme/applyStyles.js","../../../node_modules/@mui/system/esm/createTheme/createTheme.js","../../../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../../../node_modules/@mui/system/esm/useTheme.js","../../../node_modules/@mui/system/esm/createStyled.js","../../../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../../../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../../../node_modules/@mui/system/esm/colorManipulator.js","../../../node_modules/@mui/material/styles/createMixins.js","../../../node_modules/@mui/material/colors/common.js","../../../node_modules/@mui/material/colors/grey.js","../../../node_modules/@mui/material/colors/purple.js","../../../node_modules/@mui/material/colors/red.js","../../../node_modules/@mui/material/colors/orange.js","../../../node_modules/@mui/material/colors/blue.js","../../../node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/@mui/material/colors/green.js","../../../node_modules/@mui/material/styles/createPalette.js","../../../node_modules/@mui/material/styles/createTypography.js","../../../node_modules/@mui/material/styles/shadows.js","../../../node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/@mui/material/styles/zIndex.js","../../../node_modules/@mui/material/styles/createTheme.js","../../../node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/@mui/material/styles/identifier.js","../../../node_modules/@mui/material/styles/useThemeProps.js","../../../node_modules/@mui/material/styles/styled.js","../../../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../../../node_modules/@mui/material/SvgIcon/SvgIcon.js","../../../node_modules/@mui/material/utils/createSvgIcon.js","../../../node_modules/@mui/material/utils/index.js","../../../node_modules/@mui/icons-material/utils/createSvgIcon.js","../../../node_modules/@mui/icons-material/ArrowRight.js","../../../node_modules/@mui/base/utils/isHostComponent.js","../../../node_modules/@mui/base/utils/appendOwnerState.js","../../../node_modules/@mui/base/utils/ClassNameConfigurator.js","../../../node_modules/@mui/base/utils/extractEventHandlers.js","../../../node_modules/@mui/base/utils/resolveComponentProps.js","../../../node_modules/@mui/base/utils/omitEventHandlers.js","../../../node_modules/@mui/base/utils/mergeSlotProps.js","../../../node_modules/@mui/base/utils/useSlotProps.js","../../../node_modules/@mui/base/generateUtilityClass/index.js","../../../node_modules/@mui/base/generateUtilityClasses/index.js","../../../node_modules/@mui/base/Portal/Portal.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@mui/base/Popper/popperClasses.js","../../../node_modules/@mui/base/Popper/Popper.js","../../../node_modules/@mui/material/styles/useTheme.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-transition-group/esm/config.js","../../../node_modules/react-transition-group/esm/utils/PropTypes.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/@mui/material/transitions/utils.js","../../../node_modules/@mui/material/Grow/Grow.js","../../../node_modules/@mui/material/Popper/Popper.js","../../../node_modules/@mui/material/Tooltip/tooltipClasses.js","../../../node_modules/@mui/material/Tooltip/Tooltip.js","../src/components/mui/menu-item.component.tsx","../src/components/mui/grouped-menu-item-list.component.tsx","../src/components/mui/top-level-menu.component.tsx","../src/components/mui/grid-menu.component.tsx","../src/hooks/use-promise.hook.ts","../../../node_modules/@mui/icons-material/esm/Menu.js","../src/components/mui/hamburger-menu-button.component.tsx","../src/components/mui/icon-button.component.tsx","../src/components/basics/spinner.component.tsx","../src/components/basics/text-field.component.tsx","../src/components/mui/toolbar.component.tsx","../src/components/shadcn-ui/alert.tsx","../src/components/shadcn-ui/card.tsx","../src/components/shadcn-ui/sonner.tsx","../src/components/shadcn-ui/slider.tsx","../src/components/shadcn-ui/switch.tsx","../src/components/shadcn-ui/tabs.tsx","../src/components/advanced/extension-marketplace/buttons/install-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/enable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/disable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/update-button.component.tsx","../src/components/advanced/extension-marketplace/markdown-renderer.component.tsx","../src/components/advanced/extension-marketplace/buttons/filter-button.component.tsx","../src/components/advanced/extension-marketplace/filter-dropdown.component.tsx","../src/components/advanced/extension-marketplace/no-extensions-found.component.tsx","../src/components/advanced/extension-marketplace/more-info.component.tsx","../src/components/advanced/extension-marketplace/version-history.component.tsx","../src/components/advanced/extension-marketplace/footer.component.tsx","../src/hooks/use-event.hook.ts","../src/hooks/use-event-async.hook.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMergeCustom = extendTailwindMerge({ prefix: 'tw-' });\n\n/**\n * Tailwind and CSS class application helper function. Uses\n * [`clsx`](https://www.npmjs.com/package/clsx) to make it easy to apply classes conditionally using\n * object syntax, and uses [`tailwind-merge`](https://www.npmjs.com/package/tailwind-merge) to make\n * it easy to merge/overwrite Tailwind classes in a programmer-logic-friendly way.\n *\n * Note: `tailwind-merge` is configured to use the prefix `tw-`, so you must use the same prefix\n * with any Tailwind classes you use with this function to successfully overwrite other Tailwind\n * classes. `platform-bible-react` is configured to use `tw-` as its Tailwind prefix, so any\n * Tailwind classes you pass into `platform-bible-react` components will be compared using the `tw-`\n * prefix.\n *\n * This function was popularized by\n * [shadcn/ui](https://ui.shadcn.com/docs/installation/manual#add-a-cn-helper). See [ByteGrad's\n * explanation video](https://www.youtube.com/watch?v=re2JFITR7TI) for more information.\n *\n * @example\n *\n * ```typescript\n * const borderShouldBeBlue = true;\n * const textShouldBeRed = true;\n * const heightShouldBe20 = false;\n * const classString = cn(\n * 'tw-bg-primary tw-h-10 tw-text-primary-foreground',\n * 'tw-bg-secondary',\n * {\n * 'tw-border-blue-500': borderShouldBeBlue,\n * 'tw-text-red-500': textShouldBeRed,\n * 'tw-h-20': heightShouldBe20,\n * },\n * 'some-class',\n * );\n * ```\n *\n * The resulting `classString` is `'tw-h-10 tw-bg-secondary tw-border-blue-500 tw-text-red-500\n * some-class'`\n *\n * - Notice that `'tw-bg-secondary'`, specified later, overwrote `'tw-bg-primary'`, specified earlier,\n * because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-text-red-500'`, specified later, overwrote `'tw-text-primary-foreground'`,\n * specified earlier, because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-h-20'`, specified later, did not overwrite `'tw-h-10'`, specified earlier,\n * because `'tw-h-20'` is part of a conditional class object and its value evaluated to `false`;\n * therefore it was not applied\n * - Notice that `'some-class'` was applied. This function is not limited only to Tailwind classes.\n *\n *\n * @param inputs Class strings or `clsx` conditional class objects to merge. Tailwind classes\n * specified later in the arguments overwrite similar Tailwind classes specified earlier in the\n * arguments\n * @returns Class string containing all applicable classes from the arguments based on the rules\n * described above\n */\n// shadcn/ui uses this export in its boilerplate code\n// eslint-disable-next-line import/prefer-default-export\nexport function cn(...inputs: ClassValue[]) {\n return twMergeCustom(clsx(inputs));\n}\n","import React from 'react';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport interface InputProps extends React.InputHTMLAttributes {}\n\nexport const Input = React.forwardRef(\n ({ className, type, ...props }, ref) => {\n return (\n \n );\n },\n);\nInput.displayName = 'Input';\n","import { FocusEventHandler, forwardRef, KeyboardEvent, MouseEventHandler } from 'react';\nimport { History } from 'lucide-react';\nimport { Input as ShadInput } from '@/components/shadcn-ui/input';\n\nexport type BookChapterInputProps = {\n handleSearch: (searchString: string) => void;\n handleKeyDown: (event: KeyboardEvent) => void;\n handleOnClick: MouseEventHandler;\n handleSubmit: () => void;\n onFocus?: FocusEventHandler;\n value: string;\n placeholder: string;\n};\n\n// Shadcn Input sets type to \"button\"- HAVE to prop spread before setting type\nconst BookChapterInput = forwardRef(\n (\n { handleSearch, handleKeyDown, handleOnClick, handleSubmit, ...props }: BookChapterInputProps,\n ref,\n ) => {\n return (\n
\n handleSearch(event.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n handleKeyDown(e);\n }}\n onClick={handleOnClick}\n ref={ref}\n />\n {\n // eslint-disable-next-line no-console\n console.log('back in history');\n }}\n />\n
\n );\n },\n);\n\nexport default BookChapterInput;\n","var P = Object.defineProperty;\nvar R = (t, e, s) => e in t ? P(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar n = (t, e, s) => R(t, typeof e != \"symbol\" ? e + \"\" : e, s);\nclass _ {\n constructor() {\n n(this, \"books\");\n n(this, \"firstSelectedBookNum\");\n n(this, \"lastSelectedBookNum\");\n n(this, \"count\");\n n(this, \"selectedBookNumbers\");\n n(this, \"selectedBookIds\");\n }\n}\nconst N = [\n \"GEN\",\n \"EXO\",\n \"LEV\",\n \"NUM\",\n \"DEU\",\n \"JOS\",\n \"JDG\",\n \"RUT\",\n \"1SA\",\n \"2SA\",\n // 10\n \"1KI\",\n \"2KI\",\n \"1CH\",\n \"2CH\",\n \"EZR\",\n \"NEH\",\n \"EST\",\n \"JOB\",\n \"PSA\",\n \"PRO\",\n // 20\n \"ECC\",\n \"SNG\",\n \"ISA\",\n \"JER\",\n \"LAM\",\n \"EZK\",\n \"DAN\",\n \"HOS\",\n \"JOL\",\n \"AMO\",\n // 30\n \"OBA\",\n \"JON\",\n \"MIC\",\n \"NAM\",\n \"HAB\",\n \"ZEP\",\n \"HAG\",\n \"ZEC\",\n \"MAL\",\n \"MAT\",\n // 40\n \"MRK\",\n \"LUK\",\n \"JHN\",\n \"ACT\",\n \"ROM\",\n \"1CO\",\n \"2CO\",\n \"GAL\",\n \"EPH\",\n \"PHP\",\n // 50\n \"COL\",\n \"1TH\",\n \"2TH\",\n \"1TI\",\n \"2TI\",\n \"TIT\",\n \"PHM\",\n \"HEB\",\n \"JAS\",\n \"1PE\",\n // 60\n \"2PE\",\n \"1JN\",\n \"2JN\",\n \"3JN\",\n \"JUD\",\n \"REV\",\n \"TOB\",\n \"JDT\",\n \"ESG\",\n \"WIS\",\n // 70\n \"SIR\",\n \"BAR\",\n \"LJE\",\n \"S3Y\",\n \"SUS\",\n \"BEL\",\n \"1MA\",\n \"2MA\",\n \"3MA\",\n \"4MA\",\n // 80\n \"1ES\",\n \"2ES\",\n \"MAN\",\n \"PS2\",\n \"ODA\",\n \"PSS\",\n \"JSA\",\n // actual variant text for JOS, now in LXA text\n \"JDB\",\n // actual variant text for JDG, now in LXA text\n \"TBS\",\n // actual variant text for TOB, now in LXA text\n \"SST\",\n // actual variant text for SUS, now in LXA text // 90\n \"DNT\",\n // actual variant text for DAN, now in LXA text\n \"BLT\",\n // actual variant text for BEL, now in LXA text\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n // 100\n \"BAK\",\n \"OTH\",\n \"3ES\",\n // Used previously but really should be 2ES\n \"EZA\",\n // Used to be called 4ES, but not actually in any known project\n \"5EZ\",\n // Used to be called 5ES, but not actually in any known project\n \"6EZ\",\n // Used to be called 6ES, but not actually in any known project\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n // 110\n \"NDX\",\n \"DAG\",\n \"PS3\",\n \"2BA\",\n \"LBA\",\n \"JUB\",\n \"ENO\",\n \"1MQ\",\n \"2MQ\",\n \"3MQ\",\n // 120\n \"REP\",\n \"4BA\",\n \"LAO\"\n], B = [\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n \"BAK\",\n \"OTH\",\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n \"NDX\"\n], O = [\n \"Genesis\",\n \"Exodus\",\n \"Leviticus\",\n \"Numbers\",\n \"Deuteronomy\",\n \"Joshua\",\n \"Judges\",\n \"Ruth\",\n \"1 Samuel\",\n \"2 Samuel\",\n \"1 Kings\",\n \"2 Kings\",\n \"1 Chronicles\",\n \"2 Chronicles\",\n \"Ezra\",\n \"Nehemiah\",\n \"Esther (Hebrew)\",\n \"Job\",\n \"Psalms\",\n \"Proverbs\",\n \"Ecclesiastes\",\n \"Song of Songs\",\n \"Isaiah\",\n \"Jeremiah\",\n \"Lamentations\",\n \"Ezekiel\",\n \"Daniel (Hebrew)\",\n \"Hosea\",\n \"Joel\",\n \"Amos\",\n \"Obadiah\",\n \"Jonah\",\n \"Micah\",\n \"Nahum\",\n \"Habakkuk\",\n \"Zephaniah\",\n \"Haggai\",\n \"Zechariah\",\n \"Malachi\",\n \"Matthew\",\n \"Mark\",\n \"Luke\",\n \"John\",\n \"Acts\",\n \"Romans\",\n \"1 Corinthians\",\n \"2 Corinthians\",\n \"Galatians\",\n \"Ephesians\",\n \"Philippians\",\n \"Colossians\",\n \"1 Thessalonians\",\n \"2 Thessalonians\",\n \"1 Timothy\",\n \"2 Timothy\",\n \"Titus\",\n \"Philemon\",\n \"Hebrews\",\n \"James\",\n \"1 Peter\",\n \"2 Peter\",\n \"1 John\",\n \"2 John\",\n \"3 John\",\n \"Jude\",\n \"Revelation\",\n \"Tobit\",\n \"Judith\",\n \"Esther Greek\",\n \"Wisdom of Solomon\",\n \"Sirach (Ecclesiasticus)\",\n \"Baruch\",\n \"Letter of Jeremiah\",\n \"Song of 3 Young Men\",\n \"Susanna\",\n \"Bel and the Dragon\",\n \"1 Maccabees\",\n \"2 Maccabees\",\n \"3 Maccabees\",\n \"4 Maccabees\",\n \"1 Esdras (Greek)\",\n \"2 Esdras (Latin)\",\n \"Prayer of Manasseh\",\n \"Psalm 151\",\n \"Odes\",\n \"Psalms of Solomon\",\n // WARNING, if you change the spelling of the *obsolete* tag be sure to update\n // IsObsolete routine\n \"Joshua A. *obsolete*\",\n \"Judges B. *obsolete*\",\n \"Tobit S. *obsolete*\",\n \"Susanna Th. *obsolete*\",\n \"Daniel Th. *obsolete*\",\n \"Bel Th. *obsolete*\",\n \"Extra A\",\n \"Extra B\",\n \"Extra C\",\n \"Extra D\",\n \"Extra E\",\n \"Extra F\",\n \"Extra G\",\n \"Front Matter\",\n \"Back Matter\",\n \"Other Matter\",\n \"3 Ezra *obsolete*\",\n \"Apocalypse of Ezra\",\n \"5 Ezra (Latin Prologue)\",\n \"6 Ezra (Latin Epilogue)\",\n \"Introduction\",\n \"Concordance \",\n \"Glossary \",\n \"Topical Index\",\n \"Names Index\",\n \"Daniel Greek\",\n \"Psalms 152-155\",\n \"2 Baruch (Apocalypse)\",\n \"Letter of Baruch\",\n \"Jubilees\",\n \"Enoch\",\n \"1 Meqabyan\",\n \"2 Meqabyan\",\n \"3 Meqabyan\",\n \"Reproof (Proverbs 25-31)\",\n \"4 Baruch (Rest of Baruch)\",\n \"Laodiceans\"\n], S = K();\nfunction g(t, e = !0) {\n return e && (t = t.toUpperCase()), t in S ? S[t] : 0;\n}\nfunction k(t) {\n return g(t) > 0;\n}\nfunction x(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return e >= 40 && e <= 66;\n}\nfunction T(t) {\n return (typeof t == \"string\" ? g(t) : t) <= 39;\n}\nfunction X(t) {\n return t <= 66;\n}\nfunction V(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return w(e) && !X(e);\n}\nfunction* L() {\n for (let t = 1; t <= N.length; t++) yield t;\n}\nconst G = 1, A = N.length;\nfunction H() {\n return [\"XXA\", \"XXB\", \"XXC\", \"XXD\", \"XXE\", \"XXF\", \"XXG\"];\n}\nfunction C(t, e = \"***\") {\n const s = t - 1;\n return s < 0 || s >= N.length ? e : N[s];\n}\nfunction I(t) {\n return t <= 0 || t > A ? \"******\" : O[t - 1];\n}\nfunction y(t) {\n return I(g(t));\n}\nfunction w(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && !B.includes(e);\n}\nfunction q(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && B.includes(e);\n}\nfunction U(t) {\n return O[t - 1].includes(\"*obsolete*\");\n}\nfunction K() {\n const t = {};\n for (let e = 0; e < N.length; e++)\n t[N[e]] = e + 1;\n return t;\n}\nconst m = {\n allBookIds: N,\n nonCanonicalIds: B,\n bookIdToNumber: g,\n isBookIdValid: k,\n isBookNT: x,\n isBookOT: T,\n isBookOTNT: X,\n isBookDC: V,\n allBookNumbers: L,\n firstBook: G,\n lastBook: A,\n extraBooks: H,\n bookNumberToId: C,\n bookNumberToEnglishName: I,\n bookIdToEnglishName: y,\n isCanonical: w,\n isExtraMaterial: q,\n isObsolete: U\n};\nvar l = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = \"Unknown\", t[t.Original = 1] = \"Original\", t[t.Septuagint = 2] = \"Septuagint\", t[t.Vulgate = 3] = \"Vulgate\", t[t.English = 4] = \"English\", t[t.RussianProtestant = 5] = \"RussianProtestant\", t[t.RussianOrthodox = 6] = \"RussianOrthodox\", t))(l || {});\nconst h = class h {\n // private versInfo: Versification;\n constructor(e) {\n n(this, \"name\");\n n(this, \"fullPath\");\n n(this, \"isPresent\");\n n(this, \"hasVerseSegments\");\n n(this, \"isCustomized\");\n n(this, \"baseVersification\");\n n(this, \"scriptureBooks\");\n n(this, \"_type\");\n if (e == null)\n throw new Error(\"Argument undefined\");\n typeof e == \"string\" ? (this.name = e, this._type = l[e]) : (this._type = e, this.name = l[e]);\n }\n get type() {\n return this._type;\n }\n equals(e) {\n return !e.type || !this.type ? !1 : e.type === this.type;\n }\n};\nn(h, \"Original\", new h(l.Original)), n(h, \"Septuagint\", new h(l.Septuagint)), n(h, \"Vulgate\", new h(l.Vulgate)), n(h, \"English\", new h(l.English)), n(h, \"RussianProtestant\", new h(l.RussianProtestant)), n(h, \"RussianOrthodox\", new h(l.RussianOrthodox));\nlet c = h;\nfunction E(t, e) {\n const s = e[0];\n for (let r = 1; r < e.length; r++)\n t = t.split(e[r]).join(s);\n return t.split(s);\n}\nvar D = /* @__PURE__ */ ((t) => (t[t.Valid = 0] = \"Valid\", t[t.UnknownVersification = 1] = \"UnknownVersification\", t[t.OutOfRange = 2] = \"OutOfRange\", t[t.VerseOutOfOrder = 3] = \"VerseOutOfOrder\", t[t.VerseRepeated = 4] = \"VerseRepeated\", t))(D || {});\nconst i = class i {\n constructor(e, s, r, a) {\n /** Not yet implemented. */\n n(this, \"firstChapter\");\n /** Not yet implemented. */\n n(this, \"lastChapter\");\n /** Not yet implemented. */\n n(this, \"lastVerse\");\n /** Not yet implemented. */\n n(this, \"hasSegmentsDefined\");\n /** Not yet implemented. */\n n(this, \"text\");\n /** Not yet implemented. */\n n(this, \"BBBCCCVVVS\");\n /** Not yet implemented. */\n n(this, \"longHashCode\");\n /** The versification of the reference. */\n n(this, \"versification\");\n n(this, \"rtlMark\", \"‏\");\n n(this, \"_bookNum\", 0);\n n(this, \"_chapterNum\", 0);\n n(this, \"_verseNum\", 0);\n n(this, \"_verse\");\n if (r == null && a == null)\n if (e != null && typeof e == \"string\") {\n const o = e, u = s != null && s instanceof c ? s : void 0;\n this.setEmpty(u), this.parse(o);\n } else if (e != null && typeof e == \"number\") {\n const o = s != null && s instanceof c ? s : void 0;\n this.setEmpty(o), this._verseNum = e % i.chapterDigitShifter, this._chapterNum = Math.floor(\n e % i.bookDigitShifter / i.chapterDigitShifter\n ), this._bookNum = Math.floor(e / i.bookDigitShifter);\n } else if (s == null)\n if (e != null && e instanceof i) {\n const o = e;\n this._bookNum = o.bookNum, this._chapterNum = o.chapterNum, this._verseNum = o.verseNum, this._verse = o.verse, this.versification = o.versification;\n } else {\n if (e == null) return;\n const o = e instanceof c ? e : i.defaultVersification;\n this.setEmpty(o);\n }\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else if (e != null && s != null && r != null)\n if (typeof e == \"string\" && typeof s == \"string\" && typeof r == \"string\")\n this.setEmpty(a), this.updateInternal(e, s, r);\n else if (typeof e == \"number\" && typeof s == \"number\" && typeof r == \"number\")\n this._bookNum = e, this._chapterNum = s, this._verseNum = r, this.versification = a ?? i.defaultVersification;\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else\n throw new Error(\"VerseRef constructor not supported.\");\n }\n /**\n * Determines if the verse string is in a valid format (does not consider versification).\n */\n static isVerseParseable(e) {\n return e.length > 0 && \"0123456789\".includes(e[0]) && !e.endsWith(this.verseRangeSeparator) && !e.endsWith(this.verseSequenceIndicator);\n }\n /**\n * Tries to parse the specified string into a verse reference.\n * @param str - The string to attempt to parse.\n * @returns success: `true` if the specified string was successfully parsed, `false` otherwise.\n * @returns verseRef: The result of the parse if successful, or empty VerseRef if it failed\n */\n static tryParse(e) {\n let s;\n try {\n return s = new i(e), { success: !0, verseRef: s };\n } catch (r) {\n if (r instanceof v)\n return s = new i(), { success: !1, verseRef: s };\n throw r;\n }\n }\n /**\n * Gets the reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n * @param bookNum - Book number (this is 1-based, not an index).\n * @param chapterNum - Chapter number.\n * @param verseNum - Verse number.\n * @returns The reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n */\n static getBBBCCCVVV(e, s, r) {\n return e % i.bcvMaxValue * i.bookDigitShifter + (s >= 0 ? s % i.bcvMaxValue * i.chapterDigitShifter : 0) + (r >= 0 ? r % i.bcvMaxValue : 0);\n }\n /**\n * Deserializes a serialized VerseRef.\n * @param serializedVerseRef - Serialized VerseRef to create from.\n * @returns the deserialized VerseRef.\n */\n static fromJSON(e) {\n const { book: s, chapterNum: r, verseNum: a, verse: o, versificationStr: u } = e, f = o || a.toString();\n let d;\n return u && (d = new c(u)), s ? new i(s, r.toString(), f, d) : new i();\n }\n /**\n * Parses a verse string and gets the leading numeric portion as a number.\n * @param verseStr - verse string to parse\n * @returns true if the entire string could be parsed as a single, simple verse number (1-999);\n * false if the verse string represented a verse bridge, contained segment letters, or was invalid\n */\n static tryGetVerseNum(e) {\n let s;\n if (!e)\n return s = -1, { success: !0, vNum: s };\n s = 0;\n let r;\n for (let a = 0; a < e.length; a++) {\n if (r = e[a], r < \"0\" || r > \"9\")\n return a === 0 && (s = -1), { success: !1, vNum: s };\n if (s = s * 10 + +r - 0, s > i.bcvMaxValue)\n return s = -1, { success: !1, vNum: s };\n }\n return { success: !0, vNum: s };\n }\n /**\n * Checks to see if a VerseRef hasn't been set - all values are the default.\n */\n get isDefault() {\n return this.bookNum === 0 && this.chapterNum === 0 && this.verseNum === 0 && this.versification == null;\n }\n /**\n * Gets whether the verse contains multiple verses.\n */\n get hasMultiple() {\n return this._verse != null && (this._verse.includes(i.verseRangeSeparator) || this._verse.includes(i.verseSequenceIndicator));\n }\n /**\n * Gets or sets the book of the reference. Book is the 3-letter abbreviation in capital letters,\n * e.g. `'MAT'`.\n */\n get book() {\n return m.bookNumberToId(this.bookNum, \"\");\n }\n set book(e) {\n this.bookNum = m.bookIdToNumber(e);\n }\n /**\n * Gets or sets the chapter of the reference,. e.g. `'3'`.\n */\n get chapter() {\n return this.isDefault || this._chapterNum < 0 ? \"\" : this._chapterNum.toString();\n }\n set chapter(e) {\n const s = +e;\n this._chapterNum = Number.isInteger(s) ? s : -1;\n }\n /**\n * Gets or sets the verse of the reference, including range, segments, and sequences, e.g. `'4'`,\n * or `'4b-5a, 7'`.\n */\n get verse() {\n return this._verse != null ? this._verse : this.isDefault || this._verseNum < 0 ? \"\" : this._verseNum.toString();\n }\n set verse(e) {\n const { success: s, vNum: r } = i.tryGetVerseNum(e);\n this._verse = s ? void 0 : e.replace(this.rtlMark, \"\"), this._verseNum = r, !(this._verseNum >= 0) && ({ vNum: this._verseNum } = i.tryGetVerseNum(this._verse));\n }\n /**\n * Get or set Book based on book number, e.g. `42`.\n */\n get bookNum() {\n return this._bookNum;\n }\n set bookNum(e) {\n if (e <= 0 || e > m.lastBook)\n throw new v(\n \"BookNum must be greater than zero and less than or equal to last book\"\n );\n this._bookNum = e;\n }\n /**\n * Gets or sets the chapter number, e.g. `3`. `-1` if not valid.\n */\n get chapterNum() {\n return this._chapterNum;\n }\n set chapterNum(e) {\n this.chapterNum = e;\n }\n /**\n * Gets or sets verse start number, e.g. `4`. `-1` if not valid.\n */\n get verseNum() {\n return this._verseNum;\n }\n set verseNum(e) {\n this._verseNum = e;\n }\n /**\n * String representing the versification (should ONLY be used for serialization/deserialization).\n *\n * @remarks This is for backwards compatibility when ScrVers was an enumeration.\n */\n get versificationStr() {\n var e;\n return (e = this.versification) == null ? void 0 : e.name;\n }\n set versificationStr(e) {\n this.versification = this.versification != null ? new c(e) : void 0;\n }\n /**\n * Determines if the reference is valid.\n */\n get valid() {\n return this.validStatus === 0;\n }\n /**\n * Get the valid status for this reference.\n */\n get validStatus() {\n return this.validateVerse(i.verseRangeSeparators, i.verseSequenceIndicators);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits and the verse is 0.\n */\n get BBBCCC() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, 0);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits. If verse is not null\n * (i.e., this reference represents a complex reference with verse\n * segments or bridge) this cannot be used for an exact comparison.\n */\n get BBBCCCVVV() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, this._verseNum);\n }\n /**\n * Gets whether the verse is defined as an excluded verse in the versification.\n * Does not handle verse ranges.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get isExcluded() {\n return !1;\n }\n /**\n * Parses the reference in the specified string.\n * Optionally versification can follow reference as in GEN 3:11/4\n * Throw an exception if\n * - invalid book name\n * - chapter number is missing or not a number\n * - verse number is missing or does not start with a number\n * - versification is invalid\n * @param verseStr - string to parse e.g. 'MAT 3:11'\n */\n parse(e) {\n if (e = e.replace(this.rtlMark, \"\"), e.includes(\"/\")) {\n const o = e.split(\"/\");\n if (e = o[0], o.length > 1)\n try {\n const u = +o[1].trim();\n this.versification = new c(l[u]);\n } catch {\n throw new v(\"Invalid reference : \" + e);\n }\n }\n const s = e.trim().split(\" \");\n if (s.length !== 2)\n throw new v(\"Invalid reference : \" + e);\n const r = s[1].split(\":\"), a = +r[0];\n if (r.length !== 2 || m.bookIdToNumber(s[0]) === 0 || !Number.isInteger(a) || a < 0 || !i.isVerseParseable(r[1]))\n throw new v(\"Invalid reference : \" + e);\n this.updateInternal(s[0], r[0], r[1]);\n }\n /**\n * Simplifies this verse ref so that it has no bridging of verses or\n * verse segments like `'1a'`.\n */\n simplify() {\n this._verse = void 0;\n }\n /**\n * Makes a clone of the reference.\n *\n * @returns The cloned VerseRef.\n */\n clone() {\n return new i(this);\n }\n toString() {\n const e = this.book;\n return e === \"\" ? \"\" : `${e} ${this.chapter}:${this.verse}`;\n }\n toJSON() {\n let e = this.verse;\n (e === \"\" || e === this.verseNum.toString()) && (e = void 0);\n const s = {\n book: this.book,\n chapterNum: this.chapterNum,\n verseNum: this.verseNum,\n verse: e,\n versificationStr: this.versificationStr\n };\n return e || delete s.verse, s;\n }\n /**\n * Compares this `VerseRef` with supplied one.\n * @param verseRef - object to compare this one to.\n * @returns `true` if this `VerseRef` is equal to the supplied one, `false` otherwise.\n */\n equals(e) {\n return e instanceof i ? e._bookNum === this._bookNum && e._chapterNum === this._chapterNum && e._verseNum === this._verseNum && e.verse === this.verse && (e.versification == null && this.versification == null || e.versification != null && this.versification != null && e.versification.equals(this.versification)) : !1;\n }\n /**\n * Enumerate all individual verses contained in a VerseRef.\n * Verse ranges are indicated by \"-\" and consecutive verses by \",\"s.\n * Examples:\n * GEN 1:2 returns GEN 1:2\n * GEN 1:1a-3b,5 returns GEN 1:1a, GEN 1:2, GEN 1:3b, GEN 1:5\n * GEN 1:2a-2c returns //! ??????\n *\n * @param specifiedVersesOnly - if set to true return only verses that are\n * explicitly specified only, not verses within a range. Defaults to `false`.\n * @param verseRangeSeparators - Verse range separators.\n * Defaults to `VerseRef.verseRangeSeparators`.\n * @param verseSequenceSeparators - Verse sequence separators.\n * Defaults to `VerseRef.verseSequenceIndicators`.\n * @returns An array of all single verse references in this VerseRef.\n */\n allVerses(e = !1, s = i.verseRangeSeparators, r = i.verseSequenceIndicators) {\n if (this._verse == null || this.chapterNum <= 0)\n return [this.clone()];\n const a = [], o = E(this._verse, r);\n for (const u of o.map((f) => E(f, s))) {\n const f = this.clone();\n f.verse = u[0];\n const d = f.verseNum;\n if (a.push(f), u.length > 1) {\n const b = this.clone();\n if (b.verse = u[1], !e)\n for (let p = d + 1; p < b.verseNum; p++) {\n const J = new i(\n this._bookNum,\n this._chapterNum,\n p,\n this.versification\n );\n this.isExcluded || a.push(J);\n }\n a.push(b);\n }\n }\n return a;\n }\n /**\n * Validates a verse number using the supplied separators rather than the defaults.\n */\n validateVerse(e, s) {\n if (!this.verse)\n return this.internalValid;\n let r = 0;\n for (const a of this.allVerses(!0, e, s)) {\n const o = a.internalValid;\n if (o !== 0)\n return o;\n const u = a.BBBCCCVVV;\n if (r > u)\n return 3;\n if (r === u)\n return 4;\n r = u;\n }\n return 0;\n }\n /**\n * Gets whether a single verse reference is valid.\n */\n get internalValid() {\n return this.versification == null ? 1 : this._bookNum <= 0 || this._bookNum > m.lastBook ? 2 : (m.isCanonical(this._bookNum), 0);\n }\n setEmpty(e = i.defaultVersification) {\n this._bookNum = 0, this._chapterNum = -1, this._verse = void 0, this.versification = e;\n }\n updateInternal(e, s, r) {\n this.bookNum = m.bookIdToNumber(e), this.chapter = s, this.verse = r;\n }\n};\nn(i, \"defaultVersification\", c.English), n(i, \"verseRangeSeparator\", \"-\"), n(i, \"verseSequenceIndicator\", \",\"), n(i, \"verseRangeSeparators\", [i.verseRangeSeparator]), n(i, \"verseSequenceIndicators\", [i.verseSequenceIndicator]), n(i, \"chapterDigitShifter\", 1e3), n(i, \"bookDigitShifter\", i.chapterDigitShifter * i.chapterDigitShifter), n(i, \"bcvMaxValue\", i.chapterDigitShifter - 1), /**\n * The valid status of the VerseRef.\n */\nn(i, \"ValidStatusType\", D);\nlet M = i;\nclass v extends Error {\n}\nexport {\n _ as BookSet,\n m as Canon,\n c as ScrVers,\n l as ScrVersType,\n M as VerseRef,\n v as VerseRefException\n};\n//# sourceMappingURL=index.es.js.map\n","import React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport type DropdownMenuSubTriggerProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSubContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n className?: string;\n};\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n className?: string;\n sideOffset?: number;\n};\n\nexport type DropdownMenuItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuCheckboxItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n className?: string;\n checked?: boolean;\n};\n\nexport type DropdownMenuRadioItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.RadioItem\n> & {\n className?: string;\n};\n\nexport type DropdownMenuLabelProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSeparatorProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n className?: string;\n};\n\nexport type DropdownMenuShortcutProps = React.HTMLAttributes & {\n className?: string;\n};\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubTriggerProps\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\n/**\n * TODO: fix: direction is not automatically handled by this component, so that shortcuts are\n * display always to the right\n */\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuItemProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuCheckboxItemProps\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef,\n DropdownMenuLabelProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nexport function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps) {\n return (\n \n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n","import { Canon } from '@sillsdev/scripture';\nimport { PropsWithChildren, KeyboardEvent, forwardRef } from 'react';\nimport { DropdownMenuItem as ShadDropdownMenuItem } from '@/components/shadcn-ui/dropdown-menu';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport type BookType = 'OT' | 'NT' | 'DC';\n\ntype BookMenuItemProps = PropsWithChildren<{\n /** String id of book */\n bookId: string;\n /** Callback to run when a book menu item is selected */\n handleSelectBook: () => void;\n /** Indicates if this menu item is currently selected */\n isSelected: boolean;\n /** Function that is called upon highlighting a book in the dropdown menu */\n handleHighlightBook: () => void;\n /**\n * Function that is called on pressing a key\n *\n * @param event Event that contains information about the key stroke\n */\n handleKeyDown: (event: KeyboardEvent) => void;\n /**\n * Type of book associated with this menu item, coordinates color labels ? Mock up has the labels\n * coordinated to genre\n */\n bookType: BookType;\n}>;\n\nconst BookMenuItem = forwardRef(\n (\n {\n bookId,\n handleSelectBook,\n isSelected,\n handleHighlightBook,\n handleKeyDown,\n bookType,\n children,\n }: BookMenuItemProps,\n ref,\n ) => {\n return (\n {\n // preventDefault() here prevents the entire dropdown menu from closing when selecting this item\n event.preventDefault();\n handleSelectBook();\n }}\n onKeyDown={(event: KeyboardEvent) => {\n handleKeyDown(event);\n }}\n onFocus={handleHighlightBook}\n onMouseMove={handleHighlightBook}\n >\n \n {Canon.bookIdToEnglishName(bookId)}\n \n {isSelected &&
{children}
}\n \n );\n },\n);\n\nexport default BookMenuItem;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { useCallback } from 'react';\n\nexport type ChapterSelectProps = {\n /**\n * Callback to run when a chapter div is selected\n *\n * @param chapterNumber Number of the chapter that has been selected\n */\n handleSelectChapter: (chapterNumber: number) => void;\n /** The highest chapter number in the book (of course equal to number of chapters in the book) */\n endChapter: number;\n /** The chapter number that is currently selected */\n activeChapter: number;\n /** The chapter number that is currently highlighted using keyboard or mouse navigation */\n highlightedChapter: number;\n /**\n * Callback to run when a chapter is highlighted by the user\n *\n * @param chapterNumber The chapter that is highlighted\n */\n handleHighlightedChapter: (chapterNumber: number) => void;\n};\n\nfunction ChapterSelect({\n handleSelectChapter,\n endChapter,\n activeChapter,\n highlightedChapter,\n handleHighlightedChapter,\n}: ChapterSelectProps) {\n const chapters = Array.from({ length: endChapter }, (_, i) => i + 1);\n\n const handleMouse = useCallback(\n (chapterNumber: number) => {\n handleHighlightedChapter(chapterNumber);\n },\n [handleHighlightedChapter],\n );\n\n return (\n
\n {chapters.map((chapter) => (\n {\n event.preventDefault();\n event.stopPropagation();\n handleSelectChapter(chapter);\n }}\n role=\"button\"\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n handleSelectChapter(chapter);\n }\n }}\n tabIndex={0}\n onMouseMove={() => handleMouse(chapter)}\n >\n {chapter}\n
\n ))}\n
\n );\n}\n\nexport default ChapterSelect;\n","import { DropdownMenuLabel as ShadDropdownMenuLabel } from '@/components/shadcn-ui/dropdown-menu';\nimport { Bookmark, Clock, ArrowDownWideNarrow } from 'lucide-react';\n\nexport type GoToMenuItemProps = {\n handleSort: () => void;\n handleLocationHistory: () => void;\n handleBookmarks: () => void;\n};\n\nfunction GoToMenuItem({ handleSort, handleLocationHistory, handleBookmarks }: GoToMenuItemProps) {\n return (\n \n

Go To

\n
\n \n \n \n
\n
\n );\n}\n\nexport default GoToMenuItem;\n","import BookChapterInput from '@/components/advanced/book-chapter-control/book-chapter-input.component';\nimport BookMenuItem, {\n BookType,\n} from '@/components/advanced/book-chapter-control/book-menu-item.component';\nimport ChapterSelect from '@/components/advanced/book-chapter-control/chapter-select.component';\nimport GoToMenuItem from '@/components/advanced/book-chapter-control/go-to-menu-item.component';\nimport {\n DropdownMenu as ShadDropdownMenu,\n DropdownMenuContent as ShadDropdownMenuContent,\n DropdownMenuLabel as ShadDropdownMenuLabel,\n DropdownMenuSeparator as ShadDropdownMenuSeparator,\n DropdownMenuTrigger as ShadDropdownMenuTrigger,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference, getChaptersForBook } from 'platform-bible-utils';\nimport {\n KeyboardEvent as ReactKeyboardEvent,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\ntype BookTypeLabels = {\n [bookType in BookType]: string;\n};\ntype BookChapterControlProps = {\n scrRef: ScriptureReference;\n handleSubmit: (scrRef: ScriptureReference) => void;\n};\n\nconst ALL_BOOK_IDS = Canon.allBookIds;\nconst BOOK_TYPE_LABELS: BookTypeLabels = {\n OT: 'Old Testament',\n NT: 'New Testament',\n DC: 'Deuterocanon',\n};\nconst BOOK_TYPE_ARRAY: BookType[] = ['OT', 'NT', 'DC'];\n// This is the height of three menu items to offset scrolling to the selected menu item\n// If you use menuItemRef.clientHeight- includes height of chapter div which is too big\nconst SCROLL_OFFSET = 32 + 32 + 32;\nconst SEARCH_QUERY_FORMATS = [\n /^(\\w+)$/i, // Matches a single word (book name or id)\n /^(\\w+)(?:\\s(\\d+))$/i, // Matches a word followed by a chapter number\n /^(\\w+)(?:\\s(\\d+):(\\d+))$/i, // Matches a word followed by a chapter and verse number\n];\nconst fetchGroupedBooks = (bookType: BookType) => {\n const groupedBooks = {\n OT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookOT(bookId)),\n NT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookNT(bookId)),\n DC: ALL_BOOK_IDS.filter((bookId) => Canon.isBookDC(bookId)),\n };\n return groupedBooks[bookType];\n};\nconst fetchEndChapter = (bookId: string) => {\n // getChaptersForBook returns -1 if not found in scrBookData\n // scrBookData only includes OT and NT, so all DC will return -1\n return getChaptersForBook(Canon.bookIdToNumber(bookId));\n};\n\n/**\n * Gets all of the English names from book ids\n *\n * @returns String[]\n */\nfunction getAllEnglishNames(): string[] {\n const allEnglishNames = ALL_BOOK_IDS.map((bookId) => {\n return Canon.bookIdToEnglishName(bookId);\n });\n return allEnglishNames;\n}\n\n/**\n * Determines if bookName is in allEnglishNames\n *\n * @param bookName Book English name\n * @returns True if bookName is included, false otherwise\n */\nfunction isValidBookEnglishName(bookName: string): boolean {\n return getAllEnglishNames().includes(bookName);\n}\n\n/**\n * Gets a bookId from given English name\n *\n * @param bookName Book English name\n * @returns BookId of provided bookName, undefined otherwise\n */\nfunction getBookIdFromEnglishName(bookName: string): string | undefined {\n // Convert bookName to lowercase and then capitalize the first letter\n const formattedBookName = bookName.toLowerCase().replace(/^\\w/, (c) => c.toUpperCase());\n\n if (isValidBookEnglishName(formattedBookName)) {\n const matchingBookId = ALL_BOOK_IDS.find((bookId) => {\n return Canon.bookIdToEnglishName(bookId) === formattedBookName;\n });\n return matchingBookId;\n }\n\n return undefined;\n}\n\nfunction BookChapterControl({ scrRef, handleSubmit }: BookChapterControlProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedBookId, setSelectedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [highlightedChapter, setHighlightedChapter] = useState(scrRef.chapterNum ?? 0);\n const [highlightedBookId, setHighlightedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [isContentOpen, setIsContentOpen] = useState(false);\n const [isContentOpenDelayed, setIsContentOpenDelayed] = useState(isContentOpen);\n\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const inputRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const contentRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const menuItemRef = useRef(undefined!);\n\n const fetchFilteredBooks = useCallback(\n (bookType: BookType) => {\n return fetchGroupedBooks(bookType).filter((bookId: string) => {\n const englishNameLowerCase = Canon.bookIdToEnglishName(bookId).toLowerCase();\n const normalizedQuery = searchQuery.replace(/[^a-zA-Z]/g, '').toLowerCase();\n return (\n englishNameLowerCase.includes(normalizedQuery) || // Match book name\n bookId.toLowerCase().includes(normalizedQuery) // Match book ID\n );\n });\n },\n [searchQuery],\n );\n\n const handleSearchInput = (searchString: string) => {\n setSearchQuery(searchString);\n };\n\n /**\n * Whether to prevent radix's logic from closing the dropdown. This is important because radix\n * tries to close the dropdown when the input first focuses, and we don't want it to do that. But\n * we don't want to prevent the dropdown from closing when we click away from the input, so we\n * don't want to just keep it open if the input is focused\n */\n const shouldPreventAutoClosing = useRef(false);\n\n const controlMenuState = useCallback((open: boolean) => {\n if (shouldPreventAutoClosing.current) {\n shouldPreventAutoClosing.current = false;\n return;\n }\n setIsContentOpen(open);\n }, []);\n\n const updateReference = useCallback(\n (bookId: string, shouldClose: boolean, chapter?: number, verse?: number) => {\n setHighlightedChapter(\n Canon.bookNumberToId(scrRef.bookNum) !== bookId ? 1 : scrRef.chapterNum,\n );\n\n if (shouldClose || fetchEndChapter(bookId) === -1) {\n handleSubmit({\n bookNum: Canon.bookIdToNumber(bookId),\n chapterNum: chapter || 1,\n verseNum: verse || 1,\n });\n\n setIsContentOpen(false);\n setSearchQuery('');\n return;\n }\n\n setSelectedBookId(selectedBookId !== bookId ? bookId : '');\n setIsContentOpen(!shouldClose);\n },\n [handleSubmit, scrRef.bookNum, scrRef.chapterNum, selectedBookId],\n );\n\n const handleSelectChapter = (chapterNumber: number) => {\n if (chapterNumber <= 0 || chapterNumber > fetchEndChapter(selectedBookId)) {\n return;\n }\n updateReference(selectedBookId, true, chapterNumber);\n };\n\n const handleInputSubmit = useCallback(() => {\n SEARCH_QUERY_FORMATS.forEach((format) => {\n const matches = searchQuery.match(format);\n if (matches) {\n // Book should be a bookId or an english name\n const [book, chapter = undefined, verse = undefined] = matches.slice(1);\n const englishName = getBookIdFromEnglishName(book);\n\n if (Canon.isBookIdValid(book) || englishName) {\n updateReference(\n englishName ?? book,\n true,\n chapter ? parseInt(chapter, 10) : 1,\n verse ? parseInt(verse, 10) : 1,\n );\n }\n }\n });\n }, [updateReference, searchQuery]);\n\n const handleKeyDownInput = useCallback(\n (event: ReactKeyboardEvent) => {\n if (!isContentOpen) {\n setIsContentOpen(true);\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (\n typeof menuItemRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n menuItemRef.current !== null\n ) {\n menuItemRef.current.focus();\n } else if (\n typeof contentRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n contentRef.current !== null\n ) {\n contentRef.current.focus();\n }\n event.preventDefault();\n }\n },\n [isContentOpen],\n );\n\n const handleKeyDownContent = (event: ReactKeyboardEvent) => {\n // When the dropdown menu has focus, key strokes should give focus to the input component,\n // unless they're navigation keys (arrows and enter)\n const { key } = event;\n if (\n key === 'ArrowRight' ||\n key === 'ArrowLeft' ||\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter'\n ) {\n return;\n }\n\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key }));\n inputRef.current.focus();\n };\n\n const handleKeyDownMenuItem = (event: ReactKeyboardEvent) => {\n const { key } = event;\n if (highlightedBookId === selectedBookId) {\n if (key === 'Enter') {\n event.preventDefault();\n updateReference(selectedBookId, true, highlightedChapter);\n return;\n }\n\n let chapterOffSet = 0;\n if (key === 'ArrowRight') {\n if (highlightedChapter < fetchEndChapter(highlightedBookId)) {\n chapterOffSet = 1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowLeft') {\n if (highlightedChapter > 1) {\n chapterOffSet = -1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowDown') {\n chapterOffSet = 6;\n } else if (key === 'ArrowUp') {\n chapterOffSet = -6;\n }\n if (\n highlightedChapter + chapterOffSet <= 0 ||\n highlightedChapter + chapterOffSet > fetchEndChapter(highlightedBookId)\n ) {\n setHighlightedChapter(0);\n } else if (chapterOffSet !== 0) {\n setHighlightedChapter(highlightedChapter + chapterOffSet);\n event.preventDefault();\n }\n }\n };\n\n useEffect(() => {\n if (selectedBookId === highlightedBookId) {\n if (selectedBookId === Canon.bookNumberToId(scrRef.bookNum)) {\n setHighlightedChapter(scrRef.chapterNum);\n } else {\n setHighlightedChapter(1);\n }\n } else {\n setHighlightedChapter(0);\n }\n }, [highlightedBookId, scrRef.bookNum, scrRef.chapterNum, selectedBookId]);\n\n // The purpose of these useLayoutEffects and timeout is to delay the scroll just\n // enough so that the refs are defined and available when they are used after the timeout\n useLayoutEffect(() => {\n setIsContentOpenDelayed(isContentOpen);\n }, [isContentOpen]);\n\n useLayoutEffect(() => {\n const scrollTimeout = setTimeout(() => {\n if (isContentOpenDelayed && contentRef.current && menuItemRef.current) {\n const menuItemOffsetTop = menuItemRef.current.offsetTop;\n const scrollPosition = menuItemOffsetTop - SCROLL_OFFSET;\n contentRef.current.scrollTo({ top: scrollPosition, behavior: 'instant' });\n }\n }, 10);\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [isContentOpenDelayed]);\n\n return (\n
\n \n \n {\n setSelectedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedChapter(scrRef.chapterNum > 0 ? scrRef.chapterNum : 0);\n setIsContentOpen(true);\n inputRef.current.focus();\n }}\n onFocus={() => {\n // Radix thinks we want to close because the input is being focused. Prevent that\n shouldPreventAutoClosing.current = true;\n }}\n handleSubmit={handleInputSubmit}\n placeholder={`${Canon.bookNumberToEnglishName(scrRef.bookNum)} ${scrRef.chapterNum}:${scrRef.verseNum}`}\n />\n \n \n console.log('sorting')}\n handleLocationHistory={() => console.log('location history')}\n handleBookmarks={() => console.log('bookmarks')}\n />\n {BOOK_TYPE_ARRAY.map(\n (bookType, bookTypeIndex) =>\n fetchFilteredBooks(bookType).length > 0 && (\n
\n \n {BOOK_TYPE_LABELS[bookType]}\n \n\n {fetchFilteredBooks(bookType).map((bookId) => (\n
\n updateReference(bookId, false)}\n isSelected={selectedBookId === bookId}\n handleHighlightBook={() => setHighlightedBookId(bookId)}\n handleKeyDown={handleKeyDownMenuItem}\n bookType={bookType}\n ref={(element: HTMLDivElement) => {\n if (selectedBookId === bookId) menuItemRef.current = element;\n }}\n >\n {\n setHighlightedChapter(chapterNumber);\n }}\n />\n \n
\n ))}\n {BOOK_TYPE_ARRAY.length - 1 !== bookTypeIndex ? (\n \n ) : undefined}\n
\n ),\n )}\n \n
\n
\n );\n}\n\nexport default BookChapterControl;\n","import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const buttonVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-whitespace-nowrap tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50',\n {\n variants: {\n variant: {\n default: 'tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90',\n destructive: 'tw-bg-destructive tw-text-destructive-foreground hover:tw-bg-destructive/90',\n outline:\n 'tw-border tw-border-input tw-bg-background hover:tw-bg-accent hover:tw-text-accent-foreground',\n secondary: 'tw-bg-secondary tw-text-secondary-foreground hover:tw-bg-secondary/80',\n ghost: 'hover:tw-bg-accent hover:tw-text-accent-foreground',\n link: 'tw-text-primary tw-underline-offset-4 hover:tw-underline',\n },\n size: {\n default: 'tw-h-10 tw-px-4 tw-py-2',\n sm: 'tw-h-9 tw-rounded-md tw-px-3',\n lg: 'tw-h-11 tw-rounded-md tw-px-8',\n icon: 'tw-h-10 tw-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return (\n \n );\n },\n);\nButton.displayName = 'Button';\n","import React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst labelVariants = cva(\n 'tw-text-sm tw-font-medium tw-leading-none peer-disabled:tw-cursor-not-allowed peer-disabled:tw-opacity-70',\n);\n\nexport const Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, ...props }, ref) => (\n \n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n","import React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n \n \n \n \n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import React from 'react';\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Dialog, DialogContent } from '@/components/shadcn-ui/dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nfunction CommandDialog({ children, ...props }: CommandDialogProps) {\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nfunction CommandShortcut({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import { useState } from 'react';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/shadcn-ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/shadcn-ui/command';\nimport { PopoverProps } from '@radix-ui/react-popover';\n\nexport type ComboBoxLabelOption = { label: string };\nexport type ComboBoxOption = string | number | ComboBoxLabelOption;\n\nexport type ComboBoxProps = {\n /** Optional unique identifier */\n id?: string;\n /** Text label title for combobox */\n /** List of available options for the dropdown menu */\n options?: readonly T[];\n /** Additional css classes to help with unique styling of the combo box */\n className?: string;\n /**\n * The selected value that the combo box currently holds. Must be shallow equal to one of the\n * options entries.\n */\n value?: T;\n /** Triggers when content of textfield is changed */\n onChange?: (newValue: T) => void;\n /** Used to determine the string value for a given option. */\n getOptionLabel?: (option: ComboBoxOption) => string;\n /** Text displayed on button if `value` is undefined */\n buttonPlaceholder?: string;\n /** Placeholder text for text field */\n textPlaceholder?: string;\n /** Text to display when no options match input */\n commandEmptyMessage?: string;\n /** Variant of button */\n buttonVariant?: ButtonProps['variant'];\n /** Text direction ltr or rtl */\n dir?: Direction;\n /** Optional boolean to set if trigger should be disabled */\n isDisabled?: boolean;\n} & PopoverProps;\n\ntype Direction = 'ltr' | 'rtl';\n\nfunction getOptionLabelDefault(option: ComboBoxOption): string {\n if (typeof option === 'string') {\n return option;\n }\n if (typeof option === 'number') {\n return option.toString();\n }\n return option.label;\n}\n\n/**\n * Autocomplete input and command palette with a list of suggestions.\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/combobox\n */\nfunction ComboBox({\n id,\n options = [],\n className,\n value,\n onChange = () => {},\n getOptionLabel = getOptionLabelDefault,\n buttonPlaceholder = '',\n textPlaceholder = '',\n commandEmptyMessage = 'No option found',\n buttonVariant = 'outline',\n dir = 'ltr',\n isDisabled = false,\n ...props\n}: ComboBoxProps) {\n const [open, setOpen] = useState(false);\n\n return (\n \n \n \n \n {value ? getOptionLabel(value) : buttonPlaceholder}\n \n \n \n \n \n \n \n {commandEmptyMessage}\n \n {options.map((option) => (\n {\n onChange(option);\n setOpen(false);\n }}\n >\n \n {getOptionLabel(option)}\n \n ))}\n \n \n \n \n );\n}\n\nexport default ComboBox;\n","import { useMemo } from 'react';\nimport ComboBox from '@/components/basics/combo-box.component';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChapterRangeSelectorProps = {\n startChapter: number;\n endChapter: number;\n handleSelectStartChapter: (chapter: number) => void;\n handleSelectEndChapter: (chapter: number) => void;\n isDisabled?: boolean;\n chapterCount: number;\n};\n\nexport default function ChapterRangeSelector({\n startChapter,\n endChapter,\n handleSelectStartChapter,\n handleSelectEndChapter,\n isDisabled = false,\n chapterCount,\n}: ChapterRangeSelectorProps) {\n const chapterOptions = useMemo(\n () => Array.from({ length: chapterCount }, (_, index) => index + 1),\n [chapterCount],\n );\n\n const onChangeStartChapter = (value: number) => {\n handleSelectStartChapter(value);\n if (value > endChapter) {\n handleSelectEndChapter(value);\n }\n };\n\n const onChangeEndChapter = (value: number) => {\n handleSelectEndChapter(value);\n if (value < startChapter) {\n handleSelectStartChapter(value);\n }\n };\n\n return (\n <>\n \n option.toString()}\n value={startChapter}\n />\n\n \n option.toString()}\n value={endChapter}\n />\n \n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport { Label } from '@/components/shadcn-ui/label';\nimport { RadioGroup, RadioGroupItem } from '@/components/shadcn-ui/radio-group';\nimport { Canon } from '@sillsdev/scripture';\nimport { LocalizedStringValue } from 'platform-bible-utils';\nimport { useState } from 'react';\nimport ChapterRangeSelector, {\n ChapterRangeSelectorProps,\n} from '../basics/chapter-range-selector.component';\n\nexport enum BookSelectionMode {\n CURRENT_BOOK = 'current book',\n CHOOSE_BOOKS = 'choose books',\n}\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const BOOK_SELECTOR_STRING_KEYS = Object.freeze([\n '%webView_bookSelector_currentBook%',\n '%webView_bookSelector_choose%',\n '%webView_bookSelector_chooseBooks%',\n] as const);\n\nexport type BookSelectorLocalizedStrings = {\n [localizedInventoryKey in (typeof BOOK_SELECTOR_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: BookSelectorLocalizedStrings,\n key: keyof BookSelectorLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\ntype BookSelectorProps = ChapterRangeSelectorProps & {\n handleBookSelectionModeChange: (newMode: BookSelectionMode) => void;\n currentBookName: string;\n onSelectBooks: () => void;\n selectedBookIds: string[];\n localizedStrings: BookSelectorLocalizedStrings;\n};\n\nexport default function BookSelector({\n handleBookSelectionModeChange,\n currentBookName,\n onSelectBooks,\n selectedBookIds,\n chapterCount,\n endChapter,\n handleSelectEndChapter,\n startChapter,\n handleSelectStartChapter,\n localizedStrings,\n}: BookSelectorProps) {\n const currentBookText = localizeString(localizedStrings, '%webView_bookSelector_currentBook%');\n const chooseText = localizeString(localizedStrings, '%webView_bookSelector_choose%');\n const chooseBooksText = localizeString(localizedStrings, '%webView_bookSelector_chooseBooks%');\n\n const [bookSelectionMode, setBookSelectionMode] = useState(\n BookSelectionMode.CURRENT_BOOK,\n );\n\n const onSelectionModeChange = (newMode: BookSelectionMode) => {\n setBookSelectionMode(newMode);\n handleBookSelectionModeChange(newMode);\n };\n\n return (\n onSelectionModeChange(value as BookSelectionMode)}\n >\n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n \n onSelectBooks()}\n >\n {chooseText}\n \n
\n
\n \n );\n}\n","import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';\nimport { FilterIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\n\ninterface DataTableViewOptionsProps {\n table: Table;\n}\n\nfunction DataTableViewOptions({ table }: DataTableViewOptionsProps) {\n return (\n \n \n \n \n \n Toggle columns\n \n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n column.toggleVisibility(!!value)}\n >\n {column.id}\n \n );\n })}\n \n \n );\n}\n\nexport default DataTableViewOptions;\n","import React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n span]:tw-line-clamp-1',\n className,\n )}\n {...props}\n >\n {children}\n \n \n \n \n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = 'popper', ...props }, ref) => (\n \n \n \n \n {children}\n \n \n \n \n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n\n {children}\n \n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import { ChevronLeftIcon, ChevronRightIcon, ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\ninterface DataTablePaginationProps {\n table: Table;\n}\n\nfunction DataTablePagination({ table }: DataTablePaginationProps) {\n return (\n
\n
\n
\n {table.getFilteredSelectedRowModel().rows.length} of{' '}\n {table.getFilteredRowModel().rows.length} row(s) selected\n
\n
\n

Rows per page

\n {\n table.setPageSize(Number(value));\n }}\n >\n \n \n \n \n {[10, 20, 30, 40, 50].map((pageSize) => (\n \n {pageSize}\n \n ))}\n \n \n
\n
\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n
\n
\n table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n Go to first page\n \n \n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Go to previous page\n \n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Go to next page\n \n \n table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n Go to last page\n \n \n
\n
\n
\n );\n}\n\nexport default DataTablePagination;\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n
\n \n
\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n \n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n tr]:last:tw-border-b-0', className)}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { useState } from 'react';\n\nimport {\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n ColumnDef as TSColumnDef,\n Row as TSRow,\n RowSelectionState as TSRowSelectionState,\n SortDirection as TSSortDirection,\n Table as TSTable,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table';\n\nimport DataTableViewOptions from '@/components/advanced/data-table/data-table-column-toggle.component';\nimport DataTablePagination from '@/components/advanced/data-table/data-table-pagination.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\n\nexport type ColumnDef = TSColumnDef;\nexport type RowContents = TSRow;\nexport type TableContents = TSTable;\nexport type SortDirection = TSSortDirection;\nexport type RowSelectionState = TSRowSelectionState;\n\ninterface DataTableProps {\n columns: ColumnDef[];\n data: TData[];\n enablePagination?: boolean;\n showPaginationControls?: boolean;\n showColumnVisibilityControls?: boolean;\n stickyHeader?: boolean;\n onRowClickHandler?: (row: RowContents, table: TableContents) => void;\n}\n\n/**\n * Feature-rich table component that infuses our basic shadcn-based Table component with features\n * from TanStack's React Table library\n */\nfunction DataTable({\n columns,\n data,\n enablePagination = false,\n showPaginationControls = false,\n showColumnVisibilityControls = false,\n stickyHeader = false,\n onRowClickHandler = () => {},\n}: DataTableProps) {\n const [sorting, setSorting] = useState([]);\n const [columnFilters, setColumnFilters] = useState([]);\n const [columnVisibility, setColumnVisibility] = useState({});\n const [rowSelection, setRowSelection] = useState({});\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n ...(enablePagination && { getPaginationRowModel: getPaginationRowModel() }),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n onColumnFiltersChange: setColumnFilters,\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n });\n\n return (\n
\n {showColumnVisibilityControls && }\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => {\n return (\n \n {header.isPlaceholder\n ? undefined\n : flexRender(header.column.columnDef.header, header.getContext())}\n \n );\n })}\n \n ))}\n \n \n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n onRowClickHandler(row, table)}\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n >\n {row.getVisibleCells().map((cell) => (\n \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n \n ))}\n \n ))\n ) : (\n \n \n No results.\n \n \n )}\n \n
\n {enablePagination && (\n
\n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n \n
\n )}\n {enablePagination && showPaginationControls && }\n
\n );\n}\n\nexport default DataTable;\n","import {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { Canon } from '@sillsdev/scripture';\nimport { deepEqual, LanguageStrings, ScriptureReference } from 'platform-bible-utils';\nimport { useMemo } from 'react';\nimport { InventoryItemOccurrence } from './inventory-utils';\n\n/** Props for the OccurrencesTable component */\ntype OccurrencesTableProps = {\n /** Data that contains scriptures references and snippets of scripture */\n occurrenceData: InventoryItemOccurrence[];\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the OccurrencesTable needs to work well across multiple\n * languages\n */\n localizedStrings: LanguageStrings;\n};\n\n/**\n * Table that shows occurrences of specified inventory item(s). The first column shows the related\n * scripture reference. The second column shows the snippet of scripture that contains the specified\n * inventory item\n */\nfunction OccurrencesTable({\n occurrenceData,\n setScriptureReference,\n localizedStrings,\n}: OccurrencesTableProps) {\n const referenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_reference%'];\n const occurrenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_occurrence%'];\n\n const occurrences: InventoryItemOccurrence[] = useMemo(() => {\n const uniqueOccurrences: InventoryItemOccurrence[] = [];\n\n occurrenceData.forEach((occurrence) => {\n if (!uniqueOccurrences.some((uniqueOccurrence) => deepEqual(uniqueOccurrence, occurrence))) {\n uniqueOccurrences.push(occurrence);\n }\n });\n\n return uniqueOccurrences;\n }, [occurrenceData]);\n\n return (\n \n \n \n {referenceHeaderText}\n {occurrenceHeaderText}\n \n \n \n {occurrences.length > 0 &&\n occurrences.map((occurrence) => (\n {\n setScriptureReference(occurrence.reference);\n }}\n >\n {`${Canon.bookNumberToEnglishName(occurrence.reference.bookNum)} ${occurrence.reference.chapterNum}:${occurrence.reference.verseNum}`}\n {occurrence.text}\n \n ))}\n \n
\n );\n}\n\nexport default OccurrencesTable;\n","import React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport default Checkbox;\n","import { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference } from 'platform-bible-utils';\n\n/* #region Types */\n\n/**\n * Status of items that appear in inventories. 'approved' and 'unapproved' items are defined in the\n * project's `Settings.xml`. All other items are defined as 'unknown'\n */\nexport type Status = 'approved' | 'unapproved' | 'unknown';\n\n/** Occurrence of item in inventory. Primarily used by table that shows occurrences */\nexport type InventoryItemOccurrence = {\n /** Reference to scripture where the item appears */\n reference: ScriptureReference;\n /** Snippet of scripture that contains the occurrence */\n text: string;\n};\n\n/** Data structure that contains all information on an item that is shown in an inventory */\nexport type InventoryTableData = {\n /**\n * The item (e.g. a character in the characters inventory, a marker in the marker inventory) In\n * most cases the array will only have one element. In case of additional items (e.g. the\n * preceding marker in the markers check), the primary item should be stored in the first index.\n * To show additional items in the inventory, make sure to configure the `additionalItemsLabels`\n * prop for the Inventory component\n */\n items: string[];\n /** The number of times this item occurs in the selected scope */\n count: number;\n /** The status of this item (see documentation for `Status` type for more information) */\n status: Status;\n /** Occurrences of this item in the scripture text for the selected scope */\n occurrences: InventoryItemOccurrence[];\n};\n\n/* #endregion */\n\n/* #region Functions */\n\n/**\n * Splits USFM string into shorter line-like segments\n *\n * @param text A single (likely very large) USFM string\n * @returns An array containing the input text, split into shorter segments\n */\nexport const getLinesFromUSFM = (text: string) => {\n // Splits on (CR)LF, CR, \\v, \\c and \\id\n return text.split(/(?:\\r?\\n|\\r)|(?=(?:\\\\(?:v|c|id)))/g);\n};\n\n/**\n * Extracts chapter or verse number from USFM strings that start with a \\c or \\v marker\n *\n * @param text USFM string that is expected to start with \\c or \\v marker\n * @returns Chapter or verse number if one is found. Else returns 0.\n */\nexport const getNumberFromUSFM = (text: string): number | undefined => {\n // Captures all digits that follow \\v or \\c markers followed by whitespace located at the start of a string\n const regex = /^\\\\[vc]\\s+(\\d+)/;\n const match = text.match(regex);\n\n if (match) {\n return +match[1];\n }\n return undefined;\n};\n\n/**\n * Gets book ID from USFM string that starts with the \\id marker, and returns book number for it\n *\n * @param text USFM string that is expected to start with \\id marker\n * @returns Book number corresponding to the \\id marker in the input text. Returns 0 if no marker is\n * found or the marker is not valid\n */\nexport const getBookNumFromId = (text: string): number => {\n // Captures all digits that follow an \\id marker followed by whitespace located at the start of a string\n const match = text.match(/^\\\\id\\s+([A-Za-z]+)/);\n if (match) {\n return Canon.bookIdToNumber(match[1]);\n }\n return 0;\n};\n\n/**\n * Gets the status for an item, typically used in the Inventory component\n *\n * @param item The item for which the status is being requested\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @returns The status for the specified item\n */\nexport const getStatusForItem = (\n item: string,\n approvedItems: string[],\n unapprovedItems: string[],\n): Status => {\n if (unapprovedItems.includes(item)) return 'unapproved';\n if (approvedItems.includes(item)) return 'approved';\n return 'unknown';\n};\n\n/* #endregion */\n","import React from 'react';\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst toggleVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors hover:tw-bg-muted hover:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=on]:tw-bg-accent data-[state=on]:tw-text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-transparent',\n outline:\n 'tw-border tw-border-input tw-bg-transparent hover:tw-bg-accent hover:tw-text-accent-foreground',\n },\n size: {\n default: 'tw-h-10 tw-px-3',\n sm: 'tw-h-9 tw-px-2.5',\n lg: 'tw-h-11 tw-px-5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst Toggle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, variant, size, ...props }, ref) => (\n \n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","import React from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { toggleVariants } from '@/components/shadcn-ui/toggle';\n\nconst ToggleGroupContext = React.createContext>({\n size: 'default',\n variant: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, size, children, ...props }, ref) => (\n \n \n {children}\n \n \n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n \n {children}\n \n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { ColumnDef, SortDirection } from '@/components/advanced/data-table/data-table.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/shadcn-ui/toggle-group';\nimport {\n ArrowDownIcon,\n ArrowUpDownIcon,\n ArrowUpIcon,\n CircleCheckIcon,\n CircleHelpIcon,\n CircleXIcon,\n} from 'lucide-react';\nimport { ReactNode } from 'react';\nimport { InventoryTableData, Status } from './inventory-utils';\n\n/**\n * Gets an icon that indicates the current sorting direction based on the provided input\n *\n * @param sortDirection Sorting direction. Can be ascending ('asc'), descending ('desc') or false (\n * i.e. not sorted)\n * @returns The appropriate sorting icon for the provided sorting direction\n */\nconst getSortingIcon = (sortDirection: false | SortDirection): ReactNode => {\n if (sortDirection === 'asc') {\n return ;\n }\n if (sortDirection === 'desc') {\n return ;\n }\n return ;\n};\n\n/**\n * Function that creates the item column for inventories\n *\n * @param itemLabel Localized label for the item column (e.g. 'Character', 'Repeated Word', etc.)\n * @returns Column that shows the inventory items. Should be used with the DataTable component\n */\nexport const inventoryItemColumn = (itemLabel: string): ColumnDef => {\n return {\n accessorKey: 'item',\n accessorFn: (row: InventoryTableData) => row.items[0],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the additional item columns for inventories\n *\n * @param additionalItemLabel Localized label for the additional item column (e.g. 'Preceding\n * Marker')\n * @param additionalItemIndex Index that locates the desired item in the items array of the\n * inventory\n * @returns Column that shows additional inventory items. Should be used with the DataTable\n * component\n */\nexport const inventoryAdditionalItemColumn = (\n additionalItemLabel: string,\n additionalItemIndex: number,\n): ColumnDef => {\n return {\n accessorKey: `item${additionalItemIndex}`,\n accessorFn: (row: InventoryTableData) => row.items[additionalItemIndex],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the count column for inventories. Should be used with the DataTable\n * component.\n *\n * @param itemLabel Localized label for the count column\n * @returns Column that shows the number of occurrences of the related inventory items\n */\nexport const inventoryCountColumn = (countLabel: string): ColumnDef => {\n return {\n accessorKey: 'count',\n header: ({ column }) => (\n
\n \n
\n ),\n cell: ({ row }) =>
{row.getValue('count')}
,\n };\n};\n\n/**\n * Function that updates project settings when status for item(s) changes\n *\n * @param changedItems Array of items for which the status is being updated\n * @param newStatus The status that the items are being given\n * @param approvedItems Array of currently approved items\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of currently unapproved items\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n */\nconst statusChangeHandler = (\n changedItems: string[],\n newStatus: Status,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n) => {\n let newApprovedItems: string[] = [...approvedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'approved') {\n if (!newApprovedItems.includes(item)) {\n newApprovedItems.push(item);\n }\n } else {\n newApprovedItems = newApprovedItems.filter((validItem) => validItem !== item);\n }\n });\n onApprovedItemsChange(newApprovedItems);\n\n let newUnapprovedItems: string[] = [...unapprovedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'unapproved') {\n if (!newUnapprovedItems.includes(item)) {\n newUnapprovedItems.push(item);\n }\n } else {\n newUnapprovedItems = newUnapprovedItems.filter((unapprovedItem) => unapprovedItem !== item);\n }\n });\n onUnapprovedItemsChange(newUnapprovedItems);\n};\n\n/**\n * Function that creates the status column for inventories. Should be used with the DataTable\n * component.\n *\n * @param statusLabel Localized label for the status column\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n * @returns Column that shows the status buttons for the related inventory item. The button for the\n * current status of the item is selected\n */\nexport const inventoryStatusColumn = (\n statusLabel: string,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n): ColumnDef => {\n return {\n accessorKey: 'status',\n header: ({ column }) => {\n return (\n
\n \n
\n );\n },\n cell: ({ row }) => {\n const status: Status = row.getValue('status');\n const item: string = row.getValue('item');\n return (\n \n \n statusChangeHandler(\n [item],\n 'approved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"approved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unapproved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unapproved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unknown',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unknown\"\n >\n \n \n \n );\n },\n };\n};\n","import DataTable, {\n ColumnDef,\n RowContents,\n RowSelectionState,\n TableContents,\n} from '@/components/advanced/data-table/data-table.component';\nimport OccurrencesTable from '@/components/advanced/inventory/occurrences-table.component';\nimport Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Input } from '@/components/shadcn-ui/input';\nimport { Label } from '@/components/shadcn-ui/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n deepEqual,\n LocalizedStringValue,\n ScriptureReference,\n substring,\n} from 'platform-bible-utils';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n getBookNumFromId,\n getLinesFromUSFM,\n getNumberFromUSFM,\n getStatusForItem,\n InventoryItemOccurrence,\n InventoryTableData,\n Status,\n} from './inventory-utils';\nimport { inventoryAdditionalItemColumn } from './inventory-columns';\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const INVENTORY_STRING_KEYS = Object.freeze([\n '%webView_inventory_all%',\n '%webView_inventory_approved%',\n '%webView_inventory_unapproved%',\n '%webView_inventory_unknown%',\n '%webView_inventory_scope_currentBook%',\n '%webView_inventory_scope_chapter%',\n '%webView_inventory_scope_verse%',\n '%webView_inventory_filter_text%',\n '%webView_inventory_show_additional_items%',\n '%webView_inventory_occurrences_table_header_reference%',\n '%webView_inventory_occurrences_table_header_occurrence%',\n] as const);\n\nexport type InventoryLocalizedStrings = {\n [localizedInventoryKey in (typeof INVENTORY_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/** Scope of scripture that the inventory can operate on */\nexport type Scope = 'book' | 'chapter' | 'verse';\n\n/** Status values that the status filter can select from */\ntype StatusFilter = Status | 'all';\n\n/** Text labels for the inventory columns and the control components of additional inventory items */\ntype AdditionalItemsLabels = {\n checkboxText?: string;\n tableHeaders?: string[];\n};\n\n/**\n * Filters data that is shown in the DataTable section of the Inventory\n *\n * @param itemData All inventory items and their related information\n * @param statusFilter Allows filtering by status (i.e. show all items, or only items that are\n * 'approved', 'unapproved' or 'unknown')\n * @param textFilter Allows filtering by text. All items that include the filter text will be\n * selected.\n * @returns Array of items and their related information that are matched by the specified filters\n */\nconst filterItemData = (\n itemData: InventoryTableData[],\n statusFilter: StatusFilter,\n textFilter: string,\n): InventoryTableData[] => {\n let filteredItemData: InventoryTableData[] = itemData;\n\n if (statusFilter !== 'all') {\n filteredItemData = filteredItemData.filter(\n (item) =>\n (statusFilter === 'approved' && item.status === 'approved') ||\n (statusFilter === 'unapproved' && item.status === 'unapproved') ||\n (statusFilter === 'unknown' && item.status === 'unknown'),\n );\n }\n\n if (textFilter !== '')\n filteredItemData = filteredItemData.filter((item) => item.items[0].includes(textFilter));\n\n return filteredItemData;\n};\n\n/**\n * Turns array of strings into array of inventory items, along with their count and status\n *\n * @param text The source scripture text that is searched for inventory items\n * @param scriptureRef The scripture reference that the application is currently set to\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param itemRegex Regular expression that describes what items this Inventory should extract from\n * the provided scripture text\n * @returns Array of inventory items, along with their count and status\n */\nconst createTableData = (\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n itemRegex: RegExp,\n): InventoryTableData[] => {\n if (!text) return [];\n\n const tableData: InventoryTableData[] = [];\n\n let currentBook: number | undefined = scriptureRef.bookNum;\n let currentChapter: number | undefined = scriptureRef.chapterNum;\n let currentVerse: number | undefined = scriptureRef.verseNum;\n\n const lines = getLinesFromUSFM(text);\n\n lines.forEach((line: string) => {\n if (line.startsWith('\\\\id')) {\n currentBook = getBookNumFromId(line);\n currentChapter = 0;\n currentVerse = 0;\n }\n if (line.startsWith('\\\\c')) {\n currentChapter = getNumberFromUSFM(line);\n currentVerse = 0;\n }\n if (line.startsWith('\\\\v')) {\n currentVerse = getNumberFromUSFM(line);\n if (currentChapter === 0) {\n currentChapter = scriptureRef.chapterNum;\n }\n }\n\n let match: RegExpExecArray | undefined = itemRegex.exec(line) ?? undefined;\n while (match) {\n const items: string[] = [];\n match.forEach((item) => items.push(item));\n const itemIndex = match.index;\n const existingItem = tableData.find((tableEntry) => deepEqual(tableEntry.items, items));\n const newReference: InventoryItemOccurrence = {\n reference: {\n bookNum: currentBook !== undefined ? currentBook : -1,\n chapterNum: currentChapter !== undefined ? currentChapter : -1,\n verseNum: currentVerse !== undefined ? currentVerse : -1,\n },\n text: substring(line, Math.max(0, itemIndex - 25), Math.min(itemIndex + 25, line.length)),\n };\n if (existingItem) {\n existingItem.count += 1;\n existingItem.occurrences.push(newReference);\n } else {\n const newItem: InventoryTableData = {\n items,\n count: 1,\n status: getStatusForItem(items[0], approvedItems, unapprovedItems),\n occurrences: [newReference],\n };\n tableData.push(newItem);\n }\n\n match = itemRegex.exec(line) ?? undefined;\n }\n });\n\n return tableData;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: InventoryLocalizedStrings,\n key: keyof InventoryLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\n/** Props for the Inventory component */\ntype InventoryProps = {\n /** The scripture reference that the application is currently set to */\n scriptureReference: ScriptureReference;\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the Inventory needs to work well across multiple\n * languages. When using this component with Platform.Bible, you can import\n * `INVENTORY_STRING_KEYS` from this library, pass it in to the Platform's localization hook, and\n * pass the localized keys that are returned by the hook into this prop.\n */\n localizedStrings: InventoryLocalizedStrings;\n /**\n * The logic that finds the desired items in the source text. This can either be a Regular\n * expression that captures one or multiple items (preferred), or a custom function that builds\n * and return an InventoryDataTable[] manually. Note: In case the logic captures more than one\n * item (i.e. InventoryTableData.items has a length greater than 1), you must provide text labels\n * for the related columns and control elements to show by setting the `additionalItemsLabels`\n * prop\n */\n extractItems:\n | RegExp\n | ((\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n ) => InventoryTableData[]);\n /**\n * Text labels for control elements and additional column headers in case your Inventory has more\n * than one item to show (e.g. The 'Preceding Marker' in the Markers Inventory)\n */\n additionalItemsLabels?: AdditionalItemsLabels;\n /** Array of approved items, typically as defined in `Settings.xml` */\n approvedItems: string[];\n /** Array of unapproved items, typically as defined in `Settings.xml` */\n unapprovedItems: string[];\n /** The source scripture text that is searched for in inventory items */\n text: string | undefined;\n /** Scope of scripture that the inventory will operate on */\n scope: Scope;\n /** Callback function that is executed when the scope is changed from the Inventory */\n onScopeChange: (scope: Scope) => void;\n /**\n * Column definitions for the Inventory data table. The most commonly used column definitions are\n * pre-configured for your convenience and can be imported (e.g. inventoryItemColumn,\n * inventoryAdditionalItemColumn inventoryCountColumn, and inventoryStatusColumn). If you need any\n * other columns you can add these yourself\n */\n columns: ColumnDef[];\n};\n\n/** Inventory component that is used to view and control the status of provided project settings */\nexport default function Inventory({\n scriptureReference,\n setScriptureReference,\n localizedStrings,\n extractItems,\n additionalItemsLabels,\n approvedItems,\n unapprovedItems,\n text,\n scope,\n onScopeChange,\n columns,\n}: InventoryProps) {\n const allItemsText = localizeString(localizedStrings, '%webView_inventory_all%');\n const approvedItemsText = localizeString(localizedStrings, '%webView_inventory_approved%');\n const unapprovedItemsText = localizeString(localizedStrings, '%webView_inventory_unapproved%');\n const unknownItemsText = localizeString(localizedStrings, '%webView_inventory_unknown%');\n const scopeBookText = localizeString(localizedStrings, '%webView_inventory_scope_currentBook%');\n const scopeChapterText = localizeString(localizedStrings, '%webView_inventory_scope_chapter%');\n const scopeVerseText = localizeString(localizedStrings, '%webView_inventory_scope_verse%');\n const filterText = localizeString(localizedStrings, '%webView_inventory_filter_text%');\n const showAdditionalItemsText = localizeString(\n localizedStrings,\n '%webView_inventory_show_additional_items%',\n );\n\n const [showAdditionalItems, setShowAdditionalItems] = useState(false);\n const [statusFilter, setStatusFilter] = useState('all');\n const [textFilter, setTextFilter] = useState('');\n const [selectedItem, setSelectedItem] = useState([]);\n\n const tableData: InventoryTableData[] = useMemo(() => {\n if (!text) return [];\n if (extractItems instanceof RegExp)\n return createTableData(\n text,\n scriptureReference,\n approvedItems,\n unapprovedItems,\n extractItems,\n );\n return extractItems(text, scriptureReference, approvedItems, unapprovedItems);\n }, [text, extractItems, scriptureReference, approvedItems, unapprovedItems]);\n\n const reducedTableData: InventoryTableData[] = useMemo(() => {\n if (showAdditionalItems) return tableData;\n\n const newTableData: InventoryTableData[] = [];\n\n tableData.forEach((tableEntry) => {\n const firstItem = tableEntry.items[0];\n\n const existingEntry = newTableData.find(\n (newTableEntry) => newTableEntry.items[0] === firstItem,\n );\n\n if (existingEntry) {\n existingEntry.count += tableEntry.count;\n existingEntry.occurrences = existingEntry.occurrences.concat(tableEntry.occurrences);\n } else {\n newTableData.push({\n items: [firstItem],\n count: tableEntry.count,\n occurrences: tableEntry.occurrences,\n status: tableEntry.status,\n });\n }\n });\n\n return newTableData;\n }, [showAdditionalItems, tableData]);\n\n const filteredTableData: InventoryTableData[] = useMemo(() => {\n return filterItemData(reducedTableData, statusFilter, textFilter);\n }, [reducedTableData, statusFilter, textFilter]);\n\n const allColumns: ColumnDef[] = useMemo(() => {\n if (!showAdditionalItems) return columns;\n\n const numberOfAdditionalItems = additionalItemsLabels?.tableHeaders?.length;\n if (!numberOfAdditionalItems) return columns;\n\n const additionalColumns: ColumnDef[] = [];\n\n for (let index = 0; index < numberOfAdditionalItems; index++) {\n additionalColumns.push(\n inventoryAdditionalItemColumn(\n additionalItemsLabels?.tableHeaders?.[index] || 'Additional Item',\n index + 1,\n ),\n );\n }\n\n return [...additionalColumns, ...columns];\n }, [additionalItemsLabels?.tableHeaders, columns, showAdditionalItems]);\n\n useEffect(() => {\n setSelectedItem([]);\n }, [filteredTableData]);\n\n const rowClickHandler = (\n row: RowContents,\n table: TableContents,\n ) => {\n table.setRowSelection(() => {\n const newSelection: RowSelectionState = {};\n newSelection[row.index] = true;\n return newSelection;\n });\n\n setSelectedItem(row.original.items);\n };\n\n const handleScopeChange = (value: string) => {\n if (value === 'book' || value === 'chapter' || value === 'verse') {\n onScopeChange(value);\n } else {\n throw new Error(`Invalid scope value: ${value}`);\n }\n };\n\n const handleStatusFilterChange = (value: string) => {\n if (value === 'all' || value === 'approved' || value === 'unapproved' || value === 'unknown') {\n setStatusFilter(value);\n } else {\n throw new Error(`Invalid status filter value: ${value}`);\n }\n };\n\n const occurrenceData: InventoryItemOccurrence[] = useMemo(() => {\n if (reducedTableData.length === 0 || selectedItem.length === 0) return [];\n const occurrence = reducedTableData.filter((tableEntry: InventoryTableData) => {\n return deepEqual(\n showAdditionalItems ? tableEntry.items : [tableEntry.items[0]],\n selectedItem,\n );\n });\n if (occurrence.length > 1) throw new Error('Selected item is not unique');\n return occurrence[0].occurrences;\n }, [selectedItem, showAdditionalItems, reducedTableData]);\n\n return (\n
\n
\n handleStatusFilterChange(value)}\n defaultValue={statusFilter}\n >\n \n \n \n \n {allItemsText}\n {approvedItemsText}\n {unapprovedItemsText}\n {unknownItemsText}\n \n \n \n {\n setTextFilter(event.target.value);\n }}\n />\n {additionalItemsLabels && (\n
\n {\n setSelectedItem([]);\n setShowAdditionalItems(checked);\n }}\n />\n \n
\n )}\n
\n
\n \n
\n {occurrenceData.length > 0 && (\n
\n \n
\n )}\n
\n );\n}\n","import { Input } from '@/components/shadcn-ui/input';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { useState } from 'react';\n\nexport type SearchBarProps = {\n /**\n * Callback fired to handle the search query when button pressed\n *\n * @param searchQuery\n */\n onSearch: (searchQuery: string) => void;\n\n /** Optional string that appears in the search bar without a search string */\n placeholder?: string;\n\n /** Optional boolean to set the input base to full width */\n isFullWidth?: boolean;\n};\n\nexport default function SearchBar({ onSearch, placeholder, isFullWidth }: SearchBarProps) {\n const [searchQuery, setSearchQuery] = useState('');\n\n const handleInputChange = (searchString: string) => {\n setSearchQuery(searchString);\n onSearch(searchString);\n };\n\n return (\n handleInputChange(e.target.value)}\n />\n );\n}\n","// adapted from: https://github.com/shadcn-ui/ui/discussions/752\n\n'use client';\n\nimport { TabsContentProps, TabsListProps, TabsTriggerProps } from '@/components/shadcn-ui/tabs';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport React from 'react';\n\nexport type VerticalTabsProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type LeftTabsTriggerProps = TabsTriggerProps & {\n value: string;\n ref?: React.Ref;\n};\n\nexport const VerticalTabs = React.forwardRef<\n React.ElementRef,\n VerticalTabsProps\n>(({ className, ...props }, ref) => (\n \n));\n\nVerticalTabs.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsTrigger = React.forwardRef<\n React.ElementRef,\n LeftTabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\n\nexport const VerticalTabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import SearchBar from '@/components/basics/search-bar.component';\nimport {\n VerticalTabs,\n VerticalTabsContent,\n VerticalTabsList,\n VerticalTabsTrigger,\n} from '@/components/basics/tabs-vertical';\nimport { ReactNode } from 'react';\n\nexport type TabKeyValueContent = {\n key: string;\n value: string;\n content: ReactNode;\n};\n\nexport type NavigationContentSearchProps = {\n /** List of values and keys for each tab this component should provide */\n tabList: TabKeyValueContent[];\n\n /** Handler to run when the value of the search bar changes */\n onSearch: (searchQuery: string) => void;\n\n /** Optional placeholder for the search bar */\n searchPlaceholder?: string;\n\n /** Optional title to include in the header */\n headerTitle?: string;\n\n /** Optional flag to make the search bar appear full width */\n isSearchBarFullWidth?: boolean;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nexport default function NavigationContentSearch({\n tabList,\n onSearch,\n searchPlaceholder,\n headerTitle,\n isSearchBarFullWidth = false,\n direction = 'ltr',\n}: NavigationContentSearchProps) {\n return (\n
\n
\n {headerTitle ?

{headerTitle}

: ''}\n \n
\n \n \n {tabList.map((tab) => (\n \n {tab.value}\n \n ))}\n \n {tabList.map((tab) => (\n \n {tab.content}\n \n ))}\n \n
\n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Canon } from '@sillsdev/scripture';\nimport {\n Cell,\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n GroupingState,\n Row,\n RowSelectionState,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport '@/components/advanced/scripture-results-viewer/scripture-results-viewer.component.css';\nimport {\n compareScrRefs,\n formatScrRef,\n ScriptureSelection,\n scrRefToBBBCCCVVV,\n} from 'platform-bible-utils';\nimport { MouseEvent, useEffect, useMemo, useState } from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\n\n/**\n * Information (e.g., a checking error or some other type of \"transient\" annotation) about something\n * noteworthy at a specific place in an instance of the Scriptures.\n */\nexport type ScriptureItemDetail = ScriptureSelection & {\n /**\n * Text of the error, note, etc. In the future, we might want to support something more than just\n * text so that a JSX element could be provided with a link or some other controls related to the\n * issue being reported.\n */\n detail: string;\n};\n\n/**\n * A uniquely identifiable source of results that can be displayed in the ScriptureResultsViewer.\n * Generally, the source will be a particular Scripture check, but there may be other types of\n * sources.\n */\nexport type ResultsSource = {\n /**\n * Uniquely identifies the source.\n *\n * @type {string}\n */\n id: string;\n\n /**\n * Name (potentially localized) of the source, suitable for display in the UI.\n *\n * @type {string}\n */\n displayName: string;\n};\n\nexport type ScriptureSrcItemDetail = ScriptureItemDetail & {\n /** Source/type of detail. Can be used for grouping. */\n source: ResultsSource;\n};\n\n/**\n * Represents a set of results keyed by Scripture reference. Generally, the source will be a\n * particular Scripture check, but this type also allows for other types of uniquely identifiable\n * sources.\n */\nexport type ResultsSet = {\n /**\n * The backing source associated with this set of results.\n *\n * @type {ResultsSource}\n */\n source: ResultsSource;\n\n /**\n * Array of Scripture item details (messages keyed by Scripture reference).\n *\n * @type {ScriptureItemDetail[]}\n */\n data: ScriptureItemDetail[];\n};\n\nconst scrBookColId = 'scrBook';\nconst scrRefColId = 'scrRef';\nconst typeColId = 'source';\nconst detailsColId = 'details';\n\nconst defaultScrRefColumnName = 'Scripture Reference';\nconst defaultScrBookGroupName = 'Scripture Book';\nconst defaultTypeColumnName = 'Type';\nconst defaultDetailsColumnName = 'Details';\n\nexport type ScriptureResultsViewerColumnInfo = {\n /** Optional header to display for the Reference column. Default value: 'Scripture Reference'. */\n scriptureReferenceColumnName?: string;\n\n /** Optional text to display to refer to the Scripture book group. Default value: 'Scripture Book'. */\n scriptureBookGroupName?: string;\n\n /** Optional header to display for the Type column. Default value: 'Type'. */\n typeColumnName?: string;\n\n /** Optional header to display for the Details column. Default value: 'Details' */\n detailsColumnName?: string;\n};\n\nexport type ScriptureResultsViewerProps = ScriptureResultsViewerColumnInfo & {\n /** Groups of ScriptureItemDetail objects from particular sources (e.g., Scripture checks) */\n sources: ResultsSet[];\n\n /** Flag indicating whether to display column headers. Default is false. */\n showColumnHeaders?: boolean;\n\n /** Flag indicating whether to display source column. Default is false. */\n showSourceColumn?: boolean;\n\n /** Callback function to notify when a row is selected */\n onRowSelected?: (selectedRow: ScriptureSrcItemDetail | undefined) => void;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nfunction getColumns(\n colInfo?: ScriptureResultsViewerColumnInfo,\n showSourceColumn?: boolean,\n): ColumnDef[] {\n const showSrcCol = showSourceColumn ?? false;\n return [\n {\n accessorFn: (row) =>\n `${Canon.bookNumberToId(row.start.bookNum)} ${row.start.chapterNum}:${row.start.verseNum}`,\n id: scrBookColId,\n header: colInfo?.scriptureReferenceColumnName ?? defaultScrRefColumnName,\n cell: (info) => {\n const row = info.row.original;\n if (info.row.getIsGrouped()) {\n return Canon.bookNumberToEnglishName(row.start.bookNum);\n }\n return info.row.groupingColumnId === scrBookColId ? formatScrRef(row.start) : undefined;\n },\n getGroupingValue: (row) => row.start.bookNum,\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: true,\n },\n {\n accessorFn: (row) => formatScrRef(row.start),\n id: scrRefColId,\n header: undefined,\n cell: (info) => {\n const row = info.row.original;\n return info.row.getIsGrouped() ? undefined : formatScrRef(row.start);\n },\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: false,\n },\n {\n accessorFn: (row) => row.source.displayName,\n id: typeColId,\n header: showSrcCol ? (colInfo?.typeColumnName ?? defaultTypeColumnName) : undefined,\n cell: (info) => (showSrcCol || info.row.getIsGrouped() ? info.getValue() : undefined),\n getGroupingValue: (row) => row.source.id,\n sortingFn: (a, b) =>\n a.original.source.displayName.localeCompare(b.original.source.displayName),\n enableGrouping: true,\n },\n {\n accessorFn: (row) => row.detail,\n id: detailsColId,\n header: colInfo?.detailsColumnName ?? defaultDetailsColumnName,\n cell: (info) => info.getValue(),\n enableGrouping: false,\n },\n ];\n}\n\nconst toRefOrRange = (scriptureSelection: ScriptureSelection) => {\n if (!('offset' in scriptureSelection.start))\n throw new Error('No offset available in range start');\n if (scriptureSelection.end && !('offset' in scriptureSelection.end))\n throw new Error('No offset available in range end');\n const { offset: offsetStart } = scriptureSelection.start;\n let offsetEnd: number = 0;\n if (scriptureSelection.end) ({ offset: offsetEnd } = scriptureSelection.end);\n if (\n !scriptureSelection.end ||\n compareScrRefs(scriptureSelection.start, scriptureSelection.end) === 0\n )\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}`;\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}-${scrRefToBBBCCCVVV(scriptureSelection.end)}+${offsetEnd}`;\n};\n\nconst getRowKey = (row: ScriptureSrcItemDetail) =>\n `${toRefOrRange({ start: row.start, end: row.end })} ${row.source.displayName} ${row.detail}`;\n\n/**\n * Component to display a combined list of detailed items from one or more sources, where the items\n * are keyed primarily by Scripture reference. This is particularly useful for displaying a list of\n * results from Scripture checks, but more generally could be used to display any \"results\" from any\n * source(s). The component allows for grouping by Scripture book, source, or both. By default, it\n * displays somewhat \"tree-like\" which allows it to be more horizontally compact and intuitive. But\n * it also has the option of displaying as a traditional table with column headings (with or without\n * the source column showing).\n */\nexport default function ScriptureResultsViewer({\n sources,\n showColumnHeaders = false,\n showSourceColumn = false,\n scriptureReferenceColumnName,\n scriptureBookGroupName,\n typeColumnName,\n detailsColumnName,\n onRowSelected,\n direction = 'ltr',\n}: ScriptureResultsViewerProps) {\n const [grouping, setGrouping] = useState([]);\n const [sorting, setSorting] = useState([{ id: scrBookColId, desc: false }]);\n const [rowSelection, setRowSelection] = useState({});\n\n const scriptureResults = useMemo(\n () =>\n sources.flatMap((source) => {\n return source.data.map((item) => ({\n ...item,\n source: source.source,\n }));\n }),\n [sources],\n );\n\n const columns = useMemo(\n () =>\n getColumns(\n {\n scriptureReferenceColumnName,\n typeColumnName,\n detailsColumnName,\n },\n showSourceColumn,\n ),\n [scriptureReferenceColumnName, typeColumnName, detailsColumnName, showSourceColumn],\n );\n\n useEffect(() => {\n // Ensure sorting is applied correctly when grouped by type\n if (grouping.includes(typeColId)) {\n setSorting([\n { id: typeColId, desc: false },\n { id: scrBookColId, desc: false },\n ]);\n } else {\n setSorting([{ id: scrBookColId, desc: false }]);\n }\n }, [grouping]);\n\n const table = useReactTable({\n data: scriptureResults,\n columns,\n state: {\n grouping,\n sorting,\n rowSelection,\n },\n onGroupingChange: setGrouping,\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getRowId: getRowKey,\n autoResetExpanded: false,\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n });\n\n useEffect(() => {\n if (onRowSelected) {\n const selectedRows = table.getSelectedRowModel().rowsById;\n const keys = Object.keys(selectedRows);\n if (keys.length === 1) {\n const selectedRow = scriptureResults.find((row) => getRowKey(row) === keys[0]) || undefined;\n if (selectedRow) onRowSelected(selectedRow);\n }\n }\n }, [rowSelection, scriptureResults, onRowSelected, table]);\n\n // Define possible grouping options\n const scrBookGroupName = scriptureBookGroupName ?? defaultScrBookGroupName;\n const typeGroupName = typeColumnName ?? defaultTypeColumnName;\n\n const groupingOptions = [\n { label: 'No Grouping', value: [] },\n { label: `Group by ${scrBookGroupName}`, value: [scrBookColId] },\n { label: `Group by ${typeGroupName}`, value: [typeColId] },\n {\n label: `Group by ${scrBookGroupName} and ${typeGroupName}`,\n value: [scrBookColId, typeColId],\n },\n {\n label: `Group by ${typeGroupName} and ${scrBookGroupName}`,\n value: [typeColId, scrBookColId],\n },\n ];\n\n const handleSelectChange = (selectedGrouping: string) => {\n setGrouping(JSON.parse(selectedGrouping));\n };\n\n const handleRowClick = (row: Row, event: MouseEvent) => {\n if (!row.getIsGrouped() && !row.getIsSelected()) {\n row.getToggleSelectedHandler()(event);\n }\n };\n\n const getEvenOrOddBandingStyle = (row: Row, index: number) => {\n if (row.getIsGrouped()) return '';\n // UX has now said they don't think they want banding. I'm leaving in the code to\n // set even and odd styles, but there's nothing in the CSS to style them differently.\n // The \"even\" style used to also have tw-bg-neutral-300 (along with even) to create\n // a visual banding effect. That could be added back in if UX changes the decision.\n return cn('banded-row', index % 2 === 0 ? 'even' : 'odd');\n };\n\n const getIndent = (\n groupingState: GroupingState,\n row: Row,\n cell: Cell,\n ) => {\n if (groupingState?.length === 0 || row.depth < cell.column.getGroupedIndex()) return undefined;\n if (row.getIsGrouped()) {\n switch (row.depth) {\n case 1:\n return 'tw-ps-4';\n default:\n return undefined;\n }\n }\n switch (row.depth) {\n case 1:\n return 'tw-ps-8';\n case 2:\n return 'tw-ps-12';\n default:\n return undefined;\n }\n };\n\n return (\n
\n {!showColumnHeaders && (\n {\n handleSelectChange(value);\n }}\n >\n \n \n \n \n \n {groupingOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n )}\n \n {showColumnHeaders && (\n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers\n .filter((h) => h.column.columnDef.header)\n .map((header) => (\n /* For sticky column headers to work, we probably need to change the default definition of the shadcn Table component. See https://github.com/shadcn-ui/ui/issues/1151 */\n \n {header.isPlaceholder ? undefined : (\n
\n {header.column.getCanGroup() ? (\n \n {header.column.getIsGrouped() ? `🛑` : `👊 `}\n \n ) : undefined}{' '}\n {flexRender(header.column.columnDef.header, header.getContext())}\n
\n )}\n
\n ))}\n
\n ))}\n
\n )}\n \n {table.getRowModel().rows.map((row, rowIndex) => {\n return (\n handleRowClick(row, event)}\n >\n {row.getVisibleCells().map((cell) => {\n if (\n cell.getIsPlaceholder() ||\n (cell.column.columnDef.enableGrouping &&\n !cell.getIsGrouped() &&\n (cell.column.columnDef.id !== typeColId || !showSourceColumn))\n )\n return undefined;\n return (\n \n {(() => {\n if (cell.getIsGrouped()) {\n return (\n \n {row.getIsExpanded() && }\n {!row.getIsExpanded() &&\n (direction === 'ltr' ? : )}{' '}\n {flexRender(cell.column.columnDef.cell, cell.getContext())} (\n {row.subRows.length})\n \n );\n }\n\n // if (cell.getIsAggregated()) {\n // flexRender(\n // cell.column.columnDef.aggregatedCell ?? cell.column.columnDef.cell,\n // cell.getContext(),\n // );\n // }\n\n return flexRender(cell.column.columnDef.cell, cell.getContext());\n })()}\n \n );\n })}\n \n );\n })}\n \n
\n
\n );\n}\n","import {\n getLocalizeKeyForScrollGroupId,\n LanguageStrings,\n ScrollGroupId,\n} from 'platform-bible-utils';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\nconst DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS = {\n [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n [getLocalizeKeyForScrollGroupId(0)]: 'A',\n [getLocalizeKeyForScrollGroupId(1)]: 'B',\n [getLocalizeKeyForScrollGroupId(2)]: 'C',\n [getLocalizeKeyForScrollGroupId(3)]: 'D',\n [getLocalizeKeyForScrollGroupId(4)]: 'E',\n [getLocalizeKeyForScrollGroupId(5)]: 'F',\n [getLocalizeKeyForScrollGroupId(6)]: 'G',\n [getLocalizeKeyForScrollGroupId(7)]: 'H',\n [getLocalizeKeyForScrollGroupId(8)]: 'I',\n [getLocalizeKeyForScrollGroupId(9)]: 'J',\n [getLocalizeKeyForScrollGroupId(10)]: 'K',\n [getLocalizeKeyForScrollGroupId(11)]: 'L',\n [getLocalizeKeyForScrollGroupId(12)]: 'M',\n [getLocalizeKeyForScrollGroupId(13)]: 'N',\n [getLocalizeKeyForScrollGroupId(14)]: 'O',\n [getLocalizeKeyForScrollGroupId(15)]: 'P',\n [getLocalizeKeyForScrollGroupId(16)]: 'Q',\n [getLocalizeKeyForScrollGroupId(17)]: 'R',\n [getLocalizeKeyForScrollGroupId(18)]: 'S',\n [getLocalizeKeyForScrollGroupId(19)]: 'T',\n [getLocalizeKeyForScrollGroupId(20)]: 'U',\n [getLocalizeKeyForScrollGroupId(21)]: 'V',\n [getLocalizeKeyForScrollGroupId(22)]: 'W',\n [getLocalizeKeyForScrollGroupId(23)]: 'X',\n [getLocalizeKeyForScrollGroupId(24)]: 'Y',\n [getLocalizeKeyForScrollGroupId(25)]: 'Z',\n};\n\nexport type ScrollGroupSelectorProps = {\n /**\n * List of scroll group ids to show to the user. Either a {@link ScrollGroupId} or `undefined` for\n * no scroll group\n */\n availableScrollGroupIds: (ScrollGroupId | undefined)[];\n /** Currently selected scroll group id. `undefined` for no scroll group */\n scrollGroupId: ScrollGroupId | undefined;\n /** Callback function run when the user tries to change the scroll group id */\n onChangeScrollGroupId: (newScrollGroupId: ScrollGroupId | undefined) => void;\n /**\n * Localized strings to use for displaying scroll group ids. Must be an object whose keys are\n * `getLocalizeKeyForScrollGroupId(scrollGroupId)` for all scroll group ids (and `undefined` if\n * included) in {@link ScrollGroupSelectorProps.availableScrollGroupIds} and whose values are the\n * localized strings to use for those scroll group ids.\n *\n * Defaults to English localizations of English alphabet for scroll groups 0-25 (e.g. 0 is A) and\n * Ø for `undefined`. Will fill in any that are not provided with these English localizations.\n * Also, if any values match the keys, the English localization will be used. This is useful in\n * case you want to pass in a temporary version of the localized strings while your localized\n * strings load.\n *\n * @example\n *\n * ```typescript\n * const myScrollGroupIdLocalizedStrings = {\n * [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n * [getLocalizeKeyForScrollGroupId(0)]: 'A',\n * [getLocalizeKeyForScrollGroupId(1)]: 'B',\n * [getLocalizeKeyForScrollGroupId(2)]: 'C',\n * [getLocalizeKeyForScrollGroupId(3)]: 'D',\n * [getLocalizeKeyForScrollGroupId(4)]: 'E',\n * };\n * ```\n *\n * @example\n *\n * ```tsx\n * const availableScrollGroupIds = [undefined, 0, 1, 2, 3, 4];\n *\n * const localizeKeys = getLocalizeKeysForScrollGroupIds();\n *\n * const [localizedStrings] = useLocalizedStrings(localizeKeys);\n *\n * ...\n *\n * \n * ```\n */\n localizedStrings?: LanguageStrings;\n};\n\n/** Selector component for choosing a scroll group */\nexport default function ScrollGroupSelector({\n availableScrollGroupIds,\n scrollGroupId,\n onChangeScrollGroupId,\n localizedStrings = {},\n}: ScrollGroupSelectorProps) {\n const localizedStringsDefaulted = {\n ...DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS,\n ...Object.fromEntries(\n Object.entries(localizedStrings).map(\n ([localizedStringKey, localizedStringValue]: [string, string]) => [\n localizedStringKey,\n localizedStringKey === localizedStringValue &&\n localizedStringKey in DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS\n ? DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS[localizedStringKey]\n : localizedStringValue,\n ],\n ),\n ),\n };\n return (\n \n onChangeScrollGroupId(\n newScrollGroupString === 'undefined' ? undefined : parseInt(newScrollGroupString, 10),\n )\n }\n >\n \n \n \n \n {availableScrollGroupIds.map((scrollGroupOptionId) => (\n \n {localizedStringsDefaulted[getLocalizeKeyForScrollGroupId(scrollGroupOptionId)]}\n \n ))}\n \n \n );\n}\n","import React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n \n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { PropsWithChildren } from 'react';\nimport { Separator } from '@/components/shadcn-ui/separator';\n\n/** Props for the SettingsList component, currently just children */\ntype SettingsListProps = PropsWithChildren;\n\n/**\n * SettingsList component is a wrapper for list items. Rendered with a formatted div\n *\n * @param children To populate the list with\n * @returns Formatted div encompassing the children\n */\nexport function SettingsList({ children }: SettingsListProps) {\n return
{children}
;\n}\n\n/** Props for SettingsListItem component */\ntype SettingsListItemProps = PropsWithChildren & {\n /** Primary text of the list item */\n primary: string;\n\n /** Optional text of the list item */\n secondary?: string | undefined;\n\n /** Optional boolean to display a message if the children aren't loaded yet. Defaults to false */\n isLoading?: boolean;\n\n /** Optional message to display if isLoading */\n loadingMessage?: string;\n};\n\n/**\n * SettingsListItem component is a common list item. Rendered with a formatted div\n *\n * @param primary Primary text of the list item\n * @param secondary Optional secondary text of the list item\n * @param isLoading Optional, to display a message if the action component isn't generated yet,\n * defaults to false\n * @param children The action component(s) to provide for this item\n * @param loadingMessage Optional, message to display if isLoading\n * @returns Formatted div encompassing the list item content\n */\nexport function SettingsListItem({\n primary,\n secondary,\n children,\n isLoading = false,\n loadingMessage,\n}: SettingsListItemProps) {\n return (\n
\n
\n

{primary}

\n

\n {secondary}\n

\n
\n\n {isLoading ? (\n

{loadingMessage}

\n ) : (\n
{children}
\n )}\n
\n );\n}\n\n/** Props for SettingsListHeader component */\ntype SettingsListHeaderProps = {\n /** The primary text of the list header */\n primary: string;\n\n /** Optional secondary text of the list header */\n secondary?: string | undefined;\n\n /** Optional boolean to include a separator underneath the secondary text. Defaults to false */\n includeSeparator?: boolean;\n};\n\n/**\n * SettingsListHeader component displays text above the list\n *\n * @param primary The primary text of the list header\n * @param secondary Optional secondary text of the list header\n * @param includeSeparator Optional boolean to include a separator underneath the secondary text.\n * Defaults to false\n * @returns Formatted div with list header content\n */\nexport function SettingsListHeader({\n primary,\n secondary,\n includeSeparator = false,\n}: SettingsListHeaderProps) {\n return (\n
\n
\n

{primary}

\n

{secondary}

\n
\n {includeSeparator ? : ''}\n
\n );\n}\n","import Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChecklistProps = {\n /** Optional string representing the id attribute of the Checklist */\n id?: string;\n /** Optional string representing CSS class name(s) for styling */\n className?: string;\n /** Array of strings representing the checkable items */\n listItems: string[];\n /** Array of strings representing the checked items */\n selectedListItems: string[];\n /**\n * Function that is called when a checkbox item is selected or deselected\n *\n * @param item The string description for this item\n * @param selected True if selected, false if not selected\n */\n handleSelectListItem: (item: string, selected: boolean) => void;\n\n /**\n * Optional function creates a label for a provided checkable item\n *\n * @param item The item for which a label is to be created\n * @returns A string representing the label text for the checkbox associated with that item\n */\n createLabel?: (item: string) => string;\n};\n\n/** Renders a list of checkboxes. Each checkbox corresponds to an item from the `listItems` array. */\nexport default function Checklist({\n id,\n className,\n listItems,\n selectedListItems,\n handleSelectListItem,\n createLabel,\n}: ChecklistProps) {\n return (\n
\n {listItems.map((item) => (\n
\n handleSelectListItem(item, value)}\n />\n \n
\n ))}\n
\n );\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n const element = props[propName];\n const safePropName = propFullName || propName;\n if (element == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for Emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n const elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n return _extends({}, propTypes, {\n [specialProperty]: props => {\n const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n if (unsupportedProps.length > 0) {\n return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n }\n return null;\n }\n });\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propValue = props[propName];\n const safePropName = propFullName || propName;\n if (propValue == null) {\n return null;\n }\n if (propValue && propValue.nodeType !== 1) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n }\n return null;\n}","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props(_extends({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style(_extends({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n return props => processStyleArg(stylesArg, _extends({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, _extends({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${capitalize(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // e.g. heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m10 17 5-5-5-5z\"\n}), 'ArrowRight');","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n return typeof element === 'string';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n const {\n disableDefaultClasses\n } = React.useContext(ClassNameConfiguratorContext);\n return slot => {\n if (disableDefaultClasses) {\n return '';\n }\n return generateUtilityClass(slot);\n };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport function ClassNameConfigurator(props) {\n const {\n disableDefaultClasses,\n children\n } = props;\n const contextValue = React.useMemo(() => ({\n disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n }), [disableDefaultClasses]);\n return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n value: contextValue,\n children: children\n });\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","import { globalStateClasses } from '@mui/utils/generateUtilityClass';\nconst GLOBAL_CLASS_PREFIX = 'base';\nfunction buildStateClass(state) {\n return `${GLOBAL_CLASS_PREFIX}--${state}`;\n}\nfunction buildSlotClass(componentName, slot) {\n return `${GLOBAL_CLASS_PREFIX}-${componentName}-${slot}`;\n}\nexport function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? buildStateClass(globalStateClass) : buildSlotClass(componentName, slot);\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import { generateUtilityClass } from '../generateUtilityClass';\nexport function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base-ui/react-portal/components-api/#portal)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, forwardedRef);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(forwardedRef, mountNode);\n return () => {\n setRef(forwardedRef, null);\n };\n }\n return undefined;\n }, [forwardedRef, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: children\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport { Portal };","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { generateUtilityClass } from '../generateUtilityClass';\nimport { generateUtilityClasses } from '../generateUtilityClasses';\nconst COMPONENT_NAME = 'Popper';\nexport function getPopperUtilityClass(slot) {\n return generateUtilityClass(COMPONENT_NAME, slot);\n}\nexport const popperClasses = generateUtilityClasses(COMPONENT_NAME, ['root']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\", \"ownerState\"],\n _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '../composeClasses';\nimport { Portal } from '../Portal';\nimport { getPopperUtilityClass } from './popperClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, useClassNamesOverride(getPopperUtilityClass));\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n var _slots$root;\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps\n // @ts-ignore internal logic\n // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, forwardedRef);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: popperModifiers\n }));\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses();\n const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: props,\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n children: typeof children === 'function' ? children(childProps) : children\n }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Popper](https://mui.com/base-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/base-ui/react-popper/components-api/#popper)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: forwardedRef,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display\n }, style),\n TransitionProps: transitionProps,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport { Popper };","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default {\n disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"component\", \"components\", \"componentsProps\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\", \"slots\", \"slotProps\"];\nimport { Popper as BasePopper } from '@mui/base/Popper';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n var _slots$root;\n const theme = useTheme();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n anchorEl,\n component,\n components,\n componentsProps,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n const otherProps = _extends({\n anchorEl,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition\n }, other);\n return /*#__PURE__*/_jsx(PopperRoot, _extends({\n as: component,\n direction: theme == null ? void 0 : theme.direction,\n slots: {\n root: RootComponent\n },\n slotProps: slotProps != null ? slotProps : componentsProps\n }, otherProps, {\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout, unstable_Timeout as Timeout } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, appendOwnerState } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(({\n theme,\n ownerState,\n open\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n pointerEvents: 'auto'\n}, !open && {\n pointerEvents: 'none'\n}, ownerState.arrow && {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n left: 0,\n marginLeft: '-0.71em'\n } : {\n right: 0,\n marginRight: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n }),\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n right: 0,\n marginRight: '-0.71em'\n } : {\n left: 0,\n marginLeft: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n })\n}));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n position: 'relative',\n margin: 0\n}, ownerState.touch && {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n}, {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n transformOrigin: 'right center'\n }, !ownerState.isRtl ? _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n }) : _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n transformOrigin: 'left center'\n }, !ownerState.isRtl ? _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n }) : _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n }, ownerState.touch && {\n marginBottom: '24px'\n }),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n transformOrigin: 'center top',\n marginTop: '14px'\n }, ownerState.touch && {\n marginTop: '24px'\n })\n}));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n}));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n return event => {\n if (eventHandler) {\n eventHandler(event);\n }\n handler(event);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children: childrenProp,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp = Grow,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n children: childrenProp\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = useTimeout();\n const enterTimer = useTimeout();\n const leaveTimer = useTimeout();\n const touchTimer = useTimeout();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = useEventCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n touchTimer.clear();\n });\n React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n const handleOpen = event => {\n hystersisTimer.clear();\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n hystersisTimer.start(800 + leaveDelay, () => {\n hystersisOpen = false;\n });\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n closeTimer.start(theme.transitions.duration.shortest, () => {\n ignoreNonTouchEvents.current = false;\n });\n });\n const handleEnter = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n enterTimer.clear();\n leaveTimer.clear();\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n handleOpen(event);\n });\n } else {\n handleOpen(event);\n }\n };\n const handleLeave = event => {\n enterTimer.clear();\n leaveTimer.start(leaveDelay, () => {\n handleClose(event);\n });\n };\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n // We just need to re-render the Tooltip if the focus-visible state changes.\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setChildIsFocusVisible(false);\n handleLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setChildIsFocusVisible(true);\n handleEnter(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleMouseOver = handleEnter;\n const handleMouseLeave = handleLeave;\n const handleTouchStart = event => {\n detectTouchStart(event);\n leaveTimer.clear();\n closeTimer.clear();\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.start(enterTouchDelay, () => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleEnter(event);\n });\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n leaveTimer.start(leaveTouchDelay, () => {\n handleClose(event);\n });\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(children.ref, focusVisibleRef, setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n // So we exclude all falsy values, except 0, which is valid.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef\n }, followCursor ? {\n onMouseMove: handleMouseMove\n } : {});\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of .', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const popperOptions = React.useMemo(() => {\n var _PopperProps$popperOp;\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n return _extends({}, PopperProps.popperOptions, {\n modifiers: tooltipModifiers\n });\n }, [arrowRef, PopperProps]);\n const ownerState = _extends({}, props, {\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n });\n const classes = useUtilityClasses(ownerState);\n const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n }), ownerState);\n const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n }), ownerState);\n const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n }), ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n as: PopperComponentProp != null ? PopperComponentProp : Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true\n }, interactiveWrapperListeners, popperProps, {\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n timeout: theme.transitions.duration.shorter\n }, TransitionPropsInner, transitionProps, {\n children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n ref: setArrowRef\n })) : null]\n }))\n }))\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import '@/components/mui/menu-item.component.css';\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport {\n ListItemIcon as MuiListItemIcon,\n ListItemText as MuiListItemText,\n MenuItem as MuiMenuItem,\n} from '@mui/material';\nimport Tooltip from '@mui/material/Tooltip';\nimport { Localized, ReferencedItem, SingleColumnMenu } from 'platform-bible-utils';\nimport { MouseEvent, PropsWithChildren } from 'react';\n\ntype MenuItemInfoBase = {\n /** Text (displayable in the UI) as the name of the menu item */\n label: string;\n /** Text to display when the mouse hovers over the menu item */\n tooltip?: string;\n};\n\nexport type Command = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n command: string;\n};\n\ntype SubMenu = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n items: MenuItemInfo[];\n};\n\nexport interface CommandHandler {\n (command: Command): void;\n}\n\nexport type MenuPropsBase = {\n /*\n * The JSON defining the menu whose items are to be rendered. This will typically be one of the\n * menus in the \"defs\" in a Platform.Bible menu (see PlatformMenus). The schema for this is\n * menuDocumentSchema (at the end of menus.model.ts). Note that while this is a\n * \"SingleColumnMenu\", somewhat bizarrely, a MultiColumnMenu is a SingleColumnMenu, so it really\n * could be a MultiColumnMenu, in which case, column had better be defined so it can be used\n * to filter out the actual groups and items to display on the column.\n */\n menuDefinition: Localized;\n\n commandHandler: CommandHandler;\n\n /**\n * Additional action to perform when any menu item is clicked. Allows the caller to handle event\n * (e.g., to close the menu).\n */\n onClick?: (event: MouseEvent) => void;\n};\n\nexport type MenuItemListProps = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type MenuItemProps = Omit &\n PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n\n onClick: (event: MouseEvent) => void;\n }>;\n\ntype MenuItemInfo = (Command | SubMenu) & {\n /**\n * If specified, menu item will be inset if it does not have a leading icon.\n *\n * @default true\n */\n allowForLeadingIcons?: boolean;\n /**\n * If specified, the path to the icon image to display on the leading side of the menu text.\n *\n * @default undefined (no leading icon will be shown)\n */\n iconPathBefore?: string;\n /**\n * If specified, the path to the icon image to display on the trailing side of the menu text.\n *\n * @default undefined (no trailing icon will be shown)\n */\n iconPathAfter?: string;\n /**\n * If true, list item is focused during the first mount\n *\n * @default false\n */\n hasAutoFocus?: boolean;\n\n /** Additional css classes to help with unique styling of the menu item */\n className?: string;\n\n /**\n * If true, the menu item will appear disabled and it will not respond to clicks or mouse hovers.\n *\n * @default false\n */\n isDisabled?: boolean;\n\n /**\n * If true, compact vertical padding designed for keyboard and mouse input is used.\n *\n * @default true\n */\n isDense?: boolean;\n\n /**\n * If true, a right-arrow icon will be displayed (iconPathAfter, if specified, will be ignored).\n *\n * @default false\n */\n isSubMenuParent?: boolean;\n\n /**\n * If true, the left and right padding is removed\n *\n * @default false\n */\n hasDisabledGutters?: boolean;\n\n /**\n * If true, a 1px light border is added to bottom of menu item\n *\n * @default false\n */\n hasDivider?: boolean;\n\n /** Help identify which element has keyboard focus */\n focusVisibleClassName?: string;\n\n /** If it's a submenu, it should have the items property */\n items?: MenuItemInfo[];\n};\n\nfunction getIcon(icon: string | undefined, menuLabel: string, leading: boolean) {\n return icon ? (\n \n {`${leading\n \n ) : undefined;\n}\n\nexport default function MenuItem(props: MenuItemProps) {\n const {\n onClick,\n label,\n tooltip,\n allowForLeadingIcons = true,\n iconPathBefore = undefined,\n iconPathAfter = undefined,\n hasAutoFocus = false,\n className,\n isDisabled = false,\n isDense = true,\n isSubMenuParent = false,\n hasDisabledGutters = false,\n hasDivider = false,\n focusVisibleClassName,\n id,\n children,\n } = props;\n\n const menuItem = (\n \n {label ? (\n <>\n {getIcon(iconPathBefore, label, true)}\n \n {isSubMenuParent ? (\n \n \n \n ) : (\n getIcon(iconPathAfter, label, false)\n )}\n \n ) : (\n children\n )}\n \n );\n\n return tooltip ? (\n \n
{menuItem}
\n
\n ) : (\n menuItem\n );\n}\n","import MenuItem, {\n MenuItemListProps,\n MenuItemProps,\n MenuPropsBase,\n} from '@/components/mui/menu-item.component';\nimport { Menu } from '@mui/material';\nimport {\n Localized,\n MenuGroupDetailsInSubMenu,\n MenuItemContainingCommand,\n MenuItemContainingSubmenu,\n OrderedExtensibleContainer,\n ReferencedItem,\n SingleColumnMenu,\n} from 'platform-bible-utils';\nimport { MouseEvent, useMemo, useState } from 'react';\n\n/**\n * All the exported types in this file should be regarded as \"internal\" (i.e., they should not be\n * exposed via index.ts).\n */\n\nexport type GroupedMenuPropsBase = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type GroupedMenuItemListProps = MenuItemListProps & {\n /**\n * If the menuDefinition includes \"top-level\" groups (i.e., those that belong to a column as\n * opposed to those that belong to a submenu) that should not be included in the list, then this\n * array specifies which groups to include. Likewise, for a submenu, this list indicates which\n * groups are pertinent for that submenu. So then for a context menu this property need not be\n * specified since it is a top-level menu based on a \"true\" SingleColumnMenu (i.e., one that is\n * not a MultiColumnMenu).\n */\n includedGroups?: {\n id: string;\n group: Localized;\n }[];\n};\n\ninterface ItemInfo {\n item: Localized;\n isLastItemInGroup: boolean;\n}\n\ntype SubMenuProps = MenuPropsBase & {\n parentMenuItem: Localized;\n parentItemProps: Omit, 'iconPathAfter'>;\n};\n\nfunction getAllGroups(menuDefinition: Localized) {\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n return groupEntries.map(([key, value]) => ({ id: key, group: value }));\n}\n\nfunction SubMenu(props: SubMenuProps) {\n const [anchorEl, setAnchorEl] = useState(undefined);\n\n const { parentMenuItem, parentItemProps, menuDefinition } = props;\n\n const handleParentMenuItemClick = (event: MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(undefined);\n };\n\n const renderSubMenuItems = () => {\n let includedGroups = getAllGroups(menuDefinition).filter((g) => 'menuItem' in g.group);\n\n // Ensure valid parent menu was provided. (If not, submenu will contain all groups!)\n if (!parentMenuItem?.id) throw new Error('A valid parent menu item is required for submenus.');\n\n // When laying out a submenu, only include groups associated with the provided parent menu.\n // Note: without the (annoying) redundant check that the included groups\n // have the menuItem field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (group) => 'menuItem' in group.group && group.group.menuItem === parentMenuItem.id,\n );\n\n return ;\n };\n\n return (\n <>\n \n \n {renderSubMenuItems()}\n \n \n );\n}\n\nconst getOrderedGroupItems = (\n groupId: string,\n allItems: Localized[],\n) => {\n // Filter items that belong to the specified group\n const itemsForGroup = allItems.filter((item) => item.group === groupId);\n // Sort items based on order\n const sortedItems = itemsForGroup.sort((a, b) => (a.order || 0) - (b.order || 0));\n return sortedItems;\n};\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. It is used to generate and lay out the MenuItems that appear either on a\n * top-level menu (in a GridMenu or ContextMenu) or in a submenu.\n */\nexport default function GroupedMenuItemList(menuProps: GroupedMenuItemListProps) {\n const { menuDefinition, onClick, commandHandler, includedGroups } = menuProps;\n\n const { items, allowForLeadingIcons } = useMemo(() => {\n const groupsToInclude =\n includedGroups && includedGroups.length > 0\n ? includedGroups\n : // We're apparently laying out a single-column menu (presumably a context menu). In this\n // case, all groups should be included except ones that belong to a submenu.\n getAllGroups(menuDefinition).filter((g) => !('menuItem' in g.group));\n\n const sortedGroups = Object.values(groupsToInclude).sort(\n (a, b) => (a.group.order || 0) - (b.group.order || 0),\n );\n\n const itemArray: ItemInfo[] = [];\n\n sortedGroups.forEach((group) => {\n getOrderedGroupItems(group.id, menuDefinition.items).forEach((item) =>\n itemArray.push({ item, isLastItemInGroup: false }),\n );\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = true;\n });\n\n // No divider after last item in final group.\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = false;\n\n const allowSpaceForLeadingIcons = itemArray.some(\n (i) => 'iconPathBefore' in i.item && i.item.iconPathBefore,\n );\n\n return { items: itemArray, allowForLeadingIcons: allowSpaceForLeadingIcons };\n }, [includedGroups, menuDefinition]);\n\n // Create props for MenuItem component including setting hasDivider for the last item in a group\n const createMenuItemProps = ({ item, isLastItemInGroup }: ItemInfo) => {\n const menuItemProps = {\n className: 'papi-menu-item',\n label: item.label,\n tooltip: item.tooltip,\n iconPathBefore: 'iconPathBefore' in item ? item.iconPathBefore : undefined,\n iconPathAfter: 'iconPathAfter' in item ? item.iconPathAfter : undefined,\n hasDivider: isLastItemInGroup, // Set hasDivider to true for the last item in a group\n allowForLeadingIcons,\n };\n\n return menuItemProps;\n };\n\n const [firstItem] = items;\n\n if (!firstItem) return
;\n\n const divKey = firstItem.item.group;\n\n return (\n
\n {items.map((itemInfo, index) => {\n const { item } = itemInfo;\n const menuItemProps = createMenuItemProps(itemInfo);\n if ('command' in item) {\n const key = item.group + index;\n return (\n ) => {\n onClick?.(event);\n commandHandler(item);\n }}\n {...menuItemProps}\n />\n );\n }\n return (\n \n );\n })}\n
\n );\n}\n","import GroupedMenuItemList from '@/components/mui/grouped-menu-item-list.component';\nimport { MenuItemListProps } from '@/components/mui/menu-item.component';\nimport { MultiColumnMenu } from 'platform-bible-utils';\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. Use either GridMenu or ContextMenu.\n */\nexport default function TopLevelMenu(props: MenuItemListProps) {\n const { menuDefinition, columnId } = props;\n\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n const groups = groupEntries.map(([key, value]) => ({ id: key, group: value }));\n let includedGroups = groups.filter((g) => 'column' in g.group);\n\n // Check if column is provided and menuDefinition is a MultiColumnMenu\n if (\n columnId &&\n 'columns' in menuDefinition &&\n // Without this type assertion, TS doesn't know what columns is.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n (menuDefinition as MultiColumnMenu).columns[columnId]\n ) {\n // When laying out a single column in a MultiColumnMenu, only include groups associated with\n // the provided column. Note: without the (annoying) redundant check that the included groups\n // have the colum field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (g) => 'column' in g.group && g.group.column === columnId,\n );\n }\n\n return ;\n}\n","import '@/components/mui/grid-menu.component.css';\nimport { GroupedMenuPropsBase } from '@/components/mui/grouped-menu-item-list.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport TopLevelMenu from '@/components/mui/top-level-menu.component';\nimport { Grid, List } from '@mui/material';\nimport {\n Localized,\n MenuColumnWithHeader,\n MultiColumnMenu,\n ReferencedItem,\n} from 'platform-bible-utils';\nimport { useMemo } from 'react';\n\ntype ColumnInfo = {\n /*\n * The ID (`${string}.${string}`) of a specific menu column.\n */\n id: ReferencedItem;\n\n /*\n * Metadata (label, order, etc.) for a specific menu column.\n */\n metadata: Localized;\n};\n\ntype MenuColumnProps = ColumnInfo &\n GroupedMenuPropsBase & {\n /** Additional css classes to help with unique styling of the menu column */\n className?: string;\n };\n\nexport type GridMenuInfo = {\n /** The menu object containing information about the columns, groups, and items to display. */\n multiColumnMenu: Localized;\n};\n\nexport type GridMenuProps = GridMenuInfo & {\n /** Optional unique identifier */\n id?: string;\n\n commandHandler: CommandHandler;\n\n /** Additional css classes to help with unique styling of the grid menu */\n className?: string;\n};\n\nfunction MenuColumn({\n commandHandler,\n menuDefinition,\n id,\n metadata,\n onClick,\n className,\n}: MenuColumnProps) {\n return (\n \n

\n {metadata.label}\n

\n {/* It would seem as though this List component were unnecessary, since it only contains one\n thing, but the \"dense\" property does affect the layout of the items (in a way I don't fully\n understand). There might be a better way. */}\n \n \n \n \n );\n}\n\nexport default function GridMenu({\n commandHandler,\n className,\n multiColumnMenu,\n id,\n}: GridMenuProps) {\n const { columns } = multiColumnMenu;\n\n const sortedColumns = useMemo(() => {\n const columnNumbers = new Map();\n Object.getOwnPropertyNames(columns).forEach((columnName: string) => {\n // We know for sure there is a (boolean) property 'isExtensible' that we are not interested in.\n if (columnName === 'isExtensible') return;\n // TS doesn't allow `columnName` above to be a ReferencedItem even though the type says it is\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const columnId = columnName as ReferencedItem;\n const column = columns[columnId];\n // As of right now (and hopefully forever after), all remaining properties of the\n // ColumnsWithHeaders object are columns whose property names are the IDs of the columns.\n // This is an additional (redundant) sanity check. Specifically we're interested in\n // MenuColumnWithHeader objects, which TypeScript now \"knows\" we have, but at runtime all we\n // can check for is that it's an object with a valid numeric order field. That's likely good\n // enough.\n if (\n typeof column === 'object' &&\n typeof column.order === 'number' &&\n !Number.isNaN(column.order)\n )\n columnNumbers.set(column.order, { id: columnId, metadata: column });\n else\n console.warn(\n `Property ${columnName} (${typeof column}) on menu ${id} is not a valid column and is being ignored. This might indicate data corruption`,\n );\n });\n\n // Extract values and sort them based on the 'order' property\n return Array.from(columnNumbers.values()).sort((a, b) => {\n return (a.metadata.order || 0) - (b.metadata.order || 0);\n });\n }, [columns, id]);\n\n // We might need something like this if we need to be able to prevent empty columns\n // sortedColumns.filter((c) => multiColumnMenu.groups.some((g) => 'column' in g && (g as .column)...\n\n return (\n \n {sortedColumns.map((col, index) => (\n \n ))}\n \n );\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport type UsePromiseOptions = {\n /**\n * Whether to leave the value as the most recent resolved promise value or set it back to\n * defaultValue while running the promise again. Defaults to true\n */\n preserveValue?: boolean;\n};\n\n/** Set up defaults for options for usePromise hook */\nfunction getUsePromiseOptionsDefaults(options: UsePromiseOptions): UsePromiseOptions {\n return {\n preserveValue: true,\n ...options,\n };\n}\n\n/**\n * Awaits a promise and returns a loading value while the promise is unresolved\n *\n * @param promiseFactoryCallback A function that returns the promise to await. If this callback is\n * undefined, the current value will be returned (defaultValue unless it was previously changed\n * and `options.preserveValue` is true), and there will be no loading.\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n * @param defaultValue The initial value to return while first awaiting the promise. If\n * `options.preserveValue` is false, this value is also shown while awaiting the promise on\n * subsequent calls.\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. This means that, if the `promiseFactoryCallback` changes and\n * `options.preserveValue` is `false`, the returned value will be set to the current\n * `defaultValue`. However, the returned value will not be updated if`defaultValue` changes.\n * @param options Various options for adjusting how this hook runs the `promiseFactoryCallback`\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. However, the latest `options.preserveValue` will always be used\n * appropriately to determine whether to preserve the returned value when changing the\n * `promiseFactoryCallback`\n * @returns `[value, isLoading]`\n *\n * - `value`: the current value for the promise, either the defaultValue or the resolved promise value\n * - `isLoading`: whether the promise is waiting to be resolved\n */\nconst usePromise = (\n promiseFactoryCallback: (() => Promise) | undefined,\n defaultValue: T,\n options: UsePromiseOptions = {},\n): [value: T, isLoading: boolean] => {\n // Use defaultValue as a ref so it doesn't update dependency arrays\n const defaultValueRef = useRef(defaultValue);\n defaultValueRef.current = defaultValue;\n // Use options as a ref so it doesn't update dependency arrays\n const optionsDefaultedRef = useRef(options);\n optionsDefaultedRef.current = getUsePromiseOptionsDefaults(optionsDefaultedRef.current);\n\n const [value, setValue] = useState(() => defaultValueRef.current);\n const [isLoading, setIsLoading] = useState(true);\n useEffect(() => {\n let promiseIsCurrent = true;\n // If a promiseFactoryCallback was provided, we are loading. Otherwise, there is no loading to do\n setIsLoading(!!promiseFactoryCallback);\n (async () => {\n // If there is a callback to run, run it\n if (promiseFactoryCallback) {\n const result = await promiseFactoryCallback();\n // If the promise was not already replaced, update the value\n if (promiseIsCurrent) {\n setValue(() => result);\n setIsLoading(false);\n }\n }\n })();\n\n return () => {\n // Mark this promise as old and not to be used\n promiseIsCurrent = false;\n if (!optionsDefaultedRef.current.preserveValue) setValue(() => defaultValueRef.current);\n };\n }, [promiseFactoryCallback]);\n\n return [value, isLoading];\n};\nexport default usePromise;\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","import GridMenu from '@/components/mui/grid-menu.component';\nimport { Command, CommandHandler } from '@/components/mui/menu-item.component';\nimport usePromise from '@/hooks/use-promise.hook';\nimport { Menu as MenuIcon } from '@mui/icons-material';\nimport { Drawer, IconButton } from '@mui/material';\nimport { Localized, MultiColumnMenu } from 'platform-bible-utils';\nimport {\n MouseEvent,\n MutableRefObject,\n PropsWithChildren,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nexport interface MultiColumnMenuProvider {\n (isSupportAndDevelopment: boolean): Promise>;\n}\n\nexport type HamburgerMenuButtonProps = PropsWithChildren & {\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * Optional reference to the \"div\" container that determines the where the menu should appear. If\n * not defined, then (1,1) used.\n */\n containerRef?: MutableRefObject;\n\n /**\n * The delegate to use to get the menu data. If not specified or if it returns undefined, the data\n * in normalMenu or fullMenu property will be used.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /**\n * The menu data to show when the menu is opened if the menuProvider property is not defined.\n * (This allows for a default or test-only static menu to be used.)\n */\n normalMenu?: Localized;\n\n /**\n * The menu data to show for \"full\" menu (when opened with the SHIFT key pressed) if the\n * menuProvider property is not defined. (This allows for a default or test-only static menu to be\n * used.)\n */\n fullMenu?: Localized;\n\n /** Additional css class(es) to help with unique styling of the sub-components */\n className?: string;\n\n /** Value to use as prefix for ARIA labels on interactive sub-components */\n ariaLabelPrefix?: string;\n};\n\nexport default function HamburgerMenuButton({\n menuProvider,\n normalMenu,\n fullMenu,\n commandHandler,\n containerRef,\n className,\n ariaLabelPrefix,\n children,\n}: HamburgerMenuButtonProps) {\n const [isMenuOpen, setMenuOpen] = useState(false);\n const [showFullMenu, setShowFullMenu] = useState(false);\n\n const handleMenuItemClick = useCallback(() => {\n if (isMenuOpen) setMenuOpen(false);\n setShowFullMenu(false);\n }, [isMenuOpen]);\n\n const handleMenuButtonClick = useCallback((e: MouseEvent) => {\n e.stopPropagation();\n setMenuOpen((prevIsOpen) => {\n const isOpening = !prevIsOpen;\n if (isOpening && e.shiftKey) setShowFullMenu(true);\n else if (!isOpening) setShowFullMenu(false);\n return isOpening;\n });\n }, []);\n\n const menuCommandHandler = useCallback(\n (command: Command) => {\n handleMenuItemClick();\n return commandHandler(command);\n },\n [commandHandler, handleMenuItemClick],\n );\n\n const [offset, setOffset] = useState({ top: 1, left: 1 });\n\n useEffect(() => {\n if (isMenuOpen) {\n const node = containerRef?.current;\n if (node) {\n const rect = node.getBoundingClientRect();\n const scrollTop = window.scrollY;\n const scrollLeft = window.scrollX;\n const top = rect.top + scrollTop + node.clientHeight;\n const left = rect.left + scrollLeft;\n setOffset({ top, left });\n }\n }\n }, [isMenuOpen, containerRef]);\n\n const [normalMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(false) ?? normalMenu;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, normalMenu, isMenuOpen]),\n normalMenu,\n );\n\n const [fullMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(true) ?? fullMenu ?? normalMenuData;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, fullMenu, normalMenuData, isMenuOpen]),\n fullMenu ?? normalMenuData,\n );\n\n const menu = showFullMenu && fullMenuData ? fullMenuData : normalMenuData;\n\n return (\n <>\n \n {children ?? }\n \n \n {menu ? (\n \n ) : undefined}\n \n \n );\n}\n","import '@/components/mui/icon-button.component.css';\nimport { IconButton as MuiIconButton } from '@mui/material';\nimport { MouseEventHandler, PropsWithChildren } from 'react';\n\nexport type IconButtonProps = PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n /**\n * Required. Used as both the tooltip (aka, title) and the aria-label (used for accessibility,\n * testing, etc.), unless a distinct tooltip is supplied.\n */\n label: string;\n /**\n * Enabled status of button\n *\n * @default false\n */\n isDisabled?: boolean;\n /** Optional tooltip to display if different from the aria-label. */\n tooltip?: string;\n /** If true, no tooltip will be displayed. */\n isTooltipSuppressed?: boolean;\n /**\n * If given, uses a negative margin to counteract the padding on one side (this is often helpful\n * for aligning the left or right side of the icon with content above or below, without ruining\n * the border size and shape).\n *\n * @default false\n */\n adjustMarginToAlignToEdge?: 'end' | 'start' | false;\n /**\n * The size of the component. small is equivalent to the dense button styling.\n *\n * @default false\n */\n size: 'small' | 'medium' | 'large';\n /** Additional css classes to help with unique styling of the button */\n className?: string;\n /** Optional click handler */\n onClick?: MouseEventHandler;\n}>;\n\n/**\n * Iconic button a user can click to do something\n *\n * Thanks to MUI for heavy inspiration and documentation\n * https://mui.com/material-ui/getting-started/overview/\n */\nfunction IconButton({\n id,\n label,\n isDisabled = false,\n tooltip,\n isTooltipSuppressed = false,\n adjustMarginToAlignToEdge = false,\n size = 'medium',\n className,\n onClick,\n children,\n}: IconButtonProps) {\n return (\n \n {children /* the icon to display */}\n \n );\n}\n\nexport default IconButton;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { LoaderCircle, LucideProps } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nexport type SpinnerProps = LucideProps;\n\nconst Spinner = forwardRef(({ className, ...props }, ref) => {\n return (\n \n );\n});\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","import { Input as ShadInput } from '@/components/shadcn-ui/input';\nimport { Label as ShadLabel } from '@/components/shadcn-ui/label';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { ChangeEventHandler, FocusEventHandler } from 'react';\n\nexport type TextFieldProps = {\n /** Optional unique identifier */\n id?: string;\n /**\n * If `true`, the component is disabled.\n *\n * @default false\n */\n isDisabled?: boolean;\n /**\n * If `true`, the label is displayed in an error state.\n *\n * @default false\n */\n hasError?: boolean;\n /**\n * If `true`, the input will take up the full width of its container.\n *\n * @default false\n */\n isFullWidth?: boolean;\n /** Text that gives the user instructions on what contents the TextField expects */\n helperText?: string;\n /** The title of the TextField */\n label?: string;\n /** The short hint displayed in the `input` before the user enters a value. */\n placeholder?: string;\n /**\n * If `true`, the label is displayed as required and the `input` element is required.\n *\n * @default false\n */\n isRequired?: boolean;\n /** Additional css classes to help with unique styling of the text field */\n className?: string;\n /** Starting value for the text field if it is not controlled */\n defaultValue?: string | number;\n /** Value of the text field if controlled */\n value?: string | number;\n /** Triggers when content of textfield is changed */\n onChange?: ChangeEventHandler;\n /** Triggers when textfield gets focus */\n onFocus?: FocusEventHandler;\n /** Triggers when textfield loses focus */\n onBlur?: FocusEventHandler;\n};\n\n/**\n * Text input field\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/input#with-label\n */\nfunction TextField({\n id,\n isDisabled = false,\n hasError = false,\n isFullWidth = false,\n helperText,\n label,\n placeholder,\n isRequired = false,\n className,\n defaultValue,\n value,\n onChange,\n onFocus,\n onBlur,\n}: TextFieldProps) {\n return (\n
\n {`${label}${isRequired ? '*' : ''}`}\n \n

{helperText}

\n
\n );\n}\n\nexport default TextField;\n","import HamburgerMenuButton, {\n MultiColumnMenuProvider,\n} from '@/components/mui/hamburger-menu-button.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport '@/components/mui/toolbar.component.css';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { AppBar, Toolbar as MuiToolbar } from '@mui/material';\nimport { PropsWithChildren, useRef } from 'react';\n\nexport type ToolbarProps = PropsWithChildren<{\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * The optional delegate to use to get the menu data. If not specified, the \"hamburger\" menu will\n * not display.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /** Optional unique identifier */\n id?: string;\n\n /** Additional css classes to help with unique styling of the toolbar */\n className?: string;\n}>;\n\nexport default function Toolbar({\n menuProvider,\n commandHandler,\n className,\n id,\n children,\n}: ToolbarProps) {\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const containerRef = useRef(undefined!);\n\n return (\n
\n \n \n {menuProvider ? (\n \n ) : undefined}\n {children ?
{children}
: undefined}\n \n
\n
\n );\n}\n","import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst alertVariants = cva(\n 'tw-relative tw-w-full tw-rounded-lg tw-border tw-p-4 [&>svg~*]:tw-pl-7 [&>svg+div]:tw-translate-y-[-3px] [&>svg]:tw-absolute [&>svg]:tw-left-4 [&>svg]:tw-top-4 [&>svg]:tw-text-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-background tw-text-foreground',\n destructive:\n 'tw-border-destructive/50 tw-text-destructive dark:tw-border-destructive [&>svg]:tw-text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n
\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}{' '}\n \n ),\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertTitle, AlertDescription };\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Card = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}\n \n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n

\n));\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef>(\n ({ className, ...props }, ref) => (\n

\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { ComponentProps } from 'react';\nimport { toast as sonner, Toaster } from 'sonner';\n\ntype SonnerProps = ComponentProps;\n\nfunction Sonner({ ...props }: SonnerProps) {\n return (\n \n );\n}\n\n// The re-export of the sonner function was added manually\nexport { Sonner, sonner };\n","import React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Slider = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n \n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsTriggerProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsContentProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport const TabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef,\n TabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Download } from 'lucide-react';\n\ntype InstallButtonProps = {\n /** The installing boolean value determines the state of the button. */\n isInstalling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n /** Optional text for the button. */\n buttonText?: string;\n} & ButtonProps;\n\n/**\n * The InstallButton component is a button designed for initiating installs. It includes visuals for\n * active installing and idle states.\n *\n * @param isInstalling The installing boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @param buttonText Optional text for the button.\n * @returns A install button.\n */\nexport default function InstallButton({\n isInstalling,\n handleClick,\n buttonText,\n className,\n ...props\n}: InstallButtonProps) {\n return (\n \n {isInstalling ? (\n \n ) : (\n <>\n \n {buttonText}\n \n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype EnableButtonProps = {\n /** The enabling boolean value determines the state of the button. */\n isEnabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The EnableButton component is a button designed for initiating enabling of downloads. It includes\n * visuals for active enabling and idle states.\n *\n * @param isEnabling The enabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to enable.\n */\nexport default function EnableButton({\n isEnabling,\n handleClick,\n className,\n ...props\n}: EnableButtonProps) {\n return (\n \n {isEnabling ? (\n <>\n \n Enabling...\n \n ) : (\n 'Enable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype DisableButtonProps = {\n /** The disabling boolean value determines the state of the button. */\n isDisabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The DisableButton component is a button designed for initiating disabling of downloads. It\n * includes visuals for active disabling and idle states.\n *\n * @param isDisabling The disabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to disable.\n */\nexport default function DisableButton({\n isDisabling,\n handleClick,\n className,\n ...props\n}: DisableButtonProps) {\n return (\n \n {isDisabling ? (\n <>\n \n Disabling...\n \n ) : (\n 'Disable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype UpdateButtonProps = {\n /** The updating boolean value determines the state of the button. */\n isUpdating: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The UpdateButton component is a button designed for initiating updates for downloaded extensions.\n * It includes visuals for active updating and idle states.\n *\n * @param isUpdating The updating boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to update.\n */\nexport default function UpdateButton({\n isUpdating,\n handleClick,\n className,\n ...props\n}: UpdateButtonProps) {\n return (\n \n {isUpdating ? (\n <>\n \n Updating...\n \n ) : (\n 'Update'\n )}\n \n );\n}\n","import { cn } from '@/utils/shadcn-ui.util';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useMemo } from 'react';\n\ninterface MarkdownRendererProps {\n /** Optional unique identifier */\n id?: string;\n /** The markdown string to render */\n markdown: string;\n className?: string;\n /**\n * The [`target` attribute for `a` html\n * tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target). Defaults to not\n * adding a `target` to `a` tags\n */\n anchorTarget?: string;\n}\n\n/**\n * This component renders markdown content given a markdown string. It uses typography styles from\n * the platform.\n *\n * @param markdown The markdown string to render.\n * @param id Optional unique identifier\n * @returns A div containing the rendered markdown content.\n */\nexport default function MarkdownRenderer({\n id,\n markdown,\n className,\n anchorTarget,\n}: MarkdownRendererProps) {\n const options: MarkdownToJSX.Options = useMemo(\n () => ({\n overrides: {\n a: {\n props: {\n target: anchorTarget,\n },\n },\n },\n }),\n [anchorTarget],\n );\n return (\n
\n {markdown}\n
\n );\n}\n","import { Filter, ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport { Button } from '@/components/shadcn-ui/button';\n\n/**\n * The FilterButton component is a button designed for initiating filtering of data. It is designed\n * to be used with the dropdown menu. It uses forwardRef to pass the button to the dropdown trigger\n * asChild.\n *\n * @returns A button that can be used to filter.\n */\nconst FilterButton = forwardRef((props, ref) => {\n return (\n \n \n Filter\n \n \n );\n});\n\nexport default FilterButton;\n","import {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuGroup,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport FilterButton from './buttons/filter-button.component';\n\nexport enum DropdownMenuItemType {\n Check,\n Radio,\n}\n\nexport type DropdownItem = {\n /** The label is the text that will be displayed on the dropdown item. */\n label: string;\n /** The itemType determines the DropdownMenuItemType type as either Check or Radio. */\n itemType: DropdownMenuItemType;\n /** The onClick function is called when the item is clicked. */\n onClick: () => void;\n};\n\nexport type DropdownGroup = {\n /**\n * The label is the text that will be displayed on the dropdown group. It is used to categorize\n * the items in the group.\n */\n label: string;\n /** The items array contains the items that will be displayed in the dropdown group */\n items: DropdownItem[];\n};\n\nexport type FilterDropdownProps = {\n /** Object unique identifier */\n id?: string;\n /** The groups array contains the groups that will be displayed in the dropdown */\n groups: DropdownGroup[];\n}; // TODO: extend the props later\n\n/**\n * The FilterDropdown component is a dropdown designed for filtering content. It includes groups of\n * items that can be checkboxes or radio items.\n *\n * @param id Optional unique identifier\n * @param groups The groups array contains the groups that will be displayed in the dropdown\n * @returns A filter dropdown.\n */\nexport default function FilterDropdown({ id, groups }: FilterDropdownProps) {\n return (\n
\n {/* TODO: remove this once the DropDown Menu shadcn has an id prop */}\n \n \n \n \n \n {groups.map((group) => (\n
\n {group.label}\n \n {group.items.map((item) => (\n
\n {item.itemType === DropdownMenuItemType.Check ? (\n \n {item.label}\n \n ) : (\n \n {item.label}\n \n )}\n
\n ))}\n
\n \n
\n ))}\n
\n
\n
\n );\n}\n","interface NoExtensionsFoundProps {\n /** Optional unique identifier */\n id?: string;\n /** The message to display */\n message: string;\n}\n/**\n * This component displays a message to the user when no extensions are found in the marketplace.\n *\n * @param id Optional unique identifier\n * @param message The message to display.\n * @returns {JSX.Element} - Returns the message component that displays the message to the user.\n */\nexport default function NoExtensionsFound({ id, message }: NoExtensionsFoundProps) {\n return (\n
\n
\n

{message}

\n
\n
\n );\n}\n","import { CircleHelp, Link as LucideLink, User } from 'lucide-react';\nimport { NumberFormat } from 'platform-bible-utils';\n\n/** Interface that stores the parameters passed to the More Info component */\ninterface MoreInfoProps {\n /** Optional unique identifier */\n id?: string;\n /** The category of the extension */\n category: string;\n /** The number of downloads for the extension */\n downloads: Record;\n /** The languages supported by the extension */\n languages: string[];\n /** The URL to the more info page of the extension */\n moreInfoUrl: string;\n}\n/**\n * This component displays the more info section of the extension which includes the category,\n * number of downloads, languages, and links to the website and support\n *\n * @param id Optional unique identifier\n * @param category The category of the extension\n * @param downloads The number of downloads for the extension\n * @param languages The languages supported by the extension\n * @param moreInfoUrl The URL to the more info page of the extension\n * @returns {JSX.Element} - Returns the more info component that displays the category, number of\n * downloads, languages, and links to the website and support\n */\nexport default function MoreInfo({\n id,\n category,\n downloads,\n languages,\n moreInfoUrl,\n}: MoreInfoProps) {\n /**\n * This constant formats the number of downloads into a more readable format.\n *\n * @example 1000 -> 1K\n *\n * @example 1000000 -> 1M\n *\n * @returns The formatted number of downloads\n */\n const numberFormatted = new NumberFormat('en', {\n notation: 'compact',\n compactDisplay: 'short',\n }).format(Object.values(downloads).reduce((a: number, b: number) => a + b, 0));\n\n /** This function scrolls the window to the bottom of the page. */\n const handleScrollToBottom = () => {\n window.scrollTo(0, document.body.scrollHeight);\n };\n\n return (\n \n
\n
\n {category}\n
\n CATEGORY\n
\n
\n
\n
\n \n {numberFormatted}\n
\n USERS\n
\n
\n
\n
\n {languages.slice(0, 3).map((locale) => (\n \n {locale.toUpperCase()}\n \n ))}\n
\n {languages.length > 3 && (\n handleScrollToBottom()}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n +{languages.length - 3} more languages\n \n )}\n
\n
\n
\n \n Website\n \n \n \n Support\n \n \n
\n
\n );\n}\n","import { useState } from 'react';\n\nexport type VersionInformation = {\n /** Date the version was published */\n date: string;\n /** Description of the changes in the version */\n description: string;\n};\n\n/** Type to store the version history information */\nexport type VersionHistoryType = Record;\n\n/** Interface that stores the parameters passed to the Version History component */\ninterface VersionHistoryProps {\n /** Optional unique identifier */\n id?: string;\n /** Object containing the versions mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the version history information shown in the footer component. Lists the 5\n * most recent versions, with the options to show all versions by pressing a button.\n *\n * @param versionHistory Object containing the versions mapped with their information\n * @param id Optional unique identifier\n * @returns Rendered version history for the Footer component\n */\nexport default function VersionHistory({ id, versionHistory }: VersionHistoryProps) {\n const [showAllVersions, setShowAllVersions] = useState(false);\n const currentDate = new Date();\n\n /**\n * Function to format the time string for the version history in the form of 'X year(s) ago'.\n *\n * @param dateString ISO Date string to determine the time string from\n * @returns Formatted time string\n */\n function formatTimeString(dateString: string) {\n const date = new Date(dateString);\n const dateDiff = new Date(currentDate.getTime() - date.getTime());\n const yearDiff = dateDiff.getUTCFullYear() - 1970;\n const monthDiff = dateDiff.getUTCMonth();\n const dayDiff = dateDiff.getUTCDate() - 1;\n\n // Determines how long ago the version was published\n let timeString = '';\n if (yearDiff > 0) {\n timeString = `${yearDiff.toString()} year${yearDiff === 1 ? '' : 's'} ago`;\n } else if (monthDiff > 0) {\n timeString = `${monthDiff.toString()} month${monthDiff === 1 ? '' : 's'} ago`;\n } else if (dayDiff === 0) {\n timeString = 'today';\n } else {\n timeString = `${dayDiff.toString()} day${dayDiff === 1 ? '' : 's'} ago`;\n }\n\n return timeString;\n }\n\n // Sorts the version history by version number\n const sortedEntries = Object.entries(versionHistory).sort((a, b) => b[0].localeCompare(a[0]));\n\n return (\n
\n

What`s New

\n
    \n {(showAllVersions ? sortedEntries : sortedEntries.slice(0, 5)).map((entry) => (\n
    \n
    \n
  • \n {entry[1].description}\n
  • \n
    \n
    \n
    Version {entry[0]}
    \n
    {formatTimeString(entry[1].date)}
    \n
    \n
    \n ))}\n
\n {sortedEntries.length > 5 && (\n setShowAllVersions(!showAllVersions)}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n {showAllVersions ? 'Show Less Version History' : 'Show All Version History'}\n \n )}\n
\n );\n}\n","import { useMemo } from 'react';\nimport { formatBytes } from 'platform-bible-utils';\nimport VersionHistory, { VersionHistoryType } from './version-history.component';\n\n/** Interface to store the parameters passed to the Footer component */\ninterface FooterProps {\n /** Optional unique identifier */\n id?: string;\n /** Name of the publisher */\n publisherDisplayName: string;\n /** Size of the extension file in bytes */\n fileSize: number;\n /** List of language codes supported by the extension */\n locales: string[];\n /** Object containing the version history mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the footer for the extension details which contains information on the\n * publisher, version history, languages, and file size.\n *\n * @param id Optional unique identifier\n * @param publisherDisplayName Name of the publisher\n * @param fileSize Size of the extension file in bytes\n * @param locales List of language codes supported by the extension\n * @param versionHistory Object containing the version history mapped with their information\n * @returns The rendered Footer component\n */\nexport default function Footer({\n id,\n publisherDisplayName,\n fileSize,\n locales,\n versionHistory,\n}: FooterProps) {\n /** Formats the file size into a human-readable format */\n const formattedFileSize = useMemo(() => formatBytes(fileSize), [fileSize]);\n\n /**\n * This function gets the display names of the languages based on the language codes.\n *\n * @param codes The list of language codes\n * @returns The list of language names\n */\n const getLanguageNames = (codes: string[]) => {\n const displayNames = new Intl.DisplayNames(navigator.language, { type: 'language' });\n return codes.map((code) => displayNames.of(code));\n };\n\n const languageNames = getLanguageNames(locales);\n\n return (\n
\n
\n \n
\n
\n

Information

\n
\n

\n Publisher\n {publisherDisplayName}\n Size\n {formattedFileSize}\n

\n
\n

\n Languages\n {languageNames.join(', ')}\n

\n
\n
\n
\n
\n
\n );\n}\n","import { PlatformEvent, PlatformEventHandler } from 'platform-bible-utils';\nimport { useEffect } from 'react';\n\n/**\n * Adds an event handler to an event so the event handler runs when the event is emitted. Use\n * `papi.network.getNetworkEvent` to use a networked event with this hook.\n *\n * @param event The event to subscribe to.\n *\n * - If event is a `PlatformEvent`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEvent = (\n event: PlatformEvent | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n useEffect(() => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return () => {};\n\n const unsubscriber = event(eventHandler);\n return () => {\n unsubscriber();\n };\n }, [event, eventHandler]);\n};\nexport default useEvent;\n","import { useCallback, useEffect } from 'react';\nimport { PlatformEvent, PlatformEventAsync, PlatformEventHandler } from 'platform-bible-utils';\nimport usePromise from './use-promise.hook';\n\nconst noopUnsubscriber = () => false;\n\n/**\n * Adds an event handler to an asynchronously subscribing/unsubscribing event so the event handler\n * runs when the event is emitted. Use `papi.network.getNetworkEvent` to use a networked event with\n * this hook.\n *\n * @param event The asynchronously (un)subscribing event to subscribe to.\n *\n * - If event is a `PlatformEvent` or `PlatformEventAsync`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEventAsync = (\n event: PlatformEvent | PlatformEventAsync | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n // Subscribe to the event asynchronously\n const [unsubscribe] = usePromise(\n useCallback(async () => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return noopUnsubscriber;\n\n // Wrap subscribe and unsubscribe in promises to allow normal events to be used as well\n const unsub = await Promise.resolve(event(eventHandler));\n return async () => unsub();\n }, [eventHandler, event]),\n noopUnsubscriber,\n // We want the unsubscriber to return to default value immediately upon changing subscription\n // So the useEffect below will unsubscribe asap\n { preserveValue: false },\n );\n\n // Unsubscribe from the event asynchronously (but we aren't awaiting the unsub)\n useEffect(() => {\n return () => {\n if (unsubscribe !== noopUnsubscriber) {\n unsubscribe();\n }\n };\n }, [unsubscribe]);\n};\n\nexport default useEventAsync;\n"],"names":["twMergeCustom","extendTailwindMerge","cn","inputs","clsx","Input","React","className","type","props","ref","jsx","BookChapterInput","forwardRef","handleSearch","handleKeyDown","handleOnClick","handleSubmit","jsxs","ShadInput","event","e","History","P","R","t","s","n","N","B","O","S","K","g","k","x","T","X","V","w","L","G","A","H","C","I","y","q","U","m","l","h","c","E","D","i","a","o","u","v","f","d","b","J","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","children","ChevronRight","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","Check","DropdownMenuRadioItem","Circle","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","BookMenuItem","bookId","handleSelectBook","isSelected","handleHighlightBook","bookType","ShadDropdownMenuItem","Canon","ChapterSelect","handleSelectChapter","endChapter","activeChapter","highlightedChapter","handleHighlightedChapter","chapters","_","handleMouse","useCallback","chapterNumber","chapter","GoToMenuItem","handleSort","handleLocationHistory","handleBookmarks","ShadDropdownMenuLabel","ArrowDownWideNarrow","Clock","Bookmark","ALL_BOOK_IDS","BOOK_TYPE_LABELS","BOOK_TYPE_ARRAY","SCROLL_OFFSET","SEARCH_QUERY_FORMATS","fetchGroupedBooks","fetchEndChapter","getChaptersForBook","getAllEnglishNames","isValidBookEnglishName","bookName","getBookIdFromEnglishName","formattedBookName","BookChapterControl","scrRef","searchQuery","setSearchQuery","useState","selectedBookId","setSelectedBookId","setHighlightedChapter","highlightedBookId","setHighlightedBookId","isContentOpen","setIsContentOpen","isContentOpenDelayed","setIsContentOpenDelayed","inputRef","useRef","contentRef","menuItemRef","fetchFilteredBooks","englishNameLowerCase","normalizedQuery","handleSearchInput","searchString","shouldPreventAutoClosing","controlMenuState","open","updateReference","shouldClose","verse","handleInputSubmit","format","matches","book","englishName","handleKeyDownInput","handleKeyDownContent","key","handleKeyDownMenuItem","chapterOffSet","useEffect","useLayoutEffect","scrollTimeout","scrollPosition","ShadDropdownMenu","ShadDropdownMenuTrigger","ShadDropdownMenuContent","bookTypeIndex","element","ShadDropdownMenuSeparator","buttonVariants","cva","Button","variant","size","asChild","Slot","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","DialogPortal","DialogPrimitive","DialogOverlay","DialogContent","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","getOptionLabelDefault","option","ComboBox","id","options","value","onChange","getOptionLabel","buttonPlaceholder","textPlaceholder","commandEmptyMessage","buttonVariant","dir","isDisabled","setOpen","ChevronsUpDown","ChapterRangeSelector","startChapter","handleSelectStartChapter","handleSelectEndChapter","chapterCount","chapterOptions","useMemo","index","Fragment","BookSelectionMode","BOOK_SELECTOR_STRING_KEYS","localizeString","strings","BookSelector","handleBookSelectionModeChange","currentBookName","onSelectBooks","selectedBookIds","localizedStrings","currentBookText","chooseText","chooseBooksText","bookSelectionMode","setBookSelectionMode","onSelectionModeChange","newMode","DataTableViewOptions","table","FilterIcon","column","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","DataTablePagination","pageSize","ArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","ArrowRightIcon","Table","stickyHeader","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTable","columns","data","enablePagination","showPaginationControls","showColumnVisibilityControls","onRowClickHandler","sorting","setSorting","columnFilters","setColumnFilters","columnVisibility","setColumnVisibility","rowSelection","setRowSelection","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","headerGroup","header","flexRender","_a","row","cell","OccurrencesTable","occurrenceData","setScriptureReference","referenceHeaderText","occurrenceHeaderText","occurrences","uniqueOccurrences","occurrence","uniqueOccurrence","deepEqual","Checkbox","CheckboxPrimitive","getLinesFromUSFM","text","getNumberFromUSFM","regex","match","getBookNumFromId","getStatusForItem","item","approvedItems","unapprovedItems","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","context","getSortingIcon","sortDirection","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","inventoryItemColumn","itemLabel","inventoryAdditionalItemColumn","additionalItemLabel","additionalItemIndex","inventoryCountColumn","countLabel","statusChangeHandler","changedItems","newStatus","onApprovedItemsChange","onUnapprovedItemsChange","newApprovedItems","validItem","newUnapprovedItems","unapprovedItem","inventoryStatusColumn","statusLabel","status","CircleCheckIcon","CircleXIcon","CircleHelpIcon","INVENTORY_STRING_KEYS","filterItemData","itemData","statusFilter","textFilter","filteredItemData","createTableData","scriptureRef","itemRegex","tableData","currentBook","currentChapter","currentVerse","line","items","itemIndex","existingItem","tableEntry","newReference","substring","newItem","Inventory","scriptureReference","extractItems","additionalItemsLabels","scope","onScopeChange","allItemsText","approvedItemsText","unapprovedItemsText","unknownItemsText","scopeBookText","scopeChapterText","scopeVerseText","filterText","showAdditionalItemsText","showAdditionalItems","setShowAdditionalItems","setStatusFilter","setTextFilter","selectedItem","setSelectedItem","reducedTableData","newTableData","firstItem","existingEntry","newTableEntry","filteredTableData","allColumns","numberOfAdditionalItems","additionalColumns","_b","rowClickHandler","newSelection","handleScopeChange","handleStatusFilterChange","SearchBar","onSearch","placeholder","isFullWidth","handleInputChange","VerticalTabs","TabsPrimitive","VerticalTabsList","VerticalTabsTrigger","VerticalTabsContent","NavigationContentSearch","tabList","searchPlaceholder","headerTitle","isSearchBarFullWidth","direction","tab","scrBookColId","scrRefColId","typeColId","detailsColId","defaultScrRefColumnName","defaultScrBookGroupName","defaultTypeColumnName","defaultDetailsColumnName","getColumns","colInfo","showSourceColumn","showSrcCol","info","formatScrRef","compareScrRefs","toRefOrRange","scriptureSelection","offsetStart","offsetEnd","scrRefToBBBCCCVVV","getRowKey","ScriptureResultsViewer","sources","showColumnHeaders","scriptureReferenceColumnName","scriptureBookGroupName","typeColumnName","detailsColumnName","onRowSelected","grouping","setGrouping","scriptureResults","source","getExpandedRowModel","getGroupedRowModel","selectedRows","keys","selectedRow","scrBookGroupName","typeGroupName","groupingOptions","handleSelectChange","selectedGrouping","handleRowClick","getEvenOrOddBandingStyle","getIndent","groupingState","rowIndex","ChevronLeft","DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS","getLocalizeKeyForScrollGroupId","ScrollGroupSelector","availableScrollGroupIds","scrollGroupId","onChangeScrollGroupId","localizedStringsDefaulted","localizedStringKey","localizedStringValue","newScrollGroupString","scrollGroupOptionId","Separator","orientation","decorative","SeparatorPrimitive","SettingsList","SettingsListItem","primary","secondary","isLoading","loadingMessage","SettingsListHeader","includeSeparator","Checklist","listItems","selectedListItems","handleSelectListItem","createLabel","_interopRequireDefault","obj","module","chainPropTypes","propType1","propType2","args","_extends","target","isPlainObject","prototype","deepClone","output","deepmerge","p","r","z","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","from","to","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","has","printWarning","loggedTypeFailures","message","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","error","err","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propName","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","step","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","isClassComponent","elementType","acceptingRef","safePropName","warningHint","elementAcceptingRef","PropTypes","elementAcceptingRef$1","specialProperty","exactProp","propTypes","unsupportedProps","prop","formatMuiErrorMessage","code","url","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","SuspenseList","hasWarnedAboutDeprecatedIsConcurrentMode","isSuspenseList","fnNameMatchRegex","getFunctionName","fn","getFunctionComponentName","Component","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","HTMLElementType","refType","refType$1","capitalize","string","_formatMuiErrorMessage","createChainedFunction","funcs","acc","func","debounce","wait","timeout","debounced","later","deprecatedPropType","validator","reason","componentNameSafe","propFullNameSafe","isMuiElement","muiNames","_muiName","_element$type","ownerDocument","node","ownerWindow","requirePropFactory","componentNameInError","prevPropTypes","requiredProp","defaultTypeChecker","typeCheckerResult","setRef","useEnhancedEffect","useEnhancedEffect$1","globalId","useGlobalId","idOverride","defaultId","setDefaultId","maybeReactUseId","useId","reactId","unsupportedProp","useControlled","controlled","defaultProp","name","state","isControlled","valueState","setValue","defaultValue","setValueIfUncontrolled","newValue","useEventCallback","useForkRef","refs","instance","UNINITIALIZED","useLazyRef","init","initArg","EMPTY","useOnMount","Timeout","delay","useTimeout","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","focusTriggersKeyboardModality","tagName","handlePointerDown","handleVisibilityChange","prepare","doc","isFocusVisible","useIsFocusVisible","isFocusVisibleRef","handleBlurVisible","handleFocusVisible","resolveProps","defaultProps","defaultSlotProps","slotProps","slotPropName","composeClasses","slots","getUtilityClass","classes","slot","utilityClass","defaultGenerator","createClassNameGenerator","generate","generator","ClassNameGenerator","ClassNameGenerator$1","globalStateClasses","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","result","clamp","min","max","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","sortBreakpointsValues","breakpointsAsArray","breakpoint1","breakpoint2","createBreakpoints","breakpoints","unit","other","sortedValues","up","down","between","start","end","endIndex","only","not","keyIndex","shape","shape$1","responsivePropType","responsivePropType$1","merge","defaultBreakpoints","handleBreakpoints","styleFromPropValue","theme","themeBreakpoints","breakpoint","mediaKey","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","breakpointStyleKey","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","getPath","path","checkVars","getStyleValue","themeMapping","transform","propValueFinal","userValue","cssProperty","themeKey","memoize","cache","arg","properties","directions","aliases","getCssProperties","property","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","_getPath","themeSpacing","abs","createUnarySpacing","getValue","transformer","transformed","getStyleFromPropValue","cssProperties","resolveCssProperty","margin","padding","createSpacing","spacingInput","spacing","argsInput","argument","compose","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","borderRadius","gap","columnGap","rowGap","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","paletteTransform","color","bgcolor","backgroundColor","sizingTransform","width","maxWidth","_props$theme","_props$theme2","breakpointsValues","minWidth","height","maxHeight","minHeight","boxSizing","defaultSxConfig","defaultSxConfig$1","objectsHaveSameKeys","objects","union","callIfFn","maybeFn","unstable_createStyleFunctionSx","getThemeValue","config","styleFunctionSx","_theme$unstable_sxCon","sx","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsKeys","css","styleKey","styleFunctionSx$1","applyStyles","createTheme","paletteInput","shapeInput","muiTheme","isObjectEmpty","useTheme","defaultTheme","contextTheme","ThemeContext","systemDefaultTheme","useThemeWithoutDefault","_excluded2","_excluded3","isEmpty","isStringTag","tag","shouldForwardProp","lowercaseFirstLetter","resolveTheme","themeId","defaultOverridesResolver","processStyleArg","callableStyle","_ref","ownerState","resolvedStylesArg","resolvedStyle","variants","isMatch","createStyled","input","rootShouldForwardProp","slotShouldForwardProp","systemSx","inputOptions","processStyles","componentSlot","inputSkipVariantsResolver","inputSkipSx","overridesResolver","skipVariantsResolver","skipSx","label","shouldForwardPropOption","defaultStyledResolver","styledEngineStyled","transformStyleArg","stylesArg","muiStyledResolver","styleArg","expressions","transformedStyleArg","expressionsWithDefaultTheme","styleOverrides","resolvedStyleOverrides","slotKey","slotStyle","_theme$components","themeVariants","numOfCustomFnsApplied","placeholders","displayName","getThemeProps","params","useThemeProps","clampWrapper","hexToRgb","re","colors","decomposeColor","marker","colorSpace","recomposeColor","hslToRgb","rgb","getLuminance","getContrastRatio","foreground","background","lumA","lumB","alpha","darken","coefficient","lighten","createMixins","mixins","common","common$1","grey","grey$1","purple","purple$1","red","red$1","orange","orange$1","blue","blue$1","lightBlue","lightBlue$1","green","green$1","light","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","getDefaultPrimary","mode","getDefaultSecondary","getDefaultError","getDefaultInfo","getDefaultSuccess","getDefaultWarning","createPalette","palette","contrastThreshold","success","warning","getContrastText","contrastText","contrast","augmentColor","mainShade","lightShade","darkShade","modes","round","caseAllCaps","defaultFontFamily","createTypography","typography","fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem2","coef","pxToRem","buildVariant","fontWeight","lineHeight","letterSpacing","casing","shadowKeyUmbraOpacity","shadowKeyPenumbraOpacity","shadowAmbientShadowOpacity","createShadow","px","shadows","shadows$1","easing","duration","formatMs","milliseconds","getAutoHeightDuration","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","isString","isNumber","animatedProp","zIndex","zIndex$1","mixinsInput","transitionsInput","typographyInput","systemTheme","systemCreateTheme","stateClasses","component","child","stateClass","defaultTheme$1","THEME_ID","systemUseThemeProps","styled","styled$1","getSvgIconUtilityClass","useUtilityClasses","SvgIconRoot","_theme$transitions","_theme$transitions$cr","_theme$transitions2","_theme$typography","_theme$typography$pxT","_theme$typography2","_theme$typography2$px","_theme$typography3","_theme$typography3$px","_palette$ownerState$c","_palette","_palette2","_palette3","SvgIcon","inProps","htmlColor","inheritViewBox","titleAccess","viewBox","hasSvgAsChild","more","_jsxs","_jsx","SvgIcon$1","createSvgIcon","unstable_ClassNameGenerator","exports","_utils","ArrowRight","default_1","_createSvgIcon","_jsxRuntime","isHostComponent","appendOwnerState","otherProps","defaultContextValue","ClassNameConfiguratorContext","useClassNamesOverride","disableDefaultClasses","extractEventHandlers","excludeKeys","resolveComponentProps","componentProps","slotState","omitEventHandlers","mergeSlotProps","parameters","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","useSlotProps","_parameters$additiona","skipResolvingSlotProps","rest","resolvedComponentsProps","mergedProps","internalRef","GLOBAL_CLASS_PREFIX","buildStateClass","buildSlotClass","getContainer","container","forwardedRef","disablePortal","mountNode","setMountNode","handleRef","newProps","ReactDOM","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","OwnElement","isHTMLElement","isShadowRoot","attributes","effect","_ref2","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","COMPONENT_NAME","getPopperUtilityClass","flipPlacement","resolveAnchorEl","anchorEl","isVirtualElement","defaultPopperOptions","PopperTooltip","_slots$root","initialPlacement","popperOptions","popperRefProp","TransitionProps","tooltipRef","ownRef","popperRef","handlePopperRef","handlePopperRefRef","rtlPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","handlePopperUpdate","box","popperModifiers","childProps","Root","rootProps","Popper","containerProp","keepMounted","transition","exited","setExited","handleEnter","handleExited","resolvedAnchorEl","display","transitionProps","useThemeSystem","_setPrototypeOf","_inheritsLoose","subClass","superClass","setPrototypeOf","timeoutsShape","TransitionGroupContext","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","parentGroup","appear","initialStatus","prevState","nextIn","_proto","prevProps","nextStatus","exit","enter","mounting","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","_this3","nextState","callback","_this4","active","handler","doesNotHaveTimeoutOrListener","maybeNextCallback","_this$props","pt","noop","Transition$1","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","getScale","isWebKit154","Grow","addEndListener","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","TransitionComponent","timer","autoTimeout","nodeRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","isAppearing","transitionDuration","transitionTimingFunction","handleEntered","handleExiting","handleExit","Grow$1","PopperRoot","BasePopper","components","componentsProps","RootComponent","Popper$1","getTooltipUtilityClass","tooltipClasses","tooltipClasses$1","disableInteractive","touch","TooltipPopper","TooltipTooltip","TooltipArrow","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","Tooltip","_slots$popper","_slots$transition","_slots$tooltip","_slots$arrow","_slotProps$popper","_ref6","_slotProps$popper2","_slotProps$transition","_slotProps$tooltip","_ref7","_slotProps$tooltip2","_slotProps$arrow","_ref8","_slotProps$arrow2","childrenProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponentProp","PopperProps","title","TransitionComponentProp","isRtl","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","handleOpen","handleClose","handleLeave","focusVisibleRef","setChildIsFocusVisible","handleBlur","handleFocus","detectTouchStart","childrenProps","handleMouseOver","handleMouseLeave","handleTouchStart","handleTouchEnd","nativeEvent","handleMouseMove","nameOrDescProps","titleIsString","interactiveWrapperListeners","_PopperProps$popperOp","tooltipModifiers","PopperComponent","TooltipComponent","ArrowComponent","popperProps","tooltipProps","tooltipArrowProps","TransitionPropsInner","Tooltip$1","getIcon","icon","menuLabel","leading","MuiListItemIcon","MenuItem","onClick","tooltip","allowForLeadingIcons","iconPathBefore","iconPathAfter","hasAutoFocus","isDense","isSubMenuParent","hasDisabledGutters","hasDivider","focusVisibleClassName","menuItem","MuiMenuItem","MuiListItemText","getAllGroups","menuDefinition","SubMenu","setAnchorEl","parentMenuItem","parentItemProps","handleParentMenuItemClick","renderSubMenuItems","includedGroups","group","GroupedMenuItemList","Menu","getOrderedGroupItems","groupId","allItems","menuProps","commandHandler","groupsToInclude","sortedGroups","itemArray","allowSpaceForLeadingIcons","createMenuItemProps","isLastItemInGroup","divKey","itemInfo","menuItemProps","TopLevelMenu","columnId","MenuColumn","metadata","Grid","List","GridMenu","multiColumnMenu","sortedColumns","columnNumbers","columnName","col","getUsePromiseOptionsDefaults","usePromise","promiseFactoryCallback","defaultValueRef","optionsDefaultedRef","setIsLoading","promiseIsCurrent","MenuIcon","HamburgerMenuButton","menuProvider","normalMenu","fullMenu","containerRef","ariaLabelPrefix","isMenuOpen","setMenuOpen","showFullMenu","setShowFullMenu","handleMenuItemClick","handleMenuButtonClick","prevIsOpen","isOpening","menuCommandHandler","command","setOffset","normalMenuData","fullMenuData","menu","IconButton","Drawer","isTooltipSuppressed","adjustMarginToAlignToEdge","MuiIconButton","Spinner","LoaderCircle","TextField","hasError","helperText","onFocus","onBlur","ShadLabel","Toolbar","AppBar","MuiToolbar","alertVariants","Alert","AlertTitle","AlertDescription","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Sonner","Toaster","Slider","SliderPrimitive","Switch","SwitchPrimitives","Tabs","TabsList","TabsTrigger","TabsContent","InstallButton","isInstalling","handleClick","buttonText","Download","EnableButton","isEnabling","DisableButton","isDisabling","UpdateButton","isUpdating","MarkdownRenderer","markdown","anchorTarget","Markdown","FilterButton","Filter","DropdownMenuItemType","DropdownMenuItemType2","FilterDropdown","groups","NoExtensionsFound","MoreInfo","category","downloads","languages","moreInfoUrl","numberFormatted","NumberFormat","handleScrollToBottom","User","locale","LucideLink","CircleHelp","VersionHistory","versionHistory","showAllVersions","setShowAllVersions","currentDate","formatTimeString","dateString","date","dateDiff","yearDiff","monthDiff","dayDiff","timeString","sortedEntries","Footer","publisherDisplayName","fileSize","locales","formattedFileSize","formatBytes","languageNames","codes","displayNames","useEvent","unsubscriber","noopUnsubscriber","useEventAsync","unsubscribe","unsub"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAMA,KAAgBC,GAAoB,EAAE,QAAQ,MAAO,CAAA;AAyDpD,SAASC,KAAMC,GAAsB;AACnC,SAAAH,GAAcI,GAAKD,CAAM,CAAC;AACnC;ACzDO,MAAME,KAAQC,EAAM;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,GAASC,MAE5B,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAH;AAAA,MACA,WAAWN;AAAA,QACT;AAAA,QACAK;AAAA,MACF;AAAA,MACA,KAAAG;AAAA,MAEC,GAAGD;AAAA,IAAA;AAAA,EAAA;AAIZ;AACAJ,GAAM,cAAc;ACNpB,MAAMO,KAAmBC;AAAA,EACvB,CACE,EAAE,cAAAC,GAAc,eAAAC,GAAe,eAAAC,GAAe,cAAAC,GAAc,GAAGR,EAAM,GACrEC,MAGE,gBAAAQ,EAAC,OAAI,EAAA,WAAU,eACb,UAAA;AAAA,IAAA,gBAAAP;AAAA,MAACQ;AAAAA,MAAA;AAAA,QACE,GAAGV;AAAA,QACJ,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,CAACW,MAAUN,EAAaM,EAAM,OAAO,KAAK;AAAA,QACpD,WAAW,CAACC,MAAM;AACZ,UAAAA,EAAE,QAAQ,WACCJ,KAEfF,EAAcM,CAAC;AAAA,QACjB;AAAA,QACA,SAASL;AAAA,QACT,KAAAN;AAAA,MAAA;AAAA,IACF;AAAA,IACA,gBAAAC;AAAA,MAACW;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AAEb,kBAAQ,IAAI,iBAAiB;AAAA,QAC/B;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAGN;AC9CA,IAAIC,KAAI,OAAO,gBACXC,KAAI,CAACC,GAAGJ,GAAGK,MAAML,KAAKI,IAAIF,GAAEE,GAAGJ,GAAG,EAAE,YAAY,IAAI,cAAc,IAAI,UAAU,IAAI,OAAOK,EAAC,CAAE,IAAID,EAAEJ,CAAC,IAAIK,GACzGC,KAAI,CAACF,GAAGJ,GAAGK,MAAMF,GAAEC,GAAG,OAAOJ,KAAK,WAAWA,IAAI,KAAKA,GAAGK,CAAC;AAW9D,MAAME,KAAI;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AACF,GAAGC,KAAI;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAGC,KAAI;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[3,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,221]} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/utils/shadcn-ui.util.ts","../src/components/shadcn-ui/input.tsx","../src/components/advanced/book-chapter-control/book-chapter-input.component.tsx","../../../node_modules/@sillsdev/scripture/dist/index.es.js","../src/components/shadcn-ui/dropdown-menu.tsx","../src/components/advanced/book-chapter-control/book-menu-item.component.tsx","../src/components/advanced/book-chapter-control/chapter-select.component.tsx","../src/components/advanced/book-chapter-control/go-to-menu-item.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.component.tsx","../src/components/shadcn-ui/button.tsx","../src/components/shadcn-ui/label.tsx","../src/components/shadcn-ui/radio-group.tsx","../src/components/shadcn-ui/popover.tsx","../src/components/shadcn-ui/dialog.tsx","../src/components/shadcn-ui/command.tsx","../src/components/basics/combo-box.component.tsx","../src/components/basics/chapter-range-selector.component.tsx","../src/components/advanced/book-selector.component.tsx","../src/components/advanced/data-table/data-table-column-toggle.component.tsx","../src/components/shadcn-ui/select.tsx","../src/components/advanced/data-table/data-table-pagination.component.tsx","../src/components/shadcn-ui/table.tsx","../src/components/advanced/data-table/data-table.component.tsx","../src/components/advanced/inventory/occurrences-table.component.tsx","../src/components/shadcn-ui/checkbox.tsx","../src/components/advanced/inventory/inventory-utils.ts","../src/components/shadcn-ui/toggle.tsx","../src/components/shadcn-ui/toggle-group.tsx","../src/components/advanced/inventory/inventory-columns.tsx","../src/components/advanced/inventory/inventory.component.tsx","../src/components/basics/search-bar.component.tsx","../src/components/basics/tabs-vertical.tsx","../src/components/advanced/navigation-content-search.component.tsx","../src/components/advanced/scripture-results-viewer/scripture-results-viewer.component.tsx","../src/components/advanced/scroll-group-selector.component.tsx","../src/components/shadcn-ui/separator.tsx","../src/components/advanced/settings-components/settings-list.component.tsx","../src/components/basics/checklist.component.tsx","../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/@mui/utils/chainPropTypes/chainPropTypes.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/@mui/utils/deepmerge/deepmerge.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../../../node_modules/@mui/utils/elementAcceptingRef/elementAcceptingRef.js","../../../node_modules/@mui/utils/exactProp/exactProp.js","../../../node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/cjs/react-is.development.js","../../../node_modules/react-is/index.js","../../../node_modules/@mui/utils/getDisplayName/getDisplayName.js","../../../node_modules/@mui/utils/HTMLElementType/HTMLElementType.js","../../../node_modules/@mui/utils/refType/refType.js","../../../node_modules/@mui/utils/capitalize/capitalize.js","../../../node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../../../node_modules/@mui/utils/debounce/debounce.js","../../../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../../../node_modules/@mui/utils/isMuiElement/isMuiElement.js","../../../node_modules/@mui/utils/ownerDocument/ownerDocument.js","../../../node_modules/@mui/utils/ownerWindow/ownerWindow.js","../../../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../../../node_modules/@mui/utils/setRef/setRef.js","../../../node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/@mui/utils/useId/useId.js","../../../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../../../node_modules/@mui/utils/useControlled/useControlled.js","../../../node_modules/@mui/utils/useEventCallback/useEventCallback.js","../../../node_modules/@mui/utils/useForkRef/useForkRef.js","../../../node_modules/@mui/utils/useLazyRef/useLazyRef.js","../../../node_modules/@mui/utils/useOnMount/useOnMount.js","../../../node_modules/@mui/utils/useTimeout/useTimeout.js","../../../node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../../../node_modules/@mui/utils/resolveProps/resolveProps.js","../../../node_modules/@mui/utils/composeClasses/composeClasses.js","../../../node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../../../node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/@mui/utils/clamp/clamp.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../../../node_modules/@mui/system/esm/createTheme/shape.js","../../../node_modules/@mui/system/esm/responsivePropType.js","../../../node_modules/@mui/system/esm/merge.js","../../../node_modules/@mui/system/esm/breakpoints.js","../../../node_modules/@mui/system/esm/style.js","../../../node_modules/@mui/system/esm/memoize.js","../../../node_modules/@mui/system/esm/spacing.js","../../../node_modules/@mui/system/esm/createTheme/createSpacing.js","../../../node_modules/@mui/system/esm/compose.js","../../../node_modules/@mui/system/esm/borders.js","../../../node_modules/@mui/system/esm/cssGrid.js","../../../node_modules/@mui/system/esm/palette.js","../../../node_modules/@mui/system/esm/sizing.js","../../../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../../../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../../../node_modules/@mui/system/esm/createTheme/applyStyles.js","../../../node_modules/@mui/system/esm/createTheme/createTheme.js","../../../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../../../node_modules/@mui/system/esm/useTheme.js","../../../node_modules/@mui/system/esm/createStyled.js","../../../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../../../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../../../node_modules/@mui/system/esm/colorManipulator.js","../../../node_modules/@mui/material/styles/createMixins.js","../../../node_modules/@mui/material/colors/common.js","../../../node_modules/@mui/material/colors/grey.js","../../../node_modules/@mui/material/colors/purple.js","../../../node_modules/@mui/material/colors/red.js","../../../node_modules/@mui/material/colors/orange.js","../../../node_modules/@mui/material/colors/blue.js","../../../node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/@mui/material/colors/green.js","../../../node_modules/@mui/material/styles/createPalette.js","../../../node_modules/@mui/material/styles/createTypography.js","../../../node_modules/@mui/material/styles/shadows.js","../../../node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/@mui/material/styles/zIndex.js","../../../node_modules/@mui/material/styles/createTheme.js","../../../node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/@mui/material/styles/identifier.js","../../../node_modules/@mui/material/styles/useThemeProps.js","../../../node_modules/@mui/material/styles/styled.js","../../../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../../../node_modules/@mui/material/SvgIcon/SvgIcon.js","../../../node_modules/@mui/material/utils/createSvgIcon.js","../../../node_modules/@mui/material/utils/index.js","../../../node_modules/@mui/icons-material/utils/createSvgIcon.js","../../../node_modules/@mui/icons-material/ArrowRight.js","../../../node_modules/@mui/base/utils/isHostComponent.js","../../../node_modules/@mui/base/utils/appendOwnerState.js","../../../node_modules/@mui/base/utils/ClassNameConfigurator.js","../../../node_modules/@mui/base/utils/extractEventHandlers.js","../../../node_modules/@mui/base/utils/resolveComponentProps.js","../../../node_modules/@mui/base/utils/omitEventHandlers.js","../../../node_modules/@mui/base/utils/mergeSlotProps.js","../../../node_modules/@mui/base/utils/useSlotProps.js","../../../node_modules/@mui/base/generateUtilityClass/index.js","../../../node_modules/@mui/base/generateUtilityClasses/index.js","../../../node_modules/@mui/base/Portal/Portal.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/@mui/base/Popper/popperClasses.js","../../../node_modules/@mui/base/Popper/Popper.js","../../../node_modules/@mui/material/styles/useTheme.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/react-transition-group/esm/config.js","../../../node_modules/react-transition-group/esm/utils/PropTypes.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/@mui/material/transitions/utils.js","../../../node_modules/@mui/material/Grow/Grow.js","../../../node_modules/@mui/material/Popper/Popper.js","../../../node_modules/@mui/material/Tooltip/tooltipClasses.js","../../../node_modules/@mui/material/Tooltip/Tooltip.js","../src/components/mui/menu-item.component.tsx","../src/components/mui/grouped-menu-item-list.component.tsx","../src/components/mui/top-level-menu.component.tsx","../src/components/mui/grid-menu.component.tsx","../src/hooks/use-promise.hook.ts","../../../node_modules/@mui/icons-material/esm/Menu.js","../src/components/mui/hamburger-menu-button.component.tsx","../src/components/mui/icon-button.component.tsx","../src/components/basics/spinner.component.tsx","../src/components/basics/text-field.component.tsx","../src/components/mui/toolbar.component.tsx","../src/components/shadcn-ui/alert.tsx","../src/components/shadcn-ui/card.tsx","../src/components/shadcn-ui/sonner.tsx","../src/components/shadcn-ui/slider.tsx","../src/components/shadcn-ui/switch.tsx","../src/components/shadcn-ui/tabs.tsx","../src/components/advanced/extension-marketplace/buttons/install-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/enable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/disable-button.component.tsx","../src/components/advanced/extension-marketplace/buttons/update-button.component.tsx","../src/components/advanced/extension-marketplace/markdown-renderer.component.tsx","../src/components/advanced/extension-marketplace/buttons/filter-button.component.tsx","../src/components/advanced/extension-marketplace/filter-dropdown.component.tsx","../src/components/advanced/extension-marketplace/no-extensions-found.component.tsx","../src/components/advanced/extension-marketplace/more-info.component.tsx","../src/components/advanced/extension-marketplace/version-history.component.tsx","../src/components/advanced/extension-marketplace/footer.component.tsx","../src/hooks/use-event.hook.ts","../src/hooks/use-event-async.hook.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMergeCustom = extendTailwindMerge({ prefix: 'tw-' });\n\n/**\n * Tailwind and CSS class application helper function. Uses\n * [`clsx`](https://www.npmjs.com/package/clsx) to make it easy to apply classes conditionally using\n * object syntax, and uses [`tailwind-merge`](https://www.npmjs.com/package/tailwind-merge) to make\n * it easy to merge/overwrite Tailwind classes in a programmer-logic-friendly way.\n *\n * Note: `tailwind-merge` is configured to use the prefix `tw-`, so you must use the same prefix\n * with any Tailwind classes you use with this function to successfully overwrite other Tailwind\n * classes. `platform-bible-react` is configured to use `tw-` as its Tailwind prefix, so any\n * Tailwind classes you pass into `platform-bible-react` components will be compared using the `tw-`\n * prefix.\n *\n * This function was popularized by\n * [shadcn/ui](https://ui.shadcn.com/docs/installation/manual#add-a-cn-helper). See [ByteGrad's\n * explanation video](https://www.youtube.com/watch?v=re2JFITR7TI) for more information.\n *\n * @example\n *\n * ```typescript\n * const borderShouldBeBlue = true;\n * const textShouldBeRed = true;\n * const heightShouldBe20 = false;\n * const classString = cn(\n * 'tw-bg-primary tw-h-10 tw-text-primary-foreground',\n * 'tw-bg-secondary',\n * {\n * 'tw-border-blue-500': borderShouldBeBlue,\n * 'tw-text-red-500': textShouldBeRed,\n * 'tw-h-20': heightShouldBe20,\n * },\n * 'some-class',\n * );\n * ```\n *\n * The resulting `classString` is `'tw-h-10 tw-bg-secondary tw-border-blue-500 tw-text-red-500\n * some-class'`\n *\n * - Notice that `'tw-bg-secondary'`, specified later, overwrote `'tw-bg-primary'`, specified earlier,\n * because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-text-red-500'`, specified later, overwrote `'tw-text-primary-foreground'`,\n * specified earlier, because they are Tailwind classes that affect the same css property\n * - Notice that `'tw-h-20'`, specified later, did not overwrite `'tw-h-10'`, specified earlier,\n * because `'tw-h-20'` is part of a conditional class object and its value evaluated to `false`;\n * therefore it was not applied\n * - Notice that `'some-class'` was applied. This function is not limited only to Tailwind classes.\n *\n *\n * @param inputs Class strings or `clsx` conditional class objects to merge. Tailwind classes\n * specified later in the arguments overwrite similar Tailwind classes specified earlier in the\n * arguments\n * @returns Class string containing all applicable classes from the arguments based on the rules\n * described above\n */\n// shadcn/ui uses this export in its boilerplate code\n// eslint-disable-next-line import/prefer-default-export\nexport function cn(...inputs: ClassValue[]) {\n return twMergeCustom(clsx(inputs));\n}\n","import React from 'react';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport interface InputProps extends React.InputHTMLAttributes {}\n\nexport const Input = React.forwardRef(\n ({ className, type, ...props }, ref) => {\n return (\n \n );\n },\n);\nInput.displayName = 'Input';\n","import { FocusEventHandler, forwardRef, KeyboardEvent, MouseEventHandler } from 'react';\nimport { History } from 'lucide-react';\nimport { Input as ShadInput } from '@/components/shadcn-ui/input';\n\nexport type BookChapterInputProps = {\n handleSearch: (searchString: string) => void;\n handleKeyDown: (event: KeyboardEvent) => void;\n handleOnClick: MouseEventHandler;\n handleSubmit: () => void;\n onFocus?: FocusEventHandler;\n value: string;\n placeholder: string;\n};\n\n// Shadcn Input sets type to \"button\"- HAVE to prop spread before setting type\nconst BookChapterInput = forwardRef(\n (\n { handleSearch, handleKeyDown, handleOnClick, handleSubmit, ...props }: BookChapterInputProps,\n ref,\n ) => {\n return (\n
\n handleSearch(event.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n handleKeyDown(e);\n }}\n onClick={handleOnClick}\n ref={ref}\n />\n {\n // eslint-disable-next-line no-console\n console.log('back in history');\n }}\n />\n
\n );\n },\n);\n\nexport default BookChapterInput;\n","var P = Object.defineProperty;\nvar R = (t, e, s) => e in t ? P(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar n = (t, e, s) => R(t, typeof e != \"symbol\" ? e + \"\" : e, s);\nclass _ {\n constructor() {\n n(this, \"books\");\n n(this, \"firstSelectedBookNum\");\n n(this, \"lastSelectedBookNum\");\n n(this, \"count\");\n n(this, \"selectedBookNumbers\");\n n(this, \"selectedBookIds\");\n }\n}\nconst N = [\n \"GEN\",\n \"EXO\",\n \"LEV\",\n \"NUM\",\n \"DEU\",\n \"JOS\",\n \"JDG\",\n \"RUT\",\n \"1SA\",\n \"2SA\",\n // 10\n \"1KI\",\n \"2KI\",\n \"1CH\",\n \"2CH\",\n \"EZR\",\n \"NEH\",\n \"EST\",\n \"JOB\",\n \"PSA\",\n \"PRO\",\n // 20\n \"ECC\",\n \"SNG\",\n \"ISA\",\n \"JER\",\n \"LAM\",\n \"EZK\",\n \"DAN\",\n \"HOS\",\n \"JOL\",\n \"AMO\",\n // 30\n \"OBA\",\n \"JON\",\n \"MIC\",\n \"NAM\",\n \"HAB\",\n \"ZEP\",\n \"HAG\",\n \"ZEC\",\n \"MAL\",\n \"MAT\",\n // 40\n \"MRK\",\n \"LUK\",\n \"JHN\",\n \"ACT\",\n \"ROM\",\n \"1CO\",\n \"2CO\",\n \"GAL\",\n \"EPH\",\n \"PHP\",\n // 50\n \"COL\",\n \"1TH\",\n \"2TH\",\n \"1TI\",\n \"2TI\",\n \"TIT\",\n \"PHM\",\n \"HEB\",\n \"JAS\",\n \"1PE\",\n // 60\n \"2PE\",\n \"1JN\",\n \"2JN\",\n \"3JN\",\n \"JUD\",\n \"REV\",\n \"TOB\",\n \"JDT\",\n \"ESG\",\n \"WIS\",\n // 70\n \"SIR\",\n \"BAR\",\n \"LJE\",\n \"S3Y\",\n \"SUS\",\n \"BEL\",\n \"1MA\",\n \"2MA\",\n \"3MA\",\n \"4MA\",\n // 80\n \"1ES\",\n \"2ES\",\n \"MAN\",\n \"PS2\",\n \"ODA\",\n \"PSS\",\n \"JSA\",\n // actual variant text for JOS, now in LXA text\n \"JDB\",\n // actual variant text for JDG, now in LXA text\n \"TBS\",\n // actual variant text for TOB, now in LXA text\n \"SST\",\n // actual variant text for SUS, now in LXA text // 90\n \"DNT\",\n // actual variant text for DAN, now in LXA text\n \"BLT\",\n // actual variant text for BEL, now in LXA text\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n // 100\n \"BAK\",\n \"OTH\",\n \"3ES\",\n // Used previously but really should be 2ES\n \"EZA\",\n // Used to be called 4ES, but not actually in any known project\n \"5EZ\",\n // Used to be called 5ES, but not actually in any known project\n \"6EZ\",\n // Used to be called 6ES, but not actually in any known project\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n // 110\n \"NDX\",\n \"DAG\",\n \"PS3\",\n \"2BA\",\n \"LBA\",\n \"JUB\",\n \"ENO\",\n \"1MQ\",\n \"2MQ\",\n \"3MQ\",\n // 120\n \"REP\",\n \"4BA\",\n \"LAO\"\n], B = [\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n \"BAK\",\n \"OTH\",\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n \"NDX\"\n], O = [\n \"Genesis\",\n \"Exodus\",\n \"Leviticus\",\n \"Numbers\",\n \"Deuteronomy\",\n \"Joshua\",\n \"Judges\",\n \"Ruth\",\n \"1 Samuel\",\n \"2 Samuel\",\n \"1 Kings\",\n \"2 Kings\",\n \"1 Chronicles\",\n \"2 Chronicles\",\n \"Ezra\",\n \"Nehemiah\",\n \"Esther (Hebrew)\",\n \"Job\",\n \"Psalms\",\n \"Proverbs\",\n \"Ecclesiastes\",\n \"Song of Songs\",\n \"Isaiah\",\n \"Jeremiah\",\n \"Lamentations\",\n \"Ezekiel\",\n \"Daniel (Hebrew)\",\n \"Hosea\",\n \"Joel\",\n \"Amos\",\n \"Obadiah\",\n \"Jonah\",\n \"Micah\",\n \"Nahum\",\n \"Habakkuk\",\n \"Zephaniah\",\n \"Haggai\",\n \"Zechariah\",\n \"Malachi\",\n \"Matthew\",\n \"Mark\",\n \"Luke\",\n \"John\",\n \"Acts\",\n \"Romans\",\n \"1 Corinthians\",\n \"2 Corinthians\",\n \"Galatians\",\n \"Ephesians\",\n \"Philippians\",\n \"Colossians\",\n \"1 Thessalonians\",\n \"2 Thessalonians\",\n \"1 Timothy\",\n \"2 Timothy\",\n \"Titus\",\n \"Philemon\",\n \"Hebrews\",\n \"James\",\n \"1 Peter\",\n \"2 Peter\",\n \"1 John\",\n \"2 John\",\n \"3 John\",\n \"Jude\",\n \"Revelation\",\n \"Tobit\",\n \"Judith\",\n \"Esther Greek\",\n \"Wisdom of Solomon\",\n \"Sirach (Ecclesiasticus)\",\n \"Baruch\",\n \"Letter of Jeremiah\",\n \"Song of 3 Young Men\",\n \"Susanna\",\n \"Bel and the Dragon\",\n \"1 Maccabees\",\n \"2 Maccabees\",\n \"3 Maccabees\",\n \"4 Maccabees\",\n \"1 Esdras (Greek)\",\n \"2 Esdras (Latin)\",\n \"Prayer of Manasseh\",\n \"Psalm 151\",\n \"Odes\",\n \"Psalms of Solomon\",\n // WARNING, if you change the spelling of the *obsolete* tag be sure to update\n // IsObsolete routine\n \"Joshua A. *obsolete*\",\n \"Judges B. *obsolete*\",\n \"Tobit S. *obsolete*\",\n \"Susanna Th. *obsolete*\",\n \"Daniel Th. *obsolete*\",\n \"Bel Th. *obsolete*\",\n \"Extra A\",\n \"Extra B\",\n \"Extra C\",\n \"Extra D\",\n \"Extra E\",\n \"Extra F\",\n \"Extra G\",\n \"Front Matter\",\n \"Back Matter\",\n \"Other Matter\",\n \"3 Ezra *obsolete*\",\n \"Apocalypse of Ezra\",\n \"5 Ezra (Latin Prologue)\",\n \"6 Ezra (Latin Epilogue)\",\n \"Introduction\",\n \"Concordance \",\n \"Glossary \",\n \"Topical Index\",\n \"Names Index\",\n \"Daniel Greek\",\n \"Psalms 152-155\",\n \"2 Baruch (Apocalypse)\",\n \"Letter of Baruch\",\n \"Jubilees\",\n \"Enoch\",\n \"1 Meqabyan\",\n \"2 Meqabyan\",\n \"3 Meqabyan\",\n \"Reproof (Proverbs 25-31)\",\n \"4 Baruch (Rest of Baruch)\",\n \"Laodiceans\"\n], S = K();\nfunction g(t, e = !0) {\n return e && (t = t.toUpperCase()), t in S ? S[t] : 0;\n}\nfunction k(t) {\n return g(t) > 0;\n}\nfunction x(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return e >= 40 && e <= 66;\n}\nfunction T(t) {\n return (typeof t == \"string\" ? g(t) : t) <= 39;\n}\nfunction X(t) {\n return t <= 66;\n}\nfunction V(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return w(e) && !X(e);\n}\nfunction* L() {\n for (let t = 1; t <= N.length; t++) yield t;\n}\nconst G = 1, A = N.length;\nfunction H() {\n return [\"XXA\", \"XXB\", \"XXC\", \"XXD\", \"XXE\", \"XXF\", \"XXG\"];\n}\nfunction C(t, e = \"***\") {\n const s = t - 1;\n return s < 0 || s >= N.length ? e : N[s];\n}\nfunction I(t) {\n return t <= 0 || t > A ? \"******\" : O[t - 1];\n}\nfunction y(t) {\n return I(g(t));\n}\nfunction w(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && !B.includes(e);\n}\nfunction q(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && B.includes(e);\n}\nfunction U(t) {\n return O[t - 1].includes(\"*obsolete*\");\n}\nfunction K() {\n const t = {};\n for (let e = 0; e < N.length; e++)\n t[N[e]] = e + 1;\n return t;\n}\nconst m = {\n allBookIds: N,\n nonCanonicalIds: B,\n bookIdToNumber: g,\n isBookIdValid: k,\n isBookNT: x,\n isBookOT: T,\n isBookOTNT: X,\n isBookDC: V,\n allBookNumbers: L,\n firstBook: G,\n lastBook: A,\n extraBooks: H,\n bookNumberToId: C,\n bookNumberToEnglishName: I,\n bookIdToEnglishName: y,\n isCanonical: w,\n isExtraMaterial: q,\n isObsolete: U\n};\nvar l = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = \"Unknown\", t[t.Original = 1] = \"Original\", t[t.Septuagint = 2] = \"Septuagint\", t[t.Vulgate = 3] = \"Vulgate\", t[t.English = 4] = \"English\", t[t.RussianProtestant = 5] = \"RussianProtestant\", t[t.RussianOrthodox = 6] = \"RussianOrthodox\", t))(l || {});\nconst h = class h {\n // private versInfo: Versification;\n constructor(e) {\n n(this, \"name\");\n n(this, \"fullPath\");\n n(this, \"isPresent\");\n n(this, \"hasVerseSegments\");\n n(this, \"isCustomized\");\n n(this, \"baseVersification\");\n n(this, \"scriptureBooks\");\n n(this, \"_type\");\n if (e == null)\n throw new Error(\"Argument undefined\");\n typeof e == \"string\" ? (this.name = e, this._type = l[e]) : (this._type = e, this.name = l[e]);\n }\n get type() {\n return this._type;\n }\n equals(e) {\n return !e.type || !this.type ? !1 : e.type === this.type;\n }\n};\nn(h, \"Original\", new h(l.Original)), n(h, \"Septuagint\", new h(l.Septuagint)), n(h, \"Vulgate\", new h(l.Vulgate)), n(h, \"English\", new h(l.English)), n(h, \"RussianProtestant\", new h(l.RussianProtestant)), n(h, \"RussianOrthodox\", new h(l.RussianOrthodox));\nlet c = h;\nfunction E(t, e) {\n const s = e[0];\n for (let r = 1; r < e.length; r++)\n t = t.split(e[r]).join(s);\n return t.split(s);\n}\nvar D = /* @__PURE__ */ ((t) => (t[t.Valid = 0] = \"Valid\", t[t.UnknownVersification = 1] = \"UnknownVersification\", t[t.OutOfRange = 2] = \"OutOfRange\", t[t.VerseOutOfOrder = 3] = \"VerseOutOfOrder\", t[t.VerseRepeated = 4] = \"VerseRepeated\", t))(D || {});\nconst i = class i {\n constructor(e, s, r, a) {\n /** Not yet implemented. */\n n(this, \"firstChapter\");\n /** Not yet implemented. */\n n(this, \"lastChapter\");\n /** Not yet implemented. */\n n(this, \"lastVerse\");\n /** Not yet implemented. */\n n(this, \"hasSegmentsDefined\");\n /** Not yet implemented. */\n n(this, \"text\");\n /** Not yet implemented. */\n n(this, \"BBBCCCVVVS\");\n /** Not yet implemented. */\n n(this, \"longHashCode\");\n /** The versification of the reference. */\n n(this, \"versification\");\n n(this, \"rtlMark\", \"‏\");\n n(this, \"_bookNum\", 0);\n n(this, \"_chapterNum\", 0);\n n(this, \"_verseNum\", 0);\n n(this, \"_verse\");\n if (r == null && a == null)\n if (e != null && typeof e == \"string\") {\n const o = e, u = s != null && s instanceof c ? s : void 0;\n this.setEmpty(u), this.parse(o);\n } else if (e != null && typeof e == \"number\") {\n const o = s != null && s instanceof c ? s : void 0;\n this.setEmpty(o), this._verseNum = e % i.chapterDigitShifter, this._chapterNum = Math.floor(\n e % i.bookDigitShifter / i.chapterDigitShifter\n ), this._bookNum = Math.floor(e / i.bookDigitShifter);\n } else if (s == null)\n if (e != null && e instanceof i) {\n const o = e;\n this._bookNum = o.bookNum, this._chapterNum = o.chapterNum, this._verseNum = o.verseNum, this._verse = o.verse, this.versification = o.versification;\n } else {\n if (e == null) return;\n const o = e instanceof c ? e : i.defaultVersification;\n this.setEmpty(o);\n }\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else if (e != null && s != null && r != null)\n if (typeof e == \"string\" && typeof s == \"string\" && typeof r == \"string\")\n this.setEmpty(a), this.updateInternal(e, s, r);\n else if (typeof e == \"number\" && typeof s == \"number\" && typeof r == \"number\")\n this._bookNum = e, this._chapterNum = s, this._verseNum = r, this.versification = a ?? i.defaultVersification;\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else\n throw new Error(\"VerseRef constructor not supported.\");\n }\n /**\n * Determines if the verse string is in a valid format (does not consider versification).\n */\n static isVerseParseable(e) {\n return e.length > 0 && \"0123456789\".includes(e[0]) && !e.endsWith(this.verseRangeSeparator) && !e.endsWith(this.verseSequenceIndicator);\n }\n /**\n * Tries to parse the specified string into a verse reference.\n * @param str - The string to attempt to parse.\n * @returns success: `true` if the specified string was successfully parsed, `false` otherwise.\n * @returns verseRef: The result of the parse if successful, or empty VerseRef if it failed\n */\n static tryParse(e) {\n let s;\n try {\n return s = new i(e), { success: !0, verseRef: s };\n } catch (r) {\n if (r instanceof v)\n return s = new i(), { success: !1, verseRef: s };\n throw r;\n }\n }\n /**\n * Gets the reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n * @param bookNum - Book number (this is 1-based, not an index).\n * @param chapterNum - Chapter number.\n * @param verseNum - Verse number.\n * @returns The reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n */\n static getBBBCCCVVV(e, s, r) {\n return e % i.bcvMaxValue * i.bookDigitShifter + (s >= 0 ? s % i.bcvMaxValue * i.chapterDigitShifter : 0) + (r >= 0 ? r % i.bcvMaxValue : 0);\n }\n /**\n * Deserializes a serialized VerseRef.\n * @param serializedVerseRef - Serialized VerseRef to create from.\n * @returns the deserialized VerseRef.\n */\n static fromJSON(e) {\n const { book: s, chapterNum: r, verseNum: a, verse: o, versificationStr: u } = e, f = o || a.toString();\n let d;\n return u && (d = new c(u)), s ? new i(s, r.toString(), f, d) : new i();\n }\n /**\n * Parses a verse string and gets the leading numeric portion as a number.\n * @param verseStr - verse string to parse\n * @returns true if the entire string could be parsed as a single, simple verse number (1-999);\n * false if the verse string represented a verse bridge, contained segment letters, or was invalid\n */\n static tryGetVerseNum(e) {\n let s;\n if (!e)\n return s = -1, { success: !0, vNum: s };\n s = 0;\n let r;\n for (let a = 0; a < e.length; a++) {\n if (r = e[a], r < \"0\" || r > \"9\")\n return a === 0 && (s = -1), { success: !1, vNum: s };\n if (s = s * 10 + +r - 0, s > i.bcvMaxValue)\n return s = -1, { success: !1, vNum: s };\n }\n return { success: !0, vNum: s };\n }\n /**\n * Checks to see if a VerseRef hasn't been set - all values are the default.\n */\n get isDefault() {\n return this.bookNum === 0 && this.chapterNum === 0 && this.verseNum === 0 && this.versification == null;\n }\n /**\n * Gets whether the verse contains multiple verses.\n */\n get hasMultiple() {\n return this._verse != null && (this._verse.includes(i.verseRangeSeparator) || this._verse.includes(i.verseSequenceIndicator));\n }\n /**\n * Gets or sets the book of the reference. Book is the 3-letter abbreviation in capital letters,\n * e.g. `'MAT'`.\n */\n get book() {\n return m.bookNumberToId(this.bookNum, \"\");\n }\n set book(e) {\n this.bookNum = m.bookIdToNumber(e);\n }\n /**\n * Gets or sets the chapter of the reference,. e.g. `'3'`.\n */\n get chapter() {\n return this.isDefault || this._chapterNum < 0 ? \"\" : this._chapterNum.toString();\n }\n set chapter(e) {\n const s = +e;\n this._chapterNum = Number.isInteger(s) ? s : -1;\n }\n /**\n * Gets or sets the verse of the reference, including range, segments, and sequences, e.g. `'4'`,\n * or `'4b-5a, 7'`.\n */\n get verse() {\n return this._verse != null ? this._verse : this.isDefault || this._verseNum < 0 ? \"\" : this._verseNum.toString();\n }\n set verse(e) {\n const { success: s, vNum: r } = i.tryGetVerseNum(e);\n this._verse = s ? void 0 : e.replace(this.rtlMark, \"\"), this._verseNum = r, !(this._verseNum >= 0) && ({ vNum: this._verseNum } = i.tryGetVerseNum(this._verse));\n }\n /**\n * Get or set Book based on book number, e.g. `42`.\n */\n get bookNum() {\n return this._bookNum;\n }\n set bookNum(e) {\n if (e <= 0 || e > m.lastBook)\n throw new v(\n \"BookNum must be greater than zero and less than or equal to last book\"\n );\n this._bookNum = e;\n }\n /**\n * Gets or sets the chapter number, e.g. `3`. `-1` if not valid.\n */\n get chapterNum() {\n return this._chapterNum;\n }\n set chapterNum(e) {\n this.chapterNum = e;\n }\n /**\n * Gets or sets verse start number, e.g. `4`. `-1` if not valid.\n */\n get verseNum() {\n return this._verseNum;\n }\n set verseNum(e) {\n this._verseNum = e;\n }\n /**\n * String representing the versification (should ONLY be used for serialization/deserialization).\n *\n * @remarks This is for backwards compatibility when ScrVers was an enumeration.\n */\n get versificationStr() {\n var e;\n return (e = this.versification) == null ? void 0 : e.name;\n }\n set versificationStr(e) {\n this.versification = this.versification != null ? new c(e) : void 0;\n }\n /**\n * Determines if the reference is valid.\n */\n get valid() {\n return this.validStatus === 0;\n }\n /**\n * Get the valid status for this reference.\n */\n get validStatus() {\n return this.validateVerse(i.verseRangeSeparators, i.verseSequenceIndicators);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits and the verse is 0.\n */\n get BBBCCC() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, 0);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits. If verse is not null\n * (i.e., this reference represents a complex reference with verse\n * segments or bridge) this cannot be used for an exact comparison.\n */\n get BBBCCCVVV() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, this._verseNum);\n }\n /**\n * Gets whether the verse is defined as an excluded verse in the versification.\n * Does not handle verse ranges.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get isExcluded() {\n return !1;\n }\n /**\n * Parses the reference in the specified string.\n * Optionally versification can follow reference as in GEN 3:11/4\n * Throw an exception if\n * - invalid book name\n * - chapter number is missing or not a number\n * - verse number is missing or does not start with a number\n * - versification is invalid\n * @param verseStr - string to parse e.g. 'MAT 3:11'\n */\n parse(e) {\n if (e = e.replace(this.rtlMark, \"\"), e.includes(\"/\")) {\n const o = e.split(\"/\");\n if (e = o[0], o.length > 1)\n try {\n const u = +o[1].trim();\n this.versification = new c(l[u]);\n } catch {\n throw new v(\"Invalid reference : \" + e);\n }\n }\n const s = e.trim().split(\" \");\n if (s.length !== 2)\n throw new v(\"Invalid reference : \" + e);\n const r = s[1].split(\":\"), a = +r[0];\n if (r.length !== 2 || m.bookIdToNumber(s[0]) === 0 || !Number.isInteger(a) || a < 0 || !i.isVerseParseable(r[1]))\n throw new v(\"Invalid reference : \" + e);\n this.updateInternal(s[0], r[0], r[1]);\n }\n /**\n * Simplifies this verse ref so that it has no bridging of verses or\n * verse segments like `'1a'`.\n */\n simplify() {\n this._verse = void 0;\n }\n /**\n * Makes a clone of the reference.\n *\n * @returns The cloned VerseRef.\n */\n clone() {\n return new i(this);\n }\n toString() {\n const e = this.book;\n return e === \"\" ? \"\" : `${e} ${this.chapter}:${this.verse}`;\n }\n toJSON() {\n let e = this.verse;\n (e === \"\" || e === this.verseNum.toString()) && (e = void 0);\n const s = {\n book: this.book,\n chapterNum: this.chapterNum,\n verseNum: this.verseNum,\n verse: e,\n versificationStr: this.versificationStr\n };\n return e || delete s.verse, s;\n }\n /**\n * Compares this `VerseRef` with supplied one.\n * @param verseRef - object to compare this one to.\n * @returns `true` if this `VerseRef` is equal to the supplied one, `false` otherwise.\n */\n equals(e) {\n return e instanceof i ? e._bookNum === this._bookNum && e._chapterNum === this._chapterNum && e._verseNum === this._verseNum && e.verse === this.verse && (e.versification == null && this.versification == null || e.versification != null && this.versification != null && e.versification.equals(this.versification)) : !1;\n }\n /**\n * Enumerate all individual verses contained in a VerseRef.\n * Verse ranges are indicated by \"-\" and consecutive verses by \",\"s.\n * Examples:\n * GEN 1:2 returns GEN 1:2\n * GEN 1:1a-3b,5 returns GEN 1:1a, GEN 1:2, GEN 1:3b, GEN 1:5\n * GEN 1:2a-2c returns //! ??????\n *\n * @param specifiedVersesOnly - if set to true return only verses that are\n * explicitly specified only, not verses within a range. Defaults to `false`.\n * @param verseRangeSeparators - Verse range separators.\n * Defaults to `VerseRef.verseRangeSeparators`.\n * @param verseSequenceSeparators - Verse sequence separators.\n * Defaults to `VerseRef.verseSequenceIndicators`.\n * @returns An array of all single verse references in this VerseRef.\n */\n allVerses(e = !1, s = i.verseRangeSeparators, r = i.verseSequenceIndicators) {\n if (this._verse == null || this.chapterNum <= 0)\n return [this.clone()];\n const a = [], o = E(this._verse, r);\n for (const u of o.map((f) => E(f, s))) {\n const f = this.clone();\n f.verse = u[0];\n const d = f.verseNum;\n if (a.push(f), u.length > 1) {\n const b = this.clone();\n if (b.verse = u[1], !e)\n for (let p = d + 1; p < b.verseNum; p++) {\n const J = new i(\n this._bookNum,\n this._chapterNum,\n p,\n this.versification\n );\n this.isExcluded || a.push(J);\n }\n a.push(b);\n }\n }\n return a;\n }\n /**\n * Validates a verse number using the supplied separators rather than the defaults.\n */\n validateVerse(e, s) {\n if (!this.verse)\n return this.internalValid;\n let r = 0;\n for (const a of this.allVerses(!0, e, s)) {\n const o = a.internalValid;\n if (o !== 0)\n return o;\n const u = a.BBBCCCVVV;\n if (r > u)\n return 3;\n if (r === u)\n return 4;\n r = u;\n }\n return 0;\n }\n /**\n * Gets whether a single verse reference is valid.\n */\n get internalValid() {\n return this.versification == null ? 1 : this._bookNum <= 0 || this._bookNum > m.lastBook ? 2 : (m.isCanonical(this._bookNum), 0);\n }\n setEmpty(e = i.defaultVersification) {\n this._bookNum = 0, this._chapterNum = -1, this._verse = void 0, this.versification = e;\n }\n updateInternal(e, s, r) {\n this.bookNum = m.bookIdToNumber(e), this.chapter = s, this.verse = r;\n }\n};\nn(i, \"defaultVersification\", c.English), n(i, \"verseRangeSeparator\", \"-\"), n(i, \"verseSequenceIndicator\", \",\"), n(i, \"verseRangeSeparators\", [i.verseRangeSeparator]), n(i, \"verseSequenceIndicators\", [i.verseSequenceIndicator]), n(i, \"chapterDigitShifter\", 1e3), n(i, \"bookDigitShifter\", i.chapterDigitShifter * i.chapterDigitShifter), n(i, \"bcvMaxValue\", i.chapterDigitShifter - 1), /**\n * The valid status of the VerseRef.\n */\nn(i, \"ValidStatusType\", D);\nlet M = i;\nclass v extends Error {\n}\nexport {\n _ as BookSet,\n m as Canon,\n c as ScrVers,\n l as ScrVersType,\n M as VerseRef,\n v as VerseRefException\n};\n//# sourceMappingURL=index.es.js.map\n","import React from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root;\n\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nexport const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nexport type DropdownMenuSubTriggerProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSubContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.SubContent\n> & {\n className?: string;\n};\n\nexport type DropdownMenuContentProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Content\n> & {\n className?: string;\n sideOffset?: number;\n};\n\nexport type DropdownMenuItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Item\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuCheckboxItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.CheckboxItem\n> & {\n className?: string;\n checked?: boolean;\n};\n\nexport type DropdownMenuRadioItemProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.RadioItem\n> & {\n className?: string;\n};\n\nexport type DropdownMenuLabelProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Label\n> & {\n className?: string;\n inset?: boolean;\n};\n\nexport type DropdownMenuSeparatorProps = React.ComponentPropsWithoutRef<\n typeof DropdownMenuPrimitive.Separator\n> & {\n className?: string;\n};\n\nexport type DropdownMenuShortcutProps = React.HTMLAttributes & {\n className?: string;\n};\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubTriggerProps\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef,\n DropdownMenuContentProps\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\n/**\n * TODO: fix: direction is not automatically handled by this component, so that shortcuts are\n * display always to the right\n */\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuItemProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuCheckboxItemProps\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef,\n DropdownMenuLabelProps\n>(({ className, inset, ...props }, ref) => (\n \n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n \n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nexport function DropdownMenuShortcut({ className, ...props }: DropdownMenuShortcutProps) {\n return (\n \n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n","import { Canon } from '@sillsdev/scripture';\nimport { PropsWithChildren, KeyboardEvent, forwardRef } from 'react';\nimport { DropdownMenuItem as ShadDropdownMenuItem } from '@/components/shadcn-ui/dropdown-menu';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport type BookType = 'OT' | 'NT' | 'DC';\n\ntype BookMenuItemProps = PropsWithChildren<{\n /** String id of book */\n bookId: string;\n /** Callback to run when a book menu item is selected */\n handleSelectBook: () => void;\n /** Indicates if this menu item is currently selected */\n isSelected: boolean;\n /** Function that is called upon highlighting a book in the dropdown menu */\n handleHighlightBook: () => void;\n /**\n * Function that is called on pressing a key\n *\n * @param event Event that contains information about the key stroke\n */\n handleKeyDown: (event: KeyboardEvent) => void;\n /**\n * Type of book associated with this menu item, coordinates color labels ? Mock up has the labels\n * coordinated to genre\n */\n bookType: BookType;\n}>;\n\nconst BookMenuItem = forwardRef(\n (\n {\n bookId,\n handleSelectBook,\n isSelected,\n handleHighlightBook,\n handleKeyDown,\n bookType,\n children,\n }: BookMenuItemProps,\n ref,\n ) => {\n return (\n {\n // preventDefault() here prevents the entire dropdown menu from closing when selecting this item\n event.preventDefault();\n handleSelectBook();\n }}\n onKeyDown={(event: KeyboardEvent) => {\n handleKeyDown(event);\n }}\n onFocus={handleHighlightBook}\n onMouseMove={handleHighlightBook}\n >\n \n {Canon.bookIdToEnglishName(bookId)}\n \n {isSelected &&
{children}
}\n \n );\n },\n);\n\nexport default BookMenuItem;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { useCallback } from 'react';\n\nexport type ChapterSelectProps = {\n /**\n * Callback to run when a chapter div is selected\n *\n * @param chapterNumber Number of the chapter that has been selected\n */\n handleSelectChapter: (chapterNumber: number) => void;\n /** The highest chapter number in the book (of course equal to number of chapters in the book) */\n endChapter: number;\n /** The chapter number that is currently selected */\n activeChapter: number;\n /** The chapter number that is currently highlighted using keyboard or mouse navigation */\n highlightedChapter: number;\n /**\n * Callback to run when a chapter is highlighted by the user\n *\n * @param chapterNumber The chapter that is highlighted\n */\n handleHighlightedChapter: (chapterNumber: number) => void;\n};\n\nfunction ChapterSelect({\n handleSelectChapter,\n endChapter,\n activeChapter,\n highlightedChapter,\n handleHighlightedChapter,\n}: ChapterSelectProps) {\n const chapters = Array.from({ length: endChapter }, (_, i) => i + 1);\n\n const handleMouse = useCallback(\n (chapterNumber: number) => {\n handleHighlightedChapter(chapterNumber);\n },\n [handleHighlightedChapter],\n );\n\n return (\n
\n {chapters.map((chapter) => (\n {\n event.preventDefault();\n event.stopPropagation();\n handleSelectChapter(chapter);\n }}\n role=\"button\"\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n handleSelectChapter(chapter);\n }\n }}\n tabIndex={0}\n onMouseMove={() => handleMouse(chapter)}\n >\n {chapter}\n
\n ))}\n
\n );\n}\n\nexport default ChapterSelect;\n","import { DropdownMenuLabel as ShadDropdownMenuLabel } from '@/components/shadcn-ui/dropdown-menu';\nimport { Bookmark, Clock, ArrowDownWideNarrow } from 'lucide-react';\n\nexport type GoToMenuItemProps = {\n handleSort: () => void;\n handleLocationHistory: () => void;\n handleBookmarks: () => void;\n};\n\nfunction GoToMenuItem({ handleSort, handleLocationHistory, handleBookmarks }: GoToMenuItemProps) {\n return (\n \n

Go To

\n
\n \n \n \n
\n
\n );\n}\n\nexport default GoToMenuItem;\n","import BookChapterInput from '@/components/advanced/book-chapter-control/book-chapter-input.component';\nimport BookMenuItem, {\n BookType,\n} from '@/components/advanced/book-chapter-control/book-menu-item.component';\nimport ChapterSelect from '@/components/advanced/book-chapter-control/chapter-select.component';\nimport GoToMenuItem from '@/components/advanced/book-chapter-control/go-to-menu-item.component';\nimport {\n DropdownMenu as ShadDropdownMenu,\n DropdownMenuContent as ShadDropdownMenuContent,\n DropdownMenuLabel as ShadDropdownMenuLabel,\n DropdownMenuSeparator as ShadDropdownMenuSeparator,\n DropdownMenuTrigger as ShadDropdownMenuTrigger,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference, getChaptersForBook } from 'platform-bible-utils';\nimport {\n KeyboardEvent as ReactKeyboardEvent,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\ntype BookTypeLabels = {\n [bookType in BookType]: string;\n};\ntype BookChapterControlProps = {\n scrRef: ScriptureReference;\n handleSubmit: (scrRef: ScriptureReference) => void;\n};\n\nconst ALL_BOOK_IDS = Canon.allBookIds;\nconst BOOK_TYPE_LABELS: BookTypeLabels = {\n OT: 'Old Testament',\n NT: 'New Testament',\n DC: 'Deuterocanon',\n};\nconst BOOK_TYPE_ARRAY: BookType[] = ['OT', 'NT', 'DC'];\n// This is the height of three menu items to offset scrolling to the selected menu item\n// If you use menuItemRef.clientHeight- includes height of chapter div which is too big\nconst SCROLL_OFFSET = 32 + 32 + 32;\nconst SEARCH_QUERY_FORMATS = [\n /^(\\w+)$/i, // Matches a single word (book name or id)\n /^(\\w+)(?:\\s(\\d+))$/i, // Matches a word followed by a chapter number\n /^(\\w+)(?:\\s(\\d+):(\\d+))$/i, // Matches a word followed by a chapter and verse number\n];\nconst fetchGroupedBooks = (bookType: BookType) => {\n const groupedBooks = {\n OT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookOT(bookId)),\n NT: ALL_BOOK_IDS.filter((bookId) => Canon.isBookNT(bookId)),\n DC: ALL_BOOK_IDS.filter((bookId) => Canon.isBookDC(bookId)),\n };\n return groupedBooks[bookType];\n};\nconst fetchEndChapter = (bookId: string) => {\n // getChaptersForBook returns -1 if not found in scrBookData\n // scrBookData only includes OT and NT, so all DC will return -1\n return getChaptersForBook(Canon.bookIdToNumber(bookId));\n};\n\n/**\n * Gets all of the English names from book ids\n *\n * @returns String[]\n */\nfunction getAllEnglishNames(): string[] {\n const allEnglishNames = ALL_BOOK_IDS.map((bookId) => {\n return Canon.bookIdToEnglishName(bookId);\n });\n return allEnglishNames;\n}\n\n/**\n * Determines if bookName is in allEnglishNames\n *\n * @param bookName Book English name\n * @returns True if bookName is included, false otherwise\n */\nfunction isValidBookEnglishName(bookName: string): boolean {\n return getAllEnglishNames().includes(bookName);\n}\n\n/**\n * Gets a bookId from given English name\n *\n * @param bookName Book English name\n * @returns BookId of provided bookName, undefined otherwise\n */\nfunction getBookIdFromEnglishName(bookName: string): string | undefined {\n // Convert bookName to lowercase and then capitalize the first letter\n const formattedBookName = bookName.toLowerCase().replace(/^\\w/, (c) => c.toUpperCase());\n\n if (isValidBookEnglishName(formattedBookName)) {\n const matchingBookId = ALL_BOOK_IDS.find((bookId) => {\n return Canon.bookIdToEnglishName(bookId) === formattedBookName;\n });\n return matchingBookId;\n }\n\n return undefined;\n}\n\nfunction BookChapterControl({ scrRef, handleSubmit }: BookChapterControlProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedBookId, setSelectedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [highlightedChapter, setHighlightedChapter] = useState(scrRef.chapterNum ?? 0);\n const [highlightedBookId, setHighlightedBookId] = useState(\n Canon.bookNumberToId(scrRef.bookNum),\n );\n const [isContentOpen, setIsContentOpen] = useState(false);\n const [isContentOpenDelayed, setIsContentOpenDelayed] = useState(isContentOpen);\n\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const inputRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const contentRef = useRef(undefined!);\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const menuItemRef = useRef(undefined!);\n\n const fetchFilteredBooks = useCallback(\n (bookType: BookType) => {\n return fetchGroupedBooks(bookType).filter((bookId: string) => {\n const englishNameLowerCase = Canon.bookIdToEnglishName(bookId).toLowerCase();\n const normalizedQuery = searchQuery.replace(/[^a-zA-Z]/g, '').toLowerCase();\n return (\n englishNameLowerCase.includes(normalizedQuery) || // Match book name\n bookId.toLowerCase().includes(normalizedQuery) // Match book ID\n );\n });\n },\n [searchQuery],\n );\n\n const handleSearchInput = (searchString: string) => {\n setSearchQuery(searchString);\n };\n\n /**\n * Whether to prevent radix's logic from closing the dropdown. This is important because radix\n * tries to close the dropdown when the input first focuses, and we don't want it to do that. But\n * we don't want to prevent the dropdown from closing when we click away from the input, so we\n * don't want to just keep it open if the input is focused\n */\n const shouldPreventAutoClosing = useRef(false);\n\n const controlMenuState = useCallback((open: boolean) => {\n if (shouldPreventAutoClosing.current) {\n shouldPreventAutoClosing.current = false;\n return;\n }\n setIsContentOpen(open);\n }, []);\n\n const updateReference = useCallback(\n (bookId: string, shouldClose: boolean, chapter?: number, verse?: number) => {\n setHighlightedChapter(\n Canon.bookNumberToId(scrRef.bookNum) !== bookId ? 1 : scrRef.chapterNum,\n );\n\n if (shouldClose || fetchEndChapter(bookId) === -1) {\n handleSubmit({\n bookNum: Canon.bookIdToNumber(bookId),\n chapterNum: chapter || 1,\n verseNum: verse || 1,\n });\n\n setIsContentOpen(false);\n setSearchQuery('');\n return;\n }\n\n setSelectedBookId(selectedBookId !== bookId ? bookId : '');\n setIsContentOpen(!shouldClose);\n },\n [handleSubmit, scrRef.bookNum, scrRef.chapterNum, selectedBookId],\n );\n\n const handleSelectChapter = (chapterNumber: number) => {\n if (chapterNumber <= 0 || chapterNumber > fetchEndChapter(selectedBookId)) {\n return;\n }\n updateReference(selectedBookId, true, chapterNumber);\n };\n\n const handleInputSubmit = useCallback(() => {\n SEARCH_QUERY_FORMATS.forEach((format) => {\n const matches = searchQuery.match(format);\n if (matches) {\n // Book should be a bookId or an english name\n const [book, chapter = undefined, verse = undefined] = matches.slice(1);\n const englishName = getBookIdFromEnglishName(book);\n\n if (Canon.isBookIdValid(book) || englishName) {\n updateReference(\n englishName ?? book,\n true,\n chapter ? parseInt(chapter, 10) : 1,\n verse ? parseInt(verse, 10) : 1,\n );\n }\n }\n });\n }, [updateReference, searchQuery]);\n\n const handleKeyDownInput = useCallback(\n (event: ReactKeyboardEvent) => {\n if (!isContentOpen) {\n setIsContentOpen(true);\n } else if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (\n typeof menuItemRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n menuItemRef.current !== null\n ) {\n menuItemRef.current.focus();\n } else if (\n typeof contentRef !== 'undefined' &&\n // Ref uses null\n // eslint-disable-next-line no-null/no-null\n contentRef.current !== null\n ) {\n contentRef.current.focus();\n }\n event.preventDefault();\n }\n },\n [isContentOpen],\n );\n\n const handleKeyDownContent = (event: ReactKeyboardEvent) => {\n // When the dropdown menu has focus, key strokes should give focus to the input component,\n // unless they're navigation keys (arrows and enter)\n const { key } = event;\n if (\n key === 'ArrowRight' ||\n key === 'ArrowLeft' ||\n key === 'ArrowDown' ||\n key === 'ArrowUp' ||\n key === 'Enter'\n ) {\n return;\n }\n\n inputRef.current.dispatchEvent(new KeyboardEvent('keydown', { key }));\n inputRef.current.focus();\n };\n\n const handleKeyDownMenuItem = (event: ReactKeyboardEvent) => {\n const { key } = event;\n if (highlightedBookId === selectedBookId) {\n if (key === 'Enter') {\n event.preventDefault();\n updateReference(selectedBookId, true, highlightedChapter);\n return;\n }\n\n let chapterOffSet = 0;\n if (key === 'ArrowRight') {\n if (highlightedChapter < fetchEndChapter(highlightedBookId)) {\n chapterOffSet = 1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowLeft') {\n if (highlightedChapter > 1) {\n chapterOffSet = -1;\n } else {\n event.preventDefault();\n return;\n }\n } else if (key === 'ArrowDown') {\n chapterOffSet = 6;\n } else if (key === 'ArrowUp') {\n chapterOffSet = -6;\n }\n if (\n highlightedChapter + chapterOffSet <= 0 ||\n highlightedChapter + chapterOffSet > fetchEndChapter(highlightedBookId)\n ) {\n setHighlightedChapter(0);\n } else if (chapterOffSet !== 0) {\n setHighlightedChapter(highlightedChapter + chapterOffSet);\n event.preventDefault();\n }\n }\n };\n\n useEffect(() => {\n if (selectedBookId === highlightedBookId) {\n if (selectedBookId === Canon.bookNumberToId(scrRef.bookNum)) {\n setHighlightedChapter(scrRef.chapterNum);\n } else {\n setHighlightedChapter(1);\n }\n } else {\n setHighlightedChapter(0);\n }\n }, [highlightedBookId, scrRef.bookNum, scrRef.chapterNum, selectedBookId]);\n\n // The purpose of these useLayoutEffects and timeout is to delay the scroll just\n // enough so that the refs are defined and available when they are used after the timeout\n useLayoutEffect(() => {\n setIsContentOpenDelayed(isContentOpen);\n }, [isContentOpen]);\n\n useLayoutEffect(() => {\n const scrollTimeout = setTimeout(() => {\n if (isContentOpenDelayed && contentRef.current && menuItemRef.current) {\n const menuItemOffsetTop = menuItemRef.current.offsetTop;\n const scrollPosition = menuItemOffsetTop - SCROLL_OFFSET;\n contentRef.current.scrollTo({ top: scrollPosition, behavior: 'instant' });\n }\n }, 10);\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [isContentOpenDelayed]);\n\n return (\n
\n \n \n {\n setSelectedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedBookId(Canon.bookNumberToId(scrRef.bookNum));\n setHighlightedChapter(scrRef.chapterNum > 0 ? scrRef.chapterNum : 0);\n setIsContentOpen(true);\n inputRef.current.focus();\n }}\n onFocus={() => {\n // Radix thinks we want to close because the input is being focused. Prevent that\n shouldPreventAutoClosing.current = true;\n }}\n handleSubmit={handleInputSubmit}\n placeholder={`${Canon.bookNumberToEnglishName(scrRef.bookNum)} ${scrRef.chapterNum}:${scrRef.verseNum}`}\n />\n \n \n console.log('sorting')}\n handleLocationHistory={() => console.log('location history')}\n handleBookmarks={() => console.log('bookmarks')}\n />\n {BOOK_TYPE_ARRAY.map(\n (bookType, bookTypeIndex) =>\n fetchFilteredBooks(bookType).length > 0 && (\n
\n \n {BOOK_TYPE_LABELS[bookType]}\n \n\n {fetchFilteredBooks(bookType).map((bookId) => (\n
\n updateReference(bookId, false)}\n isSelected={selectedBookId === bookId}\n handleHighlightBook={() => setHighlightedBookId(bookId)}\n handleKeyDown={handleKeyDownMenuItem}\n bookType={bookType}\n ref={(element: HTMLDivElement) => {\n if (selectedBookId === bookId) menuItemRef.current = element;\n }}\n >\n {\n setHighlightedChapter(chapterNumber);\n }}\n />\n \n
\n ))}\n {BOOK_TYPE_ARRAY.length - 1 !== bookTypeIndex ? (\n \n ) : undefined}\n
\n ),\n )}\n \n
\n
\n );\n}\n\nexport default BookChapterControl;\n","import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const buttonVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-whitespace-nowrap tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50',\n {\n variants: {\n variant: {\n default: 'tw-bg-primary tw-text-primary-foreground hover:tw-bg-primary/90',\n destructive: 'tw-bg-destructive tw-text-destructive-foreground hover:tw-bg-destructive/90',\n outline:\n 'tw-border tw-border-input tw-bg-background hover:tw-bg-accent hover:tw-text-accent-foreground',\n secondary: 'tw-bg-secondary tw-text-secondary-foreground hover:tw-bg-secondary/80',\n ghost: 'hover:tw-bg-accent hover:tw-text-accent-foreground',\n link: 'tw-text-primary tw-underline-offset-4 hover:tw-underline',\n },\n size: {\n default: 'tw-h-10 tw-px-4 tw-py-2',\n sm: 'tw-h-9 tw-rounded-md tw-px-3',\n lg: 'tw-h-11 tw-rounded-md tw-px-8',\n icon: 'tw-h-10 tw-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return (\n \n );\n },\n);\nButton.displayName = 'Button';\n","import React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst labelVariants = cva(\n 'tw-text-sm tw-font-medium tw-leading-none peer-disabled:tw-cursor-not-allowed peer-disabled:tw-opacity-70',\n);\n\nexport const Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, ...props }, ref) => (\n \n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n","import React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n \n \n \n \n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n \n \n \n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogHeader.displayName = 'DialogHeader';\n\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import React from 'react';\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Dialog, DialogContent } from '@/components/shadcn-ui/dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nfunction CommandDialog({ children, ...props }: CommandDialogProps) {\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nfunction CommandShortcut({ className, ...props }: React.HTMLAttributes) {\n return (\n \n );\n}\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import { useState } from 'react';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/shadcn-ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/shadcn-ui/command';\nimport { PopoverProps } from '@radix-ui/react-popover';\n\nexport type ComboBoxLabelOption = { label: string };\nexport type ComboBoxOption = string | number | ComboBoxLabelOption;\n\nexport type ComboBoxProps = {\n /** Optional unique identifier */\n id?: string;\n /** Text label title for combobox */\n /** List of available options for the dropdown menu */\n options?: readonly T[];\n /** Additional css classes to help with unique styling of the combo box */\n className?: string;\n /**\n * The selected value that the combo box currently holds. Must be shallow equal to one of the\n * options entries.\n */\n value?: T;\n /** Triggers when content of textfield is changed */\n onChange?: (newValue: T) => void;\n /** Used to determine the string value for a given option. */\n getOptionLabel?: (option: ComboBoxOption) => string;\n /** Text displayed on button if `value` is undefined */\n buttonPlaceholder?: string;\n /** Placeholder text for text field */\n textPlaceholder?: string;\n /** Text to display when no options match input */\n commandEmptyMessage?: string;\n /** Variant of button */\n buttonVariant?: ButtonProps['variant'];\n /** Text direction ltr or rtl */\n dir?: Direction;\n /** Optional boolean to set if trigger should be disabled */\n isDisabled?: boolean;\n} & PopoverProps;\n\ntype Direction = 'ltr' | 'rtl';\n\nfunction getOptionLabelDefault(option: ComboBoxOption): string {\n if (typeof option === 'string') {\n return option;\n }\n if (typeof option === 'number') {\n return option.toString();\n }\n return option.label;\n}\n\n/**\n * Autocomplete input and command palette with a list of suggestions.\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/combobox\n */\nfunction ComboBox({\n id,\n options = [],\n className,\n value,\n onChange = () => {},\n getOptionLabel = getOptionLabelDefault,\n buttonPlaceholder = '',\n textPlaceholder = '',\n commandEmptyMessage = 'No option found',\n buttonVariant = 'outline',\n dir = 'ltr',\n isDisabled = false,\n ...props\n}: ComboBoxProps) {\n const [open, setOpen] = useState(false);\n\n return (\n \n \n \n \n {value ? getOptionLabel(value) : buttonPlaceholder}\n \n \n \n \n \n \n \n {commandEmptyMessage}\n \n {options.map((option) => (\n {\n onChange(option);\n setOpen(false);\n }}\n >\n \n {getOptionLabel(option)}\n \n ))}\n \n \n \n \n );\n}\n\nexport default ComboBox;\n","import { useMemo } from 'react';\nimport ComboBox from '@/components/basics/combo-box.component';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChapterRangeSelectorProps = {\n startChapter: number;\n endChapter: number;\n handleSelectStartChapter: (chapter: number) => void;\n handleSelectEndChapter: (chapter: number) => void;\n isDisabled?: boolean;\n chapterCount: number;\n};\n\nexport default function ChapterRangeSelector({\n startChapter,\n endChapter,\n handleSelectStartChapter,\n handleSelectEndChapter,\n isDisabled = false,\n chapterCount,\n}: ChapterRangeSelectorProps) {\n const chapterOptions = useMemo(\n () => Array.from({ length: chapterCount }, (_, index) => index + 1),\n [chapterCount],\n );\n\n const onChangeStartChapter = (value: number) => {\n handleSelectStartChapter(value);\n if (value > endChapter) {\n handleSelectEndChapter(value);\n }\n };\n\n const onChangeEndChapter = (value: number) => {\n handleSelectEndChapter(value);\n if (value < startChapter) {\n handleSelectStartChapter(value);\n }\n };\n\n return (\n <>\n \n option.toString()}\n value={startChapter}\n />\n\n \n option.toString()}\n value={endChapter}\n />\n \n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport { Label } from '@/components/shadcn-ui/label';\nimport { RadioGroup, RadioGroupItem } from '@/components/shadcn-ui/radio-group';\nimport { Canon } from '@sillsdev/scripture';\nimport { LocalizedStringValue } from 'platform-bible-utils';\nimport { useState } from 'react';\nimport ChapterRangeSelector, {\n ChapterRangeSelectorProps,\n} from '../basics/chapter-range-selector.component';\n\nexport enum BookSelectionMode {\n CURRENT_BOOK = 'current book',\n CHOOSE_BOOKS = 'choose books',\n}\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const BOOK_SELECTOR_STRING_KEYS = Object.freeze([\n '%webView_bookSelector_currentBook%',\n '%webView_bookSelector_choose%',\n '%webView_bookSelector_chooseBooks%',\n] as const);\n\nexport type BookSelectorLocalizedStrings = {\n [localizedInventoryKey in (typeof BOOK_SELECTOR_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: BookSelectorLocalizedStrings,\n key: keyof BookSelectorLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\ntype BookSelectorProps = ChapterRangeSelectorProps & {\n handleBookSelectionModeChange: (newMode: BookSelectionMode) => void;\n currentBookName: string;\n onSelectBooks: () => void;\n selectedBookIds: string[];\n localizedStrings: BookSelectorLocalizedStrings;\n};\n\nexport default function BookSelector({\n handleBookSelectionModeChange,\n currentBookName,\n onSelectBooks,\n selectedBookIds,\n chapterCount,\n endChapter,\n handleSelectEndChapter,\n startChapter,\n handleSelectStartChapter,\n localizedStrings,\n}: BookSelectorProps) {\n const currentBookText = localizeString(localizedStrings, '%webView_bookSelector_currentBook%');\n const chooseText = localizeString(localizedStrings, '%webView_bookSelector_choose%');\n const chooseBooksText = localizeString(localizedStrings, '%webView_bookSelector_chooseBooks%');\n\n const [bookSelectionMode, setBookSelectionMode] = useState(\n BookSelectionMode.CURRENT_BOOK,\n );\n\n const onSelectionModeChange = (newMode: BookSelectionMode) => {\n setBookSelectionMode(newMode);\n handleBookSelectionModeChange(newMode);\n };\n\n return (\n onSelectionModeChange(value as BookSelectionMode)}\n >\n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n \n onSelectBooks()}\n >\n {chooseText}\n \n
\n
\n \n );\n}\n","import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';\nimport { FilterIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\n\ninterface DataTableViewOptionsProps {\n table: Table;\n}\n\nfunction DataTableViewOptions({ table }: DataTableViewOptionsProps) {\n return (\n \n \n \n \n \n Toggle columns\n \n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n column.toggleVisibility(!!value)}\n >\n {column.id}\n \n );\n })}\n \n \n );\n}\n\nexport default DataTableViewOptions;\n","import React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n span]:tw-line-clamp-1',\n className,\n )}\n {...props}\n >\n {children}\n \n \n \n \n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = 'popper', ...props }, ref) => (\n \n \n \n \n {children}\n \n \n \n \n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n\n {children}\n \n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import { ChevronLeftIcon, ChevronRightIcon, ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Table } from '@tanstack/react-table';\n\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\ninterface DataTablePaginationProps {\n table: Table;\n}\n\nfunction DataTablePagination({ table }: DataTablePaginationProps) {\n return (\n
\n
\n
\n {table.getFilteredSelectedRowModel().rows.length} of{' '}\n {table.getFilteredRowModel().rows.length} row(s) selected\n
\n
\n

Rows per page

\n {\n table.setPageSize(Number(value));\n }}\n >\n \n \n \n \n {[10, 20, 30, 40, 50].map((pageSize) => (\n \n {pageSize}\n \n ))}\n \n \n
\n
\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n
\n
\n table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n Go to first page\n \n \n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Go to previous page\n \n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Go to next page\n \n \n table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n Go to last page\n \n \n
\n
\n
\n );\n}\n\nexport default DataTablePagination;\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n
\n \n
\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes & { stickyHeader?: boolean }\n>(({ className, stickyHeader, ...props }, ref) => (\n \n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n tr]:last:tw-border-b-0', className)}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { useState } from 'react';\n\nimport {\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n ColumnDef as TSColumnDef,\n Row as TSRow,\n RowSelectionState as TSRowSelectionState,\n SortDirection as TSSortDirection,\n Table as TSTable,\n useReactTable,\n VisibilityState,\n} from '@tanstack/react-table';\n\nimport DataTableViewOptions from '@/components/advanced/data-table/data-table-column-toggle.component';\nimport DataTablePagination from '@/components/advanced/data-table/data-table-pagination.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\n\nexport type ColumnDef = TSColumnDef;\nexport type RowContents = TSRow;\nexport type TableContents = TSTable;\nexport type SortDirection = TSSortDirection;\nexport type RowSelectionState = TSRowSelectionState;\n\ninterface DataTableProps {\n columns: ColumnDef[];\n data: TData[];\n enablePagination?: boolean;\n showPaginationControls?: boolean;\n showColumnVisibilityControls?: boolean;\n stickyHeader?: boolean;\n onRowClickHandler?: (row: RowContents, table: TableContents) => void;\n}\n\n/**\n * Feature-rich table component that infuses our basic shadcn-based Table component with features\n * from TanStack's React Table library\n */\nfunction DataTable({\n columns,\n data,\n enablePagination = false,\n showPaginationControls = false,\n showColumnVisibilityControls = false,\n stickyHeader = false,\n onRowClickHandler = () => {},\n}: DataTableProps) {\n const [sorting, setSorting] = useState([]);\n const [columnFilters, setColumnFilters] = useState([]);\n const [columnVisibility, setColumnVisibility] = useState({});\n const [rowSelection, setRowSelection] = useState({});\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n ...(enablePagination && { getPaginationRowModel: getPaginationRowModel() }),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n onColumnFiltersChange: setColumnFilters,\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n });\n\n return (\n
\n {showColumnVisibilityControls && }\n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => {\n return (\n \n {header.isPlaceholder\n ? undefined\n : flexRender(header.column.columnDef.header, header.getContext())}\n \n );\n })}\n \n ))}\n \n \n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n onRowClickHandler(row, table)}\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n >\n {row.getVisibleCells().map((cell) => (\n \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n \n ))}\n \n ))\n ) : (\n \n \n No results.\n \n \n )}\n \n
\n {enablePagination && (\n
\n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n \n
\n )}\n {enablePagination && showPaginationControls && }\n
\n );\n}\n\nexport default DataTable;\n","import {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { Canon } from '@sillsdev/scripture';\nimport { deepEqual, LanguageStrings, ScriptureReference } from 'platform-bible-utils';\nimport { useMemo } from 'react';\nimport { InventoryItemOccurrence } from './inventory-utils';\n\n/** Props for the OccurrencesTable component */\ntype OccurrencesTableProps = {\n /** Data that contains scriptures references and snippets of scripture */\n occurrenceData: InventoryItemOccurrence[];\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the OccurrencesTable needs to work well across multiple\n * languages\n */\n localizedStrings: LanguageStrings;\n};\n\n/**\n * Table that shows occurrences of specified inventory item(s). The first column shows the related\n * scripture reference. The second column shows the snippet of scripture that contains the specified\n * inventory item\n */\nfunction OccurrencesTable({\n occurrenceData,\n setScriptureReference,\n localizedStrings,\n}: OccurrencesTableProps) {\n const referenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_reference%'];\n const occurrenceHeaderText =\n localizedStrings['%webView_inventory_occurrences_table_header_occurrence%'];\n\n const occurrences: InventoryItemOccurrence[] = useMemo(() => {\n const uniqueOccurrences: InventoryItemOccurrence[] = [];\n\n occurrenceData.forEach((occurrence) => {\n if (!uniqueOccurrences.some((uniqueOccurrence) => deepEqual(uniqueOccurrence, occurrence))) {\n uniqueOccurrences.push(occurrence);\n }\n });\n\n return uniqueOccurrences;\n }, [occurrenceData]);\n\n return (\n \n \n \n {referenceHeaderText}\n {occurrenceHeaderText}\n \n \n \n {occurrences.length > 0 &&\n occurrences.map((occurrence) => (\n {\n setScriptureReference(occurrence.reference);\n }}\n >\n {`${Canon.bookNumberToEnglishName(occurrence.reference.bookNum)} ${occurrence.reference.chapterNum}:${occurrence.reference.verseNum}`}\n {occurrence.text}\n \n ))}\n \n
\n );\n}\n\nexport default OccurrencesTable;\n","import React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport default Checkbox;\n","import { Canon } from '@sillsdev/scripture';\nimport { ScriptureReference } from 'platform-bible-utils';\n\n/* #region Types */\n\n/**\n * Status of items that appear in inventories. 'approved' and 'unapproved' items are defined in the\n * project's `Settings.xml`. All other items are defined as 'unknown'\n */\nexport type Status = 'approved' | 'unapproved' | 'unknown';\n\n/** Occurrence of item in inventory. Primarily used by table that shows occurrences */\nexport type InventoryItemOccurrence = {\n /** Reference to scripture where the item appears */\n reference: ScriptureReference;\n /** Snippet of scripture that contains the occurrence */\n text: string;\n};\n\n/** Data structure that contains all information on an item that is shown in an inventory */\nexport type InventoryTableData = {\n /**\n * The item (e.g. a character in the characters inventory, a marker in the marker inventory) In\n * most cases the array will only have one element. In case of additional items (e.g. the\n * preceding marker in the markers check), the primary item should be stored in the first index.\n * To show additional items in the inventory, make sure to configure the `additionalItemsLabels`\n * prop for the Inventory component\n */\n items: string[];\n /** The number of times this item occurs in the selected scope */\n count: number;\n /** The status of this item (see documentation for `Status` type for more information) */\n status: Status;\n /** Occurrences of this item in the scripture text for the selected scope */\n occurrences: InventoryItemOccurrence[];\n};\n\n/* #endregion */\n\n/* #region Functions */\n\n/**\n * Splits USFM string into shorter line-like segments\n *\n * @param text A single (likely very large) USFM string\n * @returns An array containing the input text, split into shorter segments\n */\nexport const getLinesFromUSFM = (text: string) => {\n // Splits on (CR)LF, CR, \\v, \\c and \\id\n return text.split(/(?:\\r?\\n|\\r)|(?=(?:\\\\(?:v|c|id)))/g);\n};\n\n/**\n * Extracts chapter or verse number from USFM strings that start with a \\c or \\v marker\n *\n * @param text USFM string that is expected to start with \\c or \\v marker\n * @returns Chapter or verse number if one is found. Else returns 0.\n */\nexport const getNumberFromUSFM = (text: string): number | undefined => {\n // Captures all digits that follow \\v or \\c markers followed by whitespace located at the start of a string\n const regex = /^\\\\[vc]\\s+(\\d+)/;\n const match = text.match(regex);\n\n if (match) {\n return +match[1];\n }\n return undefined;\n};\n\n/**\n * Gets book ID from USFM string that starts with the \\id marker, and returns book number for it\n *\n * @param text USFM string that is expected to start with \\id marker\n * @returns Book number corresponding to the \\id marker in the input text. Returns 0 if no marker is\n * found or the marker is not valid\n */\nexport const getBookNumFromId = (text: string): number => {\n // Captures all digits that follow an \\id marker followed by whitespace located at the start of a string\n const match = text.match(/^\\\\id\\s+([A-Za-z]+)/);\n if (match) {\n return Canon.bookIdToNumber(match[1]);\n }\n return 0;\n};\n\n/**\n * Gets the status for an item, typically used in the Inventory component\n *\n * @param item The item for which the status is being requested\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @returns The status for the specified item\n */\nexport const getStatusForItem = (\n item: string,\n approvedItems: string[],\n unapprovedItems: string[],\n): Status => {\n if (unapprovedItems.includes(item)) return 'unapproved';\n if (approvedItems.includes(item)) return 'approved';\n return 'unknown';\n};\n\n/* #endregion */\n","import React from 'react';\nimport * as TogglePrimitive from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst toggleVariants = cva(\n 'pr-twp tw-inline-flex tw-items-center tw-justify-center tw-rounded-md tw-text-sm tw-font-medium tw-ring-offset-background tw-transition-colors hover:tw-bg-muted hover:tw-text-muted-foreground focus-visible:tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-ring focus-visible:tw-ring-offset-2 disabled:tw-pointer-events-none disabled:tw-opacity-50 data-[state=on]:tw-bg-accent data-[state=on]:tw-text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-transparent',\n outline:\n 'tw-border tw-border-input tw-bg-transparent hover:tw-bg-accent hover:tw-text-accent-foreground',\n },\n size: {\n default: 'tw-h-10 tw-px-3',\n sm: 'tw-h-9 tw-px-2.5',\n lg: 'tw-h-11 tw-px-5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nconst Toggle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & VariantProps\n>(({ className, variant, size, ...props }, ref) => (\n \n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleVariants };\n","import React from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { toggleVariants } from '@/components/shadcn-ui/toggle';\n\nconst ToggleGroupContext = React.createContext>({\n size: 'default',\n variant: 'default',\n});\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, size, children, ...props }, ref) => (\n \n \n {children}\n \n \n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, children, variant, size, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n \n {children}\n \n );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { ColumnDef, SortDirection } from '@/components/advanced/data-table/data-table.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/shadcn-ui/toggle-group';\nimport {\n ArrowDownIcon,\n ArrowUpDownIcon,\n ArrowUpIcon,\n CircleCheckIcon,\n CircleHelpIcon,\n CircleXIcon,\n} from 'lucide-react';\nimport { ReactNode } from 'react';\nimport { InventoryTableData, Status } from './inventory-utils';\n\n/**\n * Gets an icon that indicates the current sorting direction based on the provided input\n *\n * @param sortDirection Sorting direction. Can be ascending ('asc'), descending ('desc') or false (\n * i.e. not sorted)\n * @returns The appropriate sorting icon for the provided sorting direction\n */\nconst getSortingIcon = (sortDirection: false | SortDirection): ReactNode => {\n if (sortDirection === 'asc') {\n return ;\n }\n if (sortDirection === 'desc') {\n return ;\n }\n return ;\n};\n\n/**\n * Function that creates the item column for inventories\n *\n * @param itemLabel Localized label for the item column (e.g. 'Character', 'Repeated Word', etc.)\n * @returns Column that shows the inventory items. Should be used with the DataTable component\n */\nexport const inventoryItemColumn = (itemLabel: string): ColumnDef => {\n return {\n accessorKey: 'item',\n accessorFn: (row: InventoryTableData) => row.items[0],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the additional item columns for inventories\n *\n * @param additionalItemLabel Localized label for the additional item column (e.g. 'Preceding\n * Marker')\n * @param additionalItemIndex Index that locates the desired item in the items array of the\n * inventory\n * @returns Column that shows additional inventory items. Should be used with the DataTable\n * component\n */\nexport const inventoryAdditionalItemColumn = (\n additionalItemLabel: string,\n additionalItemIndex: number,\n): ColumnDef => {\n return {\n accessorKey: `item${additionalItemIndex}`,\n accessorFn: (row: InventoryTableData) => row.items[additionalItemIndex],\n header: ({ column }) => (\n \n ),\n };\n};\n\n/**\n * Function that creates the count column for inventories. Should be used with the DataTable\n * component.\n *\n * @param itemLabel Localized label for the count column\n * @returns Column that shows the number of occurrences of the related inventory items\n */\nexport const inventoryCountColumn = (countLabel: string): ColumnDef => {\n return {\n accessorKey: 'count',\n header: ({ column }) => (\n
\n \n
\n ),\n cell: ({ row }) =>
{row.getValue('count')}
,\n };\n};\n\n/**\n * Function that updates project settings when status for item(s) changes\n *\n * @param changedItems Array of items for which the status is being updated\n * @param newStatus The status that the items are being given\n * @param approvedItems Array of currently approved items\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of currently unapproved items\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n */\nconst statusChangeHandler = (\n changedItems: string[],\n newStatus: Status,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n) => {\n let newApprovedItems: string[] = [...approvedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'approved') {\n if (!newApprovedItems.includes(item)) {\n newApprovedItems.push(item);\n }\n } else {\n newApprovedItems = newApprovedItems.filter((validItem) => validItem !== item);\n }\n });\n onApprovedItemsChange(newApprovedItems);\n\n let newUnapprovedItems: string[] = [...unapprovedItems];\n changedItems.forEach((item) => {\n if (newStatus === 'unapproved') {\n if (!newUnapprovedItems.includes(item)) {\n newUnapprovedItems.push(item);\n }\n } else {\n newUnapprovedItems = newUnapprovedItems.filter((unapprovedItem) => unapprovedItem !== item);\n }\n });\n onUnapprovedItemsChange(newUnapprovedItems);\n};\n\n/**\n * Function that creates the status column for inventories. Should be used with the DataTable\n * component.\n *\n * @param statusLabel Localized label for the status column\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param onApprovedItemsChange Callback function that stores the updated list of approved items\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param onUnapprovedItemsChange Callback function that stores the updated list of unapproved items\n * @returns Column that shows the status buttons for the related inventory item. The button for the\n * current status of the item is selected\n */\nexport const inventoryStatusColumn = (\n statusLabel: string,\n approvedItems: string[],\n onApprovedItemsChange: (items: string[]) => void,\n unapprovedItems: string[],\n onUnapprovedItemsChange: (items: string[]) => void,\n): ColumnDef => {\n return {\n accessorKey: 'status',\n header: ({ column }) => {\n return (\n
\n \n
\n );\n },\n cell: ({ row }) => {\n const status: Status = row.getValue('status');\n const item: string = row.getValue('item');\n return (\n \n \n statusChangeHandler(\n [item],\n 'approved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"approved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unapproved',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unapproved\"\n >\n \n \n \n statusChangeHandler(\n [item],\n 'unknown',\n approvedItems,\n onApprovedItemsChange,\n unapprovedItems,\n onUnapprovedItemsChange,\n )\n }\n value=\"unknown\"\n >\n \n \n \n );\n },\n };\n};\n","import DataTable, {\n ColumnDef,\n RowContents,\n RowSelectionState,\n TableContents,\n} from '@/components/advanced/data-table/data-table.component';\nimport OccurrencesTable from '@/components/advanced/inventory/occurrences-table.component';\nimport Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Input } from '@/components/shadcn-ui/input';\nimport { Label } from '@/components/shadcn-ui/label';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n deepEqual,\n LocalizedStringValue,\n ScriptureReference,\n substring,\n} from 'platform-bible-utils';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n getBookNumFromId,\n getLinesFromUSFM,\n getNumberFromUSFM,\n getStatusForItem,\n InventoryItemOccurrence,\n InventoryTableData,\n Status,\n} from './inventory-utils';\nimport { inventoryAdditionalItemColumn } from './inventory-columns';\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const INVENTORY_STRING_KEYS = Object.freeze([\n '%webView_inventory_all%',\n '%webView_inventory_approved%',\n '%webView_inventory_unapproved%',\n '%webView_inventory_unknown%',\n '%webView_inventory_scope_currentBook%',\n '%webView_inventory_scope_chapter%',\n '%webView_inventory_scope_verse%',\n '%webView_inventory_filter_text%',\n '%webView_inventory_show_additional_items%',\n '%webView_inventory_occurrences_table_header_reference%',\n '%webView_inventory_occurrences_table_header_occurrence%',\n] as const);\n\nexport type InventoryLocalizedStrings = {\n [localizedInventoryKey in (typeof INVENTORY_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/** Scope of scripture that the inventory can operate on */\nexport type Scope = 'book' | 'chapter' | 'verse';\n\n/** Status values that the status filter can select from */\ntype StatusFilter = Status | 'all';\n\n/** Text labels for the inventory columns and the control components of additional inventory items */\ntype AdditionalItemsLabels = {\n checkboxText?: string;\n tableHeaders?: string[];\n};\n\n/**\n * Filters data that is shown in the DataTable section of the Inventory\n *\n * @param itemData All inventory items and their related information\n * @param statusFilter Allows filtering by status (i.e. show all items, or only items that are\n * 'approved', 'unapproved' or 'unknown')\n * @param textFilter Allows filtering by text. All items that include the filter text will be\n * selected.\n * @returns Array of items and their related information that are matched by the specified filters\n */\nconst filterItemData = (\n itemData: InventoryTableData[],\n statusFilter: StatusFilter,\n textFilter: string,\n): InventoryTableData[] => {\n let filteredItemData: InventoryTableData[] = itemData;\n\n if (statusFilter !== 'all') {\n filteredItemData = filteredItemData.filter(\n (item) =>\n (statusFilter === 'approved' && item.status === 'approved') ||\n (statusFilter === 'unapproved' && item.status === 'unapproved') ||\n (statusFilter === 'unknown' && item.status === 'unknown'),\n );\n }\n\n if (textFilter !== '')\n filteredItemData = filteredItemData.filter((item) => item.items[0].includes(textFilter));\n\n return filteredItemData;\n};\n\n/**\n * Turns array of strings into array of inventory items, along with their count and status\n *\n * @param text The source scripture text that is searched for inventory items\n * @param scriptureRef The scripture reference that the application is currently set to\n * @param approvedItems Array of approved items, typically as defined in `Settings.xml`\n * @param unapprovedItems Array of unapproved items, typically as defined in `Settings.xml`\n * @param itemRegex Regular expression that describes what items this Inventory should extract from\n * the provided scripture text\n * @returns Array of inventory items, along with their count and status\n */\nconst createTableData = (\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n itemRegex: RegExp,\n): InventoryTableData[] => {\n if (!text) return [];\n\n const tableData: InventoryTableData[] = [];\n\n let currentBook: number | undefined = scriptureRef.bookNum;\n let currentChapter: number | undefined = scriptureRef.chapterNum;\n let currentVerse: number | undefined = scriptureRef.verseNum;\n\n const lines = getLinesFromUSFM(text);\n\n lines.forEach((line: string) => {\n if (line.startsWith('\\\\id')) {\n currentBook = getBookNumFromId(line);\n currentChapter = 0;\n currentVerse = 0;\n }\n if (line.startsWith('\\\\c')) {\n currentChapter = getNumberFromUSFM(line);\n currentVerse = 0;\n }\n if (line.startsWith('\\\\v')) {\n currentVerse = getNumberFromUSFM(line);\n if (currentChapter === 0) {\n currentChapter = scriptureRef.chapterNum;\n }\n }\n\n let match: RegExpExecArray | undefined = itemRegex.exec(line) ?? undefined;\n while (match) {\n const items: string[] = [];\n match.forEach((item) => items.push(item));\n const itemIndex = match.index;\n const existingItem = tableData.find((tableEntry) => deepEqual(tableEntry.items, items));\n const newReference: InventoryItemOccurrence = {\n reference: {\n bookNum: currentBook !== undefined ? currentBook : -1,\n chapterNum: currentChapter !== undefined ? currentChapter : -1,\n verseNum: currentVerse !== undefined ? currentVerse : -1,\n },\n text: substring(line, Math.max(0, itemIndex - 25), Math.min(itemIndex + 25, line.length)),\n };\n if (existingItem) {\n existingItem.count += 1;\n existingItem.occurrences.push(newReference);\n } else {\n const newItem: InventoryTableData = {\n items,\n count: 1,\n status: getStatusForItem(items[0], approvedItems, unapprovedItems),\n occurrences: [newReference],\n };\n tableData.push(newItem);\n }\n\n match = itemRegex.exec(line) ?? undefined;\n }\n });\n\n return tableData;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: InventoryLocalizedStrings,\n key: keyof InventoryLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\n/** Props for the Inventory component */\ntype InventoryProps = {\n /** The scripture reference that the application is currently set to */\n scriptureReference: ScriptureReference;\n /** Callback function that is executed when the scripture reference is changed */\n setScriptureReference: (scriptureReference: ScriptureReference) => void;\n /**\n * Object with all localized strings that the Inventory needs to work well across multiple\n * languages. When using this component with Platform.Bible, you can import\n * `INVENTORY_STRING_KEYS` from this library, pass it in to the Platform's localization hook, and\n * pass the localized keys that are returned by the hook into this prop.\n */\n localizedStrings: InventoryLocalizedStrings;\n /**\n * The logic that finds the desired items in the source text. This can either be a Regular\n * expression that captures one or multiple items (preferred), or a custom function that builds\n * and return an InventoryDataTable[] manually. Note: In case the logic captures more than one\n * item (i.e. InventoryTableData.items has a length greater than 1), you must provide text labels\n * for the related columns and control elements to show by setting the `additionalItemsLabels`\n * prop\n */\n extractItems:\n | RegExp\n | ((\n text: string | undefined,\n scriptureRef: ScriptureReference,\n approvedItems: string[],\n unapprovedItems: string[],\n ) => InventoryTableData[]);\n /**\n * Text labels for control elements and additional column headers in case your Inventory has more\n * than one item to show (e.g. The 'Preceding Marker' in the Markers Inventory)\n */\n additionalItemsLabels?: AdditionalItemsLabels;\n /** Array of approved items, typically as defined in `Settings.xml` */\n approvedItems: string[];\n /** Array of unapproved items, typically as defined in `Settings.xml` */\n unapprovedItems: string[];\n /** The source scripture text that is searched for in inventory items */\n text: string | undefined;\n /** Scope of scripture that the inventory will operate on */\n scope: Scope;\n /** Callback function that is executed when the scope is changed from the Inventory */\n onScopeChange: (scope: Scope) => void;\n /**\n * Column definitions for the Inventory data table. The most commonly used column definitions are\n * pre-configured for your convenience and can be imported (e.g. inventoryItemColumn,\n * inventoryAdditionalItemColumn inventoryCountColumn, and inventoryStatusColumn). If you need any\n * other columns you can add these yourself\n */\n columns: ColumnDef[];\n};\n\n/** Inventory component that is used to view and control the status of provided project settings */\nexport default function Inventory({\n scriptureReference,\n setScriptureReference,\n localizedStrings,\n extractItems,\n additionalItemsLabels,\n approvedItems,\n unapprovedItems,\n text,\n scope,\n onScopeChange,\n columns,\n}: InventoryProps) {\n const allItemsText = localizeString(localizedStrings, '%webView_inventory_all%');\n const approvedItemsText = localizeString(localizedStrings, '%webView_inventory_approved%');\n const unapprovedItemsText = localizeString(localizedStrings, '%webView_inventory_unapproved%');\n const unknownItemsText = localizeString(localizedStrings, '%webView_inventory_unknown%');\n const scopeBookText = localizeString(localizedStrings, '%webView_inventory_scope_currentBook%');\n const scopeChapterText = localizeString(localizedStrings, '%webView_inventory_scope_chapter%');\n const scopeVerseText = localizeString(localizedStrings, '%webView_inventory_scope_verse%');\n const filterText = localizeString(localizedStrings, '%webView_inventory_filter_text%');\n const showAdditionalItemsText = localizeString(\n localizedStrings,\n '%webView_inventory_show_additional_items%',\n );\n\n const [showAdditionalItems, setShowAdditionalItems] = useState(false);\n const [statusFilter, setStatusFilter] = useState('all');\n const [textFilter, setTextFilter] = useState('');\n const [selectedItem, setSelectedItem] = useState([]);\n\n const tableData: InventoryTableData[] = useMemo(() => {\n if (!text) return [];\n if (extractItems instanceof RegExp)\n return createTableData(\n text,\n scriptureReference,\n approvedItems,\n unapprovedItems,\n extractItems,\n );\n return extractItems(text, scriptureReference, approvedItems, unapprovedItems);\n }, [text, extractItems, scriptureReference, approvedItems, unapprovedItems]);\n\n const reducedTableData: InventoryTableData[] = useMemo(() => {\n if (showAdditionalItems) return tableData;\n\n const newTableData: InventoryTableData[] = [];\n\n tableData.forEach((tableEntry) => {\n const firstItem = tableEntry.items[0];\n\n const existingEntry = newTableData.find(\n (newTableEntry) => newTableEntry.items[0] === firstItem,\n );\n\n if (existingEntry) {\n existingEntry.count += tableEntry.count;\n existingEntry.occurrences = existingEntry.occurrences.concat(tableEntry.occurrences);\n } else {\n newTableData.push({\n items: [firstItem],\n count: tableEntry.count,\n occurrences: tableEntry.occurrences,\n status: tableEntry.status,\n });\n }\n });\n\n return newTableData;\n }, [showAdditionalItems, tableData]);\n\n const filteredTableData: InventoryTableData[] = useMemo(() => {\n return filterItemData(reducedTableData, statusFilter, textFilter);\n }, [reducedTableData, statusFilter, textFilter]);\n\n const allColumns: ColumnDef[] = useMemo(() => {\n if (!showAdditionalItems) return columns;\n\n const numberOfAdditionalItems = additionalItemsLabels?.tableHeaders?.length;\n if (!numberOfAdditionalItems) return columns;\n\n const additionalColumns: ColumnDef[] = [];\n\n for (let index = 0; index < numberOfAdditionalItems; index++) {\n additionalColumns.push(\n inventoryAdditionalItemColumn(\n additionalItemsLabels?.tableHeaders?.[index] || 'Additional Item',\n index + 1,\n ),\n );\n }\n\n return [...additionalColumns, ...columns];\n }, [additionalItemsLabels?.tableHeaders, columns, showAdditionalItems]);\n\n useEffect(() => {\n setSelectedItem([]);\n }, [filteredTableData]);\n\n const rowClickHandler = (\n row: RowContents,\n table: TableContents,\n ) => {\n table.setRowSelection(() => {\n const newSelection: RowSelectionState = {};\n newSelection[row.index] = true;\n return newSelection;\n });\n\n setSelectedItem(row.original.items);\n };\n\n const handleScopeChange = (value: string) => {\n if (value === 'book' || value === 'chapter' || value === 'verse') {\n onScopeChange(value);\n } else {\n throw new Error(`Invalid scope value: ${value}`);\n }\n };\n\n const handleStatusFilterChange = (value: string) => {\n if (value === 'all' || value === 'approved' || value === 'unapproved' || value === 'unknown') {\n setStatusFilter(value);\n } else {\n throw new Error(`Invalid status filter value: ${value}`);\n }\n };\n\n const occurrenceData: InventoryItemOccurrence[] = useMemo(() => {\n if (reducedTableData.length === 0 || selectedItem.length === 0) return [];\n const occurrence = reducedTableData.filter((tableEntry: InventoryTableData) => {\n return deepEqual(\n showAdditionalItems ? tableEntry.items : [tableEntry.items[0]],\n selectedItem,\n );\n });\n if (occurrence.length > 1) throw new Error('Selected item is not unique');\n return occurrence[0].occurrences;\n }, [selectedItem, showAdditionalItems, reducedTableData]);\n\n return (\n
\n
\n handleStatusFilterChange(value)}\n defaultValue={statusFilter}\n >\n \n \n \n \n {allItemsText}\n {approvedItemsText}\n {unapprovedItemsText}\n {unknownItemsText}\n \n \n \n {\n setTextFilter(event.target.value);\n }}\n />\n {additionalItemsLabels && (\n
\n {\n setSelectedItem([]);\n setShowAdditionalItems(checked);\n }}\n />\n \n
\n )}\n
\n
\n \n
\n {occurrenceData.length > 0 && (\n
\n \n
\n )}\n
\n );\n}\n","import { Input } from '@/components/shadcn-ui/input';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { useState } from 'react';\n\nexport type SearchBarProps = {\n /**\n * Callback fired to handle the search query when button pressed\n *\n * @param searchQuery\n */\n onSearch: (searchQuery: string) => void;\n\n /** Optional string that appears in the search bar without a search string */\n placeholder?: string;\n\n /** Optional boolean to set the input base to full width */\n isFullWidth?: boolean;\n};\n\nexport default function SearchBar({ onSearch, placeholder, isFullWidth }: SearchBarProps) {\n const [searchQuery, setSearchQuery] = useState('');\n\n const handleInputChange = (searchString: string) => {\n setSearchQuery(searchString);\n onSearch(searchString);\n };\n\n return (\n handleInputChange(e.target.value)}\n />\n );\n}\n","// adapted from: https://github.com/shadcn-ui/ui/discussions/752\n\n'use client';\n\nimport { TabsContentProps, TabsListProps, TabsTriggerProps } from '@/components/shadcn-ui/tabs';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport React from 'react';\n\nexport type VerticalTabsProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type LeftTabsTriggerProps = TabsTriggerProps & {\n value: string;\n ref?: React.Ref;\n};\n\nexport const VerticalTabs = React.forwardRef<\n React.ElementRef,\n VerticalTabsProps\n>(({ className, ...props }, ref) => (\n \n));\n\nVerticalTabs.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const VerticalTabsTrigger = React.forwardRef<\n React.ElementRef,\n LeftTabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\n\nexport const VerticalTabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nVerticalTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import SearchBar from '@/components/basics/search-bar.component';\nimport {\n VerticalTabs,\n VerticalTabsContent,\n VerticalTabsList,\n VerticalTabsTrigger,\n} from '@/components/basics/tabs-vertical';\nimport { ReactNode } from 'react';\n\nexport type TabKeyValueContent = {\n key: string;\n value: string;\n content: ReactNode;\n};\n\nexport type NavigationContentSearchProps = {\n /** List of values and keys for each tab this component should provide */\n tabList: TabKeyValueContent[];\n\n /** Handler to run when the value of the search bar changes */\n onSearch: (searchQuery: string) => void;\n\n /** Optional placeholder for the search bar */\n searchPlaceholder?: string;\n\n /** Optional title to include in the header */\n headerTitle?: string;\n\n /** Optional flag to make the search bar appear full width */\n isSearchBarFullWidth?: boolean;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nexport default function NavigationContentSearch({\n tabList,\n onSearch,\n searchPlaceholder,\n headerTitle,\n isSearchBarFullWidth = false,\n direction = 'ltr',\n}: NavigationContentSearchProps) {\n return (\n
\n
\n {headerTitle ?

{headerTitle}

: ''}\n \n
\n \n \n {tabList.map((tab) => (\n \n {tab.value}\n \n ))}\n \n {tabList.map((tab) => (\n \n {tab.content}\n \n ))}\n \n
\n );\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/shadcn-ui/table';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Canon } from '@sillsdev/scripture';\nimport {\n Cell,\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n GroupingState,\n Row,\n RowSelectionState,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport '@/components/advanced/scripture-results-viewer/scripture-results-viewer.component.css';\nimport {\n compareScrRefs,\n formatScrRef,\n ScriptureSelection,\n scrRefToBBBCCCVVV,\n} from 'platform-bible-utils';\nimport { MouseEvent, useEffect, useMemo, useState } from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\n\n/**\n * Information (e.g., a checking error or some other type of \"transient\" annotation) about something\n * noteworthy at a specific place in an instance of the Scriptures.\n */\nexport type ScriptureItemDetail = ScriptureSelection & {\n /**\n * Text of the error, note, etc. In the future, we might want to support something more than just\n * text so that a JSX element could be provided with a link or some other controls related to the\n * issue being reported.\n */\n detail: string;\n};\n\n/**\n * A uniquely identifiable source of results that can be displayed in the ScriptureResultsViewer.\n * Generally, the source will be a particular Scripture check, but there may be other types of\n * sources.\n */\nexport type ResultsSource = {\n /**\n * Uniquely identifies the source.\n *\n * @type {string}\n */\n id: string;\n\n /**\n * Name (potentially localized) of the source, suitable for display in the UI.\n *\n * @type {string}\n */\n displayName: string;\n};\n\nexport type ScriptureSrcItemDetail = ScriptureItemDetail & {\n /** Source/type of detail. Can be used for grouping. */\n source: ResultsSource;\n};\n\n/**\n * Represents a set of results keyed by Scripture reference. Generally, the source will be a\n * particular Scripture check, but this type also allows for other types of uniquely identifiable\n * sources.\n */\nexport type ResultsSet = {\n /**\n * The backing source associated with this set of results.\n *\n * @type {ResultsSource}\n */\n source: ResultsSource;\n\n /**\n * Array of Scripture item details (messages keyed by Scripture reference).\n *\n * @type {ScriptureItemDetail[]}\n */\n data: ScriptureItemDetail[];\n};\n\nconst scrBookColId = 'scrBook';\nconst scrRefColId = 'scrRef';\nconst typeColId = 'source';\nconst detailsColId = 'details';\n\nconst defaultScrRefColumnName = 'Scripture Reference';\nconst defaultScrBookGroupName = 'Scripture Book';\nconst defaultTypeColumnName = 'Type';\nconst defaultDetailsColumnName = 'Details';\n\nexport type ScriptureResultsViewerColumnInfo = {\n /** Optional header to display for the Reference column. Default value: 'Scripture Reference'. */\n scriptureReferenceColumnName?: string;\n\n /** Optional text to display to refer to the Scripture book group. Default value: 'Scripture Book'. */\n scriptureBookGroupName?: string;\n\n /** Optional header to display for the Type column. Default value: 'Type'. */\n typeColumnName?: string;\n\n /** Optional header to display for the Details column. Default value: 'Details' */\n detailsColumnName?: string;\n};\n\nexport type ScriptureResultsViewerProps = ScriptureResultsViewerColumnInfo & {\n /** Groups of ScriptureItemDetail objects from particular sources (e.g., Scripture checks) */\n sources: ResultsSet[];\n\n /** Flag indicating whether to display column headers. Default is false. */\n showColumnHeaders?: boolean;\n\n /** Flag indicating whether to display source column. Default is false. */\n showSourceColumn?: boolean;\n\n /** Callback function to notify when a row is selected */\n onRowSelected?: (selectedRow: ScriptureSrcItemDetail | undefined) => void;\n\n /** Text direction ltr or rtl */\n direction?: 'ltr' | 'rtl';\n};\n\nfunction getColumns(\n colInfo?: ScriptureResultsViewerColumnInfo,\n showSourceColumn?: boolean,\n): ColumnDef[] {\n const showSrcCol = showSourceColumn ?? false;\n return [\n {\n accessorFn: (row) =>\n `${Canon.bookNumberToId(row.start.bookNum)} ${row.start.chapterNum}:${row.start.verseNum}`,\n id: scrBookColId,\n header: colInfo?.scriptureReferenceColumnName ?? defaultScrRefColumnName,\n cell: (info) => {\n const row = info.row.original;\n if (info.row.getIsGrouped()) {\n return Canon.bookNumberToEnglishName(row.start.bookNum);\n }\n return info.row.groupingColumnId === scrBookColId ? formatScrRef(row.start) : undefined;\n },\n getGroupingValue: (row) => row.start.bookNum,\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: true,\n },\n {\n accessorFn: (row) => formatScrRef(row.start),\n id: scrRefColId,\n header: undefined,\n cell: (info) => {\n const row = info.row.original;\n return info.row.getIsGrouped() ? undefined : formatScrRef(row.start);\n },\n sortingFn: (a, b) => {\n return compareScrRefs(a.original.start, b.original.start);\n },\n enableGrouping: false,\n },\n {\n accessorFn: (row) => row.source.displayName,\n id: typeColId,\n header: showSrcCol ? (colInfo?.typeColumnName ?? defaultTypeColumnName) : undefined,\n cell: (info) => (showSrcCol || info.row.getIsGrouped() ? info.getValue() : undefined),\n getGroupingValue: (row) => row.source.id,\n sortingFn: (a, b) =>\n a.original.source.displayName.localeCompare(b.original.source.displayName),\n enableGrouping: true,\n },\n {\n accessorFn: (row) => row.detail,\n id: detailsColId,\n header: colInfo?.detailsColumnName ?? defaultDetailsColumnName,\n cell: (info) => info.getValue(),\n enableGrouping: false,\n },\n ];\n}\n\nconst toRefOrRange = (scriptureSelection: ScriptureSelection) => {\n if (!('offset' in scriptureSelection.start))\n throw new Error('No offset available in range start');\n if (scriptureSelection.end && !('offset' in scriptureSelection.end))\n throw new Error('No offset available in range end');\n const { offset: offsetStart } = scriptureSelection.start;\n let offsetEnd: number = 0;\n if (scriptureSelection.end) ({ offset: offsetEnd } = scriptureSelection.end);\n if (\n !scriptureSelection.end ||\n compareScrRefs(scriptureSelection.start, scriptureSelection.end) === 0\n )\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}`;\n return `${scrRefToBBBCCCVVV(scriptureSelection.start)}+${offsetStart}-${scrRefToBBBCCCVVV(scriptureSelection.end)}+${offsetEnd}`;\n};\n\nconst getRowKey = (row: ScriptureSrcItemDetail) =>\n `${toRefOrRange({ start: row.start, end: row.end })} ${row.source.displayName} ${row.detail}`;\n\n/**\n * Component to display a combined list of detailed items from one or more sources, where the items\n * are keyed primarily by Scripture reference. This is particularly useful for displaying a list of\n * results from Scripture checks, but more generally could be used to display any \"results\" from any\n * source(s). The component allows for grouping by Scripture book, source, or both. By default, it\n * displays somewhat \"tree-like\" which allows it to be more horizontally compact and intuitive. But\n * it also has the option of displaying as a traditional table with column headings (with or without\n * the source column showing).\n */\nexport default function ScriptureResultsViewer({\n sources,\n showColumnHeaders = false,\n showSourceColumn = false,\n scriptureReferenceColumnName,\n scriptureBookGroupName,\n typeColumnName,\n detailsColumnName,\n onRowSelected,\n direction = 'ltr',\n}: ScriptureResultsViewerProps) {\n const [grouping, setGrouping] = useState([]);\n const [sorting, setSorting] = useState([{ id: scrBookColId, desc: false }]);\n const [rowSelection, setRowSelection] = useState({});\n\n const scriptureResults = useMemo(\n () =>\n sources.flatMap((source) => {\n return source.data.map((item) => ({\n ...item,\n source: source.source,\n }));\n }),\n [sources],\n );\n\n const columns = useMemo(\n () =>\n getColumns(\n {\n scriptureReferenceColumnName,\n typeColumnName,\n detailsColumnName,\n },\n showSourceColumn,\n ),\n [scriptureReferenceColumnName, typeColumnName, detailsColumnName, showSourceColumn],\n );\n\n useEffect(() => {\n // Ensure sorting is applied correctly when grouped by type\n if (grouping.includes(typeColId)) {\n setSorting([\n { id: typeColId, desc: false },\n { id: scrBookColId, desc: false },\n ]);\n } else {\n setSorting([{ id: scrBookColId, desc: false }]);\n }\n }, [grouping]);\n\n const table = useReactTable({\n data: scriptureResults,\n columns,\n state: {\n grouping,\n sorting,\n rowSelection,\n },\n onGroupingChange: setGrouping,\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getExpandedRowModel: getExpandedRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getRowId: getRowKey,\n autoResetExpanded: false,\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n });\n\n useEffect(() => {\n if (onRowSelected) {\n const selectedRows = table.getSelectedRowModel().rowsById;\n const keys = Object.keys(selectedRows);\n if (keys.length === 1) {\n const selectedRow = scriptureResults.find((row) => getRowKey(row) === keys[0]) || undefined;\n if (selectedRow) onRowSelected(selectedRow);\n }\n }\n }, [rowSelection, scriptureResults, onRowSelected, table]);\n\n // Define possible grouping options\n const scrBookGroupName = scriptureBookGroupName ?? defaultScrBookGroupName;\n const typeGroupName = typeColumnName ?? defaultTypeColumnName;\n\n const groupingOptions = [\n { label: 'No Grouping', value: [] },\n { label: `Group by ${scrBookGroupName}`, value: [scrBookColId] },\n { label: `Group by ${typeGroupName}`, value: [typeColId] },\n {\n label: `Group by ${scrBookGroupName} and ${typeGroupName}`,\n value: [scrBookColId, typeColId],\n },\n {\n label: `Group by ${typeGroupName} and ${scrBookGroupName}`,\n value: [typeColId, scrBookColId],\n },\n ];\n\n const handleSelectChange = (selectedGrouping: string) => {\n setGrouping(JSON.parse(selectedGrouping));\n };\n\n const handleRowClick = (row: Row, event: MouseEvent) => {\n if (!row.getIsGrouped() && !row.getIsSelected()) {\n row.getToggleSelectedHandler()(event);\n }\n };\n\n const getEvenOrOddBandingStyle = (row: Row, index: number) => {\n if (row.getIsGrouped()) return '';\n // UX has now said they don't think they want banding. I'm leaving in the code to\n // set even and odd styles, but there's nothing in the CSS to style them differently.\n // The \"even\" style used to also have tw-bg-neutral-300 (along with even) to create\n // a visual banding effect. That could be added back in if UX changes the decision.\n return cn('banded-row', index % 2 === 0 ? 'even' : 'odd');\n };\n\n const getIndent = (\n groupingState: GroupingState,\n row: Row,\n cell: Cell,\n ) => {\n if (groupingState?.length === 0 || row.depth < cell.column.getGroupedIndex()) return undefined;\n if (row.getIsGrouped()) {\n switch (row.depth) {\n case 1:\n return 'tw-ps-4';\n default:\n return undefined;\n }\n }\n switch (row.depth) {\n case 1:\n return 'tw-ps-8';\n case 2:\n return 'tw-ps-12';\n default:\n return undefined;\n }\n };\n\n return (\n
\n {!showColumnHeaders && (\n {\n handleSelectChange(value);\n }}\n >\n \n \n \n \n \n {groupingOptions.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n )}\n \n {showColumnHeaders && (\n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers\n .filter((h) => h.column.columnDef.header)\n .map((header) => (\n /* For sticky column headers to work, we probably need to change the default definition of the shadcn Table component. See https://github.com/shadcn-ui/ui/issues/1151 */\n \n {header.isPlaceholder ? undefined : (\n
\n {header.column.getCanGroup() ? (\n \n {header.column.getIsGrouped() ? `🛑` : `👊 `}\n \n ) : undefined}{' '}\n {flexRender(header.column.columnDef.header, header.getContext())}\n
\n )}\n
\n ))}\n
\n ))}\n
\n )}\n \n {table.getRowModel().rows.map((row, rowIndex) => {\n return (\n handleRowClick(row, event)}\n >\n {row.getVisibleCells().map((cell) => {\n if (\n cell.getIsPlaceholder() ||\n (cell.column.columnDef.enableGrouping &&\n !cell.getIsGrouped() &&\n (cell.column.columnDef.id !== typeColId || !showSourceColumn))\n )\n return undefined;\n return (\n \n {(() => {\n if (cell.getIsGrouped()) {\n return (\n \n {row.getIsExpanded() && }\n {!row.getIsExpanded() &&\n (direction === 'ltr' ? : )}{' '}\n {flexRender(cell.column.columnDef.cell, cell.getContext())} (\n {row.subRows.length})\n \n );\n }\n\n // if (cell.getIsAggregated()) {\n // flexRender(\n // cell.column.columnDef.aggregatedCell ?? cell.column.columnDef.cell,\n // cell.getContext(),\n // );\n // }\n\n return flexRender(cell.column.columnDef.cell, cell.getContext());\n })()}\n \n );\n })}\n \n );\n })}\n \n
\n
\n );\n}\n","import {\n getLocalizeKeyForScrollGroupId,\n LanguageStrings,\n ScrollGroupId,\n} from 'platform-bible-utils';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/shadcn-ui/select';\n\nconst DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS = {\n [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n [getLocalizeKeyForScrollGroupId(0)]: 'A',\n [getLocalizeKeyForScrollGroupId(1)]: 'B',\n [getLocalizeKeyForScrollGroupId(2)]: 'C',\n [getLocalizeKeyForScrollGroupId(3)]: 'D',\n [getLocalizeKeyForScrollGroupId(4)]: 'E',\n [getLocalizeKeyForScrollGroupId(5)]: 'F',\n [getLocalizeKeyForScrollGroupId(6)]: 'G',\n [getLocalizeKeyForScrollGroupId(7)]: 'H',\n [getLocalizeKeyForScrollGroupId(8)]: 'I',\n [getLocalizeKeyForScrollGroupId(9)]: 'J',\n [getLocalizeKeyForScrollGroupId(10)]: 'K',\n [getLocalizeKeyForScrollGroupId(11)]: 'L',\n [getLocalizeKeyForScrollGroupId(12)]: 'M',\n [getLocalizeKeyForScrollGroupId(13)]: 'N',\n [getLocalizeKeyForScrollGroupId(14)]: 'O',\n [getLocalizeKeyForScrollGroupId(15)]: 'P',\n [getLocalizeKeyForScrollGroupId(16)]: 'Q',\n [getLocalizeKeyForScrollGroupId(17)]: 'R',\n [getLocalizeKeyForScrollGroupId(18)]: 'S',\n [getLocalizeKeyForScrollGroupId(19)]: 'T',\n [getLocalizeKeyForScrollGroupId(20)]: 'U',\n [getLocalizeKeyForScrollGroupId(21)]: 'V',\n [getLocalizeKeyForScrollGroupId(22)]: 'W',\n [getLocalizeKeyForScrollGroupId(23)]: 'X',\n [getLocalizeKeyForScrollGroupId(24)]: 'Y',\n [getLocalizeKeyForScrollGroupId(25)]: 'Z',\n};\n\nexport type ScrollGroupSelectorProps = {\n /**\n * List of scroll group ids to show to the user. Either a {@link ScrollGroupId} or `undefined` for\n * no scroll group\n */\n availableScrollGroupIds: (ScrollGroupId | undefined)[];\n /** Currently selected scroll group id. `undefined` for no scroll group */\n scrollGroupId: ScrollGroupId | undefined;\n /** Callback function run when the user tries to change the scroll group id */\n onChangeScrollGroupId: (newScrollGroupId: ScrollGroupId | undefined) => void;\n /**\n * Localized strings to use for displaying scroll group ids. Must be an object whose keys are\n * `getLocalizeKeyForScrollGroupId(scrollGroupId)` for all scroll group ids (and `undefined` if\n * included) in {@link ScrollGroupSelectorProps.availableScrollGroupIds} and whose values are the\n * localized strings to use for those scroll group ids.\n *\n * Defaults to English localizations of English alphabet for scroll groups 0-25 (e.g. 0 is A) and\n * Ø for `undefined`. Will fill in any that are not provided with these English localizations.\n * Also, if any values match the keys, the English localization will be used. This is useful in\n * case you want to pass in a temporary version of the localized strings while your localized\n * strings load.\n *\n * @example\n *\n * ```typescript\n * const myScrollGroupIdLocalizedStrings = {\n * [getLocalizeKeyForScrollGroupId('undefined')]: 'Ø',\n * [getLocalizeKeyForScrollGroupId(0)]: 'A',\n * [getLocalizeKeyForScrollGroupId(1)]: 'B',\n * [getLocalizeKeyForScrollGroupId(2)]: 'C',\n * [getLocalizeKeyForScrollGroupId(3)]: 'D',\n * [getLocalizeKeyForScrollGroupId(4)]: 'E',\n * };\n * ```\n *\n * @example\n *\n * ```tsx\n * const availableScrollGroupIds = [undefined, 0, 1, 2, 3, 4];\n *\n * const localizeKeys = getLocalizeKeysForScrollGroupIds();\n *\n * const [localizedStrings] = useLocalizedStrings(localizeKeys);\n *\n * ...\n *\n * \n * ```\n */\n localizedStrings?: LanguageStrings;\n};\n\n/** Selector component for choosing a scroll group */\nexport default function ScrollGroupSelector({\n availableScrollGroupIds,\n scrollGroupId,\n onChangeScrollGroupId,\n localizedStrings = {},\n}: ScrollGroupSelectorProps) {\n const localizedStringsDefaulted = {\n ...DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS,\n ...Object.fromEntries(\n Object.entries(localizedStrings).map(\n ([localizedStringKey, localizedStringValue]: [string, string]) => [\n localizedStringKey,\n localizedStringKey === localizedStringValue &&\n localizedStringKey in DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS\n ? DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS[localizedStringKey]\n : localizedStringValue,\n ],\n ),\n ),\n };\n return (\n \n onChangeScrollGroupId(\n newScrollGroupString === 'undefined' ? undefined : parseInt(newScrollGroupString, 10),\n )\n }\n >\n \n \n \n \n {availableScrollGroupIds.map((scrollGroupOptionId) => (\n \n {localizedStringsDefaulted[getLocalizeKeyForScrollGroupId(scrollGroupOptionId)]}\n \n ))}\n \n \n );\n}\n","import React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n \n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { PropsWithChildren } from 'react';\nimport { Separator } from '@/components/shadcn-ui/separator';\n\n/** Props for the SettingsList component, currently just children */\ntype SettingsListProps = PropsWithChildren;\n\n/**\n * SettingsList component is a wrapper for list items. Rendered with a formatted div\n *\n * @param children To populate the list with\n * @returns Formatted div encompassing the children\n */\nexport function SettingsList({ children }: SettingsListProps) {\n return
{children}
;\n}\n\n/** Props for SettingsListItem component */\ntype SettingsListItemProps = PropsWithChildren & {\n /** Primary text of the list item */\n primary: string;\n\n /** Optional text of the list item */\n secondary?: string | undefined;\n\n /** Optional boolean to display a message if the children aren't loaded yet. Defaults to false */\n isLoading?: boolean;\n\n /** Optional message to display if isLoading */\n loadingMessage?: string;\n};\n\n/**\n * SettingsListItem component is a common list item. Rendered with a formatted div\n *\n * @param primary Primary text of the list item\n * @param secondary Optional secondary text of the list item\n * @param isLoading Optional, to display a message if the action component isn't generated yet,\n * defaults to false\n * @param children The action component(s) to provide for this item\n * @param loadingMessage Optional, message to display if isLoading\n * @returns Formatted div encompassing the list item content\n */\nexport function SettingsListItem({\n primary,\n secondary,\n children,\n isLoading = false,\n loadingMessage,\n}: SettingsListItemProps) {\n return (\n
\n
\n

{primary}

\n

\n {secondary}\n

\n
\n\n {isLoading ? (\n

{loadingMessage}

\n ) : (\n
{children}
\n )}\n
\n );\n}\n\n/** Props for SettingsListHeader component */\ntype SettingsListHeaderProps = {\n /** The primary text of the list header */\n primary: string;\n\n /** Optional secondary text of the list header */\n secondary?: string | undefined;\n\n /** Optional boolean to include a separator underneath the secondary text. Defaults to false */\n includeSeparator?: boolean;\n};\n\n/**\n * SettingsListHeader component displays text above the list\n *\n * @param primary The primary text of the list header\n * @param secondary Optional secondary text of the list header\n * @param includeSeparator Optional boolean to include a separator underneath the secondary text.\n * Defaults to false\n * @returns Formatted div with list header content\n */\nexport function SettingsListHeader({\n primary,\n secondary,\n includeSeparator = false,\n}: SettingsListHeaderProps) {\n return (\n
\n
\n

{primary}

\n

{secondary}

\n
\n {includeSeparator ? : ''}\n
\n );\n}\n","import Checkbox from '@/components/shadcn-ui/checkbox';\nimport { Label } from '@/components/shadcn-ui/label';\n\nexport type ChecklistProps = {\n /** Optional string representing the id attribute of the Checklist */\n id?: string;\n /** Optional string representing CSS class name(s) for styling */\n className?: string;\n /** Array of strings representing the checkable items */\n listItems: string[];\n /** Array of strings representing the checked items */\n selectedListItems: string[];\n /**\n * Function that is called when a checkbox item is selected or deselected\n *\n * @param item The string description for this item\n * @param selected True if selected, false if not selected\n */\n handleSelectListItem: (item: string, selected: boolean) => void;\n\n /**\n * Optional function creates a label for a provided checkable item\n *\n * @param item The item for which a label is to be created\n * @returns A string representing the label text for the checkbox associated with that item\n */\n createLabel?: (item: string) => string;\n};\n\n/** Renders a list of checkboxes. Each checkbox corresponds to an item from the `listItems` array. */\nexport default function Checklist({\n id,\n className,\n listItems,\n selectedListItems,\n handleSelectListItem,\n createLabel,\n}: ChecklistProps) {\n return (\n
\n {listItems.map((item) => (\n
\n handleSelectListItem(item, value)}\n />\n \n
\n ))}\n
\n );\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import PropTypes from 'prop-types';\nimport chainPropTypes from '../chainPropTypes';\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n const {\n prototype = {}\n } = elementType;\n return Boolean(prototype.isReactComponent);\n}\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n const element = props[propName];\n const safePropName = propFullName || propName;\n if (element == null ||\n // When server-side rendering React doesn't warn either.\n // This is not an accurate check for SSR.\n // This is only in place for Emotion compat.\n // TODO: Revisit once https://github.com/facebook/react/issues/20047 is resolved.\n typeof window === 'undefined') {\n return null;\n }\n let warningHint;\n const elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n if (warningHint !== undefined) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an element that can hold a ref. ${warningHint} ` + 'For more information see https://mui.com/r/caveat-with-refs-guide');\n }\n return null;\n}\nconst elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n\nconst specialProperty = 'exact-prop: \\u200b';\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n return _extends({}, propTypes, {\n [specialProperty]: props => {\n const unsupportedProps = Object.keys(props).filter(prop => !propTypes.hasOwnProperty(prop));\n if (unsupportedProps.length > 0) {\n return new Error(`The following props are not supported: ${unsupportedProps.map(prop => `\\`${prop}\\``).join(', ')}. Please remove them.`);\n }\n return null;\n }\n });\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propValue = props[propName];\n const safePropName = propFullName || propName;\n if (propValue == null) {\n return null;\n }\n if (propValue && propValue.nodeType !== 1) {\n return new Error(`Invalid ${location} \\`${safePropName}\\` supplied to \\`${componentName}\\`. ` + `Expected an HTMLElement.`);\n }\n return null;\n}","import PropTypes from 'prop-types';\nconst refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props(_extends({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style(_extends({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n return props => processStyleArg(stylesArg, _extends({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, _extends({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${capitalize(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","'use client';\n\nimport { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // e.g. heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m10 17 5-5-5-5z\"\n}), 'ArrowRight');","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n return typeof element === 'string';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n const {\n disableDefaultClasses\n } = React.useContext(ClassNameConfiguratorContext);\n return slot => {\n if (disableDefaultClasses) {\n return '';\n }\n return generateUtilityClass(slot);\n };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport function ClassNameConfigurator(props) {\n const {\n disableDefaultClasses,\n children\n } = props;\n const contextValue = React.useMemo(() => ({\n disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n }), [disableDefaultClasses]);\n return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n value: contextValue,\n children: children\n });\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","import { globalStateClasses } from '@mui/utils/generateUtilityClass';\nconst GLOBAL_CLASS_PREFIX = 'base';\nfunction buildStateClass(state) {\n return `${GLOBAL_CLASS_PREFIX}--${state}`;\n}\nfunction buildSlotClass(componentName, slot) {\n return `${GLOBAL_CLASS_PREFIX}-${componentName}-${slot}`;\n}\nexport function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? buildStateClass(globalStateClass) : buildSlotClass(componentName, slot);\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import { generateUtilityClass } from '../generateUtilityClass';\nexport function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base-ui/react-portal/components-api/#portal)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, forwardedRef);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(forwardedRef, mountNode);\n return () => {\n setRef(forwardedRef, null);\n };\n }\n return undefined;\n }, [forwardedRef, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: children\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport { Portal };","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { generateUtilityClass } from '../generateUtilityClass';\nimport { generateUtilityClasses } from '../generateUtilityClasses';\nconst COMPONENT_NAME = 'Popper';\nexport function getPopperUtilityClass(slot) {\n return generateUtilityClass(COMPONENT_NAME, slot);\n}\nexport const popperClasses = generateUtilityClasses(COMPONENT_NAME, ['root']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\", \"ownerState\"],\n _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '../composeClasses';\nimport { Portal } from '../Portal';\nimport { getPopperUtilityClass } from './popperClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, useClassNamesOverride(getPopperUtilityClass));\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n var _slots$root;\n const {\n anchorEl,\n children,\n direction,\n disablePortal,\n modifiers,\n open,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps\n // @ts-ignore internal logic\n // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, forwardedRef);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: popperModifiers\n }));\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses();\n const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: props,\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n children: typeof children === 'function' ? children(childProps) : children\n }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Popper](https://mui.com/base-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/base-ui/react-popper/components-api/#popper)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: forwardedRef,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display\n }, style),\n TransitionProps: transitionProps,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport { Popper };","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default {\n disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n enter: PropTypes.number,\n exit: PropTypes.number,\n appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string,\n active: PropTypes.string\n}), PropTypes.shape({\n enter: PropTypes.string,\n enterDone: PropTypes.string,\n enterActive: PropTypes.string,\n exit: PropTypes.string,\n exitDone: PropTypes.string,\n exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"component\", \"components\", \"componentsProps\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\", \"slots\", \"slotProps\"];\nimport { Popper as BasePopper } from '@mui/base/Popper';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n var _slots$root;\n const theme = useTheme();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n anchorEl,\n component,\n components,\n componentsProps,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n const otherProps = _extends({\n anchorEl,\n container,\n disablePortal,\n keepMounted,\n modifiers,\n open,\n placement,\n popperOptions,\n popperRef,\n transition\n }, other);\n return /*#__PURE__*/_jsx(PopperRoot, _extends({\n as: component,\n direction: theme == null ? void 0 : theme.direction,\n slots: {\n root: RootComponent\n },\n slotProps: slotProps != null ? slotProps : componentsProps\n }, otherProps, {\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * You can also provide a callback, which is called in a React layout effect.\n * This lets you set the container from a ref, and also makes server-side rendering possible.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementAcceptingRef, unstable_useTimeout as useTimeout, unstable_Timeout as Timeout } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, appendOwnerState } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(({\n theme,\n ownerState,\n open\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n pointerEvents: 'auto'\n}, !open && {\n pointerEvents: 'none'\n}, ownerState.arrow && {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n left: 0,\n marginLeft: '-0.71em'\n } : {\n right: 0,\n marginRight: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n }),\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n right: 0,\n marginRight: '-0.71em'\n } : {\n left: 0,\n marginLeft: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n })\n}));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n position: 'relative',\n margin: 0\n}, ownerState.touch && {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n}, {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n transformOrigin: 'right center'\n }, !ownerState.isRtl ? _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n }) : _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n transformOrigin: 'left center'\n }, !ownerState.isRtl ? _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n }) : _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n }, ownerState.touch && {\n marginBottom: '24px'\n }),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n transformOrigin: 'center top',\n marginTop: '14px'\n }, ownerState.touch && {\n marginTop: '24px'\n })\n}));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n}));\nlet hystersisOpen = false;\nconst hystersisTimer = new Timeout();\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n hystersisTimer.clear();\n}\nfunction composeEventHandler(handler, eventHandler) {\n return event => {\n if (eventHandler) {\n eventHandler(event);\n }\n handler(event);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children: childrenProp,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp = Grow,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n // to prevent runtime errors, developers will need to provide a child as a React element anyway.\n const children = /*#__PURE__*/React.isValidElement(childrenProp) ? childrenProp : /*#__PURE__*/_jsx(\"span\", {\n children: childrenProp\n });\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = useTimeout();\n const enterTimer = useTimeout();\n const leaveTimer = useTimeout();\n const touchTimer = useTimeout();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = useEventCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n touchTimer.clear();\n });\n React.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);\n const handleOpen = event => {\n hystersisTimer.clear();\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n hystersisTimer.start(800 + leaveDelay, () => {\n hystersisOpen = false;\n });\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n closeTimer.start(theme.transitions.duration.shortest, () => {\n ignoreNonTouchEvents.current = false;\n });\n });\n const handleEnter = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n enterTimer.clear();\n leaveTimer.clear();\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {\n handleOpen(event);\n });\n } else {\n handleOpen(event);\n }\n };\n const handleLeave = event => {\n enterTimer.clear();\n leaveTimer.start(leaveDelay, () => {\n handleClose(event);\n });\n };\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n // We just need to re-render the Tooltip if the focus-visible state changes.\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setChildIsFocusVisible(false);\n handleLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setChildIsFocusVisible(true);\n handleEnter(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleMouseOver = handleEnter;\n const handleMouseLeave = handleLeave;\n const handleTouchStart = event => {\n detectTouchStart(event);\n leaveTimer.clear();\n closeTimer.clear();\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.start(enterTouchDelay, () => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleEnter(event);\n });\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n leaveTimer.start(leaveTouchDelay, () => {\n handleClose(event);\n });\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(children.ref, focusVisibleRef, setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n // So we exclude all falsy values, except 0, which is valid.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef\n }, followCursor ? {\n onMouseMove: handleMouseMove\n } : {});\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of .', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const popperOptions = React.useMemo(() => {\n var _PopperProps$popperOp;\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n return _extends({}, PopperProps.popperOptions, {\n modifiers: tooltipModifiers\n });\n }, [arrowRef, PopperProps]);\n const ownerState = _extends({}, props, {\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n });\n const classes = useUtilityClasses(ownerState);\n const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n }), ownerState);\n const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n }), ownerState);\n const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n }), ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n as: PopperComponentProp != null ? PopperComponentProp : Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true\n }, interactiveWrapperListeners, popperProps, {\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n timeout: theme.transitions.duration.shorter\n }, TransitionPropsInner, transitionProps, {\n children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n ref: setArrowRef\n })) : null]\n }))\n }))\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import '@/components/mui/menu-item.component.css';\nimport ArrowRightIcon from '@mui/icons-material/ArrowRight';\nimport {\n ListItemIcon as MuiListItemIcon,\n ListItemText as MuiListItemText,\n MenuItem as MuiMenuItem,\n} from '@mui/material';\nimport Tooltip from '@mui/material/Tooltip';\nimport { Localized, ReferencedItem, SingleColumnMenu } from 'platform-bible-utils';\nimport { MouseEvent, PropsWithChildren } from 'react';\n\ntype MenuItemInfoBase = {\n /** Text (displayable in the UI) as the name of the menu item */\n label: string;\n /** Text to display when the mouse hovers over the menu item */\n tooltip?: string;\n};\n\nexport type Command = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n command: string;\n};\n\ntype SubMenu = MenuItemInfoBase & {\n /** Command to execute (string.string) */\n items: MenuItemInfo[];\n};\n\nexport interface CommandHandler {\n (command: Command): void;\n}\n\nexport type MenuPropsBase = {\n /*\n * The JSON defining the menu whose items are to be rendered. This will typically be one of the\n * menus in the \"defs\" in a Platform.Bible menu (see PlatformMenus). The schema for this is\n * menuDocumentSchema (at the end of menus.model.ts). Note that while this is a\n * \"SingleColumnMenu\", somewhat bizarrely, a MultiColumnMenu is a SingleColumnMenu, so it really\n * could be a MultiColumnMenu, in which case, column had better be defined so it can be used\n * to filter out the actual groups and items to display on the column.\n */\n menuDefinition: Localized;\n\n commandHandler: CommandHandler;\n\n /**\n * Additional action to perform when any menu item is clicked. Allows the caller to handle event\n * (e.g., to close the menu).\n */\n onClick?: (event: MouseEvent) => void;\n};\n\nexport type MenuItemListProps = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type MenuItemProps = Omit &\n PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n\n onClick: (event: MouseEvent) => void;\n }>;\n\ntype MenuItemInfo = (Command | SubMenu) & {\n /**\n * If specified, menu item will be inset if it does not have a leading icon.\n *\n * @default true\n */\n allowForLeadingIcons?: boolean;\n /**\n * If specified, the path to the icon image to display on the leading side of the menu text.\n *\n * @default undefined (no leading icon will be shown)\n */\n iconPathBefore?: string;\n /**\n * If specified, the path to the icon image to display on the trailing side of the menu text.\n *\n * @default undefined (no trailing icon will be shown)\n */\n iconPathAfter?: string;\n /**\n * If true, list item is focused during the first mount\n *\n * @default false\n */\n hasAutoFocus?: boolean;\n\n /** Additional css classes to help with unique styling of the menu item */\n className?: string;\n\n /**\n * If true, the menu item will appear disabled and it will not respond to clicks or mouse hovers.\n *\n * @default false\n */\n isDisabled?: boolean;\n\n /**\n * If true, compact vertical padding designed for keyboard and mouse input is used.\n *\n * @default true\n */\n isDense?: boolean;\n\n /**\n * If true, a right-arrow icon will be displayed (iconPathAfter, if specified, will be ignored).\n *\n * @default false\n */\n isSubMenuParent?: boolean;\n\n /**\n * If true, the left and right padding is removed\n *\n * @default false\n */\n hasDisabledGutters?: boolean;\n\n /**\n * If true, a 1px light border is added to bottom of menu item\n *\n * @default false\n */\n hasDivider?: boolean;\n\n /** Help identify which element has keyboard focus */\n focusVisibleClassName?: string;\n\n /** If it's a submenu, it should have the items property */\n items?: MenuItemInfo[];\n};\n\nfunction getIcon(icon: string | undefined, menuLabel: string, leading: boolean) {\n return icon ? (\n \n {`${leading\n \n ) : undefined;\n}\n\nexport default function MenuItem(props: MenuItemProps) {\n const {\n onClick,\n label,\n tooltip,\n allowForLeadingIcons = true,\n iconPathBefore = undefined,\n iconPathAfter = undefined,\n hasAutoFocus = false,\n className,\n isDisabled = false,\n isDense = true,\n isSubMenuParent = false,\n hasDisabledGutters = false,\n hasDivider = false,\n focusVisibleClassName,\n id,\n children,\n } = props;\n\n const menuItem = (\n \n {label ? (\n <>\n {getIcon(iconPathBefore, label, true)}\n \n {isSubMenuParent ? (\n \n \n \n ) : (\n getIcon(iconPathAfter, label, false)\n )}\n \n ) : (\n children\n )}\n \n );\n\n return tooltip ? (\n \n
{menuItem}
\n
\n ) : (\n menuItem\n );\n}\n","import MenuItem, {\n MenuItemListProps,\n MenuItemProps,\n MenuPropsBase,\n} from '@/components/mui/menu-item.component';\nimport { Menu } from '@mui/material';\nimport {\n Localized,\n MenuGroupDetailsInSubMenu,\n MenuItemContainingCommand,\n MenuItemContainingSubmenu,\n OrderedExtensibleContainer,\n ReferencedItem,\n SingleColumnMenu,\n} from 'platform-bible-utils';\nimport { MouseEvent, useMemo, useState } from 'react';\n\n/**\n * All the exported types in this file should be regarded as \"internal\" (i.e., they should not be\n * exposed via index.ts).\n */\n\nexport type GroupedMenuPropsBase = MenuPropsBase & {\n /** Optional unique (column) identifier */\n columnId?: ReferencedItem;\n};\n\nexport type GroupedMenuItemListProps = MenuItemListProps & {\n /**\n * If the menuDefinition includes \"top-level\" groups (i.e., those that belong to a column as\n * opposed to those that belong to a submenu) that should not be included in the list, then this\n * array specifies which groups to include. Likewise, for a submenu, this list indicates which\n * groups are pertinent for that submenu. So then for a context menu this property need not be\n * specified since it is a top-level menu based on a \"true\" SingleColumnMenu (i.e., one that is\n * not a MultiColumnMenu).\n */\n includedGroups?: {\n id: string;\n group: Localized;\n }[];\n};\n\ninterface ItemInfo {\n item: Localized;\n isLastItemInGroup: boolean;\n}\n\ntype SubMenuProps = MenuPropsBase & {\n parentMenuItem: Localized;\n parentItemProps: Omit, 'iconPathAfter'>;\n};\n\nfunction getAllGroups(menuDefinition: Localized) {\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n return groupEntries.map(([key, value]) => ({ id: key, group: value }));\n}\n\nfunction SubMenu(props: SubMenuProps) {\n const [anchorEl, setAnchorEl] = useState(undefined);\n\n const { parentMenuItem, parentItemProps, menuDefinition } = props;\n\n const handleParentMenuItemClick = (event: MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(undefined);\n };\n\n const renderSubMenuItems = () => {\n let includedGroups = getAllGroups(menuDefinition).filter((g) => 'menuItem' in g.group);\n\n // Ensure valid parent menu was provided. (If not, submenu will contain all groups!)\n if (!parentMenuItem?.id) throw new Error('A valid parent menu item is required for submenus.');\n\n // When laying out a submenu, only include groups associated with the provided parent menu.\n // Note: without the (annoying) redundant check that the included groups\n // have the menuItem field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (group) => 'menuItem' in group.group && group.group.menuItem === parentMenuItem.id,\n );\n\n return ;\n };\n\n return (\n <>\n \n \n {renderSubMenuItems()}\n \n \n );\n}\n\nconst getOrderedGroupItems = (\n groupId: string,\n allItems: Localized[],\n) => {\n // Filter items that belong to the specified group\n const itemsForGroup = allItems.filter((item) => item.group === groupId);\n // Sort items based on order\n const sortedItems = itemsForGroup.sort((a, b) => (a.order || 0) - (b.order || 0));\n return sortedItems;\n};\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. It is used to generate and lay out the MenuItems that appear either on a\n * top-level menu (in a GridMenu or ContextMenu) or in a submenu.\n */\nexport default function GroupedMenuItemList(menuProps: GroupedMenuItemListProps) {\n const { menuDefinition, onClick, commandHandler, includedGroups } = menuProps;\n\n const { items, allowForLeadingIcons } = useMemo(() => {\n const groupsToInclude =\n includedGroups && includedGroups.length > 0\n ? includedGroups\n : // We're apparently laying out a single-column menu (presumably a context menu). In this\n // case, all groups should be included except ones that belong to a submenu.\n getAllGroups(menuDefinition).filter((g) => !('menuItem' in g.group));\n\n const sortedGroups = Object.values(groupsToInclude).sort(\n (a, b) => (a.group.order || 0) - (b.group.order || 0),\n );\n\n const itemArray: ItemInfo[] = [];\n\n sortedGroups.forEach((group) => {\n getOrderedGroupItems(group.id, menuDefinition.items).forEach((item) =>\n itemArray.push({ item, isLastItemInGroup: false }),\n );\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = true;\n });\n\n // No divider after last item in final group.\n if (itemArray.length > 0) itemArray[itemArray.length - 1].isLastItemInGroup = false;\n\n const allowSpaceForLeadingIcons = itemArray.some(\n (i) => 'iconPathBefore' in i.item && i.item.iconPathBefore,\n );\n\n return { items: itemArray, allowForLeadingIcons: allowSpaceForLeadingIcons };\n }, [includedGroups, menuDefinition]);\n\n // Create props for MenuItem component including setting hasDivider for the last item in a group\n const createMenuItemProps = ({ item, isLastItemInGroup }: ItemInfo) => {\n const menuItemProps = {\n className: 'papi-menu-item',\n label: item.label,\n tooltip: item.tooltip,\n iconPathBefore: 'iconPathBefore' in item ? item.iconPathBefore : undefined,\n iconPathAfter: 'iconPathAfter' in item ? item.iconPathAfter : undefined,\n hasDivider: isLastItemInGroup, // Set hasDivider to true for the last item in a group\n allowForLeadingIcons,\n };\n\n return menuItemProps;\n };\n\n const [firstItem] = items;\n\n if (!firstItem) return
;\n\n const divKey = firstItem.item.group;\n\n return (\n
\n {items.map((itemInfo, index) => {\n const { item } = itemInfo;\n const menuItemProps = createMenuItemProps(itemInfo);\n if ('command' in item) {\n const key = item.group + index;\n return (\n ) => {\n onClick?.(event);\n commandHandler(item);\n }}\n {...menuItemProps}\n />\n );\n }\n return (\n \n );\n })}\n
\n );\n}\n","import GroupedMenuItemList from '@/components/mui/grouped-menu-item-list.component';\nimport { MenuItemListProps } from '@/components/mui/menu-item.component';\nimport { MultiColumnMenu } from 'platform-bible-utils';\n\n/**\n * This component is internal; it does not need to be exposed to the outside world since it is not\n * useful on its own. Use either GridMenu or ContextMenu.\n */\nexport default function TopLevelMenu(props: MenuItemListProps) {\n const { menuDefinition, columnId } = props;\n\n const groupEntries = Object.entries(menuDefinition.groups);\n // Convert array of entries to array of objects with id and group properties\n const groups = groupEntries.map(([key, value]) => ({ id: key, group: value }));\n let includedGroups = groups.filter((g) => 'column' in g.group);\n\n // Check if column is provided and menuDefinition is a MultiColumnMenu\n if (\n columnId &&\n 'columns' in menuDefinition &&\n // Without this type assertion, TS doesn't know what columns is.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n (menuDefinition as MultiColumnMenu).columns[columnId]\n ) {\n // When laying out a single column in a MultiColumnMenu, only include groups associated with\n // the provided column. Note: without the (annoying) redundant check that the included groups\n // have the colum field, TS doesn't think it exists.\n includedGroups = includedGroups.filter(\n (g) => 'column' in g.group && g.group.column === columnId,\n );\n }\n\n return ;\n}\n","import '@/components/mui/grid-menu.component.css';\nimport { GroupedMenuPropsBase } from '@/components/mui/grouped-menu-item-list.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport TopLevelMenu from '@/components/mui/top-level-menu.component';\nimport { Grid, List } from '@mui/material';\nimport {\n Localized,\n MenuColumnWithHeader,\n MultiColumnMenu,\n ReferencedItem,\n} from 'platform-bible-utils';\nimport { useMemo } from 'react';\n\ntype ColumnInfo = {\n /*\n * The ID (`${string}.${string}`) of a specific menu column.\n */\n id: ReferencedItem;\n\n /*\n * Metadata (label, order, etc.) for a specific menu column.\n */\n metadata: Localized;\n};\n\ntype MenuColumnProps = ColumnInfo &\n GroupedMenuPropsBase & {\n /** Additional css classes to help with unique styling of the menu column */\n className?: string;\n };\n\nexport type GridMenuInfo = {\n /** The menu object containing information about the columns, groups, and items to display. */\n multiColumnMenu: Localized;\n};\n\nexport type GridMenuProps = GridMenuInfo & {\n /** Optional unique identifier */\n id?: string;\n\n commandHandler: CommandHandler;\n\n /** Additional css classes to help with unique styling of the grid menu */\n className?: string;\n};\n\nfunction MenuColumn({\n commandHandler,\n menuDefinition,\n id,\n metadata,\n onClick,\n className,\n}: MenuColumnProps) {\n return (\n \n

\n {metadata.label}\n

\n {/* It would seem as though this List component were unnecessary, since it only contains one\n thing, but the \"dense\" property does affect the layout of the items (in a way I don't fully\n understand). There might be a better way. */}\n \n \n \n \n );\n}\n\nexport default function GridMenu({\n commandHandler,\n className,\n multiColumnMenu,\n id,\n}: GridMenuProps) {\n const { columns } = multiColumnMenu;\n\n const sortedColumns = useMemo(() => {\n const columnNumbers = new Map();\n Object.getOwnPropertyNames(columns).forEach((columnName: string) => {\n // We know for sure there is a (boolean) property 'isExtensible' that we are not interested in.\n if (columnName === 'isExtensible') return;\n // TS doesn't allow `columnName` above to be a ReferencedItem even though the type says it is\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const columnId = columnName as ReferencedItem;\n const column = columns[columnId];\n // As of right now (and hopefully forever after), all remaining properties of the\n // ColumnsWithHeaders object are columns whose property names are the IDs of the columns.\n // This is an additional (redundant) sanity check. Specifically we're interested in\n // MenuColumnWithHeader objects, which TypeScript now \"knows\" we have, but at runtime all we\n // can check for is that it's an object with a valid numeric order field. That's likely good\n // enough.\n if (\n typeof column === 'object' &&\n typeof column.order === 'number' &&\n !Number.isNaN(column.order)\n )\n columnNumbers.set(column.order, { id: columnId, metadata: column });\n else\n console.warn(\n `Property ${columnName} (${typeof column}) on menu ${id} is not a valid column and is being ignored. This might indicate data corruption`,\n );\n });\n\n // Extract values and sort them based on the 'order' property\n return Array.from(columnNumbers.values()).sort((a, b) => {\n return (a.metadata.order || 0) - (b.metadata.order || 0);\n });\n }, [columns, id]);\n\n // We might need something like this if we need to be able to prevent empty columns\n // sortedColumns.filter((c) => multiColumnMenu.groups.some((g) => 'column' in g && (g as .column)...\n\n return (\n \n {sortedColumns.map((col, index) => (\n \n ))}\n \n );\n}\n","import { useEffect, useRef, useState } from 'react';\n\nexport type UsePromiseOptions = {\n /**\n * Whether to leave the value as the most recent resolved promise value or set it back to\n * defaultValue while running the promise again. Defaults to true\n */\n preserveValue?: boolean;\n};\n\n/** Set up defaults for options for usePromise hook */\nfunction getUsePromiseOptionsDefaults(options: UsePromiseOptions): UsePromiseOptions {\n return {\n preserveValue: true,\n ...options,\n };\n}\n\n/**\n * Awaits a promise and returns a loading value while the promise is unresolved\n *\n * @param promiseFactoryCallback A function that returns the promise to await. If this callback is\n * undefined, the current value will be returned (defaultValue unless it was previously changed\n * and `options.preserveValue` is true), and there will be no loading.\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n * @param defaultValue The initial value to return while first awaiting the promise. If\n * `options.preserveValue` is false, this value is also shown while awaiting the promise on\n * subsequent calls.\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. This means that, if the `promiseFactoryCallback` changes and\n * `options.preserveValue` is `false`, the returned value will be set to the current\n * `defaultValue`. However, the returned value will not be updated if`defaultValue` changes.\n * @param options Various options for adjusting how this hook runs the `promiseFactoryCallback`\n *\n * Note: this parameter is internally assigned to a `ref`, so changing it will not cause any hooks\n * to re-run with its new value. However, the latest `options.preserveValue` will always be used\n * appropriately to determine whether to preserve the returned value when changing the\n * `promiseFactoryCallback`\n * @returns `[value, isLoading]`\n *\n * - `value`: the current value for the promise, either the defaultValue or the resolved promise value\n * - `isLoading`: whether the promise is waiting to be resolved\n */\nconst usePromise = (\n promiseFactoryCallback: (() => Promise) | undefined,\n defaultValue: T,\n options: UsePromiseOptions = {},\n): [value: T, isLoading: boolean] => {\n // Use defaultValue as a ref so it doesn't update dependency arrays\n const defaultValueRef = useRef(defaultValue);\n defaultValueRef.current = defaultValue;\n // Use options as a ref so it doesn't update dependency arrays\n const optionsDefaultedRef = useRef(options);\n optionsDefaultedRef.current = getUsePromiseOptionsDefaults(optionsDefaultedRef.current);\n\n const [value, setValue] = useState(() => defaultValueRef.current);\n const [isLoading, setIsLoading] = useState(true);\n useEffect(() => {\n let promiseIsCurrent = true;\n // If a promiseFactoryCallback was provided, we are loading. Otherwise, there is no loading to do\n setIsLoading(!!promiseFactoryCallback);\n (async () => {\n // If there is a callback to run, run it\n if (promiseFactoryCallback) {\n const result = await promiseFactoryCallback();\n // If the promise was not already replaced, update the value\n if (promiseIsCurrent) {\n setValue(() => result);\n setIsLoading(false);\n }\n }\n })();\n\n return () => {\n // Mark this promise as old and not to be used\n promiseIsCurrent = false;\n if (!optionsDefaultedRef.current.preserveValue) setValue(() => defaultValueRef.current);\n };\n }, [promiseFactoryCallback]);\n\n return [value, isLoading];\n};\nexport default usePromise;\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z\"\n}), 'Menu');","import GridMenu from '@/components/mui/grid-menu.component';\nimport { Command, CommandHandler } from '@/components/mui/menu-item.component';\nimport usePromise from '@/hooks/use-promise.hook';\nimport { Menu as MenuIcon } from '@mui/icons-material';\nimport { Drawer, IconButton } from '@mui/material';\nimport { Localized, MultiColumnMenu } from 'platform-bible-utils';\nimport {\n MouseEvent,\n MutableRefObject,\n PropsWithChildren,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nexport interface MultiColumnMenuProvider {\n (isSupportAndDevelopment: boolean): Promise>;\n}\n\nexport type HamburgerMenuButtonProps = PropsWithChildren & {\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * Optional reference to the \"div\" container that determines the where the menu should appear. If\n * not defined, then (1,1) used.\n */\n containerRef?: MutableRefObject;\n\n /**\n * The delegate to use to get the menu data. If not specified or if it returns undefined, the data\n * in normalMenu or fullMenu property will be used.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /**\n * The menu data to show when the menu is opened if the menuProvider property is not defined.\n * (This allows for a default or test-only static menu to be used.)\n */\n normalMenu?: Localized;\n\n /**\n * The menu data to show for \"full\" menu (when opened with the SHIFT key pressed) if the\n * menuProvider property is not defined. (This allows for a default or test-only static menu to be\n * used.)\n */\n fullMenu?: Localized;\n\n /** Additional css class(es) to help with unique styling of the sub-components */\n className?: string;\n\n /** Value to use as prefix for ARIA labels on interactive sub-components */\n ariaLabelPrefix?: string;\n};\n\nexport default function HamburgerMenuButton({\n menuProvider,\n normalMenu,\n fullMenu,\n commandHandler,\n containerRef,\n className,\n ariaLabelPrefix,\n children,\n}: HamburgerMenuButtonProps) {\n const [isMenuOpen, setMenuOpen] = useState(false);\n const [showFullMenu, setShowFullMenu] = useState(false);\n\n const handleMenuItemClick = useCallback(() => {\n if (isMenuOpen) setMenuOpen(false);\n setShowFullMenu(false);\n }, [isMenuOpen]);\n\n const handleMenuButtonClick = useCallback((e: MouseEvent) => {\n e.stopPropagation();\n setMenuOpen((prevIsOpen) => {\n const isOpening = !prevIsOpen;\n if (isOpening && e.shiftKey) setShowFullMenu(true);\n else if (!isOpening) setShowFullMenu(false);\n return isOpening;\n });\n }, []);\n\n const menuCommandHandler = useCallback(\n (command: Command) => {\n handleMenuItemClick();\n return commandHandler(command);\n },\n [commandHandler, handleMenuItemClick],\n );\n\n const [offset, setOffset] = useState({ top: 1, left: 1 });\n\n useEffect(() => {\n if (isMenuOpen) {\n const node = containerRef?.current;\n if (node) {\n const rect = node.getBoundingClientRect();\n const scrollTop = window.scrollY;\n const scrollLeft = window.scrollX;\n const top = rect.top + scrollTop + node.clientHeight;\n const left = rect.left + scrollLeft;\n setOffset({ top, left });\n }\n }\n }, [isMenuOpen, containerRef]);\n\n const [normalMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(false) ?? normalMenu;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, normalMenu, isMenuOpen]),\n normalMenu,\n );\n\n const [fullMenuData] = usePromise(\n useCallback(async () => {\n return menuProvider?.(true) ?? fullMenu ?? normalMenuData;\n // isMenuOpen needs to be included for the menu contents to reevaluate when reopened\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuProvider, fullMenu, normalMenuData, isMenuOpen]),\n fullMenu ?? normalMenuData,\n );\n\n const menu = showFullMenu && fullMenuData ? fullMenuData : normalMenuData;\n\n return (\n <>\n \n {children ?? }\n \n \n {menu ? (\n \n ) : undefined}\n \n \n );\n}\n","import '@/components/mui/icon-button.component.css';\nimport { IconButton as MuiIconButton } from '@mui/material';\nimport { MouseEventHandler, PropsWithChildren } from 'react';\n\nexport type IconButtonProps = PropsWithChildren<{\n /** Optional unique identifier */\n id?: string;\n /**\n * Required. Used as both the tooltip (aka, title) and the aria-label (used for accessibility,\n * testing, etc.), unless a distinct tooltip is supplied.\n */\n label: string;\n /**\n * Enabled status of button\n *\n * @default false\n */\n isDisabled?: boolean;\n /** Optional tooltip to display if different from the aria-label. */\n tooltip?: string;\n /** If true, no tooltip will be displayed. */\n isTooltipSuppressed?: boolean;\n /**\n * If given, uses a negative margin to counteract the padding on one side (this is often helpful\n * for aligning the left or right side of the icon with content above or below, without ruining\n * the border size and shape).\n *\n * @default false\n */\n adjustMarginToAlignToEdge?: 'end' | 'start' | false;\n /**\n * The size of the component. small is equivalent to the dense button styling.\n *\n * @default false\n */\n size: 'small' | 'medium' | 'large';\n /** Additional css classes to help with unique styling of the button */\n className?: string;\n /** Optional click handler */\n onClick?: MouseEventHandler;\n}>;\n\n/**\n * Iconic button a user can click to do something\n *\n * Thanks to MUI for heavy inspiration and documentation\n * https://mui.com/material-ui/getting-started/overview/\n */\nfunction IconButton({\n id,\n label,\n isDisabled = false,\n tooltip,\n isTooltipSuppressed = false,\n adjustMarginToAlignToEdge = false,\n size = 'medium',\n className,\n onClick,\n children,\n}: IconButtonProps) {\n return (\n \n {children /* the icon to display */}\n \n );\n}\n\nexport default IconButton;\n","import { cn } from '@/utils/shadcn-ui.util';\nimport { LoaderCircle, LucideProps } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nexport type SpinnerProps = LucideProps;\n\nconst Spinner = forwardRef(({ className, ...props }, ref) => {\n return (\n \n );\n});\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","import { Input as ShadInput } from '@/components/shadcn-ui/input';\nimport { Label as ShadLabel } from '@/components/shadcn-ui/label';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { ChangeEventHandler, FocusEventHandler } from 'react';\n\nexport type TextFieldProps = {\n /** Optional unique identifier */\n id?: string;\n /**\n * If `true`, the component is disabled.\n *\n * @default false\n */\n isDisabled?: boolean;\n /**\n * If `true`, the label is displayed in an error state.\n *\n * @default false\n */\n hasError?: boolean;\n /**\n * If `true`, the input will take up the full width of its container.\n *\n * @default false\n */\n isFullWidth?: boolean;\n /** Text that gives the user instructions on what contents the TextField expects */\n helperText?: string;\n /** The title of the TextField */\n label?: string;\n /** The short hint displayed in the `input` before the user enters a value. */\n placeholder?: string;\n /**\n * If `true`, the label is displayed as required and the `input` element is required.\n *\n * @default false\n */\n isRequired?: boolean;\n /** Additional css classes to help with unique styling of the text field */\n className?: string;\n /** Starting value for the text field if it is not controlled */\n defaultValue?: string | number;\n /** Value of the text field if controlled */\n value?: string | number;\n /** Triggers when content of textfield is changed */\n onChange?: ChangeEventHandler;\n /** Triggers when textfield gets focus */\n onFocus?: FocusEventHandler;\n /** Triggers when textfield loses focus */\n onBlur?: FocusEventHandler;\n};\n\n/**\n * Text input field\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/input#with-label\n */\nfunction TextField({\n id,\n isDisabled = false,\n hasError = false,\n isFullWidth = false,\n helperText,\n label,\n placeholder,\n isRequired = false,\n className,\n defaultValue,\n value,\n onChange,\n onFocus,\n onBlur,\n}: TextFieldProps) {\n return (\n
\n {`${label}${isRequired ? '*' : ''}`}\n \n

{helperText}

\n
\n );\n}\n\nexport default TextField;\n","import HamburgerMenuButton, {\n MultiColumnMenuProvider,\n} from '@/components/mui/hamburger-menu-button.component';\nimport { CommandHandler } from '@/components/mui/menu-item.component';\nimport '@/components/mui/toolbar.component.css';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { AppBar, Toolbar as MuiToolbar } from '@mui/material';\nimport { PropsWithChildren, useRef } from 'react';\n\nexport type ToolbarProps = PropsWithChildren<{\n /** The handler to use for menu commands (and eventually toolbar commands). */\n commandHandler: CommandHandler;\n\n /**\n * The optional delegate to use to get the menu data. If not specified, the \"hamburger\" menu will\n * not display.\n */\n menuProvider?: MultiColumnMenuProvider;\n\n /** Optional unique identifier */\n id?: string;\n\n /** Additional css classes to help with unique styling of the toolbar */\n className?: string;\n}>;\n\nexport default function Toolbar({\n menuProvider,\n commandHandler,\n className,\n id,\n children,\n}: ToolbarProps) {\n // This ref will always be defined\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const containerRef = useRef(undefined!);\n\n return (\n
\n \n \n {menuProvider ? (\n \n ) : undefined}\n {children ?
{children}
: undefined}\n \n
\n
\n );\n}\n","import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst alertVariants = cva(\n 'tw-relative tw-w-full tw-rounded-lg tw-border tw-p-4 [&>svg~*]:tw-pl-7 [&>svg+div]:tw-translate-y-[-3px] [&>svg]:tw-absolute [&>svg]:tw-left-4 [&>svg]:tw-top-4 [&>svg]:tw-text-foreground',\n {\n variants: {\n variant: {\n default: 'tw-bg-background tw-text-foreground',\n destructive:\n 'tw-border-destructive/50 tw-text-destructive dark:tw-border-destructive [&>svg]:tw-text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n
\n));\nAlert.displayName = 'Alert';\n\nconst AlertTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}{' '}\n \n ),\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n));\nAlertDescription.displayName = 'AlertDescription';\n\nexport { Alert, AlertTitle, AlertDescription };\n","import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Card = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n {/* added because of https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md */}\n {props.children}\n \n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n

\n));\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef>(\n ({ className, ...props }, ref) => (\n

\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef>(\n ({ className, ...props }, ref) => (\n \n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import { ComponentProps } from 'react';\nimport { toast as sonner, Toaster } from 'sonner';\n\ntype SonnerProps = ComponentProps;\n\nfunction Sonner({ ...props }: SonnerProps) {\n return (\n \n );\n}\n\n// The re-export of the sonner function was added manually\nexport { Sonner, sonner };\n","import React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Slider = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n \n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n","import React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\n\nimport { cn } from '@/utils/shadcn-ui.util';\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport type TabsListProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsTriggerProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport type TabsContentProps = React.ComponentPropsWithoutRef & {\n className?: string;\n};\n\nexport const TabsList = React.forwardRef<\n React.ElementRef,\n TabsListProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nexport const TabsTrigger = React.forwardRef<\n React.ElementRef,\n TabsTriggerProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nexport const TabsContent = React.forwardRef<\n React.ElementRef,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n \n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\nimport { Download } from 'lucide-react';\n\ntype InstallButtonProps = {\n /** The installing boolean value determines the state of the button. */\n isInstalling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n /** Optional text for the button. */\n buttonText?: string;\n} & ButtonProps;\n\n/**\n * The InstallButton component is a button designed for initiating installs. It includes visuals for\n * active installing and idle states.\n *\n * @param isInstalling The installing boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @param buttonText Optional text for the button.\n * @returns A install button.\n */\nexport default function InstallButton({\n isInstalling,\n handleClick,\n buttonText,\n className,\n ...props\n}: InstallButtonProps) {\n return (\n \n {isInstalling ? (\n \n ) : (\n <>\n \n {buttonText}\n \n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype EnableButtonProps = {\n /** The enabling boolean value determines the state of the button. */\n isEnabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The EnableButton component is a button designed for initiating enabling of downloads. It includes\n * visuals for active enabling and idle states.\n *\n * @param isEnabling The enabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to enable.\n */\nexport default function EnableButton({\n isEnabling,\n handleClick,\n className,\n ...props\n}: EnableButtonProps) {\n return (\n \n {isEnabling ? (\n <>\n \n Enabling...\n \n ) : (\n 'Enable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype DisableButtonProps = {\n /** The disabling boolean value determines the state of the button. */\n isDisabling: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The DisableButton component is a button designed for initiating disabling of downloads. It\n * includes visuals for active disabling and idle states.\n *\n * @param isDisabling The disabling boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to disable.\n */\nexport default function DisableButton({\n isDisabling,\n handleClick,\n className,\n ...props\n}: DisableButtonProps) {\n return (\n \n {isDisabling ? (\n <>\n \n Disabling...\n \n ) : (\n 'Disable'\n )}\n \n );\n}\n","import { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport Spinner from '@/components/basics/spinner.component';\nimport { cn } from '@/utils/shadcn-ui.util';\n\ntype UpdateButtonProps = {\n /** The updating boolean value determines the state of the button. */\n isUpdating: boolean;\n /** The handleClick function is called when the button is clicked. */\n handleClick: () => void;\n} & ButtonProps;\n\n/**\n * The UpdateButton component is a button designed for initiating updates for downloaded extensions.\n * It includes visuals for active updating and idle states.\n *\n * @param isUpdating The updating boolean value determines the state of the button.\n * @param handleClick The handleClick function is called when the button is clicked.\n * @returns A button that can be used to update.\n */\nexport default function UpdateButton({\n isUpdating,\n handleClick,\n className,\n ...props\n}: UpdateButtonProps) {\n return (\n \n {isUpdating ? (\n <>\n \n Updating...\n \n ) : (\n 'Update'\n )}\n \n );\n}\n","import { cn } from '@/utils/shadcn-ui.util';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useMemo } from 'react';\n\ninterface MarkdownRendererProps {\n /** Optional unique identifier */\n id?: string;\n /** The markdown string to render */\n markdown: string;\n className?: string;\n /**\n * The [`target` attribute for `a` html\n * tags](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target). Defaults to not\n * adding a `target` to `a` tags\n */\n anchorTarget?: string;\n}\n\n/**\n * This component renders markdown content given a markdown string. It uses typography styles from\n * the platform.\n *\n * @param markdown The markdown string to render.\n * @param id Optional unique identifier\n * @returns A div containing the rendered markdown content.\n */\nexport default function MarkdownRenderer({\n id,\n markdown,\n className,\n anchorTarget,\n}: MarkdownRendererProps) {\n const options: MarkdownToJSX.Options = useMemo(\n () => ({\n overrides: {\n a: {\n props: {\n target: anchorTarget,\n },\n },\n },\n }),\n [anchorTarget],\n );\n return (\n
\n {markdown}\n
\n );\n}\n","import { Filter, ChevronDown } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport { Button } from '@/components/shadcn-ui/button';\n\n/**\n * The FilterButton component is a button designed for initiating filtering of data. It is designed\n * to be used with the dropdown menu. It uses forwardRef to pass the button to the dropdown trigger\n * asChild.\n *\n * @returns A button that can be used to filter.\n */\nconst FilterButton = forwardRef((props, ref) => {\n return (\n \n \n Filter\n \n \n );\n});\n\nexport default FilterButton;\n","import {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuGroup,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport FilterButton from './buttons/filter-button.component';\n\nexport enum DropdownMenuItemType {\n Check,\n Radio,\n}\n\nexport type DropdownItem = {\n /** The label is the text that will be displayed on the dropdown item. */\n label: string;\n /** The itemType determines the DropdownMenuItemType type as either Check or Radio. */\n itemType: DropdownMenuItemType;\n /** The onClick function is called when the item is clicked. */\n onClick: () => void;\n};\n\nexport type DropdownGroup = {\n /**\n * The label is the text that will be displayed on the dropdown group. It is used to categorize\n * the items in the group.\n */\n label: string;\n /** The items array contains the items that will be displayed in the dropdown group */\n items: DropdownItem[];\n};\n\nexport type FilterDropdownProps = {\n /** Object unique identifier */\n id?: string;\n /** The groups array contains the groups that will be displayed in the dropdown */\n groups: DropdownGroup[];\n}; // TODO: extend the props later\n\n/**\n * The FilterDropdown component is a dropdown designed for filtering content. It includes groups of\n * items that can be checkboxes or radio items.\n *\n * @param id Optional unique identifier\n * @param groups The groups array contains the groups that will be displayed in the dropdown\n * @returns A filter dropdown.\n */\nexport default function FilterDropdown({ id, groups }: FilterDropdownProps) {\n return (\n
\n {/* TODO: remove this once the DropDown Menu shadcn has an id prop */}\n \n \n \n \n \n {groups.map((group) => (\n
\n {group.label}\n \n {group.items.map((item) => (\n
\n {item.itemType === DropdownMenuItemType.Check ? (\n \n {item.label}\n \n ) : (\n \n {item.label}\n \n )}\n
\n ))}\n
\n \n
\n ))}\n
\n
\n
\n );\n}\n","interface NoExtensionsFoundProps {\n /** Optional unique identifier */\n id?: string;\n /** The message to display */\n message: string;\n}\n/**\n * This component displays a message to the user when no extensions are found in the marketplace.\n *\n * @param id Optional unique identifier\n * @param message The message to display.\n * @returns {JSX.Element} - Returns the message component that displays the message to the user.\n */\nexport default function NoExtensionsFound({ id, message }: NoExtensionsFoundProps) {\n return (\n
\n
\n

{message}

\n
\n
\n );\n}\n","import { CircleHelp, Link as LucideLink, User } from 'lucide-react';\nimport { NumberFormat } from 'platform-bible-utils';\n\n/** Interface that stores the parameters passed to the More Info component */\ninterface MoreInfoProps {\n /** Optional unique identifier */\n id?: string;\n /** The category of the extension */\n category: string;\n /** The number of downloads for the extension */\n downloads: Record;\n /** The languages supported by the extension */\n languages: string[];\n /** The URL to the more info page of the extension */\n moreInfoUrl: string;\n}\n/**\n * This component displays the more info section of the extension which includes the category,\n * number of downloads, languages, and links to the website and support\n *\n * @param id Optional unique identifier\n * @param category The category of the extension\n * @param downloads The number of downloads for the extension\n * @param languages The languages supported by the extension\n * @param moreInfoUrl The URL to the more info page of the extension\n * @returns {JSX.Element} - Returns the more info component that displays the category, number of\n * downloads, languages, and links to the website and support\n */\nexport default function MoreInfo({\n id,\n category,\n downloads,\n languages,\n moreInfoUrl,\n}: MoreInfoProps) {\n /**\n * This constant formats the number of downloads into a more readable format.\n *\n * @example 1000 -> 1K\n *\n * @example 1000000 -> 1M\n *\n * @returns The formatted number of downloads\n */\n const numberFormatted = new NumberFormat('en', {\n notation: 'compact',\n compactDisplay: 'short',\n }).format(Object.values(downloads).reduce((a: number, b: number) => a + b, 0));\n\n /** This function scrolls the window to the bottom of the page. */\n const handleScrollToBottom = () => {\n window.scrollTo(0, document.body.scrollHeight);\n };\n\n return (\n \n
\n
\n {category}\n
\n CATEGORY\n
\n
\n
\n
\n \n {numberFormatted}\n
\n USERS\n
\n
\n
\n
\n {languages.slice(0, 3).map((locale) => (\n \n {locale.toUpperCase()}\n \n ))}\n
\n {languages.length > 3 && (\n handleScrollToBottom()}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n +{languages.length - 3} more languages\n \n )}\n
\n
\n
\n \n Website\n \n \n \n Support\n \n \n
\n
\n );\n}\n","import { useState } from 'react';\n\nexport type VersionInformation = {\n /** Date the version was published */\n date: string;\n /** Description of the changes in the version */\n description: string;\n};\n\n/** Type to store the version history information */\nexport type VersionHistoryType = Record;\n\n/** Interface that stores the parameters passed to the Version History component */\ninterface VersionHistoryProps {\n /** Optional unique identifier */\n id?: string;\n /** Object containing the versions mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the version history information shown in the footer component. Lists the 5\n * most recent versions, with the options to show all versions by pressing a button.\n *\n * @param versionHistory Object containing the versions mapped with their information\n * @param id Optional unique identifier\n * @returns Rendered version history for the Footer component\n */\nexport default function VersionHistory({ id, versionHistory }: VersionHistoryProps) {\n const [showAllVersions, setShowAllVersions] = useState(false);\n const currentDate = new Date();\n\n /**\n * Function to format the time string for the version history in the form of 'X year(s) ago'.\n *\n * @param dateString ISO Date string to determine the time string from\n * @returns Formatted time string\n */\n function formatTimeString(dateString: string) {\n const date = new Date(dateString);\n const dateDiff = new Date(currentDate.getTime() - date.getTime());\n const yearDiff = dateDiff.getUTCFullYear() - 1970;\n const monthDiff = dateDiff.getUTCMonth();\n const dayDiff = dateDiff.getUTCDate() - 1;\n\n // Determines how long ago the version was published\n let timeString = '';\n if (yearDiff > 0) {\n timeString = `${yearDiff.toString()} year${yearDiff === 1 ? '' : 's'} ago`;\n } else if (monthDiff > 0) {\n timeString = `${monthDiff.toString()} month${monthDiff === 1 ? '' : 's'} ago`;\n } else if (dayDiff === 0) {\n timeString = 'today';\n } else {\n timeString = `${dayDiff.toString()} day${dayDiff === 1 ? '' : 's'} ago`;\n }\n\n return timeString;\n }\n\n // Sorts the version history by version number\n const sortedEntries = Object.entries(versionHistory).sort((a, b) => b[0].localeCompare(a[0]));\n\n return (\n
\n

What`s New

\n
    \n {(showAllVersions ? sortedEntries : sortedEntries.slice(0, 5)).map((entry) => (\n
    \n
    \n
  • \n {entry[1].description}\n
  • \n
    \n
    \n
    Version {entry[0]}
    \n
    {formatTimeString(entry[1].date)}
    \n
    \n
    \n ))}\n
\n {sortedEntries.length > 5 && (\n setShowAllVersions(!showAllVersions)}\n className=\"tw-text-xs tw-text-gray-500 tw-underline\"\n >\n {showAllVersions ? 'Show Less Version History' : 'Show All Version History'}\n \n )}\n
\n );\n}\n","import { useMemo } from 'react';\nimport { formatBytes } from 'platform-bible-utils';\nimport VersionHistory, { VersionHistoryType } from './version-history.component';\n\n/** Interface to store the parameters passed to the Footer component */\ninterface FooterProps {\n /** Optional unique identifier */\n id?: string;\n /** Name of the publisher */\n publisherDisplayName: string;\n /** Size of the extension file in bytes */\n fileSize: number;\n /** List of language codes supported by the extension */\n locales: string[];\n /** Object containing the version history mapped with their information */\n versionHistory: VersionHistoryType;\n}\n\n/**\n * Component to render the footer for the extension details which contains information on the\n * publisher, version history, languages, and file size.\n *\n * @param id Optional unique identifier\n * @param publisherDisplayName Name of the publisher\n * @param fileSize Size of the extension file in bytes\n * @param locales List of language codes supported by the extension\n * @param versionHistory Object containing the version history mapped with their information\n * @returns The rendered Footer component\n */\nexport default function Footer({\n id,\n publisherDisplayName,\n fileSize,\n locales,\n versionHistory,\n}: FooterProps) {\n /** Formats the file size into a human-readable format */\n const formattedFileSize = useMemo(() => formatBytes(fileSize), [fileSize]);\n\n /**\n * This function gets the display names of the languages based on the language codes.\n *\n * @param codes The list of language codes\n * @returns The list of language names\n */\n const getLanguageNames = (codes: string[]) => {\n const displayNames = new Intl.DisplayNames(navigator.language, { type: 'language' });\n return codes.map((code) => displayNames.of(code));\n };\n\n const languageNames = getLanguageNames(locales);\n\n return (\n
\n
\n \n
\n
\n

Information

\n
\n

\n Publisher\n {publisherDisplayName}\n Size\n {formattedFileSize}\n

\n
\n

\n Languages\n {languageNames.join(', ')}\n

\n
\n
\n
\n
\n
\n );\n}\n","import { PlatformEvent, PlatformEventHandler } from 'platform-bible-utils';\nimport { useEffect } from 'react';\n\n/**\n * Adds an event handler to an event so the event handler runs when the event is emitted. Use\n * `papi.network.getNetworkEvent` to use a networked event with this hook.\n *\n * @param event The event to subscribe to.\n *\n * - If event is a `PlatformEvent`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEvent = (\n event: PlatformEvent | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n useEffect(() => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return () => {};\n\n const unsubscriber = event(eventHandler);\n return () => {\n unsubscriber();\n };\n }, [event, eventHandler]);\n};\nexport default useEvent;\n","import { useCallback, useEffect } from 'react';\nimport { PlatformEvent, PlatformEventAsync, PlatformEventHandler } from 'platform-bible-utils';\nimport usePromise from './use-promise.hook';\n\nconst noopUnsubscriber = () => false;\n\n/**\n * Adds an event handler to an asynchronously subscribing/unsubscribing event so the event handler\n * runs when the event is emitted. Use `papi.network.getNetworkEvent` to use a networked event with\n * this hook.\n *\n * @param event The asynchronously (un)subscribing event to subscribe to.\n *\n * - If event is a `PlatformEvent` or `PlatformEventAsync`, that event will be used\n * - If event is undefined, the callback will not be subscribed. Useful if the event is not yet\n * available for example\n *\n * @param eventHandler The callback to run when the event is emitted\n *\n * WARNING: MUST BE STABLE - const or wrapped in useCallback. The reference must not be updated\n * every render\n */\nconst useEventAsync = (\n event: PlatformEvent | PlatformEventAsync | undefined,\n eventHandler: PlatformEventHandler,\n) => {\n // Subscribe to the event asynchronously\n const [unsubscribe] = usePromise(\n useCallback(async () => {\n // Do nothing if the event is not provided (in case the event is not yet available, for example)\n if (!event) return noopUnsubscriber;\n\n // Wrap subscribe and unsubscribe in promises to allow normal events to be used as well\n const unsub = await Promise.resolve(event(eventHandler));\n return async () => unsub();\n }, [eventHandler, event]),\n noopUnsubscriber,\n // We want the unsubscriber to return to default value immediately upon changing subscription\n // So the useEffect below will unsubscribe asap\n { preserveValue: false },\n );\n\n // Unsubscribe from the event asynchronously (but we aren't awaiting the unsub)\n useEffect(() => {\n return () => {\n if (unsubscribe !== noopUnsubscriber) {\n unsubscribe();\n }\n };\n }, [unsubscribe]);\n};\n\nexport default useEventAsync;\n"],"names":["twMergeCustom","extendTailwindMerge","cn","inputs","clsx","Input","React","className","type","props","ref","jsx","BookChapterInput","forwardRef","handleSearch","handleKeyDown","handleOnClick","handleSubmit","jsxs","ShadInput","event","e","History","P","R","t","s","n","N","B","O","S","K","g","k","x","T","X","V","w","L","G","A","H","C","I","y","q","U","m","l","h","c","E","D","i","a","o","u","v","f","d","b","J","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","DropdownMenuSubTrigger","inset","children","ChevronRight","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","Check","DropdownMenuRadioItem","Circle","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","BookMenuItem","bookId","handleSelectBook","isSelected","handleHighlightBook","bookType","ShadDropdownMenuItem","Canon","ChapterSelect","handleSelectChapter","endChapter","activeChapter","highlightedChapter","handleHighlightedChapter","chapters","_","handleMouse","useCallback","chapterNumber","chapter","GoToMenuItem","handleSort","handleLocationHistory","handleBookmarks","ShadDropdownMenuLabel","ArrowDownWideNarrow","Clock","Bookmark","ALL_BOOK_IDS","BOOK_TYPE_LABELS","BOOK_TYPE_ARRAY","SCROLL_OFFSET","SEARCH_QUERY_FORMATS","fetchGroupedBooks","fetchEndChapter","getChaptersForBook","getAllEnglishNames","isValidBookEnglishName","bookName","getBookIdFromEnglishName","formattedBookName","BookChapterControl","scrRef","searchQuery","setSearchQuery","useState","selectedBookId","setSelectedBookId","setHighlightedChapter","highlightedBookId","setHighlightedBookId","isContentOpen","setIsContentOpen","isContentOpenDelayed","setIsContentOpenDelayed","inputRef","useRef","contentRef","menuItemRef","fetchFilteredBooks","englishNameLowerCase","normalizedQuery","handleSearchInput","searchString","shouldPreventAutoClosing","controlMenuState","open","updateReference","shouldClose","verse","handleInputSubmit","format","matches","book","englishName","handleKeyDownInput","handleKeyDownContent","key","handleKeyDownMenuItem","chapterOffSet","useEffect","useLayoutEffect","scrollTimeout","scrollPosition","ShadDropdownMenu","ShadDropdownMenuTrigger","ShadDropdownMenuContent","bookTypeIndex","element","ShadDropdownMenuSeparator","buttonVariants","cva","Button","variant","size","asChild","Slot","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","align","DialogPortal","DialogPrimitive","DialogOverlay","DialogContent","DialogTitle","DialogDescription","Command","CommandPrimitive","CommandInput","Search","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","getOptionLabelDefault","option","ComboBox","id","options","value","onChange","getOptionLabel","buttonPlaceholder","textPlaceholder","commandEmptyMessage","buttonVariant","dir","isDisabled","setOpen","ChevronsUpDown","ChapterRangeSelector","startChapter","handleSelectStartChapter","handleSelectEndChapter","chapterCount","chapterOptions","useMemo","index","Fragment","BookSelectionMode","BOOK_SELECTOR_STRING_KEYS","localizeString","strings","BookSelector","handleBookSelectionModeChange","currentBookName","onSelectBooks","selectedBookIds","localizedStrings","currentBookText","chooseText","chooseBooksText","bookSelectionMode","setBookSelectionMode","onSelectionModeChange","newMode","DataTableViewOptions","table","FilterIcon","column","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","SelectSeparator","DataTablePagination","pageSize","ArrowLeftIcon","ChevronLeftIcon","ChevronRightIcon","ArrowRightIcon","Table","stickyHeader","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTable","columns","data","enablePagination","showPaginationControls","showColumnVisibilityControls","onRowClickHandler","sorting","setSorting","columnFilters","setColumnFilters","columnVisibility","setColumnVisibility","rowSelection","setRowSelection","useReactTable","getCoreRowModel","getPaginationRowModel","getSortedRowModel","getFilteredRowModel","headerGroup","header","flexRender","_a","row","cell","OccurrencesTable","occurrenceData","setScriptureReference","referenceHeaderText","occurrenceHeaderText","occurrences","uniqueOccurrences","occurrence","uniqueOccurrence","deepEqual","Checkbox","CheckboxPrimitive","getLinesFromUSFM","text","getNumberFromUSFM","regex","match","getBookNumFromId","getStatusForItem","item","approvedItems","unapprovedItems","toggleVariants","Toggle","TogglePrimitive","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","context","getSortingIcon","sortDirection","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","inventoryItemColumn","itemLabel","inventoryAdditionalItemColumn","additionalItemLabel","additionalItemIndex","inventoryCountColumn","countLabel","statusChangeHandler","changedItems","newStatus","onApprovedItemsChange","onUnapprovedItemsChange","newApprovedItems","validItem","newUnapprovedItems","unapprovedItem","inventoryStatusColumn","statusLabel","status","CircleCheckIcon","CircleXIcon","CircleHelpIcon","INVENTORY_STRING_KEYS","filterItemData","itemData","statusFilter","textFilter","filteredItemData","createTableData","scriptureRef","itemRegex","tableData","currentBook","currentChapter","currentVerse","line","items","itemIndex","existingItem","tableEntry","newReference","substring","newItem","Inventory","scriptureReference","extractItems","additionalItemsLabels","scope","onScopeChange","allItemsText","approvedItemsText","unapprovedItemsText","unknownItemsText","scopeBookText","scopeChapterText","scopeVerseText","filterText","showAdditionalItemsText","showAdditionalItems","setShowAdditionalItems","setStatusFilter","setTextFilter","selectedItem","setSelectedItem","reducedTableData","newTableData","firstItem","existingEntry","newTableEntry","filteredTableData","allColumns","numberOfAdditionalItems","additionalColumns","_b","rowClickHandler","newSelection","handleScopeChange","handleStatusFilterChange","SearchBar","onSearch","placeholder","isFullWidth","handleInputChange","VerticalTabs","TabsPrimitive","VerticalTabsList","VerticalTabsTrigger","VerticalTabsContent","NavigationContentSearch","tabList","searchPlaceholder","headerTitle","isSearchBarFullWidth","direction","tab","scrBookColId","scrRefColId","typeColId","detailsColId","defaultScrRefColumnName","defaultScrBookGroupName","defaultTypeColumnName","defaultDetailsColumnName","getColumns","colInfo","showSourceColumn","showSrcCol","info","formatScrRef","compareScrRefs","toRefOrRange","scriptureSelection","offsetStart","offsetEnd","scrRefToBBBCCCVVV","getRowKey","ScriptureResultsViewer","sources","showColumnHeaders","scriptureReferenceColumnName","scriptureBookGroupName","typeColumnName","detailsColumnName","onRowSelected","grouping","setGrouping","scriptureResults","source","getExpandedRowModel","getGroupedRowModel","selectedRows","keys","selectedRow","scrBookGroupName","typeGroupName","groupingOptions","handleSelectChange","selectedGrouping","handleRowClick","getEvenOrOddBandingStyle","getIndent","groupingState","rowIndex","ChevronLeft","DEFAULT_SCROLL_GROUP_LOCALIZED_STRINGS","getLocalizeKeyForScrollGroupId","ScrollGroupSelector","availableScrollGroupIds","scrollGroupId","onChangeScrollGroupId","localizedStringsDefaulted","localizedStringKey","localizedStringValue","newScrollGroupString","scrollGroupOptionId","Separator","orientation","decorative","SeparatorPrimitive","SettingsList","SettingsListItem","primary","secondary","isLoading","loadingMessage","SettingsListHeader","includeSeparator","Checklist","listItems","selectedListItems","handleSelectListItem","createLabel","_interopRequireDefault","obj","module","chainPropTypes","propType1","propType2","args","_extends","target","isPlainObject","prototype","deepClone","output","deepmerge","p","r","z","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","test3","letter","objectAssign","from","to","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","has","printWarning","loggedTypeFailures","message","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","error","err","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propName","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","step","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","isClassComponent","elementType","acceptingRef","safePropName","warningHint","elementAcceptingRef","PropTypes","elementAcceptingRef$1","specialProperty","exactProp","propTypes","unsupportedProps","prop","formatMuiErrorMessage","code","url","REACT_SERVER_CONTEXT_TYPE","REACT_OFFSCREEN_TYPE","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","SuspenseList","hasWarnedAboutDeprecatedIsConcurrentMode","isSuspenseList","fnNameMatchRegex","getFunctionName","fn","getFunctionComponentName","Component","fallback","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","HTMLElementType","refType","refType$1","capitalize","string","_formatMuiErrorMessage","createChainedFunction","funcs","acc","func","debounce","wait","timeout","debounced","later","deprecatedPropType","validator","reason","componentNameSafe","propFullNameSafe","isMuiElement","muiNames","_muiName","_element$type","ownerDocument","node","ownerWindow","requirePropFactory","componentNameInError","prevPropTypes","requiredProp","defaultTypeChecker","typeCheckerResult","setRef","useEnhancedEffect","useEnhancedEffect$1","globalId","useGlobalId","idOverride","defaultId","setDefaultId","maybeReactUseId","useId","reactId","unsupportedProp","useControlled","controlled","defaultProp","name","state","isControlled","valueState","setValue","defaultValue","setValueIfUncontrolled","newValue","useEventCallback","useForkRef","refs","instance","UNINITIALIZED","useLazyRef","init","initArg","EMPTY","useOnMount","Timeout","delay","useTimeout","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","focusTriggersKeyboardModality","tagName","handlePointerDown","handleVisibilityChange","prepare","doc","isFocusVisible","useIsFocusVisible","isFocusVisibleRef","handleBlurVisible","handleFocusVisible","resolveProps","defaultProps","defaultSlotProps","slotProps","slotPropName","composeClasses","slots","getUtilityClass","classes","slot","utilityClass","defaultGenerator","createClassNameGenerator","generate","generator","ClassNameGenerator","ClassNameGenerator$1","globalStateClasses","generateUtilityClass","globalStatePrefix","globalStateClass","generateUtilityClasses","result","clamp","min","max","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","sortBreakpointsValues","breakpointsAsArray","breakpoint1","breakpoint2","createBreakpoints","breakpoints","unit","other","sortedValues","up","down","between","start","end","endIndex","only","not","keyIndex","shape","shape$1","responsivePropType","responsivePropType$1","merge","defaultBreakpoints","handleBreakpoints","styleFromPropValue","theme","themeBreakpoints","breakpoint","mediaKey","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","breakpointStyleKey","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","getPath","path","checkVars","getStyleValue","themeMapping","transform","propValueFinal","userValue","cssProperty","themeKey","memoize","cache","arg","properties","directions","aliases","getCssProperties","property","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","_getPath","themeSpacing","abs","createUnarySpacing","getValue","transformer","transformed","getStyleFromPropValue","cssProperties","resolveCssProperty","margin","padding","createSpacing","spacingInput","spacing","argsInput","argument","compose","styles","handlers","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","borderRadius","gap","columnGap","rowGap","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","paletteTransform","color","bgcolor","backgroundColor","sizingTransform","width","maxWidth","_props$theme","_props$theme2","breakpointsValues","minWidth","height","maxHeight","minHeight","boxSizing","defaultSxConfig","defaultSxConfig$1","objectsHaveSameKeys","objects","union","callIfFn","maybeFn","unstable_createStyleFunctionSx","getThemeValue","config","styleFunctionSx","_theme$unstable_sxCon","sx","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsKeys","css","styleKey","styleFunctionSx$1","applyStyles","createTheme","paletteInput","shapeInput","muiTheme","isObjectEmpty","useTheme","defaultTheme","contextTheme","ThemeContext","systemDefaultTheme","useThemeWithoutDefault","_excluded2","_excluded3","isEmpty","isStringTag","tag","shouldForwardProp","lowercaseFirstLetter","resolveTheme","themeId","defaultOverridesResolver","processStyleArg","callableStyle","_ref","ownerState","resolvedStylesArg","resolvedStyle","variants","isMatch","createStyled","input","rootShouldForwardProp","slotShouldForwardProp","systemSx","inputOptions","processStyles","componentSlot","inputSkipVariantsResolver","inputSkipSx","overridesResolver","skipVariantsResolver","skipSx","label","shouldForwardPropOption","defaultStyledResolver","styledEngineStyled","transformStyleArg","stylesArg","muiStyledResolver","styleArg","expressions","transformedStyleArg","expressionsWithDefaultTheme","styleOverrides","resolvedStyleOverrides","slotKey","slotStyle","_theme$components","themeVariants","numOfCustomFnsApplied","placeholders","displayName","getThemeProps","params","useThemeProps","clampWrapper","hexToRgb","re","colors","decomposeColor","marker","colorSpace","recomposeColor","hslToRgb","rgb","getLuminance","getContrastRatio","foreground","background","lumA","lumB","alpha","darken","coefficient","lighten","createMixins","mixins","common","common$1","grey","grey$1","purple","purple$1","red","red$1","orange","orange$1","blue","blue$1","lightBlue","lightBlue$1","green","green$1","light","dark","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","getDefaultPrimary","mode","getDefaultSecondary","getDefaultError","getDefaultInfo","getDefaultSuccess","getDefaultWarning","createPalette","palette","contrastThreshold","success","warning","getContrastText","contrastText","contrast","augmentColor","mainShade","lightShade","darkShade","modes","round","caseAllCaps","defaultFontFamily","createTypography","typography","fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem2","coef","pxToRem","buildVariant","fontWeight","lineHeight","letterSpacing","casing","shadowKeyUmbraOpacity","shadowKeyPenumbraOpacity","shadowAmbientShadowOpacity","createShadow","px","shadows","shadows$1","easing","duration","formatMs","milliseconds","getAutoHeightDuration","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","isString","isNumber","animatedProp","zIndex","zIndex$1","mixinsInput","transitionsInput","typographyInput","systemTheme","systemCreateTheme","stateClasses","component","child","stateClass","defaultTheme$1","THEME_ID","systemUseThemeProps","styled","styled$1","getSvgIconUtilityClass","useUtilityClasses","SvgIconRoot","_theme$transitions","_theme$transitions$cr","_theme$transitions2","_theme$typography","_theme$typography$pxT","_theme$typography2","_theme$typography2$px","_theme$typography3","_theme$typography3$px","_palette$ownerState$c","_palette","_palette2","_palette3","SvgIcon","inProps","htmlColor","inheritViewBox","titleAccess","viewBox","hasSvgAsChild","more","_jsxs","_jsx","SvgIcon$1","createSvgIcon","unstable_ClassNameGenerator","exports","_utils","ArrowRight","default_1","_createSvgIcon","_jsxRuntime","isHostComponent","appendOwnerState","otherProps","defaultContextValue","ClassNameConfiguratorContext","useClassNamesOverride","disableDefaultClasses","extractEventHandlers","excludeKeys","resolveComponentProps","componentProps","slotState","omitEventHandlers","mergeSlotProps","parameters","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","eventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","useSlotProps","_parameters$additiona","skipResolvingSlotProps","rest","resolvedComponentsProps","mergedProps","internalRef","GLOBAL_CLASS_PREFIX","buildStateClass","buildSlotClass","getContainer","container","forwardedRef","disablePortal","mountNode","setMountNode","handleRef","newProps","ReactDOM","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","OwnElement","isHTMLElement","isShadowRoot","attributes","effect","_ref2","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","COMPONENT_NAME","getPopperUtilityClass","flipPlacement","resolveAnchorEl","anchorEl","isVirtualElement","defaultPopperOptions","PopperTooltip","_slots$root","initialPlacement","popperOptions","popperRefProp","TransitionProps","tooltipRef","ownRef","popperRef","handlePopperRef","handlePopperRefRef","rtlPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","handlePopperUpdate","box","popperModifiers","childProps","Root","rootProps","Popper","containerProp","keepMounted","transition","exited","setExited","handleEnter","handleExited","resolvedAnchorEl","display","transitionProps","useThemeSystem","_setPrototypeOf","_inheritsLoose","subClass","superClass","setPrototypeOf","timeoutsShape","TransitionGroupContext","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","parentGroup","appear","initialStatus","prevState","nextIn","_proto","prevProps","nextStatus","exit","enter","mounting","_this2","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","_this3","nextState","callback","_this4","active","handler","doesNotHaveTimeoutOrListener","maybeNextCallback","_this$props","pt","noop","Transition$1","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","getScale","isWebKit154","Grow","addEndListener","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","TransitionComponent","timer","autoTimeout","nodeRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","isAppearing","transitionDuration","transitionTimingFunction","handleEntered","handleExiting","handleExit","Grow$1","PopperRoot","BasePopper","components","componentsProps","RootComponent","Popper$1","getTooltipUtilityClass","tooltipClasses","tooltipClasses$1","disableInteractive","touch","TooltipPopper","TooltipTooltip","TooltipArrow","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","eventHandler","Tooltip","_slots$popper","_slots$transition","_slots$tooltip","_slots$arrow","_slotProps$popper","_ref6","_slotProps$popper2","_slotProps$transition","_slotProps$tooltip","_ref7","_slotProps$tooltip2","_slotProps$arrow","_ref8","_slotProps$arrow2","childrenProp","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponentProp","PopperProps","title","TransitionComponentProp","isRtl","childNode","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","handleOpen","handleClose","handleLeave","focusVisibleRef","setChildIsFocusVisible","handleBlur","handleFocus","detectTouchStart","childrenProps","handleMouseOver","handleMouseLeave","handleTouchStart","handleTouchEnd","nativeEvent","handleMouseMove","nameOrDescProps","titleIsString","interactiveWrapperListeners","_PopperProps$popperOp","tooltipModifiers","PopperComponent","TooltipComponent","ArrowComponent","popperProps","tooltipProps","tooltipArrowProps","TransitionPropsInner","Tooltip$1","getIcon","icon","menuLabel","leading","MuiListItemIcon","MenuItem","onClick","tooltip","allowForLeadingIcons","iconPathBefore","iconPathAfter","hasAutoFocus","isDense","isSubMenuParent","hasDisabledGutters","hasDivider","focusVisibleClassName","menuItem","MuiMenuItem","MuiListItemText","getAllGroups","menuDefinition","SubMenu","setAnchorEl","parentMenuItem","parentItemProps","handleParentMenuItemClick","renderSubMenuItems","includedGroups","group","GroupedMenuItemList","Menu","getOrderedGroupItems","groupId","allItems","menuProps","commandHandler","groupsToInclude","sortedGroups","itemArray","allowSpaceForLeadingIcons","createMenuItemProps","isLastItemInGroup","divKey","itemInfo","menuItemProps","TopLevelMenu","columnId","MenuColumn","metadata","Grid","List","GridMenu","multiColumnMenu","sortedColumns","columnNumbers","columnName","col","getUsePromiseOptionsDefaults","usePromise","promiseFactoryCallback","defaultValueRef","optionsDefaultedRef","setIsLoading","promiseIsCurrent","MenuIcon","HamburgerMenuButton","menuProvider","normalMenu","fullMenu","containerRef","ariaLabelPrefix","isMenuOpen","setMenuOpen","showFullMenu","setShowFullMenu","handleMenuItemClick","handleMenuButtonClick","prevIsOpen","isOpening","menuCommandHandler","command","setOffset","normalMenuData","fullMenuData","menu","IconButton","Drawer","isTooltipSuppressed","adjustMarginToAlignToEdge","MuiIconButton","Spinner","LoaderCircle","TextField","hasError","helperText","onFocus","onBlur","ShadLabel","Toolbar","AppBar","MuiToolbar","alertVariants","Alert","AlertTitle","AlertDescription","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Sonner","Toaster","Slider","SliderPrimitive","Switch","SwitchPrimitives","Tabs","TabsList","TabsTrigger","TabsContent","InstallButton","isInstalling","handleClick","buttonText","Download","EnableButton","isEnabling","DisableButton","isDisabling","UpdateButton","isUpdating","MarkdownRenderer","markdown","anchorTarget","Markdown","FilterButton","Filter","DropdownMenuItemType","DropdownMenuItemType2","FilterDropdown","groups","NoExtensionsFound","MoreInfo","category","downloads","languages","moreInfoUrl","numberFormatted","NumberFormat","handleScrollToBottom","User","locale","LucideLink","CircleHelp","VersionHistory","versionHistory","showAllVersions","setShowAllVersions","currentDate","formatTimeString","dateString","date","dateDiff","yearDiff","monthDiff","dayDiff","timeString","sortedEntries","Footer","publisherDisplayName","fileSize","locales","formattedFileSize","formatBytes","languageNames","codes","displayNames","useEvent","unsubscriber","noopUnsubscriber","useEventAsync","unsubscribe","unsub"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAMA,KAAgBC,GAAoB,EAAE,QAAQ,MAAO,CAAA;AAyDpD,SAASC,KAAMC,GAAsB;AACnC,SAAAH,GAAcI,GAAKD,CAAM,CAAC;AACnC;ACzDO,MAAME,KAAQC,EAAM;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,GAASC,MAE5B,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAH;AAAA,MACA,WAAWN;AAAA,QACT;AAAA,QACAK;AAAA,MACF;AAAA,MACA,KAAAG;AAAA,MAEC,GAAGD;AAAA,IAAA;AAAA,EAAA;AAIZ;AACAJ,GAAM,cAAc;ACNpB,MAAMO,KAAmBC;AAAA,EACvB,CACE,EAAE,cAAAC,GAAc,eAAAC,GAAe,eAAAC,GAAe,cAAAC,GAAc,GAAGR,EAAM,GACrEC,MAGE,gBAAAQ,EAAC,OAAI,EAAA,WAAU,eACb,UAAA;AAAA,IAAA,gBAAAP;AAAA,MAACQ;AAAAA,MAAA;AAAA,QACE,GAAGV;AAAA,QACJ,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,CAACW,MAAUN,EAAaM,EAAM,OAAO,KAAK;AAAA,QACpD,WAAW,CAACC,MAAM;AACZ,UAAAA,EAAE,QAAQ,WACCJ,KAEfF,EAAcM,CAAC;AAAA,QACjB;AAAA,QACA,SAASL;AAAA,QACT,KAAAN;AAAA,MAAA;AAAA,IACF;AAAA,IACA,gBAAAC;AAAA,MAACW;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AAEb,kBAAQ,IAAI,iBAAiB;AAAA,QAC/B;AAAA,MAAA;AAAA,IACF;AAAA,EACF,EAAA,CAAA;AAGN;AC9CA,IAAIC,KAAI,OAAO,gBACXC,KAAI,CAACC,GAAGJ,GAAGK,MAAML,KAAKI,IAAIF,GAAEE,GAAGJ,GAAG,EAAE,YAAY,IAAI,cAAc,IAAI,UAAU,IAAI,OAAOK,EAAC,CAAE,IAAID,EAAEJ,CAAC,IAAIK,GACzGC,KAAI,CAACF,GAAGJ,GAAGK,MAAMF,GAAEC,GAAG,OAAOJ,KAAK,WAAWA,IAAI,KAAKA,GAAGK,CAAC;AAW9D,MAAME,KAAI;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AACF,GAAGC,KAAI;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAGC,KAAI;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[3,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,221]} \ No newline at end of file diff --git a/lib/platform-bible-react/src/components/shadcn-ui/table.tsx b/lib/platform-bible-react/src/components/shadcn-ui/table.tsx index 52a62d87d6..3b301573ca 100644 --- a/lib/platform-bible-react/src/components/shadcn-ui/table.tsx +++ b/lib/platform-bible-react/src/components/shadcn-ui/table.tsx @@ -23,7 +23,7 @@ const TableHeader = React.forwardRef< - A list of your recent invoices. - - - Invoice - Status - Method - Amount - - - - {invoices.map((invoice) => ( - - {invoice.invoice} - {invoice.paymentStatus} - {invoice.paymentMethod} - {invoice.totalAmount} + <> + + A list of your recent invoices. + + + Invoice + Status + Method + Amount - ))} - - - - Total - -SUM- - - -
+ + + {invoices.map((invoice) => ( + + {invoice.invoice} + {invoice.paymentStatus} + {invoice.paymentMethod} + {invoice.totalAmount} + + ))} + + + + Total + -SUM- + + + + +
+ + + + Invoice + Status + Method + Amount + + + + {lotsOfInvoices.map((invoice, index) => ( + + {invoice.invoice} + {invoice.paymentStatus} + {invoice.paymentMethod} + {invoice.totalAmount} + + ))} + + + + Total + -SUM- + + +
+
+ ); } From e1b2ac9fc94f111a7180ed9e8977240100fe9a1a Mon Sep 17 00:00:00 2001 From: tjcouch-sil Date: Wed, 20 Nov 2024 10:15:47 -0600 Subject: [PATCH 2/6] Added internet settings to Paratext registration info form, fixed disabling internet in sensitive locations --- .gitattributes | 1 + assets/localization/en.json | 3 + assets/localization/metadata.json | 6 + .../InternetSettingsMementoConverter.cs | 193 +++ c-sharp/JsonUtils/SerializationOptions.cs | 1 + c-sharp/ParanextDataProvider.csproj | 13 + c-sharp/Projects/LocalParatextProjects.cs | 7 +- c-sharp/Users/ParatextRegistrationService.cs | 138 +- c-sharp/assets/CountryStatuses.xml | 253 +++ c-sharp/base-directory-assets/IP-Country.zip | Bin 0 -> 3028236 bytes .../contributions/localizedStrings.json | 63 +- .../src/paratext-registration/src/main.ts | 13 +- .../src/paratext-registration.web-view.tsx | 427 ++++- .../src/types/paratext-registration.d.ts | 66 +- lib/platform-bible-utils/dist/index.cjs | 8 +- lib/platform-bible-utils/dist/index.cjs.map | 2 +- lib/platform-bible-utils/dist/index.d.ts | 47 + lib/platform-bible-utils/dist/index.js | 1409 +++++++++-------- lib/platform-bible-utils/dist/index.js.map | 2 +- .../src/document-combiner.test.ts | 46 +- .../src/document-combiner.ts | 12 +- lib/platform-bible-utils/src/index.ts | 1 + .../src/string-util.test.ts | 147 ++ lib/platform-bible-utils/src/string-util.ts | 202 ++- src/renderer/app.component.scss | 5 +- .../testing/about-panel.component.tsx | 37 +- .../localized-strings-document-combiner.ts | 4 +- 27 files changed, 2215 insertions(+), 891 deletions(-) create mode 100644 c-sharp/JsonUtils/InternetSettingsMementoConverter.cs create mode 100644 c-sharp/assets/CountryStatuses.xml create mode 100644 c-sharp/base-directory-assets/IP-Country.zip diff --git a/.gitattributes b/.gitattributes index f8d3ba2886..01fa7c94ef 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,3 +11,4 @@ *.woff binary *.woff2 binary *.ldml binary +*.zip binary diff --git a/assets/localization/en.json b/assets/localization/en.json index 4517499d4d..e59a8415c1 100644 --- a/assets/localization/en.json +++ b/assets/localization/en.json @@ -1,6 +1,9 @@ { "%about_versionLabel_format%": "Version: {version}", "%about_licenseLabel_format%": "License: {license}", + "%about_db_ip_attribution_format%": "{intro} {websiteLink} ({license}, {terms})", + "%about_db_ip_attribution_intro%": "Internet safety features use data from", + "%about_db_ip_attribution_terms%": "Terms", "%downloadResources_errorRegistrationInvalid%": "User registration is not valid. Cannot retrieve resources from DBL.", "%downloadResources_errorInstallResource_resourceNotFound%": "Resource not available from DBL", "%downloadResources_errorInstallResource_resourceAlreadyInstalled%": "Resource is already installed and up to date. Installation skipped.", diff --git a/assets/localization/metadata.json b/assets/localization/metadata.json index e88230030c..38947b81c9 100644 --- a/assets/localization/metadata.json +++ b/assets/localization/metadata.json @@ -5,5 +5,11 @@ }, "%submit%": { "fallbackKey": "%yes%" + }, + "%about_db_ip_attribution_intro%": { + "fallbackKey": "%Paratext.Base.SplashScreen.Splash_Load." Internet safety features use data from "%" + }, + "%about_db_ip_attribution_terms%": { + "fallbackKey": "%Paratext.Base.SplashScreen.Splash_Load."Terms"%" } } diff --git a/c-sharp/JsonUtils/InternetSettingsMementoConverter.cs b/c-sharp/JsonUtils/InternetSettingsMementoConverter.cs new file mode 100644 index 0000000000..aa9299ff3e --- /dev/null +++ b/c-sharp/JsonUtils/InternetSettingsMementoConverter.cs @@ -0,0 +1,193 @@ +using System.Text.Json; +using System.Text.Json.Serialization; +using Paratext.Data; + +namespace Paranext.DataProvider.JsonUtils; + +public class InternetSettingsMementoConverter + : JsonConverter +{ + private const string SELECTED_SERVER = "selectedServer"; + private const string PERMITTED_INTERNET_USE = "permittedInternetUse"; + private const string PROXY_PORT = "proxyPort"; + private const string PROXY_HOST = "proxyHost"; + private const string PROXY_USERNAME = "proxyUsername"; + private const string PROXY_PASSWORD = "proxyPassword"; + private const string PROXY_MODE = "proxyMode"; + private const string OVERRIDE_DBL_SERVER = "overrideDBLServer"; + private const string OVERRIDE_DBL_API_SERVER = "overrideDBLApiServer"; + private const string OVERRIDE_GBC_SERVER = "overrideGbcServer"; + private const string DBL_EMAIL = "dblEmail"; + private const string DBL_PASSWORD = "dblPassword"; + + public override InternetAccess.InternetSettingsMemento Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options + ) + { + ServerType selectedServer = ServerType.Production; + InternetUse permittedInternetUse = InternetUse.VpnRequired; + int proxyPort = 0; + string? proxyHost = null; + string? proxyUsername = null; + string? proxyPassword = null; + string? proxyMode = null; + string? overrideDBLServer = null; + string? overrideDBLApiServer = null; + string? overrideGbcServer = null; + string? dblEmail = null; + string? dblPassword = null; + + string? lastPropertyName = null; + // The starting token is consumed before we get the reader + int onObjectLevel = 1; + while (onObjectLevel > 0 && reader.Read()) + { + switch (reader.TokenType) + { + case JsonTokenType.StartObject: + case JsonTokenType.StartArray: + onObjectLevel++; + break; + case JsonTokenType.EndObject: + case JsonTokenType.EndArray: + onObjectLevel--; + break; + case JsonTokenType.PropertyName: + lastPropertyName = reader.GetString(); + break; + case JsonTokenType.True: + case JsonTokenType.False: + lastPropertyName = null; + break; + case JsonTokenType.Number: + switch (lastPropertyName) + { + case PROXY_PORT: + proxyPort = reader.GetInt32(); + break; + } + lastPropertyName = null; + break; + case JsonTokenType.String: + switch (lastPropertyName) + { + case SELECTED_SERVER: + var selectedServerString = reader.GetString(); + if (!string.IsNullOrEmpty(selectedServerString)) + { + selectedServer = selectedServerString switch + { + "Production" => ServerType.Production, + "QualityAssurance" => ServerType.QualityAssurance, + "Development" => ServerType.Development, + "Test" => ServerType.Test, + _ => throw new JsonException( + $"Invalid selectedServer value {selectedServerString}! Must provide a ServerType value" + ), + }; + } + break; + case PERMITTED_INTERNET_USE: + var permittedInternetUseString = reader.GetString(); + if (!string.IsNullOrEmpty(permittedInternetUseString)) + { + permittedInternetUse = permittedInternetUseString switch + { + "Enabled" => InternetUse.Enabled, + "VpnRequired" => InternetUse.VpnRequired, + "Disabled" => InternetUse.Disabled, + "ProxyOnly" => InternetUse.ProxyOnly, + _ => throw new JsonException( + $"Invalid permittedInternetUse value {permittedInternetUseString}! Must provide an InternetUse value" + ), + }; + } + break; + case PROXY_HOST: + proxyHost = reader.GetString() ?? ""; + break; + case PROXY_USERNAME: + proxyUsername = reader.GetString() ?? ""; + break; + case PROXY_PASSWORD: + proxyPassword = reader.GetString() ?? ""; + break; + case PROXY_MODE: + proxyMode = reader.GetString() ?? ""; + break; + case OVERRIDE_DBL_SERVER: + overrideDBLServer = reader.GetString() ?? ""; + break; + case OVERRIDE_DBL_API_SERVER: + overrideDBLApiServer = reader.GetString() ?? ""; + break; + case OVERRIDE_GBC_SERVER: + overrideGbcServer = reader.GetString() ?? ""; + break; + case DBL_EMAIL: + dblEmail = reader.GetString() ?? ""; + break; + case DBL_PASSWORD: + dblPassword = reader.GetString() ?? ""; + break; + } + lastPropertyName = null; + break; + } + } + + return new InternetAccess.InternetSettingsMemento + { + SelectedServer = selectedServer, + PermittedInternetUse = permittedInternetUse, + ProxyPort = proxyPort, + ProxyHost = proxyHost, + ProxyUsername = proxyUsername, + ProxyPassword = proxyPassword, + ProxyMode = proxyMode, + OverrideDBLServer = overrideDBLServer, + OverrideDBLApiServer = overrideDBLApiServer, + OverrideGbcServer = overrideGbcServer, + DBLEmail = dblEmail, + DBLPassword = dblPassword, + }; + } + + public override void Write( + Utf8JsonWriter writer, + InternetAccess.InternetSettingsMemento value, + JsonSerializerOptions options + ) + { + writer.WriteStartObject(); + var selectedServer = value.SelectedServer switch + { + ServerType.QualityAssurance => "QualityAssurance", + ServerType.Development => "Development", + ServerType.Test => "Test", + _ => "Production", + }; + writer.WriteString(SELECTED_SERVER, selectedServer); + var permittedInternetUse = value.PermittedInternetUse switch + { + InternetUse.Enabled => "Enabled", + InternetUse.Disabled => "Disabled", + InternetUse.ProxyOnly => "ProxyOnly", + _ => "VpnRequired", + }; + writer.WriteString(PERMITTED_INTERNET_USE, permittedInternetUse); + writer.WriteNumber(PROXY_PORT, value.ProxyPort); + writer.WriteString(PROXY_HOST, value.ProxyHost); + writer.WriteString(PROXY_USERNAME, value.ProxyUsername); + writer.WriteString(PROXY_PASSWORD, value.ProxyPassword); + writer.WriteString(PROXY_MODE, value.ProxyMode); + writer.WriteString(OVERRIDE_DBL_SERVER, value.OverrideDBLServer); + writer.WriteString(OVERRIDE_DBL_API_SERVER, value.OverrideDBLApiServer); + writer.WriteString(OVERRIDE_GBC_SERVER, value.OverrideGbcServer); + writer.WriteString(DBL_EMAIL, value.DBLEmail); + writer.WriteString(DBL_PASSWORD, value.DBLPassword); + writer.WriteEndObject(); + } +} diff --git a/c-sharp/JsonUtils/SerializationOptions.cs b/c-sharp/JsonUtils/SerializationOptions.cs index 061baa2ee3..c968d37b4a 100644 --- a/c-sharp/JsonUtils/SerializationOptions.cs +++ b/c-sharp/JsonUtils/SerializationOptions.cs @@ -25,6 +25,7 @@ public static JsonSerializerOptions CreateSerializationOptions() options.Converters.Add(new CommentConverter()); options.Converters.Add(new VerseRefConverter()); options.Converters.Add(new RegistrationDataConverter()); + options.Converters.Add(new InternetSettingsMementoConverter()); return options; } diff --git a/c-sharp/ParanextDataProvider.csproj b/c-sharp/ParanextDataProvider.csproj index b18087bf86..222e08e9a6 100644 --- a/c-sharp/ParanextDataProvider.csproj +++ b/c-sharp/ParanextDataProvider.csproj @@ -70,6 +70,19 @@ Always + + + PreserveNewest + %(Filename)%(Extension) + diff --git a/c-sharp/Projects/LocalParatextProjects.cs b/c-sharp/Projects/LocalParatextProjects.cs index a1e326999f..ab41adbcc3 100644 --- a/c-sharp/Projects/LocalParatextProjects.cs +++ b/c-sharp/Projects/LocalParatextProjects.cs @@ -24,7 +24,12 @@ internal class LocalParatextProjects private bool _isInitialized = false; private readonly object _initializationLock = new(); - private readonly List _requiredProjectRootFiles = ["usfm.sty", "Attribution.md"]; + private readonly List _requiredProjectRootFiles = + [ + "usfm.sty", + "Attribution.md", + "CountryStatuses.xml", + ]; private static readonly List s_paratextProjectInterfaces = [ diff --git a/c-sharp/Users/ParatextRegistrationService.cs b/c-sharp/Users/ParatextRegistrationService.cs index 9b7fa0bb28..40e8792111 100644 --- a/c-sharp/Users/ParatextRegistrationService.cs +++ b/c-sharp/Users/ParatextRegistrationService.cs @@ -1,6 +1,5 @@ using Paranext.DataProvider.Services; using Paratext.Data; -using Paratext.Data.RegistryServerAccess; using Paratext.Data.Repository; using Paratext.Data.Users; using PtxUtils; @@ -14,18 +13,17 @@ internal class ParatextRegistrationService(PapiClient papiClient) { #region Constructors, consts, and fields - /// - /// Time in milliseconds to wait before restarting the application after changing Paratext - /// registration information - /// - private const int REGISTRATION_CHANGE_RESTART_DELAY_MS = 5 * 1000; - /// /// Placeholder to show instead of real registration code so we aren't giving out the real /// registration code /// private const string PLACEHOLDER_CODE = "******-******-******-******-******"; + /// + /// Placeholder to show instead of real passwords so we aren't giving out real passwords + /// + private const string PLACEHOLDER_PASSWORD = "********"; + #endregion #region Public properties and methods @@ -45,6 +43,14 @@ await PapiClient.RegisterRequestHandlerAsync( "command:paratextRegistration.doesUserHaveValidRegistration", () => RegistrationInfo.DefaultUser.IsValid ); + await PapiClient.RegisterRequestHandlerAsync( + "command:paratextRegistration.getParatextDataInternetSettings", + GetParatextDataInternetSettings + ); + await PapiClient.RegisterRequestHandlerAsync( + "command:paratextRegistration.setParatextDataInternetSettings", + SetParatextDataInternetSettings + ); // Lookup localized strings where they may be needed by callers without access to PapiClient RegistrationRequiredException.ExceptionMessage = LocalizationService.GetLocalizedString( @@ -63,7 +69,6 @@ await PapiClient.RegisterRequestHandlerAsync( /// /// Returns information about user's current Paratext Registry user information in ParatextData.dll /// - /// Contents of command request. No contents expected /// Paratext registration information private RegistrationData GetParatextRegistrationData() { @@ -93,10 +98,8 @@ private RegistrationData GetParatextRegistrationData() /// /// Sets information about user's current Paratext Registry user information in ParatextData.dll - /// and restarts the application /// - /// Contents of command request. Array whose first entry is the registration data object - /// `true` if successfully updated; `false` otherwise + /// registration data object for updating registration private void SetParatextRegistrationData(RegistrationData newRegistrationData) { bool shouldSkipAppendingToExceptionMessage = false; @@ -182,17 +185,8 @@ private void SetParatextRegistrationData(RegistrationData newRegistrationData) RegistrationInfo.ChangeRegistrationData(newRegistrationData); // registration code may have changed, so reset the registry server with the new user data - RegistryServer.Default?.ResetServer(RegistrationInfo.DefaultUser); - - // Restart the application after a delay. Don't wait for it so the response goes through - ThreadingUtils.RunTask( - Task.Delay(REGISTRATION_CHANGE_RESTART_DELAY_MS) - .ContinueWith( - async (Task task) => - await PapiClient.SendRequestAsync("command:platform.restart", []), - TaskScheduler.Default - ), - "ParatextRegistrationService sending request to restart the application" + Paratext.Data.RegistryServerAccess.RegistryServer.Default?.ResetServer( + RegistrationInfo.DefaultUser ); } catch (Exception e) @@ -206,6 +200,106 @@ await PapiClient.SendRequestAsync("command:platform.restart", []), } } + /// + /// Returns information about user's current ParatextData.dll internet settings + /// + /// Contents of command request. No contents expected + /// Paratext registration information + private InternetAccess.InternetSettingsMemento GetParatextDataInternetSettings() + { + try + { + var internetSettings = new InternetAccess.InternetSettingsMemento + { + SelectedServer = InternetAccess.SelectedServers, + PermittedInternetUse = InternetAccess.RawStatus, + ProxyHost = InternetAccess.ProxyHost, + ProxyPort = InternetAccess.ProxyPort, + ProxyUsername = InternetAccess.ProxyUsername, + ProxyPassword = !string.IsNullOrEmpty(InternetAccess.ProxyPassword) + ? PLACEHOLDER_PASSWORD + : null, + ProxyMode = InternetAccess.ProxyMode, + OverrideDBLServer = InternetAccess.OverrideDBLServer, + OverrideDBLApiServer = InternetAccess.OverrideDBLApiServer, + OverrideGbcServer = InternetAccess.OverrideGbcServer, + DBLEmail = InternetAccess.DBLEmail, + DBLPassword = !string.IsNullOrEmpty(InternetAccess.DBLPassword) + ? PLACEHOLDER_PASSWORD + : null, + }; + return internetSettings; + } + catch (Exception e) + { + Console.WriteLine($"Getting ParatextData InternetSettings failed! {e}"); + throw new Exception($"Getting ParatextData InternetSettings failed! {e.Message}"); + } + } + + /// + /// Sets information about user's current ParatextData.dll internet settings + /// + /// internet settings object for updating ParatextData.dll internet settings + private void SetParatextDataInternetSettings( + InternetAccess.InternetSettingsMemento newInternetSettings + ) + { + try + { + // Set empty strings to null (except proxy-related settings since they are handled by + // SetProxy) so they are removed from `InternetSettings.xml` as it happens in PT9 + if (newInternetSettings.OverrideDBLServer == "") + newInternetSettings.OverrideDBLServer = null; + if (newInternetSettings.OverrideDBLApiServer == "") + newInternetSettings.OverrideDBLApiServer = null; + if (newInternetSettings.OverrideGbcServer == "") + newInternetSettings.OverrideGbcServer = null; + if (newInternetSettings.DBLEmail == "") + newInternetSettings.DBLEmail = null; + if (newInternetSettings.DBLPassword == "") + newInternetSettings.DBLPassword = null; + + // Unfortunately, `InternetAccess.SetProxy` is the only way to set proxy properties, and + // it does some weird stuff. Make sure `ProxyHost` is `null` if not using a proxy. Then + // `InternetAccess.SetProxy` will set the proxy properties to `null`. But it will also + // set `RawStatus` to `InternetUse.Disabled`, so set that back to whatever the user + // selected if they selected something that is not `InternetUse.ProxyOnly`. But we want + // to leave it disabled if they selected `InternetUse.ProxyOnly` but provided no host + if (newInternetSettings.PermittedInternetUse != InternetUse.ProxyOnly) + newInternetSettings.ProxyHost = null; + InternetAccess.SetProxy( + newInternetSettings.ProxyHost, + newInternetSettings.ProxyPort, + newInternetSettings.ProxyUsername, + newInternetSettings.ProxyPassword != PLACEHOLDER_PASSWORD + ? newInternetSettings.ProxyPassword + : InternetAccess.ProxyPassword, + newInternetSettings.ProxyMode + ); + if ( + InternetAccess.RawStatus == InternetUse.Disabled + && newInternetSettings.PermittedInternetUse != InternetUse.Disabled + && newInternetSettings.PermittedInternetUse != InternetUse.ProxyOnly + ) + InternetAccess.RawStatus = newInternetSettings.PermittedInternetUse; + + InternetAccess.SelectedServers = newInternetSettings.SelectedServer; + + InternetAccess.OverrideDBLServer = newInternetSettings.OverrideDBLServer; + InternetAccess.OverrideDBLApiServer = newInternetSettings.OverrideDBLApiServer; + InternetAccess.OverrideGbcServer = newInternetSettings.OverrideGbcServer; + InternetAccess.DBLEmail = newInternetSettings.DBLEmail; + if (newInternetSettings.DBLPassword != PLACEHOLDER_PASSWORD) + InternetAccess.DBLPassword = newInternetSettings.DBLPassword; + } + catch (Exception e) + { + Console.WriteLine($"Setting ParatextData InternetSettings failed! {e}"); + throw new Exception($"Setting Paratext Registration data failed! {e.Message}"); + } + } + /// /// For any project with uncommitted changes on this machine, marks a point in project history in /// preparation for switching to a different Paratext user. diff --git a/c-sharp/assets/CountryStatuses.xml b/c-sharp/assets/CountryStatuses.xml new file mode 100644 index 0000000000..a860fe6aef --- /dev/null +++ b/c-sharp/assets/CountryStatuses.xml @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/c-sharp/base-directory-assets/IP-Country.zip b/c-sharp/base-directory-assets/IP-Country.zip new file mode 100644 index 0000000000000000000000000000000000000000..e415eecde86b3ac1cf1e76cf15aad040654388eb GIT binary patch literal 3028236 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ª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 u0dJlN#dCd!t{GrTxR-kM zQ5XU^QN8hWUIm5U0QR+E*#%ZCU!1v^jl3@#UEX3nt~kwFF##&>YFbA{R9k1 zwwIE*zcT&EAl{=gevv%Ed3px2Obzt5uAtYSqq(G|Pjn{Qbzue&8~B`q&X zNhq2Nez`OxDId#9gaw~;rr-69A)uU>)Ewgw{n;%v9naF$X8F9G<$Q{ng82lL%sb#r z`VzZ&5ItLx)38*4GLbdH+PSrC9OJb}zDdTy_X|7MO5^R@n$#E7&d2GKm7BMg6EEw< zzKceTrAO-<_a;!SJy)lyOj;xy*Jx_dTg$vY&oK3MU7l@2&LjaP{JeD!9=ij^cHBV= zAY|*w?Q+3?BM<9685Gp+q8czR{j1$38q6<5>d?%*unXA!(=2jm)^TMeL|prp%8Fg?l) zX=EJoy%KlE6uGv}tG1$&pgtO&}ZOOpU4>GpQhv1;m_jYszAe2yVWBTa^b4f@{m}qNO z?S>_A7v9Ujm`fIp38Qc9sA}xCNFX+Pou|0h*!fVUj>fwh-j$s&CYO>p`X*RaSN-X$ zUfk9GRA1two;%Mo*TMb+#Va5Ip`)E<3#ZC2%N;{T^l)I}w5x41f&E{@Ve(8(+ z(gk2%ct78JYOd;xurtX;0U07_>qL$c%1|CAA%s&Pd*&u zXDe2eTn%p*2fM0ui-TVTO4lyp9Yf2rjU7;Q0Qi-CZ4U`TAVKu>6;RK$z${?=>b!Sn zg=g(z&JTxe++)96940c^MbGDw4&k;SW}rx5!b^^J#f35;PVFn({aRpd7@-8`3(N))l zwWcy?HBuRQ%ugrZ3)NDb-BQf<>xF|Y_M={uccLLOxn9GwBekaSWu0&cixH$FaC5t$ z^v$a_PP!(WUrru#)!{j~6@?OVArLinP!(C2Pq|k*vg}@*4X9Kyj8%$vHR_>7($pj4 z@I}%@v@CrDlO9N5-XbTg|RWVjX_F0XQM7?nX~}i+`Zgp3jS=mdRHm_ zz7b)!CJj(Nq)f(GMvfPmvcKBKUKfqa`$su+E0dQ_y>Ge@@;%gB$^4GIUhE&nZS1c> zn$9LsN-!sNcv-vGazuJj+GK4|)@GoRqGwK-N$c-OZi&m3n|GoeF6dkg0)V(s@p2+&^sXbPBc=>}3*H*MXk6bz@og3_1gqglHi z{1g85tVO)%j?cY#GfT;(s;d&WDFrpYV37}l;gcKKzTr~ta%NI=TU z?ILArh3LfqFemhS>&RR*E6%e@8IK~3B#fft07Y(I2Pm8MeTBS_pZIUTt$b`v%jlR~ykU2M54 zWKPGJ?MAtYvPgI@wHz%lvi+`DA%Y%|!sgfw0B_{vAxe#B>V~J^ciM($(VCNC2J^CQ zmif^N0Qf=rX%&otVMhIBAec9Ob9(S=OZ`zG)Ez1y--Jzkjl&=Hf(+~LOWk!UTH_d2 z9q1i7y;<9Jn;@!2R{Lr~0WnFG>jmTsx`EHE6{wf;0z|;dzkSYqyurl}D{xYW2rYU{$8P&j~|3%&m=X|1N zRe*>WH*OCxT2jhBpHOWTc}un_aJ<}bqP09W?`v${HlKZddr~#g@Dr&7TgN^xlIl0w z$Tr#_!t%~XOl&_Vm)e9t5yT^Tzd-i5)$6i~6JO$Q+o;VPn`;uy-}k2{+bq^uMM7k8 zV_$gDHoN`^aPoO@a*4`!T~UJ%iniBtrW@Mq1|!y141U+xG@(Z>|LMq|_?JHsLELLv zGLIQG{*ns-Q%u5{dTreGkp+=@_1&K9hH-Q9Xdlp!>dU{}F4o_)Gw^2J$nI}Zr@h~_ zK0qJ}a+aAv8&f3{3-PV5S^XVc{{r%5S!!P7`JvmmVMSjqw1g;H^g+tntM8u?j+Lma$XdZ98_SZP@fzK8bMafz>(6#Yi=zs`#f4z< zj+AS#c<*^P41r<>)pJ#Uto}%wQRA>P;|iCc=;v2imv^^{(NErLOvC|5dRGMFMcO((6Xl7pJx?mh z*&YX5Z@T)Aer4NgdG+j3p+>&*rR?6VVp-Zg^+6T=SZ;(afq=EsRsn6z&owfpcMfem zlhx9^jr*K|qR_OK71b#W1I~v;_v8ws0n)_w0eJFuSO0w>WBm{o9rx5Z_Ok<16%Q~0 z>^uz-U0Ho zz@o0OhukTn*aPUu?`2)kqAuvrnC(QdcfsoSw)(&vE8yvbtkj7phXXk*DqElSIz4d1 zZbDBj89rWB@MsGHCy~Q{!vW(}fVoFQ;R}HyLkn@W`2FTYMtR_5OqDjoA_!HqdY*^Q zt;<`R*Zj_zq(yySGHI=QwHKwDqx`P@ZeTPhZ*NVpDggrDxohe6c0r|MFNy8S`lSPlKU^hz6{KDtfVT{rz1bX=6&04n<{21mO-BJ_Cj_E9 z@UTOaX`oDn@DjxCU}-tPeY^^EbmI40c5Mb;9A*>lCgF)T41P?#lV{Wxd<(a~r7dhA zYSy|LC-%!WXtIjA$Bu68K}--36VYGcTeK)LYjwDEmFx8;YPZxwlv-gVX@y*P8t);L z7`9ENimZ$cV9jBVqh{~&Oj1+4kb^FhWulv6Z6}lK6(;k+`QbelsVVPoLIKySVl+Df zw%&F(_Q7nA7TFQlwm$Kt+m$cu_0q!N16XUIm|T7Y2@+yPX>umx*rNnI8G2S?T) zQCj9=dK_>1(o3laWcm|ix(&P4tux~WT{r!SHG@?e)<0oY+?9x$*i;w-iQtoYsaW&s zZov{>1a|<_ZRTdj$TGm`PoOxnj8?0Xdg+9gYjq<}RwFCyu&sxbR*>`G0L!h@riKph z6YPtN=2q@Qga&~)V8ofy*Q@mC<*`yC$GhNS6i|wC%1?b0YcGV19g>OAEM0ykVJg(*i1;d(DNOIN1a(7d znNV%1W5KMmzF;G;v@me3Lts{0TEGY>o#rgN%gCum{5Vv=O?#xC|BKVOdY4W=>Mkd5 zDsyfm`iogvx~a$!=udawO-v1K#~p09CK7x-BZ}^g#}VC8%kG$(!|o4plP;q8hFIWP z?X;TcJ%6`=W?m4P?HB#SqM+a9eDHKnaj4td`uBk7x~Gv=+AXQQ+q|j-Y00ON3RmbB#gu zY{+^@1U6V`HpYVOb7~+^(?cSb%+7dplvH^*Hb<_CuM~!j&}T?wi@NdRaH6j97nIj3 zL8sY4KMJ7`L5*b|6fEJGa#dB5@gs?#`XV=B>Vy zrl0}e%vJ9lB3AP|*L+1nKZpf|zFASa)#*Bm7zpnBodygJwLpWP zjLXlC$^C_IJ}*p6#KBFplzDT(lB7y zBdCZr$tc7uUf+TjWxJvVgC8QgEf%T(4AgxMM9~G~`|nV+!70cGv4S?)s?c}XELP!u zG2%hN{>jHIbDZU&Jx6at3tous&jtL{S-)4)8660*1`bk8C|Mdl`U#I{=cno9aw zFY#nunhUp0uk+a*c&DuvDsS!@IYPB2H=;C@{3haaY(SDr8+@`=4&$`w5vT3F(Wc%h zc-C|8Nj6`SUD$Oj=RpBWC-hUBpF=G+FEX%mm*490%(r&#;A-!3WJkmPTFK_7P1}rx z%WP#tb8bYlU9&Z?*&3QNxK~%%?$ak5-Lu;s>SGc;Tm*032nHIDvI?t9sL^#zXaIJV z;0~*f9!9~@h`jAC?dXV@DyniFc6^T+4{3BNqYBuWvIMG;m^P|4t&|BywhNJj)))ds z*J(L{6k4e6o{3Pb2ks=Z%QYHVDHx(lVZV1tH74NfiO|DUk;Tz}P*zUAMC`VAyf*x9 zcC;`4vJ#)Fh1Kn)bnO4=-yQ7VmHH^YH(0)_y|KR^6HpPe^kAR-VE;$)?k}GXHU?-y z#m5dYiwQiyxn%Sn4w4|kZjP%+a$ zm^%y<;VP_5M|Q=Ea5E@xLP;xJrqqOhuj1;Z3H{h7>tR|$slqkaW2*OaDV+@fL4}Y! zU3MI&Pt(t59EdWZc@37Q2>WIiOvjSMcVb2MiA6DGRN+nCm@`dAX%+!%tb<^X;Q^4? z;d11Yy28;juMU|#=lvo@s&oLNkki&wz@M0&YsQcHBH)Yzg`SuFpLib5C8rDk>x~0R zMGa0LaaYOdw|PhDX7%@Yx8J&6<7yw^AOGW6D>QadsKQ#f%v#vP!V+=iKVzRbV;_?F z5L~3tc=5~!_|9}E7uH<$R`vsQ^-Ne_SO6)nvgum~t}eYit5nHq+;}T7ex*j66NnFd zPDB>Bd1fCJZ2$X_7NpoaeEvUt{?$U@f0ojiDeMZqoYB+Yx{_@rw{d0++$ z%NZY=Frb}{0hjIRCy)UNKN^Gwfx>)Ph{^3J=`s6F66;B{Xha=grk40UFCifdDZ8X! z>O_%i5BL3)7W}qgzJU8jE+$Cp2b(M~mN>)0;t72z*9api(HtJGh#!c0gZ!Uypc+g> zTH*`}5^}N7N3qvqc%Ou|2)T@y0Z;>Kf{{Bnq{2zh;LmWkxH#pebNnOpuO5(<{ysl* zaS)=zW#7pP5;4KziVeW8wi?DR4mmZ3uFRJ)a4z0-n3-0qRIEazK7U3l8-mUs+72mn z;BnOx&c`mv<<1Hjrh^Nh+n7PAwoZ5IzXi}Y#*2a3Fgd}Kms{j|*(M-kH&}xA$B>L9 z=X0}*ojyXgSlnE#>{!mJTryM<*W5)m&=ZvV&*=nx-GKycQJaU;leDhKB$DmUcHE$= zXHsTM6od4G(l+pab5=465ehE|$u-*GsIW=oi5zy8mdLX_;jQ{$Vyag)mKm_H6rqI`_Gnh6>mQFnU3DC9bz&&89ss6cJ0} znWN$t)8&=YZLVmq7cX|9)Mcn8(bM5y;{2mxw{Y&4T$X;}gvS`J%PW zqR2Er@~exc5qS7f=$Y5=qyBn~6A_oNPC8|l^h((j;5Cyh&3d}SKN`@Rs<_abQFt1t z1eFh1MbjpKVp2gfeEE-h0p;KV-K)e+QGkHJZuyxPe|VroS2Uxv0vHCrP5dPvA+AAC z_}-Yjt%dt3`eez{lt##i3O@=}*o_!FVtHnFS4nH1sZT#CSk(3m=(ufI9XCpv*18g& z56mU|3=q;BlPtFg)@vd)vhAN)H}dB#cAJJlNuZm&V$<{dUoaXS^?hrmyNDI&)3uM!5uKRMFP^UZuuW1IyIJ6&65gO`lB!o*wmsEtaDH-LM6*yF zqMu_yPtLF!Z5lme$CrR`FVR;eVacWGEA@%7fEpN%OMNAZQWQ#|6Hapw*7BV z-(04)=lbCeZ7K3eF0bExL)Ga`)V6JQ`dnYIq8-p^K7cG)+iw{r>CIZ|xBL%x%wo*r z;^V*%opR@^-g9+m9)m<-K^=^w;G2g7zc*e!PYfBKJO;eYQ=|jN1^FtZ8`;3Si&@;i z>9}#;C3YPd8rPATCMgW!1T=PB4R#f|?a9Utf{**%oNQ*}vIjZjamnqx!_{^FxU{YBcdr

ce42v8tHu3th^V) zrzoef|4XUvr5<3VsBT(c`Lg0o#x=$)6tn@WoYWFQ4S78m5r=cI4})^lTuOQ>9~oNw zvR6Y`H-}V2TlVEeoMx+0(Ibd*0ZrcD5I|Hhn?nNHp5b>(V|ubztlz_}2hrsX3%T)j zDeyyjDR5ygO>6t1N7YMm>jwSUIIO{>!APOI!6Xd<)QR(xv(Z`Ed2d##F03H`w znZoj-+p!lbg)P1u&%09HRuK7~5P8eeV0S3Lw;1IVquvi+ie6}LbP6dPYFJTwJK8nc zixjE(8zK}n6|o2^Zud}cN2O4`d!OkV!YpFM>5R`Sw`fsQxB<+w&ieaH-qyhVr21i=Z)Zt(}a!C zD+oeqypN@yFGwUe6(SYY&KB*g=Z6H%Y3;%Lc}77*qh{)fDby*EOJ}^{FQ#F7_{Vs-y*GRYH9Q3v$H(BPWE7zu z&(2|WRisJ=G`Zh42CH5K`#2Fikgb8!T^rI=?HEguCS}*Xo2pGGqr~W}ID8qTst8i` zKx5)>(S6`8n3!(WlzY1aigL?kA+(z+Es*j|&Seuj0k;7mH4pC14z+FCU}sXXk-fEv zP%qrof`-XD+vcx1Gmj%n+|;@%wi?FR(?-3ZgP_wuk^bIM*u+E%U!ut+N~r02)FBPo z&F-W za6AIIG;QY2x2>7=#GOD?_a`_r1TdwyO%!^8P@Tm;MhE{uD@2VKH*J5X=78Y|#B8oW z>0{>`c>5dpV?SrDjMytr|+Y~P$i>QT00Ku7Fcp4V>DUieX(T;1N2};naKj`{)EX%Y;JN7Q~2|bEST} z)C0t)(f{!+X^0k3@K{HWk(trHMVCddwe`OL)U~QTuVBr{Q2v!_FN3gV?{?9s+#Mv( z&<_#H4Baj7T8Fzi=fAf<=%Q$3_rmV=|Hz-W1vrsAK!-piMTdM}E%n$t`FrZ9?{=Yt z!M=dn4g(`uLQwy71bBe_iIolniPXWKV~YGEO~47_^(op# zT{j5m-NtETJS2M``IHZ1&Kj<0uWkOkun3SBHJNx8aY3p;eNKd#$1^SN>Yq9uasg1a zYxqyJJ4E!I^P=KJ@a;C%-;MGDT>~Y_WHLJT32vo6@Tl?U2EbRQ;*`Nlgeg=kPK=l)z|AoiyaN#q<#0`ma> zrSoG~(w|_{bbF%0?nQQ~WNi^LKGvfx`j0ih4H=;Z0-eaLQ>P2O*|>jgoh zyH(}Y)H=l8>@S%A##Ue}Q2AB{-EAcKBYjl;Iq4Y7h{EL9>vYfy=qY|6&2kGA50&7n zv4gh?Y?AkStWn)RR=U~DI*;`3VTEKJyu3$^kp@3DaoCQ|w_^+P1}~|qs($F*UdirK zO$Ef88ZbL<+%PEaG@%;l6czj;8ABT-*+w7nA0(t)3VJz31(&548JQPpF?)LN0*&?0 zgRMJHyI3X#c*Ip=3II!w5>O0NTb!p~DT}N5E)WowP1Z{QZqbe3F)lP&gqR4=o#zPX z!?UPI;H+Kq3owzeQg&`9n^`eMvg?X&VT#p7OI>`&P^bA)!4vnf1QIJ~LqQ;tz*jIn z8v|j-t#j1F?sH2?xX%nK$uvul4n0u0e;+GF0xeZO_3Ntv3-f{5m-8e@nbO(PN0{aw zS0_h4fU`SG-G-4jNlM&s6%){R^W8{x=~Y_6S5ICZ_MzRBk*HDXkWv*q`eB zOSJ#xYnPz3SpO5C)aSo&nf&lRHZ(5u?Uk67ub7@i!l&Gl758mSRph=NS3Udg@_XwW zH*4>#c+qNCr}16U3n@2$#d-IkZzecM@igjjafz>Kj+tCPH450K-B3&}+v-bP>Fs52 z+LRe)?u_A{7Y)C_e}7U<{(02Ja2HP`9PmDCrNni;y@VY2JbudhjtLBz>=sxYbRw+2 z7k%}3Bd#F%&LHFWUt8qxaysUnG0p_Cwf%SQ!zqK)gfH$I=%G&c)62wKleA8VcJBaQW~UB`wP^|$Ia9s8n(CMeTlqeSBhI>i&3tNuC%veb`4yBW!L9Bou zCa~U_j_V~<4%>~hQ7uzkXj*N>ov^ObcmPb`@+%AQVYKHlgK`WioD~68ijH-UvbZqJqPAxIE})@iK`Ts zNeoS&G5FosuYESO22x1at5dNjn(lK27{k^i=BI>Jp~mr)eqQ3qo@^n} z($^4?sJHCrBt{PsU;^bHApujMg1$dSg{`n95VYtaiq4(o3CfTbfCnIFW0dt(c-Lu! z1>(UD>!(~J?HlL{DNUs>si%m7vB+Jc)>njB!?i!|GUL7F@CGjB1#!5`(}?M&hi`$p zn60fvz5ipfl$AtTY0jzS&5~xbp5h$1jbYx7+`=$sZEs`=vcSokcwJo61LSD@1nhUY zxlP}dD?b^M9Iz)C&ZM*L54kMJbi9;tdic~ZH$&B;;+(0xroCH4j(~5rd!n6eS+_rN z?_YDxu#)k`6T9PCFUhNR79UGaBHfUSBh_-J9ezaT3JV+OmBjC3FsQr#K0nAkX4;3O z9RUq(ln@huvU)MznxINV37PzGiTTjm#o=OMd&{>U%LOHq9YG~-bw1BgoWP4rjrYKX z$&+>?edSZ^GmaJoAJZze7RGKGKf(8X)pmK(*jt|20{0`XPO_Im0?6uMwX9zGe)+e z^LhYhA?F~MDtmPD$FsB>Dsmm3IeQU%#m7%jrl+zLCmP-_qy+oCC#Se>972^g3S(~5 z$LxG&o;|R*H(vA3INZ^T57l`jIPerMQxVCz2+VQ+8iBnMfvs1}woe)vdi#OrK5Q}6 zF2UD)41Q|hWv_)8`h}7M2f_~&!DCpNE(BZa627KbPn6 zGuQ3o!Rl_fzt-*Nr;SmEWNq(W0jpacB%m^X3Vi-8Va(Cf*}bl~*RPgvubR`wNIR>Yq(lp ztD`0&lX7!$%ho7OHBP5i_e!nq+tXHWWK>g1zsOiMM0lUOm3DcHjoESq}a#Qw)mhhU@QiFY+Z;DqbZ8H97SH9Y-m|e*0w_TO~uI5o^6RD|H zIS_ASXkDe$UU|hf{~o);yzNs;!__JHSE~TXz&Pjf3BDZ!zziMSyh1k`R=J95IrZ!_YoyuOUaI6L4Wuwo6uh7%lrXu$VcK zHrc#|2yF}YiCO`>co6zR=WS3IYc{fY{hdbR+R#J5zxj5w>)=$Q+tKpI{dC4zSXshH zO~6A@5%>w5OJLnC?hV?FE%XcO-#A`C-R7x9%Ih$B-S*AOpIt!nLI(c&$ZwG;sQ6k` zbVjiJyIA3`K6S(Fu7En`+w07?U3m+F<<$kA5>0MP5I60G9&3LXrSg~}O;@ zF!nvty@m4fu8{?F9Po6v;lzj zi-p>=B*%qS*#zn<)%FDHYuGJ$Imy^FQIENHq~ZnbCme<~*Wj}p`%u(BDM$bi-Zw}~nZWmBs zFNh+ryZj4WZ8g_M!2(J$>fX`?J*k3xSHr;cgXx!`OABZxWEeNcXgX+FLBs?*@jhP! zJLDEi=^l|6!t#>bnA1_0VhSTKpMk6>fDo#2R{tvaa~kY1(1O>@%vig5=(>#)?cOkjU}UjOpUfsjtcRcS!s6R%-}V8UkPT<7IKtTNG@{h5EN zZe-5aSE6Zvn-{6ZzB*VSZsN>D9yBpER83H|IDcH+aXmnp^lb25oJEk&DY?_J=k?FW z2nyZpK)#z(q;iKL15&^$M9SEi8%|mQ!6Mun zvMqd9Y+tLQ18Zxp5M7)%mR+o$;$5`6M-W7BZq$Mf)UYEx>ix6pycJzX`K2sIv-Buc zxi;zt5Xf0X!A{krN6{owEkGhCMTu^stKG@%A8LA4+XEa^(;N2GhT$gbtdY71)`(!T zDdj{=B;DDn>dgf&I*EO;jMhu(kak*%w(Z(^ih{R=d5+-Sy|x~hwXgFHK8nW36g0}P zcH%Zz-<+W!w)7V6#p<|J7QbDdB%c*7&MlbW8MAG+YU81dIY4l9Z30w^D6*LyTLuL( zIvecy>mqC z7!g`YyJV6sgInb4$RfgvJBxdOf`#=uZs>^AE7g$j9$)dsC5cwdhp7TH4E@JQa(It= z?f3OzWtZ?DX~qGrZ@m2Fx*J^2=X1|2nDn(vQQuz2eF&iLC2gMBep7x)w(mdKT@)wk zu5EgN2C{*?r}2eDejF3OI^2(q!jl=zb}@+@10a|q6^R`2V}K4qzdO`v@*mPlvht2J zQd65bft`)`Ru0*Q7d!!^*NQ+v9NA7rPd1#RmuE#EM03?v6^ZoxUf0-|zKC+*-oDA= z{v;K22^_P|O4sh-tiogVoaOOWu?#EyzSP>-??+vT;a)5&{k7fMzZPeuF`u&=_S8Qo zH|%ZbL7X8CiygNO1(a9o8#^^XBpY-YxVx1So8$K9G;hd_utXZF*4?*@tIfbpk*4Mf zH+Q%4W8ZQ{1TUQ(_dQ9y8p=`cdOyb#_^bJ9)Mz(+tPa~VwU#eK)A=2!$#$S@@F<;l z`b`OS!`?R47RHk0$Tl!c_l0fZEVx%ryb6X?YQpX^y8s z%pkrM1}ECg)AGx8`(wfD$KYIBdB_()mWk=oF7g0G@qa+W0`d_2q!o|>$G7}>z(drp zsL<3Gphr5?h`)=uwa+)UFLXq_Ln3093^M{bZZ!aTJv&8;85d%)^y z$B_@M{+_w5VtKDQMgQj^<Cj`3F66PnhY0cS zav1t-|3Pc7c%Q~(;j;41ko;hwu}5)%Qw3GSsU+wC7V%_+d~i*r&T*G0Onr|SUWt$X zEg;n8k2>%U@DieKXdV_!d1cwkVfQ0Uj>M|v;X0A4F0mrOEHVB8zBN8Zoae-nKLjub z1l}aQ@_tftG)h^vtf3Q~#S!NsHiJ(^J^G3zHytqV&AG$(GqyfIRiI0@Cqu6_D@PtdK7Z)1G}=ZqA7eH=(@;Pv3KjGIS)h>i25| zW=@e~)aAeWv@J2zCgQRhhN9*&p(;ut**UELwPpGgHKLu!F1ob1Z<25HcIWM=+@Co4 z>e;6omhmI5;*{XN@Q$YohE@1q&67{tux^7W7gdk1A&+aVeZBlYj23vuc3LJk7`<=Q zO5QQFv!9V?2CaDJhsz0!%#cblc(!?BVzaK)2yd?;@R>2*cNcEXJZby>)GBm&P&eui zsatd_ApwB6nbn{Cmfq6^$KFXTPKcF5jL35r-D0iZ&4f(W%I_RbE+qY#*{FjWIcJqZ z^afb^de>VUyc!T@2lVY_iCD_#*m zf6tw-O0ueoL3G6Nm3RmKKlI8N+$Ei5xi-yl;K2aFJQWC6mJ4^@6JyJAvLiy<-}{WU zG7uBD+l=}~S!r(Z`crd%Ni&LMMr(G7Ud3#P+YS5Cddq&D?PS~piCLNYH(IAI;*qDjy@~9-9 z<;bm%HIM`S+IlbFHWAUYhab6ushW6E023qxDB2|;2R)coq>P{}beD40Q^;RyRiRfn zl0P0J-ioB-F6V9a$C*9ec(Y<`WPSYzbcoG?5D^XDnQey_0gWjF=vRSUgc9; zKQ@m2L6Rc)+20Y@EG>U>{0|wbJ_;xL`>FmH_+puV>`%deUaA2bJ#SV+yK1~}T~6Cg zrFj77WkY<7a&K@RWoB?;&_~ZFP3xAag-qdKVwJ>RY-vVl0 z!=iQr2EnZJsfk0<{nhmiO_Nkz!nE^xs9rRY0@(bLA7)-y;NMyWZ({$L^=Mek(%uY7 zO|`%_vHfCl`jcw{I#onwqFba4NaB-$!ntyOOGtAztiI6hW!Jn!4&dp+nMOeoS<{abD-|`^|LQqF)PsakoP;7zj z-2zY;eiAp`4PJ=s!o7->v^w#VpoilSPg)+yfk^%=YJBFD{bJ^-q;uf*fJDIV+XD`9N(o9wrZ_TG` z0=kFu<`1Sie+Wy2d^NZ75Y6Pq+Q&4XkI|WHY}|mcsT|8AouP|>{m-R zA6mru7R)+eVgoR7DqX2x8u%2La_R$6sRw)oi;b38Q1I7e{qMk>UQnu3I(c03DfQJP zwV@@`x~tT|<)*&lO-poC>iy76?cu_sE9I}S))JnVPGnnpYChDGo%B*#)09}#dU&zW zA$2$#Jm&EEj`7av2bQ-61_$nJZEw7ac<{0%HRyFI+)URT5G?he{pJ9Az;bJwJm9<4 zV_1)0yKo~)dGDO5oU+hw^L3>)w8S%VG|*Vx)JbXWtHd)2PHxmq4FTUZ`&RweI@Z?g zQPg#^5j9fU_htCmfJgW%fPb#qNm+OFzP7mRe=!G;y7lyHl+Byk*DD04N5dwMxzU3& zhigux6JIYbloOxrlsywri|ki^aCwArHr_9NjB`jWZ(We;u@3D8-Qlf}@V%_~@k)!j zX0rdHg+B4U@$+T}x*%fh7&)k0x7PMD0uvo=T@Id&?O)^rRRdZ6P; zbnW5DI|3^Cw<@41=?bztZD@fn%YD85Q~i!x;4$6YpL&9k;HTalVK>N@<}Xyw1+SF1 zS0g_acdj8H?7|-HYu}N-=}a*D)N{cwJl?MK*PxCds?GoPVI2N$^5%QSg8&nU=R2oW z-abJ5`qZN?gJ!_rh26|ANe;V-Csdtq7fVk}Fp25w5CnWow2s;er%m5^{SDnWr(>A?wF>&2xIjQc*E|>m3K2io(5x z^=n|${#=ZbE5-R3@jtJVq?hblekk@hX?*Q;mYxZ{bXKawUU~5Abeny{DB{*blXMA2$ zNr9k{*@JWH=26+xqFLmqhcM2$JrDXV3V)D8;xLUB2Ng0g=Ef+mhdlEIBspTW2z_n| zd5&jpQnU9PmrZa}ZNKB`a&MvXGgjYx*N=YM*#c+Y?x7t>53YOmt_L!x$Oz9e$$l4` z#a6w@|2B`*MI;gg#S~{M%XPV7usSb++opBb)TprmB*+xS$4O1`eq*D?YYcr# zU8bp7SV7F09DCU1V&Se2{`iC?@;P-h+TLPMwgsdezNh7AVWb_h=Q~)}7lQDgws+l& za~sHho7opy#}6sfGJNcs>`^5CY^=!P&l64gHEnq|$~AN8v542|eZYEWqxg7$2x}t) zZqx)%E|dzsKO`@-jC)%pMh{mtp&IvLeG$r?%2lDk0gY>81wT^|2xjd3EY`KFe|l~@ zPn5apurOZEDavjLs(^={$hG9uois9P9WJ!=tg~*IFs}~Y{F^VwHW<_{4fd2=`z&nq z-U7ky5Fi5XX^1^<;JRBHLP*y&sJ_p#dP`xV$(FGaEr2r?>f53P>ZiMF0^qC{asV5n zs&-wS(5{Q zWZwN-?o{j*{d0xJR`>qK&At2hFHY{^`n__LiuGSL8OIH>9nKbVtu(LjKM&-+dzPsr zSuRNtD!29f&COmI&i6zs6s{eh%w#UiWI9xO8SuYMcxi5rkKJ0einq=R{~KeD53n>3 zo{ChuxKKEKK77|_?fGC(!e~pQNR_=|uLdH*)|e4^hY|I^R;P< z6~%(sxQ90`;xCNm;yyER?<)KG>bh`fYmV&fSPZ(bKLiB~?yrIejS^dis&PRmYLMMz zTgxC}Qw>#`?}Bd|DD(-*M$h`As`J}t+a4OO;$}k$F=Nhv8di*Y=Z43`nr|H|v_;S* zZtK0sSFz%SQaBG~@<&Zt?LInKN_{{)-+kN=IywvyRM9ZbJx1OCIDHqM8{?_j zX5Ib?P-+wUd`+u*1@e5?#|ni2M>g4|@1O4=j2`m6ychXL8(h7R{bZ*=A;QwCbQYa# zGFr^CkNBer&etGD{80ouht#Zh@z$vuZh=)IvJu}{JNK#Jz0cVnH>58?SZ+SD^{B^y zhN-}R4D&`Jw(k}v%dB&3xuO3TDqV^Kh5xQ(osSqyoBO)3%4s{jkn)^*990^6KI{tz z!@5DcxgY>hG&mNWxwn@e(v}u#4?v%Kts=w~oElWpc?A;H3Gb3E{kOF%K& z%J}P_apRd(TqI!9WoFM#plGxeTZ;|Fk#Mjv$HF6Ue4f8Zm>Fs(UVajz>htF!UBR!xoB?9#txPS$|e*@KDH$vQ96> z3$Mgdjx6;`_8#i8%EI5!I~9NU#)<3yTsx=qO6en2YMHm#{DIQGJggmvGY(uXm=&w8 zF-f>Vh(4t-wprX{iytw~Sj-%CaE^{tELBE(1v^6yO{LBhjq8v+$ZrRn9h~>4w;36= zzQH>RZ=%Ek05v`+`&Y&-<2rwI$(IKfOSBJiOy*%w2t9_ z|9oS0Yyrn3XU@>7YJBh3i1aF-UyW z4Lt8Hx0RMXP&(gnkEdNWyQbf5mz_HPybtFY@b#n9@iVXPYT2?bLF`UaJ;U1P&%1@W zfL(TJm|c@aHyz{Jq-+;(=Db^QrL*G^xQ$?yq~>iK-YmIa!N|aM^JO#T1z=#KSjU0p zgsG}e!WEB%Y{ssg*7383x_SQR`5y;r^U`=&ze?t<@ie#gJFa5ucNeZ=ugar>hWY^_ zeo@Np^dY#E3~0Z!R<)_fR(n?Npk{P>04RgDc|U+efjHF;iI|Ci2RFqYjsF1BZN|se zWRAmaMg~Ue`9k!AQydA-f6U!u9M$>c48SqIG^eaag=#}?+qi3!$*OR*b+zeG;;SJR z2m0Mhk2K$8!vzne)Uv{Iz$EzLPOIPA=e2j+{A)aGHgq6X6q3rVrP;bIMTj-KjCRvo zlRny8|7++Kp~UhI-tq2^RAgO2;+@i?+BkK~!erTXZp~`i4B?s6s0ioQ6g7FqDlC@F zYhj)z=acfL9|vmFN2XblB_qG;d}Vp}n$Yhe zW(DAfc!OQ^ZT%hF=*fUb(T6#&{2ilDamuy@7eFEE~kF|XjsLw*&Tb@uqGhd zsWPd4{0A~#9g^eqs_i_MCKK`Cp2*_oBouVCH{ymEtYg`8C{kd)BnOcyl1whKL)><+ ziD71M@yp}UAGajoVwmw6n8{eD=$GkpAF}aE1T)@(Rg*%er!VnK8oClfl z?i&{Df5a`x!a6*vclu=5we~Pplgw^xTEGKSEzb}~#8^h^$6H3qI`;-TCTUnDI`>dzDjMAg0=Szsk%7G8)iU_;{jLXOFT4i>~f%QUFd+brmKSyLT7A zf9>FX+h|qTqXbh4aU)`HSK<0VPE=*G*!GH8#eCWyZ*Lu}o+8|HXtnNVNPecCNFHLO zYoIISt!`_E^LNt>(<%?$WF^>#{gJ!@dp`?}d{idk*vj13=G5^{kF}?Pg-h;%cH|ne zjISOvDayW*ax07wWk6qACM>IG)Ye5zMyb%>lRt@d{KfHH^wSP*Xii?Yw#$!f)Fwtm z*!OWfBJj&DA+b|;snbyjLB7{kgy*+wMxtM`4pNmdpfKoEvqboRerq9&OB)vaDPsqx z2i^I>b9&b3{Bcv=Y~lzijX#pEjFW%_W)3BSuDLwX?p|KWfJ*Sx=qIM4#5g+6t*64v zgUUD~YpVI>$Px0kBy;wLCAth3o6JRclsb?d(x=MZ`zn24GZR_0)8dkLny}_Zl(S>x zW%^R1oo0A>+cfs3CKtavWO*ZQMuGX&n2_c;dTNwP%=m zyHB*B8hgc&_}arBNo>(5n{8CcN%ff|>i)#8>#oCPeT?DV%ew52!nt}e9y*0DIAtpw zBShCA+e_jb`!iOKs!9>2BaXKFB;b62YYw}8jkpF-v@5}3o`$I&-$pMoLejSyDdH*eqsn0~;bhMMV z)iukX4JiXDez&82t!`Lmi!dr?C} zArb4$70pnBloCiFV{;Z{>jY8)y_eUY;l1_Sr7@T48Bj87i6AmSi#o{~*`Q(Cszn;- z{aV}1cef`u*1i%}zY=1z;lnowRs$j)MH_2q!fG;M93GmHE8hZLKU*Vjp($lV^XWJG z(ji0)iTZaXLd0a9Jrgx|y(YA(Av%W!t@NZ%|Io6iqhw2H4ftika9tA2plUKb zvZ~mZ;^A0BDZ{lGOsArtdeC-%CPk6}u6b)%K3ZkdZ&0!4Wa8(tHZhHIlMk<2zL$+Me=U{QmF7nF4E;g`&mfE2$ImXin){%-Hi=70LYFJdaWZ2qn0E%>cTC8pcIn z?e<+gN@H~C-m8CG>@R|k$71T7+prE`Sar zTmDY0GG9}^5Wj|VXkX)B=k*_i>~ ze1@#?fWrI?O6HR{G3j6O85FS-T&8FnCKph!Z6GRE{(UrK$E7Sj@}6l9vt(JeUb9Bn zvt7|lH!#!akAr9X{E1cQ>zUqX&;R4eM%+$z@cC2emDeS66>`?rxs4DM~Bs_9lY|OD+t`(_!Usa5e7$_<8qdHgjr=6_i zztCOJZpQc3O0gD*u3xNo*mb!BrTK!16-l28O43^l99?N`^CGQH~ciO5>reX zW&O?7fOZ+ZW2H#F2^qVzf`(gy)$s6|`f4 z_R1@5UlRlGL4CMl_S7vID<$NZOKFDHU@|0wfB#Ksrj=-^-PJXDOXaptTcD{TyQ{y| zcg3!KvAfFCEO7Z1W{dx=F2n!Tu>Jbh&g)wdH(e`NuReg>`^fq@U@`iTLb$ixdA?2E zYoUGSbEx~hZRQsnUAwE*w`#s8J7(g~)=Kb>(E0XlI?*ZIk|p$W&H7F1J#yP~#7LyT zm{V`(4+L9hN1esrOMb&RA21d)vpj#k$>(=;ku=}YN0=delEXXIy7(#ggy?8D?^-&K{YPHmdD+p$lP@rfPr+@x`2Vh(*L)_xPz~`<)X|LC4*k_fpq>c{t1r7yjNz& z37!sJub%IdfzJ1=GSZm<_dHw2POWZAZeC{|1(=CTDa6Yu8lSL-RU5&oBfrtkkk8D2 z9q|8N-nO~*{bWXVV(Hn^qgFR9Pg-sS<4zSO7N{7@HmCY|eu*rk)eH!jHj|?AXhWGG zshA`6|Mv#YIui&PN+Aeyp!piRVE})OD(HE`6a$KAg#+M3){RXSZUlMmy8(4}@2?Jt z=G*M*0n?Ynq^Nva(ST_pz*Iqt8$u=|re9M~j5rXcL zzM=&Bn0JrCwPbGqTi*IJI-+h!(C#>3vLBXWuW#L^tF?Elses)f}W*hPy|3$ ztyxVjPl4R#|D{8(Q0FJDt!MJwzDJPw;4*FiLYeL!FnbBSX`+QW!uiZLNQ}A@!n@YU z`Z^bdb&eTp4lNbzSjK#t8eCZ?2Zp@<7dPpwQx%;V>wg;8$P^ZTsXR7yc~L3u-|c4f8{biV7{QAtL`|0wHdHG z)*-|B_$vvjouq=14MT4wh31n+KxaI{y8LpQ7KWEu873=NJMJ?LN;z#W19cg-QrKvN zj!>h;3UscDJk~n~`74RlmE8W_po6n-Ttg92Vu`}0ng^&N5TTOpXtmg%zNw-2y#LI_7CE1oTYyKRr7Fnl!?)WU?s55!iG!pW=<$uhhUA3Yt3Fe6d-G|}fkrI38R{op zazvK*58i0)nVbA}vuQ7{OJB*q{mz0G+4htV8c#^u+|8u%YJ!|wPe{fEI`B=LO+>)c za<$sH7{h&g{W)*$K!0SaJ&{20o*tqfqMvy9g{<8XCA<36M35epLk$5PuXo`^zQgjb zY-Sg2=^NcXo*{FpM)^dIa+;Ejh9~>emV1pi-%*|0Z~QEwK6CT2o z1Sx9@&dw$!fDX>Cpl?Re&d;82jWx+)|7lq0YgkxO2FueBW%RS1@d-m-F(7?`!mND) zD5X3wXVR)>9qDS$?wjmMln5&Lmb@FWP(_?tbPe6$?4(VM&q6#D@nRP(D~+n04n_1U zt!|6v-!ok5@&4@|KACGti^YeSFY@CgL{H40MnSle7*GB^+)598jO|43twW5+lH!`q zaxTmsA&)omO=ZQ0I%89*5(kHupIC)TTKh=P>oiF;A&jrRqf4Y;#r}iFXCijo42+}h z`rdyzR&_=FZ`}Az&H$qGSxbIqe!|Sy03;D$Z(~@%y*29lL_YtS)foL&@0C`h0&*Ak z6&(`aq`gkHcpOMjP~QzW3p!YJ&Dh@WNo=g;GM=dqSGv zEC)F&Y>`ZL9rtY1df>*U{Q;k=dUbs_1m-zhzx&_lyZknoRqMv=n4C-htlGcJ!Yvx$G}&Q#2eKxSuu_xjIJQGZM<%D! zTe_|=>{@__mPM|;!ZOZn@;E+)nPB3gEMYAdUEz5l0j1MDi7+EQ4XuK}llL>*if{MdWW=`sY>`(v2PI56kDTfXYX9wAwN&zocMNIIc{n@QvS`pw zlSvwzW+&h?%3;@gJ&*peFqkh;5$iQ6Hw@E5dzELX%pjV1p+iTaEF~|jV4f1%OPINx zU;@hMQS7&}GW3d)TT^PmoOkn{c^WjXNX8z*ACYt@bPaV-l#wN#p`)5sYi1e<=`<*Z zlb;z5IY2->Xj%=LX}~^nZ<`wh51g*+XICyZYzAQyJRt8PsQDgO{X{f zXBTLtHneuY=TbA}2=lmov47}4;*H$QDZfi1&)Troilr$9JYzo-B@1`cu|suPa%@cq zl)Nql0W1yy;4xn}P9ES>Vfd965SfPil`r9Z<7qsCpAoeVg`&nRP#B5#}G;? zaoHlTb4)r3|A;+jA9C@Vq927tsj#ed(Uj*K-qe|f(K`Bg;8h=z)@(avGBE~Wq_ylh z+EG(U%ZAY?%{HqvoV&6rI}##^=b`W?Glgc)Nxy5MhnDsE<~=z77KV1Gh4!m%n}wl65bGxiDsg zSPjB$onEn@1r($9a5L$c=NS$dK9=Ub7y@9ckNAvtAPibi=R`L+4zu`KrkWqWB0W+u z5dLDat7sVFs8{hR>$1T1EUACTcQKjOJy%^wbl)L>Up;7_#rdeC z59>pCB@p2d!AG=@Or0AMPDs|G$m=?&7a;*4RB1@zjNluMzo;v^NcQYpYDMxYL0;yF zQH-{gs;6~_Gl3Dbx-kS3_>g;ZM3NWFi#H}qnOwqOHfOt`bjj%F;h+r|XajP;f%R{r zr9QtKKdHlGW^Ne%A|U>t66t!+v3unRNb3VUG7(iv56Wzmrlosp3a!Je^%o-eBas$a_jSr z{sE98SB`9z%e9xrD{;Y+H(wA#S}oD#ckIN=a)ZfiO_FwjMIScM3F6 zB}x1Z+yqF0s9S(s#XHvnJZZ|pUb2YTlJ`iMAuBl?vlk3t5fmf@q$Bv(Ix&GRnog zc|@EO5`z^#Ag_Djd7m-JWid8{_gQ>{+RD5*p3K_4t?Ahg08*CqfZFN!{W1A*s6=B|W(mpo{R z$lcuH_%D6;7P#w+!KMAiyDXGFX^oBxSvs%(ql<%N?#J^OZ1#!xZ13X*lsAeS9~EP+ zITVISi2EW_|MJ6U^x)2kgrQW&V5NQm#8@&Lz4fc7k3EOx3Kcqw5{9H4Pj%!BNI7aK zicVA)qMV{c2FH~8sn?91%xhe_?vv@>?@YY55OkbnD7`to&p`#m7u*($e4U_TLNo6D z1&%mVtSiK3{-hMsN`<@G2;v19VIsTW(@ig<-&`YHF19+C{bUR{b~PaG>IBTG zfszxkXHvnFP+DwNmg94{AaHmP+|oeE@zE;a-~CkR>hy_lwV7fxm-pow<;zRh^}mlsY=j;oocwYQt|H}~0Y4tN_E@OD$pU+?ES7ed$vVNdwIfc%5-)t zVW@FSYl2DZwso~TaY*HXam6=~?WgLtEx2!yl&Ub{z$EqRGsVvCZY3BtmWf6e!*7m!_)tB$WqtZDKz^6HiBU@)OLo%w!}x zz4zWUl(}Olb3%1Ha&N!2&Ks`ocY)IXdVfbGeL}o#ebp>v*MB{G`)|+2Be&=#z);c) z(I(%8I`pKFRij5kEs`pbVb0Pa&e98oic^J(=6VJEf6maRw|wr5aYO$^_+76c4=r37 zqShUrygLs3@CkCM2yzLQfXRSYg%sjH+|Vk(ow`ID_^@HW3Pm9I6M#bjJMjQdVf22= zo!3k7{oytbDkerg^qu>|e(>SSfgzhr8z%i!U*6CwlMKY&PCKua)HyB{u$;Bn; z&?0mwNjA_l$PJm_1%;)qjP-gm;wM+c-#z){bFHYG^Po4hrGwv-wkkXUJl(aXf%`>o z6=w3)koy4Odw(pu%EPPw(6fFEj!me7Lm}qjiR6;{NX#HG$)$I+q(Y&;H`N0Kw zzM)&dZ$CDHbq>Ybgg1v2qQnD%7f~llgl`ez(fzaAwyQ&1xpj%*a*>Z8|G2Srccik# z*+VP4`pW zHU0x{HR(aWxlbhgM1G|P`hwge9#&=P0UJgwpkK(8XSeQ>n4@esBgDq4z{ti(^Cv5% z%sRAI6}m$HTtrWwQm=*DvsMIe$!I;#YLXgXHMP#EQj+ie@E9(9<#v=ie7O{1bdK_n z*l-Y-+tWWc+HjrWbE(N4U?#W+U;Wcc4^Aw9^dvHVYzx;j4l{BbKcc0Yg0Y1k-HS=2 zM+@PtSZG!@X}JpuB`)^WHrpSVJRk?%3pJZ=eYS=Nh}gLpA)^LQUGM1M!~n$wNsR|` zHihl@q_Km{)Fc8D`u8l#-_0rpZ4=&FgY84gWeIPM0^ZhN*fX+o4zX=K{i-nS9ddQA ze57K}9U|bF@K^WDowcY84qi$`QxLPiqpGN?zIYE-Y8A*wkk&CD#W=B9S0C^bPY;!c#BDIgc!QN^t1 zL>G)=_KFU34l+PV9`niK=+S}_L4SN!NjA2mYh=hW(iyf|=!yo(CK38i2|UBP+np^; zd*%WyOjSSHsD598Sw<4bt+tHHJs8#Fcv-Sw``p}ic+^>e{u4~QCEiF2f0S=@TkOi^ z9=B;Kg{>bi(0A3yy$$=s@s`0rpC*~n$-9SJ545d)pyCsS{?mbKRZXAkCxf%*#ADu# z-kgW@xt82`?B(XqaZKgXGUYZ=VN`5J^P~$ZDx(0YDFSKc$hV25+C*2f$bcVQ`)Z~_ zgxm3o?6%sgp`Q;|IOpyc9Sfwp47ZkqG&-`}Z=tf+>SglFl%dKDw`9WcFx*}Yq=k|@ z&2-|F=OB0U#7ZEsHVgZ*13S8`H^?R5`J(1Lhm_`8#PU#u-wTsx4%)TV85J-7Y$dv+A$FY*r9#D}!QzRf zZ9(ZW0qHV-4l4H^R6clrLxpN9cTyC8ZW=vxnS5*N*1U6w$8#lWm5rJN^!-`VP3Kyr zgLfG_?B}cQlcxS*J^N}YovzVpTo_-JkDl`2Dy4#|)^yXG70ZJq_02pY3?D0Xqo)q1 z>X|1upMq>Rfow171j|HR_0v@bs{J*KN0{hm{7^&cnma{FpyTQKbnhN$NbvTaC0+Bn zLFr&!ji%A{6o8T7OD<-GQPV8ApMgH@{<#&$}L`y+Jj)Ry}yo#4$86*V!kxb#tM7G{K8GGBIczHG{t>-iMZ{GKE$ z^r=yuLl@Z>@YrEg2n4=dhTvC2QQRQ_iYH5xNB(~kjA|EBft5-f->&+6 z=xj=^r(RU%QplbH(g*l%9mu(2&|cy5+9w%@BO{N}A}dFZ4tE_5``?IVsK^&FZhct_ z*=0(5A#8k3`-6+Dp?S2Q&Z+--yrQb@G#HuQN(e123;jL34c#bR&?sFxCf&B+BB?Jk zpo;+TvTA9~)L88FH&qNxiNOBBL|BfnZ^25ZU#Ik6<3d_$HxuP=f;9P?sf0ZQ6Z)+u zYvx_`L}nD=7cQfcrd`e484+-7(z6ZdgzRrg()ANdQ$dIL&Nor%QLo|& zFh7(Wi}Fch{&{M23*`~0xXH@Sr%;jL{DTSK$l^Yz?q7t%kzh$Z?DYAMH|IZ2B`%rB ze&X5>MA4^G9JH~lHL>=JMIx%yc8gGW7?oZ`u*miiu9^4iIf*1_|(#kMR&X?T& zjvw%LNI&k6SL6fqG5}c}*=vD1B6z6{^BCd+?8*t)75Z^<*?0HkI#;@z4zhHr#Bt+t zyHAj7QV=odGqt?EU+hOgjdC%(Q8Aqy#9*Dafg4QXj^yl~ez3La!CssKJga}=$o=4} z==<-$rh54Nu67kh&35EHe~jnRdN;~#z42gG&=@1SkwZ);G`0~8;bS_&i3OS@^XD8j z_6tpeHK8j+EYPyhh|#+*Fqb&Q!>HGEO59p_oQK>;`GcAzQvPC1mVCG9EERAS4VeCW zZd$y@GRdEEB0_F#d>?#YaK@6A#+;SLa0AdWT_OaUP__m2O9%8z+f+0ir2L&(((ND% zA{pY?{QEE{oi=Kv11zb8IU);N2t(Dd{lJoJ(oo1+?h<#`!NM!e=tHXFf5d=wv4Xt# zW{oTN-m^&WvmaCU$J`i#L&c7>hAw&^sLRv?0)F2G4o?ityNJ&PU9}? z#`Dp%FW(;8#i+Y~VNg>l0vtd)gyxO-#_3VL{wP>`t$D?^Mcp?TO^G9F1vs3pCvD*= z(yeh%Vaz)+YV?gNUK)2~A3_-qbX5wz89zPg5>Z{5n@n2*($q$IhBbZ_;iRq@kHPcQX>4Cev4 z^8i(5Mp?~pav4m)i60R_a+)O+d&hpFhMiqKKKZT1%biP7&d-$;m#mC#5HuYGVZYeS zd{eBb*ek&`8SbVHQ^RYi-p|m%Esc*NYrZ`Uk1vCB^D;2pH4^|@WBRR>)%qTJ>#4KM zj8tyNu#*UqAvPOrfK9~p?{0~WXJ-p>qclA}qKf3)w9#6J9HeE4HnpFQtKZ>)3fUc( zrNxNQv#jeDdofUzOQ;jICp{Q)Kj$wK0e_F^8J#1C)NkAx38~+2C?qeWWn#4Hu!N<1 z+iF9TroYA4ukIm4hOFFK0lr4q_w?VPju*osRVk~6!^|6P4tC_tXNa>l;5++@?+%X* zh1fu>dXtj4EtGhpOwpEg)t!({xXT<{dSZ*}VjCKN!aq(3}q-+)sQ?dH^#mO($2LH)&EROn?i^gHF*bfES~umZ?yDlnBp z+ybgiDa)z9rwlb12_C|Y)koyhA54*YL=xDCHIa2R>9eRZ|25G7ZWe{+ly^{K$Qx6! z$~2$p2|W~Rnqb3dkhft=lcXl!#{_Bp3}_!tgYv^s#EgC<0~Xhe+zSG=5HkL)?oHJ zE!SIj3i2-<0O{~cD#c0Dysg|X9E;tck~zX%frXv~&eD@;k%~qs)9`J4EUy>u5B}#p zLq*ZEzZ$n+(UY9emXA5aSZK>fXL3|@4|j3o9lCwhFo(L%f}h$L$vPanO%&=SObW(hgs?-uUic1LSw?9^`h;=?I8i!;av_E==&kDEk>YbG2>oMpR@7!cgUETsfiL zw!#hvwu0EFjdY2^M~$v|C$_oX2|sXkr*88s%1A)dLB@ox?5>8L%P)sdoWb#S(zZ@^ zEFFF?Z}II43)+UWv6o#;BA6vp@~7xW$Y$}9>?f6nvZm1IXs=3>%T~J*lC;`g&wJO& z;FaN-^s`g(E8YnwmA)(MK>+DC1JYYN^BI$r){(^c zqkHbBJMfSVk^OeYMFTO*@F50%mCm~@JnSdaz?5ajFEeZRfOtB8+|N1wteg#$M((%< z+6?2$hDj+V@FOPhWk=vtrMK{Hf#|ZKxQ8LO zSOg`BU@2@1xX;l-)fT4hFv!HYQ+7?fT>vS!GQ5Cv;2FIYzhEJf5gR^7XaAKi7&zM| z3DZ{;cxs_?rU+Mwkd(gS?wPB%%P*_rs`}IBU2-sii=v`ho!aNPLgsvKus94S6QSz85R=Ad5}#L?~&Y33YBa zTpLKb8Hg5mCV`fzNY(1}>wiBs-9Kz}ARIvK^dWVLB1gqw2GYK1EDS0%l ztyy^YiPgjQ;nNLrm}S2bIbdup&4)Fir@?AzwHYScJgjpL$H}9QtcdZ

q|)SAP)7GnY%Q*_ZSw+cVddha`I{#H8YgCIn-XGvF|PaAHgl$SMt)Z(%W<~n zkS+)056DXXRy8fu*67rvtx>P98uYE|bgSLZa|?D}o;kS#sjtzO5d__J#p!QtYl<<_ zBN5M$s_Ts&KDLct%-`k`tpG8er+awL3;qkKv^^Rjv04ocYch#(%;?v zOl5bQ&^f&d`1H3w{Z|%h{UyO&13|=POD=IMDE1CXgX(p(NjJ)wOH=~I_8_5Dc8+jz zlok}O_*b=`?}#_z314E7A;ZqmRC|3hS&0)}Wo}ueLj5C8?H_%+l)9%;Qqq8JHl6); z3!1mpv}}^5n0pwYZK9;V4LjAlYh$2FmU~gbBe=R6+D;fu~Ll5w=o)tdsk#K?x&&T0PEfGD&){vZ!Q0~LhP{QS>k@YS z^_#Qalr*F~5(a-|SXk1^6i$ng96W?Y>kyqQZB3$+51~_&p3W(7xjT_IS^@>SaU(4u zN5LsCN>BS|$E?_wBYqWCxSJq(;qqX%fRSj_!Qc%G_l1M>hLj+~s$L~AbKqBjQg?w8 z4=~3*cHgEr3Zpd{*iNXSGt23LKYEJsn}plfV4IPKSG`l820iCM&QpzKPznM&E?3K@ zsT{^OK8P!?_xUle$oQHNl-o(r;d~-A*y=qkwiR8QBIHktFL6*V(a}ozk|F)JOXy!M zHf521HAE!^k)8`9EAh5XpX2J3m!Nu2gRF6%uaXo{u5xYj_@7?FDytMHMsc>Fjb7#& zb@t>AiWP-M!zA2${O4iZFtx1V=*xzq>w0rSz1spuJ~FWn+D0(ru%1P6cBuE+z3sJo zyZnV_$(qnanTD+FnDgIS1yzvu`s+8`sg2Q5JRJY28_*=~Q4A@1oK{(=M=5#Oq@5Rvzdm1eA&0 zIxVS4pmF(z@M-$wSb}JqJm?cjlpqgU9v5Cr1Eo?h4DM5b)#H8zE^HeLd8G-zhi3Gb zt;%}vT&O}_jy?OKZkZe&oN(!8;_)!Qd$F{$BtLFMJLtjYncoM8u#g?+lc4@5}~GoC+T zuNnuXW$XB{9#N-z`oldqZo2y2Yl777 z6D6A(6w#ts4sKCAUQl^H)l6RjK&_*IJ&a8^qCGu~qe=xAA7mM1-1^k^%22p#-Go~3 z#D9-(&U(!N;RS}c5S1AF<1{4kBqY&dx`TY(UV^DOG`Xhn2X{$DeuezDXrrt${XzBg z(m&p4WoY2^F#BVxWoxTWcaIJSo-AnCi~4qlWJn#e<44@W_OucFIT3kl57owfDx$Dc zfA!v@w)5P3Fl7vT3@Y))Gtk7#j$qEfB~j$Lk~7izni<=t-^Mk^bjq2yddL$OAF21b z-|BV0W&IhHuyOe3@|<{sgKA#K+C!MG`dW0Ll3QF1u*kW^@VH}jW+tugEbPY~*uj$JusQbiZ zdf!+!c8q-Q{YGo$^MX&$Qz8$Kq+ivrCyyQFf@H)Uo#K<66Bk$=H^spWxS3^SkGPQ- zRL;?VLb$!CS_C>Px_Bn=u^=xF6l1h^zBS!Bd^MgKJ4b2eL}Qok$(RaTgj27vEw8XG zj(#QEfd5z(4Q`Tm6rWuOTmwaCBG;Y@P%oP`vc(zGsJu1T3%Kq!XSI=j z6`KR_uaeOxQa2Lly5BLEafO-?n5!68W#P{8ri(|dR9Jv}RL~j)#9_V^MDIrxs)$Z; z;N-cfxwVpmsKT1)(^QMFLM14nsOIuUO(xItC`fgha+_PT52ezBY3DFstV3+YIxBod zQ;4f|lT01$*3eCM;0O{s+dNok|u|7v??0Eg(QW7aHOVQ7qz@9YB{d#u44)4!DKKf zzQe;EzlU|##7YA3c|NiQ7X#VLQsezcP0MBjm62`^cp0J5Z)aRwnbBUFY8$_JtzL!n zr!;uvHZzFG-4Emy=ur=Z;hu}?I!WE4x>3>_%fNZ*A&U2{164Iwc=-b)eYgong7 z_4Q+a-JTgYve%EgZo+3y!?}&7_?XE<$cXO*@JeGAB6117G7Dc(5jT<}>IB%S87ttqLVN2&Jh8``15!+g+NW)_Dljg)f` z2d<;s)I}H7B|OR3PzI=lN}nQ}BzJtzATsSnPu>O@3M6ngX1pPOmD48}gBTWi^OFv1CN3pJY`wv`lOz#dzFkhz)t*JXfY$#r}=6CbDC=(OZ#| znn1IgB^gxq4@jZQDLWb+~{fhhPpKd|weF4?P~4EN+~l8xk92fxiAIeO5;brmF3u zWn>8%qZm#27S6Us=Q9uzHiG|sLwK)F-W&EZ-=Z6VrN{o*;GeDokOb3tdEM5RLN94o z++Bn1m&`X=d?cp{!u^JUTfb=nJ%!456Ou9kIl`nWab^Ev>+E%Ac0RXT_>l@q5$3h@ zeBZF?zVVX?zZi|$g^{dVA5a%o^a;(mF}7BqA3nSr`Fw{E$v4(g-lWC|LQqyXlJb_B z)^}qy(AzFENj?OHwwy(!%M<7<`1O7b3YYMj0Rl~rL@AIkM{M1>Y zT{~ZkfqNGP(aCZ57rRo86h!+uLDkIt5$o1kk=xgnr^&m+CSPKp)0F%c(iW6cM9v{2 z7hDcG9~ZgeBZu?miR~oV?Ru3pw)~2lSoTXcyOSTgw3ViiinE^;?Xdyv#Q+|zbfmC- z!%qEogY;@?y3~#2wKeGxWJSGAAePWhq0k$yv)qenB*a%NJKU=JyH$0KBFnm72CK_~ z)wv;{1_(FvCZvlO#{<7|~V zgsj9EB2tg~9QCoi?m7``7nskQ_=)48U&kI8M;ZZ1Ma*W7SOXlfELi=SG+~KvOh#Z= zM`9Om#16ArihLW!_*403mXXg28jp}Ar2wWI)C$=>HYVAz__bOLT>UqKbu(WdC{+dX zKx+IXw5~BvApccw7?h9HgL8i&{uKAwnQnfl`TZ+5YWKvZMg{*!BF$2y1y+ZIN(*8` z!C{WWO6&`S__9#&>xf256mR$HIJ-C{R(Z%-wI8i4u8tt zLRO7~yg`iBU~SCSyH7`s+)N?0Ohxz9%#4&idEX#Oc|oyqfEGacHT3zC8#+vz z1?PHx_u(O5QmzXY-$upm!A=H6$9zBM%pFof#au_x*AJ^U`%z-3cfiaOCDAdm5<821 z6o8JbCdu=KZ72{2@3|3TQZ-&~*^p|fnqpJzR`xvolv!kyuxI6 z_FFHEYXjLg?MXpvduwuWBeTbTIwNcr)H1Bj3NFS0FiUMCN6Ivg{2==culPMQ^K82G zr0$btqzmI#X;i)pbjUAof5Zn*$l671mfG~K3;E?%{hB#aVd)xEX;yE(#l(4A9oEoz zoRoA8Bu{QFvV>$zw-!xPuG}8^@8-TdR$&Z}y2!A((3EkP)G^AIZr|8uiW#s#Yyr$C z*G1D!ojFz^&Gz(k5S%6Zo8NH0-*mI($ zA3i;^Vq*d12r}mf0a#iVNhhllqosg)vtk+6^+QOv?-@2UCR~CqxVEv`2L2w7IFDNw z>JaP~u-BUO7`KY45|e95X_hm2)}(zy&2&Su?>OA6m!w5o87{0K~1QIOo2fxG| zV8Dt5F2{{~H)#bqxT>Zzmu*7Dq+$E#k8b zRAvy$&03HK1?ka1H6sdK)Hd-37fsnII+z9O7_c~kOjmG{ICUSjlJ?S|qgIE2x|J~7 zXaU-LfgN1vLXUQY7d|F{USfw93UV+d45krRtSS=g2#n~cmsr$OA%M#yxanH;F6mm8 zC;IcBG{zUuy_qIfk-K`94qJ`T5+YC8v;ya=%H@+_5V;Z3ur%$@k+B9@n%iu`a%>YB z@z<{mL$?`i>f=b`Kfmygme9Y_b@*ah0w`HN2E2=6anc))*$sJ$k)5Mxg{>DT_QM?O z3td{G!P400;?q=DZE+A??8W68AS<$j;iKYyj&z8$ z_Y)Ly=PeX&^b(#LGQj7bPuOdvbbGkfDcH?{+m6oYK8_7en2bF?t~PsqJkaX=xY-kb z38h486=tIYtC;0ft5h_lSZu{3$f7j737-|L>MktMD$eV-VlrxJ9aMf5>qc__4laJP z*vtcc{{GQ0EmKcW#%My{rJsRqA7pfGQEctox~3bEAgzcP^i$uKj7I<^zUX8zUMOlA2>B^OC@U_z6=xa-E zIdeM4Yl+F-Cp6v}|MiKlrzD3w9IUmZLny5*INf2Gb>j zQdFkWX;0CK9=l69pe#mU>2TohYpg+%&eP*(QBSBRYV7(>h>8NzLf@T=v^yDT*H;}? z6reyGS`*(Dj8G6)oPA+$haG;~N^J2Dez#cZE^S>z#fhW_#hZj1KT*GV4|5oRS`Eww z;?+k3iA2|W{=wP6I?niROk+DG_`b#-kkk|X0;kchZkE-(no`LjW`u6HI4S){-dAzWV?OYr?OUZGVpQrP z)n5&I68)>IPNb3rdg6}&9wE`%MoF<@w?A@UiM~QFqFCy|$e+86eDg3TTYJ#^@RH{o zOPKQ&WP^M4xhAR20bLkRj!Upm_e0aAuOcNEpV>D3ua?Q4<44A#lReX*OQ4hMn0*_V zeLUwh8+IBo4s>9autV_4)w|Z)tE~Q&vhR{VUW30;4arEKjBlrQq|blZH~;08wj1W8 zeLd^xaA2=OnCOKNU(YfkihF2nNB$x#Osih_GcVk~U8|Ju%d4{R_4okDk4F}w8%LWy z>jNXJqWi%2p)&?wBQ<)KPJE3_RRWGLors9C>fxlR`z*A9tC$+V;sSrlsR+kJCEz7K z*q3zoZ{&WysAEl;4>0OkI>Z7|H&WIiXT{2k_{TUQYBQMnLR0eaG;RY-Dv4}3{6Q2z zn7szmvD9mCb&MLIo$5m#?urw>#O^{QvRVW>s!!N~8&gn~j>4iP~K{fByD#}DC^B0X3c zZ(!$H88^icqF9wL?iS&F3pm`ITn=|mzsE@+kkOqKK@RDPxSBb{WR%ThGU`XayFfNu zzpRX-T8ie3q=`8r-5x(-f*=EM6E61vVV4?~?cjROJGW?t{d7XXC7xG?bG{C)u;M)mA z=d?~=Pmn{}(T9pN`W0>FVbkSc#hFrc8!HFf#_H4Walg%1(XA?42fia+;i>0&#v(I@NN9UUvc)>EVB{Gva+5jk%t(DHL%z9X&&oBW?P*^I(2arq#-~xO}fah z!w%!eCL>zLz`%@T$qbSl1I-*AJmNK})`xVVuS>4q z@1ABuDmQD~e^-ydVRbt4MQon9tNCknuXxs{54`rkEvc(cxvHF|LvouxyiCI!&b?Ms z-k;@E&q8vUn_{gsQ5xSd#A=B?^)KN&6QdoFGUyU&!4c40_zTEaWWK-{*IbT(1dtrL zkYsW88eS1S>_+G+Ylx^FhOI4G>3WiioF;!AIY8(F%AjXemO)(x+4}#|VQ@+hwWR)M zWiK+NhxY#bb@co5rZwf@t6E+KFZV5Wya8wn_pNV47F<=V%)80>a5&_%P^=Di4Bpej zap-y$dDXBw#;M`sV;#QgEqochVv5(8e(Z)Gdan>?GxtO*XCvw50s5^s?fJ$hGW;1I zcIk&*g%7gd(z0;!2w^ksrJ7`p9mzE=>UGHT6}<1gg|+zU+e@?Rn@a9)SRNwIO%_8Ve6Aw3f0D{UC4wj5GP)bxjr`dTd@qfQ+3(V4EOznzYWax=T>0dH%wc4{ zzBd1U3D)~tmg(^`a49hne6O%Q|FwI6b(9P9c)>M3p9NkDKdVoa#Can8@kT6uHxfdX zKLv8>y0UbJX%eo9EJb}71i3)XCa*#>BCpb_VJ~A;O=;EN9GlCC4(QuW#o$kVYS2$E zPeUsNc}XBSWw}{oCG@2AOe?- zhE^5fYjVG-i#8%zSL<5E8tt`G81~T$>(SqWf^I=UDc2&KYq9Z?Dt?667`w)MaJ`=B zENc{)C;UQ}(Y=Hsm>L*o_zT|KsaW3SO*me^sMEu7F8Vn*XpnJt(O#!1KnK_fUnz=)qenAi|?wZ7JTV%0metFOsWZFmSgX_M|u8X4_17y3!=h{Z=BN~ z8Ra@Q?m!34iE9_U^~Bir`G0z#e>+uj=FC>oH615aq@P8 zT>MeTStZ?~YgEElQQifDbN++ySEl*R^C_4Hy2;3r#REgj{|sPkwH5v@ektMoufW0I zfrASscX{X=e*-z?gqgutKL&A?qCD1iONfW~BLDG0*Hpqicv%i;m{UafHHZsk??m?`LgbJQ z>qhnv%*cC^TUYhBOZeUBSpAGe_H5O^bg$(ikAHVDi+=0Huq*E{HcOPrkOVSpcjDW$ z;ry#1PlU!qqgGLg3Y1sk>(K(*4k?cM7uBr2@pbbbX^1?|hZ94m`BP%4a47r(3Nrs5 zkR`${EH|I$F*J3xe+qh^e!A&t?H3YYvL0KN<`?#2r6AyNE>JBm0Hh7u<;2Tdz~~~R z5FLW9kZJTTA)1mVH^rNDx*$dGDW5bp)bk^9`|8U(yXvosypuuh-JbD?V-ffaM7H z&wlE`7Bml;1MyTgmHP$$LF!k~e0u!DgCxefQGG=NWL|ZdL{U z*qUiFMpM@bg+1M4^29&7ca4KCKirt%r;{zw*UI022D{nM97>H1{zL;86(a-y+^$n)hVeORlROw5oFE@A-DeM$QOIgczINt zYzDfd5z3EAR3MWe8OzOOS>2Bf$!I-)iX(M_IY%v&Oe2fQ=pSpSkbHfy z)C{U>7#4Bzq>7hypei4IzZuk3=;$4TdSRViuc0hDT91U}36IwE;HC(h*g_V%!-pq^ zR7(u_vVXAEkfX3_y%j-#`@;vtb9#+0{*S5ej%%WM;+!l2v6Mpo&%_E4yr>3^HGkQ8{7gdUrlA_S2 zv6u|g4x46keD*;zGqq`j9IJh%>p>4tc}>ac106+-M0Ii5>(00Xn;ZjoGsSgEDrO@K zj_bF;^TN&WQn{E69hPPbJ_v7L5PX#n2?Ge$=o$Uu{nD($2ZCf`OLA| z`Jhdm+-@5+9`k9@+F%y$CQFn0$CE<#93L){To?mn7(Jus_8Z}`$do^HKI08qeMl#( z9DhK!;$pL%$E|%Gt6>!vlg&I{GIPgXX%2HNRCU^G>R4?xa`7(uGo_*r4`V7MjzS+J z<{S@EW_&@zbTq0)*9O(G(&)&GjU408uayOMtPq!HMARYh$N(F0&($;QlAusXTi}bT z$)Hd?S7-;KhB6)p5YQ|Tsx!#{UVlHZJ=FiAu#)4GbHm5e>`$hp*(<209Y6K8wdw1w zqt+2=A?nwRKTX=@@7h-~V*B*g?Lwu(>vs2!XFqNVj5>u~AqefGTp4-1V?}7-e)Miz z`ew}1W=miuGY^I?!7UYSjKJnHg7+8Pe>0nXf8RTaHvZA&rHqNt*~vbgnjIa#sBktD z-pr|J%9$kJAJ~Z4oe63Qt$WnVk;+4ly;O(ZO}n6utz-Jj3FlUeL97kJdPOKu;`3z^ z)!nVHbYJG+d_Yd9Ru{^M{aFY=e6bi$!Zg#HV*8mp$w0JwVR${D)F@o zEBK9Lv75)dk)OSaV}dGXmMsvernS4+%u@blfdGS94>#~%EeRl3Nu+aX-%%!BG8TA# zMBXHhxH#a4YGtnlpC!I`Y^6`x^^y^s%y3G#Nb3|O=zuIVB_k++*pY~fu_y1}bZmj5 zO_zhDf9oA5hS-z0Z~Dps_qzP&x6>Eryo zzLod)*~0lg)z-!8`97r8Jy+zx(v|^ z-}i-C8%Lw(ej14rKIsTrecsp`t^1?*fsb_`34TRu7eRQk;^Mkz9X~L);Sz*D z=Z*Gg-|4K(^wT56tu`{z>wc9-SAggtK;j7iZR8VU3j^U!mGZe-nyUB(!*MUnsyAk} z+}tle#cyy#)MmnA=>?pF>9|P=RWbC?)l8a8H9aY3hq5nfsQ9`3xiCpn-$TY}fp;r) z<)yPiG}=xjel^9gb!ys!G@?;I+*vYSKP-%ACPG5Ef^C=!wQclSO;XlsvDAi5fz|Z- zIS*{7-(a+wry$ubhMB?*7D8>9VumVti4@sqPR4e%&2b)KDo`imvZ}&;ZO2-VB^oCv zsCYPuIV7<4G`m-t15;WG9R-{Nq?UXt3w2Z7msbQ^r*zhRy;qA_F*R7xqCb=v+aL7a zsR~|Ak{T7p-%RwpRBJ-N+3KU(I0XCk1uoxg*kNs_u{t1y^(s5J>cK8Kg7fXbj@#!l zgqx8m0&Q3Vb?F0Fx3xrIcJP;(RUR=ZI(|O%29EX0!wT_sSn<)#Q-&jSYlL^L@&Kiw zDg0?dzj>i3`c8+Z*Ar1^_UT9Yrv^4~uN&lBxk@4m_J#C2HymFlr#__L$=i7M+AcUD zKes90J{KMzof8&N*>7@I1FApBRmvRQng(rxciYJ63)K~0@E3nUZlN!^o`Igm6*OaA zG|i(^g)h*fYwpqvicq5KlsCMfAAnvPD$<_Ne*h3+!|5A3XCSc6+$l2kHbLW{XTz6F zH>HW@^1unK{|h%}HI#NCRk^L0`Te+>Y*D3B+mhdjz=D#QJ}FOa({jI4iX|LH#ix-f z_!HTJR-cF@(?vu=Q}Jijnd_2y9;T8Uxna+`N5%P`Cpv2qK$=H7G5s5x=w+X~!82|4 zDNhv2M#*y|t^=3W$U*>uN+@HNIvXBJu{KCm**dy^*d`QxM1_AsYtIGx(p7GyDaY?4 zDiy@W1hh(#DcmndikQVSS_TC(x7o~7ht~Md+p<_p<7iY{?+{{S3Q9jeK{%V)I9cAsHi0*y*A0i3xDB0g09C(rnI%f_<0o~h0d0b< zTsmfq#O=3K;4k{NE;d4A&H5I*WLF~cM0njYB%?m}vY8J10q}E~lE^|u zQ;s|}OGqd?T0lChI@iB8y3;QkQ02(ljdLJ) znq?V3p5_(5Oljgfl7>4jm5q zf2;pW|5U)Pidr?Bfw{0f<~DY%$(=tqis{`VHoUi;*UF1TIy`NRCBPZFH1F#&vXN3q zIo(@Z78C3_td?)sfov;rn6t96s#OlE<6Ilwj!s~{DH166&0<@W?%Sg)@zebnvgSB1 zwF~vTaoY`sisxmr>emFq?^tONCNEXf|Qo0hCt| zgS7gBw7QB@?uB1=A?`IYFuu2bvsPL55%aELo@fzA5d;@*XI6W#zj|Dw-)=Q8WIH0S zi#jhkvlZ<(w@0Jcq9gKu=>CH0c515CS<7U$o#QNgHc+&Zo2TEph~uib^Ka30TFHm- zbRGMux~aRhFWe-o5$zH$?JF{km2gE8`!kh)!AtrB*!`f&0_pu;istOHK|8bRCj0sF zlEDDIe|ti|9XohFFB#|dt8`$_lWp7Fv-x>;xu%0@_=GLyP{2Ld#5j1S`crw$r7_3e za;y`>Cw*`h>sR@Fwk(62Lb-?Voyx*DDFON|9Ylgr!NYg`u%;jXIWK`!#L6pU!Ago8 zb^|x1y~gB~zZRp*G0LW1BCNcM`c0bJ&VEx@k^8A! z^c+s<^`^s>lBWDmfm@2oE&e;4J23^lO(Wc^ycVmV6+i<+Jtemr-|lbUZd77 zSV9g0_f^o-w+jW*gAQN}8jUyh9UL>hH*feUbn{hvLnpDl0bb3v3-C|P1(D3ZOQi{< zL6eU$9I`XDa#b!AkUN!x5(G}bPUr72k-20zJ{NSN2K&6Sv!#8(px}92Q_gcUHD}tl zj9#)5*(O7o?6snwJK7##XjO5+SNuLKWcgYAEw)oMY&PB~VYZOoB3k z6Db#Jjp)*?fX9;cEOAucu0;um>#RvhZLb*`a|`%3W~y3y3sJkJLE<$*q7in1wGjgP zR{s$Ftt*jDm#dv0t7s47sh%053PdQ#HOL;CAZ~FWRhIqafpou+yF2Cn zP==}*t>u4U?8I5FM^Wlz{`DP>keJApYKt7blU_JkU2euVKT-(lf;8{*XI!?|pNbKbN83)^;v`g4wha z^I4mfbe68BkBIZ654UH-al78A9Em81L?1gaFAzTg6+$$YK->ALL%^MN+@6Z>4er4O zx}XxM{H~ivw2*ev&W&4mu?N8{pO3f^hvqZ0if!T-WGu)6CHy`GiB${6`>{usT6xZo@ z(C=snxij)aa_4-EB>iNjRo@^4=_eA^E*5}aV7l;Xs$VGZh*X_c=uyh~R+(n~P3HU8 z$nSc2{M=PJ%lLMD)=;rR?C!ck}a`{R*WQAK^HSzE;8Chp~nS zrFn4=RtLP1*Q zFzlI#X!8;Qij97*K|$xW+AS3vGmYRJj*=ZA7rTvNQJQH5O@7wTi8ErB-0$*}`i^aC zITB93>OS$9kEl+ZAQNM6;qiZnWVL#;~cH`Z5 zoSbD~{5MYYR*62i&@Xv*0%?zkN%`cnX!tXKEoYx2QWNA*6dlv@Nx9}Vep?Iz>Y~4 z$Dbek60Rm6G68Sw+qP}Fkx0WxGi z46U~h@utvw^)eXsqxzD|HONx_03&t?atiAf|g#w5a-J z9IYaOK#fG$FR63oq4nWhO>-lp_uGxV0ixk9kQm;N<;X(WLbl9n?~9s5qcQOMF@2F0^c@du9Z_#SaZT_&x*? zu}rAryGU-FYp%IL??`~A?__U0B6>OkzI8fGI*Ggf{5V_!2-PJO`^p{eK10+XMr!7P`>(LsnJKhi85 zkB|HekqkydB@Bi2a%`mPb9^d()aLB+*=*PN|t@RtC^slkRCO3`~ zdRQLjvgk0Fj zBC2tDlf)DHRdvOt{=Olw__d7>IOFw-GGW;wT~XOfhrIdt_(VUT2Pm(Wrea z-ZW3gaO+|Idoj9w=i?5i&Uu;E0nGdEnu4o1wf=jvMwSE(3qz}{;A_I036d*Du0xT1 zF-d&wwH6bU6i4hdMFWJ5dCVWU;hd*v325Bq$mas@6}J~$B}RQs8`x?i<@&{^^8L?z zQH>|wYk+5`K2@!>x=-a%UX!Mpt2jI#Uz}f2C0e9EFxF|!;ot6Tn4jM?)(~|<NF4eZzIHxg#v$_o7YQO0#G<7sDf<8{LDK=ms#%<{$qoH=dTCPLVrT#n=#ImFG+*6MeK-0eVqSwC>3Z2hfBEBCuW zc5lD94bm+-P_E&wUEh)`Q^x*j`H`aPzMe2wrsK1x8E$`Qbw|HhiFTjaN|=gB$=ywd zl@sD+Bc_)Un)25ZHLY@iZdWqds9s$*U8oZ~5;d=ThZ#m0bFuPm5obF51twC9~9wj2?(x@bNh@=jmV~ z;Ouk9s=g#SrKR$^x6*6ypNch!kDyCWbQf-T@$>2&5?sAoo!e@a z!}zo$BS4r23u@7G7>DM|Eb@0p;A{>0c**bPt3-Wx^Bbl(TyOu9R53?B7&Q4ZgBm!u z6XP!x5P>CQc}Vx-cYfp6)~Q<%T|&RaHPG2^+k(Ugs5`Ph^+Ogpd&!jU5FF07fQH1? zraC}FI$zCZ8}JF^Fx2Jk1Va)#vCtb2=bo^iMY8!_HAx^Kq3sCrMRohs z*sbIjdr(FeIc{BkdnF}D8&cg}3r zcLzfEz#5#-%uDej_6#n9^hPR}{ooPZP5I%4M!a+pT)=nrN43^i_nhQvA~g5Mw+%T- zOHgD_pboJc=o=5tU{le|AsejMpn5^3n(I(wNnq{Q2V&Fwwt?6P$k_pm`}kv)*xByN zk-Ex}A6Jky|6v(#CHbLHRH3dr%M|0*1+NzNT)UKr3*kzGHJ;eopl9hR+;^ctB;8L~ zudAEkBdk}q{;_$y&024E(2OhjgPHT7PC$@g2m*%V<(H)r(MG(2+l03BbF(1++7Sk# zfOf5c=86;>HXd*)-p#@e^xcS^gtu{=N8nApg8sO1iEVuL>0N*S^kL{z;3ZH@hI2;+5X|Z|Fds3SFBV%7TT%Dr6&xgcfeJ*I?B%wxR zgC>%}6g6{-D&xhv>cxuCMr3ItdgqQt+8G#&P$Kg(k41`>zv8&RG(2(}6Wawl#=(1j zRuU~jTp0>7UNazGyQ$`kyyD8ScMc^*{c&#tDYc^YUNqcU>Cl?No7O&G2_5LVS{;8! z5o+t;qtlc(Dno1NqSo1Yl_J(_M9i$VQ6netr@TsrHBJIhhmsgDn zD9%^jZN7;NXFPcJop5!&cpr0kSFmQ$ZJNBqo7mTct5aF<;A460H{_Rqj=M)P&W`4n z%N>7>lO00DAnL4ThpJy8E~u_wua#gsE>NxjA3C#IFFwo#;*Sb!I`r;p7(V}LdlBor z^c(W~xDu|WbTqy&h4{ruz`oby5pLnQtn+5Vm!wMtPhy%Xp6t3inGTo``o&JhokdiuY&^RO0VY(*sgJ-LaLQjX22PeA&rn`*~FWv6&T)X`+mvQzJXk)_< zWF6@mcIO?fJiI48AD@-}>&F$o$1mdFP^q3a6Iq`7a?4aG-DT9^$Qiu^N&-UQInP6E zHq&4Pw1)0axbRN2*I3^p@4xIvt{QqHjyY7L_hn=5p|ME$P*e(bC`z!Eeo(Klp~*}W z<)i>#X`Az0cE&{a4_8O`GcRdU9{L2U`ligl9{PJf|Q0*EBLGDK9}94*9BI877ay7p*H4WUF$aWg$B8cyNi*pQkkc9FVRwn+ z9!N>|(V0O_?#M}8DQVDH9GHuz^1w~5v(u}k+FBHlDZaBRsvi^+hRnnA7J5&$0CWxE z&XD6TvWMn=IZ8m9xUrb2u-`n@JVEMQaLK*p1$4@&hO(r-fi-OwefoSGiL*Sj$@_FffLeq3CahyJO2j zlb3;?1a5ytW>qva3K5=9pdGw#{a^`>xRM%8boGiRzQ*T^m$C9=NRl!P>x4n zP8nkEGsKzzG4Ho6+5s`j@m};p0DjJtiwj7g0%gRK3}<>u5(6BY(|NI{uV{Lh-riN@ zW%qi--ZU)V>9p`T_(67B*r4FVqX73Pp9_z0CnACkFumvGx7v)C-nc-17^|1$bLsKY=~kZvVK(njZZIs=|xz#<;QUz-5VaiG28| z!_xj?XejSQ4>Xi-t|F2Txk$E+hA)+{3z&h?sHNBX*XRdZnL)^<@%sZ5cD|p}UBZ(x zkIMz*pLSYDfyOzXB?T5gii)VW-VBF9bOS|meIWiK*1@GR_w%+}V)6y3E?v~0v$GYY z^}jw!WC~Nlj13n;A9zU7z2H%R4%LJ;Guh=OHhGsCb`r834FX3T=IgW6yPiZsWRW8= z4_3FagtFCz`9}knDpnfCuB;6#BoZzdPVZfOqM_kR$vIlZLTuYHGcChVF0PUVdc# z83CkOZvSY8rayW+B(iYsMpi9A`W}jJ z)E@)J@OkIPS(BK{$k2Yfsh9sbv#)2IncSaagA~gtxtNHFK*aPvco-vkE<iBS zPtPU0`gmUXtie7)qzWZUd$1k*AM(V3q>4$5-s1q1dWFc5kwmGHt;6q=q(-I_153~7 z9F;wn-nP#$RlmpmWc<`fR$gh6@y9Gr)#JwNmo&AKj&0gM|2dQOCSDVosNj{4zkXfU zAD#Txd#Jk#Xq(#W42Rf^%_Zt?KW&pT{Z#dM$B08wd!Sd5>y|{GtNXxi$cD5D`e}0B zieKAK(vvObVb3&Q6b}!4byly{8kJ0TziLdpf3wv0Vv%|0anIrs)?;2pl!kJEp z5~|-d>Lxfl9#0DsgX{kOHB<2G;@7Ox06$Q>*Kgt=RXA-jP5Wt0GT+8y#A&2M1OZP4}&=9I!&VF(A!v-7Jd|b zY2I&iCg(MYSNbKpeNtH<(kyeQ>1&q>aOT7ax+H*;h{?Ax~S$1gr>1GIl}skz~`ztznA)SSs7?! zl59hZ)LaWGjdB}h@j}LV~Yr)vIr)wGP8pb22|`KCgxB0E}7o1(*op z9?X%Y!z^%zMPigpg8sDMKrWMh~F4kq9ufEvi?%XtlPGh4*`p|0^$g!f4tdm60MBp7^r?(@1LKTqcyO8F1v{e94_38SIl zbK&nJxqlwv|D`)m^Pdc4tUV}2T@wwH4WZ2E#J_<2THpU^O5-Z_#u0E~lNfBxmF z>#{lH{av~!Gu@0?@e_%=N$8*rDEBfr4z`4w+3MhCULcfnj+Mt;^VXCt+HCPI?Z}oe z!IYe;8RFQ!2QQ5rD~=K?_c+YqI@D?7xu6IGPfjLJPW9lZG44%w$ zgXqL_@kd;PT_+w;v+@Kw^Ikg`n~~K1J~brJ)Eo-!%jV0-8DnXp{4kVLTZZ* zYHi+c;&F78R;5@`O}19$Xh06o1%{z&>)tTH>lu)$FOmMkSvm9YPHN=X5*hMsjAIm2 z8+)L3EHJ}rE0+Ayz_mwcRHivM1Y2ehV;me9TN+9GYL0CSOauR%U2>6OE|l1+F}|8m zZscmk8_uI)L7J3m)oagPd)&%wnfORt9VgCDo_nQKVNG>0JWr-NnvnrwV2)V%IeG7hU z>QP=xd2Z~OI0)LCp#hME7ca>Q_q!-*6Lcvx)He&tPCJGHC(AD@pFMGtsx@r8!aKl! zWCs{nk7YkX`f6@f6!3iOJh&wfKB`#u1*8T zK(1vI;5|{MruE-@lze0VwObU?zeyXPnY-d;7J1$Oo*)Mkk5zY04y(v6x01qo4JVLtvDn0Cvu>y5>$`m2Obj*1JdbC zKNe0IIws-I8)&JCpM>0rn;)ELY2UYjpHPi8#jX1)8)NEG-=(^%Y6x$$Q1!X-L2F(V z;BA%xHR$cJz{)Z!9gY+qzBDbv8{bT&(|2$s+J$N+j@)uw|3$g$IKMfO+TMX90r}NG z1gLxvNGXztt^OfPt+jL<67?sZ;tNcQp5iYHSBJd@%BVyo{<2s#<-jOV4_KXjK$sMs z8|F%XZr*uQp@D%2TZfy0N`s`Cxv7f}l=Pt?~*UM{5OUQRhJA)YFct$XF?z#m<+>l1pM?(;2q`O8^g(P3np~Jv*&UTobc_J$)WzU96+U!95xxAXgyyl`8`l?<0 z2V3bo!Uia+M#!{4-X&Iehj7Cs@1lTpJ7Z0(a1l|rC}2fZZ)_bhOkyXjm=`q!s|J0Z zH3)Lnat1P&cRA{6Xc@gqPtOM+0=WX#yFC5?oPRA zR7#CosTpgj4ywS@UCXj`8a`EPyy7?KetxE?ldg;};TQ&K;;lKzK;NSrv24gb-Z#3R z65lKtcb8^GJ`Gc=H%6CbxOgU@pD@nqiJ{XpWsBAI?0w^=&O~bezFi9<*FEJKr0;}} ztlt|xuhV`?li$=GtmrW^_kEDD;mf6$(owrccAy0m%Pi z)dwLunX)Y>lD*HGm^=(Nmk7^0b>+&Hj?>Cz*U}R9`r?16c8Dt-*SkG(PQA%evDC@e zAoYsJ&EnRlN9Ga>&b7^wIYBa%L0L@8MEu}1GdS20vq9$Z5D+3ohg=niXZ78IAvo=o z+d2Kyo+793ZG2OxKg*KX+yi`y@a?0jxuR(ujnJK_G^)!awB$TD_u9zy23%+{_Y;XY z@KNJDcXStw>sN2}0z34O^?El9LAu=_)U8te*ngiCZjCp;87@#4Mi={x{lFEV;U0Y= zxlKKe7KSD*#1KCqwVp3Gr$l&OX258u2%xx`sV?K|eik7x;k&Gk5YQPO?4kz8xIkZ% zHmmWhupY=uzC2s!C8mLndRHs5p}~C?qt3@1XaGnc zFM<#RvwWkx-ut9IDLW1SQu!QOa8ON?%X#J=klytpPMx%qq4V*qms5JGVC=CB!M_3V z9xaUhF6`_CUe3Kazc98lr-bwLCN96pQyB6+nsnRYiROgh?X&oo0@=Xc7Q^G{xW;jJ zd$G!=DK4-b#3(n^f%5$|#YuA>th!=R8 zABa19JhzY~X;}H%^-rY1j{!AY`*=)*u&`%q;l7nU@vojwNeX)YH*pQ=F*(#sA3lW9 zvgNgmw+^N6^4x~(J=5U%+Golm1>ZS;J{fs;&2t}!y3py4oPHnf#P*CJ&uPYcbsi3a zvtbj{9!VJS#?#rv{k&@nmp_Rq@>iZo&9;P0@A3<&njwY*dX|z%0h+@UaR;#K8$paE zSM_@;$34yFmK_B)cHtzr6Q?7HcBICVH)cn?M_j9)(tI(935mGb9O;(QB(noFaFd)T z6@;6kA)nJ%+cP5Hk|U{Ow{@kv7alLU+8f6OUuGSfjK2o#i(65_ zplJg(ocK?`J68NJ)D3RSq~E@Y9o4zbqsc5mlKD#~8s-J?nG1=E^qBGs>viC+Hk#)e zV!jw=&4LIl-91rP$%kk21ttQOFb1Tx{WvS_6ky`nA1GLU9w#`ZHZ$1_s(rRpq_L^7 z`z1txpW&UUfOKSR>N7^6y1edxU?mBJtt_d}Uc#Y_P?p+WQE}86?ytWnNuASs0e^)ntJm-_08{& zQ|y3)o!z#mt8kIplMpNk7K4vIOS0B=>N>0pnbuzS>FijFq4|)ee<`#A|8dRt8t&6K z^Oq{O3xJCSy$q@^WYMS!CaC?Kq$bQBSP|DeME%M%I<)LR_6<3t5$i~!=M#I+vngd7 z1!WC|EYAj$dxm0dK7{_~zqta%u4f81xjLvIY}F4GmI7b^Hwb*nIi-@J3)4-X470y@!{q zcDjr+c5j3RCCjQg0oELbwr?$$&@!sfKB_RYD8>d}){0+)ZPgVLKT<2#8?|{u_uKqu z69r-Pc@ic}?Lh5b#7C+()thb7LO9ybK05cXkQGgWxsJCwFQ+L+zyi_bCwkZ*7-KR) zjkcam&7L$(#<(=vw4=n|+bn8DBXK?cxQEryTq2f)$k$~{;=CQH>VrvT`} zTe57aCH1H+z(w7qSA%V2UCzh{CTu&o_3CVh0etKvDZLJLfPc(CZLOnAEs6i=yjHHE z)?Li3q?Jy_=_yb7g0AX&XV!PK*=bIw6ujkBetp?K;3!{>T9#W-I{hGW&F@2nQNZXg zYv1cIiI&wwyvNjdy>gUt6ZR!Ef9bZyV3sSXe=V`hod$frg>-@UzHE8=N#ZGurT$&Ho#67 zmBlEd16pjzQ3z0{qXaP~^|=P;x&-I;`@0>c;3O%ym<{LxHyZEN-{z$aL;== zV(UHs^L)tm))H*#sSw29EQLNN-XoQ#D?x4^HoePse@%FlV(wRbswFtr+v5t^a^bvj zPDOs?>Rfi5-6l$F6Xhqg@bf}WHuc)Ge>+Ksvp5VYmyzcQp>`fZ_n;Ck1M8qpbhkw5>o6OyM7xsfTGf^V4jzJo*0mnCsl zZs6j-7szB6$Q%T2v*LwNQe3ZDz^l2ZY5mBm>a+jlQ-qjDII$7?G3JVd@p;pKt@0z8 zhZzgS??heYV}7ATNd|TQnzZqAskSO-&}-vPW)LYqo)tU^QAWeM7nG~j{A1{Qjbt94 zFE|tz?8qTx0oC+gQBU4XF@&~dVb2BF3u?&ZzuplLL~Z5nSlDw?<`Z{M2;&n=ZNI2R zW@I8c^`4a)iF9J2`gfsP2N?vNNH$YxX}*rq&anE-*sXi)Gh`e78qGMusZ(tewQ;I* z`qUJNg>+rtmRB1w=T;BhE~|_#oPP{Z9sv{?1^!YaHX6|73bvE~Yd&{-`u(*$9xj~+ zI?q}PEVC( z1DY9^X<|{t!r(WX(yos{?9nE|y-{dI&YbqDGcAdPQ%3tmN`xM@rAt>pf=Sv z^3e;c?B^3Z`9xlAGt)35tsWNY_P2VO`GJ|SWy89-M{s24K9mSIez~@ex39$D4+LgK zkI6-aD*@E~L9;E%eMw5A;>-zn^>h;X9fCYxrINldSzD)BlYn3WRqyslFFrcYPw|I!cja zQ(s(H{Fb0X|Ms_={>k@-*5bwyj)N*fr#urWi zJ%5)a#r{1zWWT_A^-oa9iiCi*fc<{==pXLhFjYZliiDylQJc5(T)6RCi4)@wE)%XKS|`@1cL@yBazcX#AE`o zjf`mrFf*6`&a(}oFEGW|!+Xizo`|c{If_2^Kj|$3d_EC($`QB^wEV zmN8Ix^~qoPG5i()X{*L$JZ72bXNV&u?f>#C1IJz+G$CMJI=M(fH}+q3g>+GB&-jiB z1flFW<4u(4CW_$lg;Jps`bamk(&zD)>2G#R{;Fl0E`-^GaXFdPz{x;9rD8unImMh{ z(a7w~$uWFyWeT`X?M#80hiSj}9s+`X0vkVo4SP4nY(+}#zd!SAT#kH3gzxyq`8+TE zSod1}*hA5oK#<1^EDsmS!{roGk3@MMn0RUZuMV9(6^GI3;aWQe87RW($xana<|7Ab zLVmsH4o_8}lQv*K?TRn=NFt0qria+8UX$gGe*3^l z^#GuBgNz*3f>NnfznENN@9Xm9&Z?Y)3?#NcnLKgoJu9E|bKk_y>R4*&@h-oE?!o&WvUq1_|p^0x+6f)|LZ7y7s6A0^RwbB zfWb0gFg}x`2hLQPbs#e*+*k~93=QiFxXR@2VUFGPH>YOSgK$)(OW$(*Vy3(K#0EaG z*O){2#LnYFqJcxRIy*hjmIAcKTj~T;AOKXh47xt!)4wjpAw=ZBsQ_ll`g_Be02rvf zbXur>f!{j|-^G@CI4DHeJGXXaVb2xVSC$b8m*+F>()^VSWIlNIFk37dl<+^*vg)HK zuj$pV7iRA3YX((rz3d50)?~F3KesWfNmdxpAYnt|_n~fRTcTs+Bd1@+Zy)^sN`+P9 zt7wg47NTNp7615Yv;E+Cb_gv*JYG+fJbt`$@OT`k7{Pj~U(vk_o^e4D4p6nc9jkv? z{}U!~>VN|pV9I2OSKPdZ+}~#YiF%p(ttahu94JzW+LmC$+8WyywbGC!e?{?z7)m$e z@H(PS{aD&bt^sx9GsBQ3&<+T!Y1~CVnu2|y>m+6TzQc!g4@R~Fk!u>pTpcR8l^~@p zYl2ec{QraHpG~=f%52sX6=gJHM9E?cs8GJbA8-IU{x;UX2iLg7q}>YrtLggRbpG$0 zBKO$rQg8?`B@cO%qU$6~6vDKPrrYn^M~DAa`e1WxK7mTsx^^!h#4@#jn0~{!OsR$8 zZm{ilDwy&fWwDdFh#h3*{sybQhW}Zvb8Z3JDYD>zc=l7u9v39wcY9mzf^IDU$4iQ( z(?hrj1^dB}KHXc*Iu!k{tMy3%leyVR@n#_dE8F5uzcqWHJy8C7@<0^yhW#h~w;#Td z0U3zb1^*Y?r_gfXsYxYtMm4^1CrC#ZAx2G)w(`s56T57{L7~=>O+Z=`Kp^Kwj-io1;7h0fA zg;r?FwVl9t)i*n@yBYcLI9EzReCL==(ZJs(fU#=j7g zM;@Cx@)^EeDj2GqX@EjF(S{iAew7qt|nuYFpx- zE|j7BpCa^{hs<P#6 z?kPG3b*R($EyipnrPy z$PS*`!HpCnE*PL7YEuakOdGJ`oSkp^N<72~He=AG7(M2?Jnd4PHz(4G4I{`xZm}*< zL+S-WL=*W!jcU7OZ|GaIrEWltUgCCvOXFZ=pgrY|5AD?iQHK%l==w2*qDlBO-Vd`I zG9k!v7IrW0DB?fbF4D0mW0Ob&6!#Pf8;VonKc4D-pW6Mq!>zvM1*lb3Xx60ZSJ1)g z>bSWjT_QARPT{M}$pl8!_p+$I(aUViD^%HBlW@!FF<}`s4DE4qF41I7;}5u#Vh^Ui zP_SOCPOK5NoqvShmI>kC{3Augo@(3`XcQgOS{PL?_A6(Esf$#CpS92h(~_FZBY*+} z^JtV-%1MCoeA&C7;O*)Z;r-|XBa=n>g@Q5}h8Y_^4*r;tbj1v?+A6Vb;=!GkxZ;LF z1pW(Fr=I+R@P-giWxpA~#J`I^z&5$4e#IyA5>(a{aEe3cAj!Yd6d;Vr-&O{{b7TzP z7=lBvBUl((mx27k2E)TD6ToWp_IXOae^L(-fIcR`rX&KN(2Eml#iMY$kP*$vA!U1* zRqvc6lnK#?gT7EtOhQ`$38~F+s@kvA>o7&#j`I^Ppp8{D=`2LpNl3xCa}iHBzp}6u z1E^y>&o1C9r$fiL!h49(f>P${O&wfJ1)Fhw0lTLK#C!rO>fyhFr#4?%2|^FXB?A^S zV94|S$=sD%ZKTgPG3W=z*B9`Q7x+R{=yBve?oqZgK^A%x>#NSwY}=O8f?$VSpTPm9{hO#9BxfWQz<6LIrB^>$ho3tt&f&G7sbA<4*Eo z=RFhu^v2C8&rs+WT}3BVO=Zt?68AV)f%^Op;Js~XJMETy^)@bS0k~0Z!Kg}hDpM34 zZEaAS0=B`bSfdSv^lG#|^+y6fYMEWD}?9a4CqwXZSX>SUVu7tGreCq1bFq@#k9UYuh7qaKU4qHhFequDIKKJQs>IHtj>);4f%w38SKJzqco zw+Sw*W|zmwXM4&HFpcZPSgXlzpy)eQgkmW>`&B8WZ@&$lPa9@92j!}PZ(*dRyigy! z5*M${78rrEi|jQ|rH7zj+x~>L%bqlO)uNd+B!={z9cbGT4S)UPzKu}FrA7@t8vj3Z z6~J6Y7p4AHsyev~iu@R+tbY5QWyo`^uzt|hDg9+BE}Bfx=V;DiOVE3K_5kE(KO1O? z{ku}z$nxt+$Z`RH1s)DA*oOwo*0WOEwKm4f3ALO)@E-0UqE;##@uK}`AMWS^?CqFQ z`w6DV#jqoEua#qZ#4~%ckJ@E|&bhexwBOf?{Z1H^ijDO?HMgiJVbVkq#8oDGY#4k3 z0LX65H2D^3wCZrMAp;dt*>njVI25eMDV$TE8ee$*y!(^8|EKqM^HM*PaA`nM#z>1^ zit3|AEimq^{JfR@z6~6c->oT;W|&%RDj}f$i(EC+$%fce_v}c2LvG?WVRpwu=HbWI9dUo?%{_Q8YbJJU#HsBXTwSfJr1}S25i- znOnAiDxqMLS!*^at<~3`7Is%BdYkiA9H@ANEGB<;GdnO*@ESp>2VwRWeIc3bVj_Fn z--<|jsst+00hwV?{WyYG{C(mPjp}x{Hn+v9vl#GWIQUDPU^+qYC+UAVO+{IzAEp)4 z35q{S!VE}6Ep-kPg>qm~}{&Vdy;l>^AKdcUez0;pvcna#&a?f@^Dn8!p6xaY9@0gfmS{@NC*iIZ7g1QnNM@H_aqlNSh-7@pw*Ddu4 zUhArJC?1F&(q}8tP2H4ovdTeQcR;Gr;qv0zWLW$_t+JFf2DuY_>l95u|FY29J&67~ zc%1g?W1Zf8e*Hwd%Vm|mvM$D_(p&++W{Utj?Pe+Yjk0BTM#M_14*~xN5@5Uwc zbL|O(%>&TAlIKg>Y3Y2SCIv4(8je{?Ba(|N9x<82<6{ewi7quJSGddmA3>An5<#6q z?y~>*hBn{xs4n^vCIsk<%~@$&AGG}3Yt#%uB;GUoogo2 zk>%rQ<%pGIYKqmMOkJ&*ItX#aeGU|fyO5QuJ+0R%d3lOSJvq-_&MCX#+eW-HWrsV2 zDe(m#(ppr=ASCtYIHx2g^}C{z{;zRcS*3JpkGeEdBGdp8Uk0x?C?fekDnECT4!y&09%l$+naA z??-al^fDwCT`<;2dN>ws6DaQAqblQf*eO6VSlv!Fe&Ba#Iux z7{a>9ds8+a6t4B?3ttL5Mz<=VCRK`Q;#Z}dw0xBuIN%vs6Q;M<-0Q|R!pA||%49{w1l?D4l7X2So^E-A3nqF=_f0O;hO4pnW@%9ybwc9XH?Hx6~hME;c|RH5a#U zseG*-oc^42rD=a%d6xt5`U?xL$59;MJ4?+v?_LB`9TJv~t2mI3S1XC8*2?$buW`!A z@H1Qsy6klj{_KbN+WfeQ=~KAC$)+IE+x%!0Zy3U1rdf3GFU40CX;VTN-=4N%e>)pI z{R3q?S5rgWsu}QWdT0@a|MDD|{rIaD^B(ZEueI9g8y@1jHDEAk+GYXqNleF`h^9Sd zu1Ylt27z~`(^@3Vu?Z(30DmZZ%0776L;~RcENn>32Zg@H?fjiKV`Y)|+*+85yBx}> zBqSoK_SS;Od%wfkxrEA)s2s?z@tdRvK3@oFAy8c)(j0Y$>)0iE6ji#xXm)JWz;E?+ z1Zl+zVMKNt^5<`X9jIq;c19_K&;72H;IAYm9-QTy;S;eukj@nULX#!e=5fz5;f6rN z|E{fRQ}oY=-^w=dz{981`?6xWOJ9c)19+ zQ3xcxsv3!em`mt%Q4eTVG#|Z)PN>ep&D&)J4wqx8(M0f+hz^G8&C#{(fb8c!W*zE0 z`q7=#uy63dEG8T^-nCnc@fK%Ye?IXUS66@v7$!efD{8PPXxERc@s(26NO?iL@9LMC zSWGY|1T2892hH|~YDJf>TNYiq=mHQLXtR=L;iE#BMiFW1cQVt#GJR2Hr&$E-AHVpYzktM&)$zi?Y`MRX0w3-t zW+jvT3AtmR`pa~gCdgnN#JG%@-hm9b>L|;0>)T&NM*>q_1Y&*;hd(DfM@{=-4N43fwB_?995}X%tfrNs_U?Xe7ODgV+5Wz3>Z-(>PN^0fiOGt@_y*dp7sejJh|_T9~S_14nz=OxG*yKJ+A2YSNq*fb)0yetb0D7R6cHZBU@qqq(^NasT$Rt44yY%LTo1smD z6*-p!y79J&4GByihDMDJ;=#JyHM0GHBX zn8Keqn!-=rsoGI&*8i4>f6OW%XS^evM&=DX40(QNK&y}tkJ0?;%S3ku+8i$=MAwFv z){K&(bEh&32xjwnwN<{?n(eO`2WgT8D5Lu!;_f#_G&?m`{$7t-`FqY#75KQuw&)rg z-MXC972Z2I6qP@EMl#APa zrits5!m3s9ufDRv3OV@kdb>^Q$v%T%zif0F;_A-+)hi{D<=$P~d`26NnG}*;b=#}d zmG8t&A>D_mo$Pgv^F!1#1pN8%`TvbaJ0rS;Z;Nq|_vw?_ogI0ChOF>-w7!<1W16wn z^itsP`VrWN-L#lV*bRf>x~9$$PxMayiELyf8$iI)p;~- zh+)J5n9I)?cCk@ib8>IEWnst|9DFg6{q$aVnWONbg}m1B%Gg(8V8Tu1 zM|~E6TSQ}j`J<$_Mq(@+``@P8e-HU_aj+P^7Hq-hPe)H!@3>`N*B0t?odhVnFO*}w zzllsU-;b%ida-uTV%`R9h=ugIzAGr-v$msE*`*M#Tb>@Eyzf%a8gmE=CGT2*tv6Om zssL7=263npbs8y@ky?7=gHi^q^hVG)3HmLo6PH+ne4)*!N1L$z1BLA*naBY*UA6?2 zsUrfH?AE-AJUjz?$pW=-qT1gi!LG}z+ zlw+;!P*r~HfjMS|vM#b<2KLS#`>mi;!y0aje%>suXNHB3l8hQ}JRjH|N#dpjWyo;s z=)N9+;i*vkX7aZ>%RU?D33O?s*LLIYQaG6!w?q?N3as|C=&+XM{vkbIVfb3Sx0>j= zUY=l`@tS*tlS?6A3Z8V|%Pbw3wbD_YHzT?9KC|!poge&1R{-Q<7ey|m$-EH1$YpYT z$1&SGg)DA#t&OH+m20nlnV;+MFfFmlzODWCS84QA09JlPusC>+zaO@H#vZ*cBMX_byr(ubVat9Fg&GQCFN7iF zRQD{@YWd*;$i_1GRBh@=DZzcy?VIg%)AQQ+TjPB{Ut$?bAfz882 zVNFyOrZ>BYAhErdxiR_;6O(Ptslqs3=kbuJ;(amVZa*OLqcQ}3XZM8Gv4;|G-bYyi zvlMw5U|-14Cy;6xY_A%;XqxsZac$myEQ_R`8AQyAUh zBpmKXVOIF_!eJ7TLRCllIl$zO^#rs$m&=nwn97CnF%6ZVhMy{~&rZ!uwO6(6gr=>Z zSuP!_vuN*qsJ+nI`%uUC2hnx5q|I_V7~P!ydz?h5Iyx+U8hfGzNzB^N8(Q>_qCqIWP!%(7i|!FXTLDKmA|K z@`PgCdc@BONeTnp!;#i;GueGOKzg{e{H3g9O0U^uS9okzcxgMhrWW zM&R1yxXZQXQUkl!>dSI6?GSH1PV2mS;ftP@Fp=vI_N=fxYWGCS$2 zPz(Q-s5#=3rFm-LVM^kkht4LzQz_8qn8##38@8#W1hX0-4nDcASYyY$VX+y@54I$Y z_oMk>OLymSd2;quKEyZkQuDa{f62DeOpJgc%Pih_tnSg)`-VxsN4*_H3PW87LVCu+ zHEPrg_t_o}?zeIeI?OW482w|!>^ml$6-{*NBP#e*8*x%+A+~BnL(dwrJ9%*g8qc91 zmSDkgi6y?*Qhl!l>S}ga&J4h+KQz8mw;vnwvuKlkp#2r|Q}#XP04wQ;+{m)r=zdfnpCaEq zKw$}LKzgaBLHKK7qI8wn>DEAL%f=sLH+C9hkTS_s10RR9XF-<{8y|?;LHMc>vUY6k zJ!P|qT9GZc8OaAG0`2iu)FK7B{rTVfSA=P?( z{Sz|#wS6`TeZ7S3lE5nq;|eJ@W9G8{I~7{2m?+ep0;-&ZiF9q@j}2+GP~p&Uqks=U zTXLw^FvSYx`R+#_)r&)Ak8iDnB3c?|C$;t_9qFrS@g)8^nbItT<#Uael7T|f>OVN4 zrKD}A6c^|rFyOP;So3Sk1x|AO_d@Z(;3T)_#N3L9VgrME(A?)eg)l_R6|ZzFWSH?Y zae{1$EkX9-_vCSs>~=ox6+)Ig)!x14c5;^PnabH%23)(RhbOdOC4?Tt^skQhXul!} zh==m_tg@f90DYR;u|m=&e@`J{KjU}1iyL**&32wH@c;@Mn&4So+s_=~^z?9gCfWwA zCHEwudL^b%JvH&F+Jo0(gB797-`4Wi60aUkYHqyN0jtT0c(l4 z7H1!cvP`{1oCAe$l-sPdi+A1~pA3!YnXI3Qxj>Y!K{B76vxF>`Nd~XMc2?G+S~i`+ z{`AuiZ!2^5F-7t+kIhXA<#7)%BR2kQ9lwH!Q0~4E6r_)Lctw3=*a5u=zq9~5h`jd$ zcSH#~b`ILrQL;)iXNu=$Cd^LC?~2{twTym=8B5iMfRo{; zkXNP}h#8$tQg6A3S*l7C@c$Cvd?-x! z-@`gE=Xm`5BrU0frWR1M>Z`J&Zo8wN5r)k3C0=5(e~cd_=q(JCG*ITafO|shVAvQg zY!%kB3e(xCY8}@nyz(mb4c?D%x&}@Y%a|J3R@^G0l`_AzR(0Y4v*4v=Hwvq|o38B0 zGGUQsP=z8^ZRd7E`3VN(GNUw(|+nbmT=a zginrF&a%9(t+s?ys|cO;zX8`n6>6<_b_~jP6ZrJ7(!1t4W<`~j?NgV~+FrZ&VIYmY z1rJI5Zjk^@-ho}vS}TcW7l*SK7++mi{+rh>wb6)Ok`&pKbmnANa@!^ot`hZr5Kk_y z9_d*{V_Iw|)-ph(o0c>NJp6x$LOb*&Ffk7$fIxr=fhRFS8zLKxpXN(lU6t#LU9Jr5 zvP#lltu@k0a$H?%672m^;;^yvRIKZR;{&_9C5PLF8x<_#V)LeS0?vdEny=Kvml=S1 zc4M8*Lo8uqNYRO6cBRsEPx)_2VyVUj2$<}98)-75H$gDBLs_D$5bMRhCr$8z-8e_Y zU}!r%*mOZH7MR|2h=xSaFNlnr~xl(A#N7{?n#KJ)91>?A! zG;ULo*9#l_#Y*16441u)rnFuYyjDhPQ}7w3#=;*Nmh%fvzx}o31mS4`*!Mk1WqAFV zKAz&`PWu$xuRabVKF$Jxbox;ep@UjuFo~VCT0Oc0IX57lDDHG!Zv%OOxMXi^sMN%QcE>ko(PO7mEqxKDJP|oYEtRmq#pGLSmuB&TjalCT zV!Q)7WxaGXpCGmK4&WsN(e|E*Z89rU9>zlAMflkQXjr_s};5_}&y~xJe|-at8Z* zNfnzeZ()n4lq8~A+yx>eevG)s0I#YYlD&>QBs=HaE$94U{j@Xw=qK8NfzbU_htCAo z+3lk}D&?<`Vw%4x7XSS=tZF(FJLt!M#Rhvw(9vbijOP%a1^5u3vQkOntJgM#=cfi^ zUM)NV7U)C0XH43_6e=H5=L5!+{5kO4*|0XNmaiD{|ru8yxD(L99+2y@2had{~ z5R%n1dRlAL)K_RPfQJj#*puZR+H-WK)JtNR1D0*1e@Ue@o5BZ#%IoeTdR1X(Rg44p zr++t{u8GT;3bvfADKVSurC3b%{`-ajeSZAa__N>eXI-0RpEt|?YScJNc>CE}f}il# zk3aP{!?y19;3HA^>^BXQ*|Wg$td@J_)>+T&isk^$+0FclW(#;^s3E#ta1Qelb(u?)90 z^M{`CW_h@Pn7#%L-3$+WjEbI`ZitY<$-TIoe_c!)*gGrOyMQAA-5>ZiIRrBml5XKg z^qiq;qVuoQo;?oVGW2&Ihs%fV%~jTTo=zCZ z2GZAhQZ%}LTMAWG+(6z5b1k6X*@C?0X456xO;x#FE8a>}Xl6Y3V!x^PNr`vsOe?$7 z^QWWopzn}H+lIq(RSnl}^ygUv5}akX60}~It$IL78Bdq(is72M{F=FUb+@fC6g3_E zkX4)df~dPiaCZ2ralPdxRH#%SMh*aWHa3`6BQ3y2?5X~qNTF2sw&AlJXTZ?dOU^=J zY&`#C(d;BE$tcd(U?~IH%Q}+2lKNAR>m~~CRrPmP!GDC$EUV^S<^|ewyqCnW_~5w; z!CO^K+C-5TD|Nb#l^W`za)Y~=7SH9+5aOOuS1R%4Ci{zF@gB<+2_}gC1T50Bhj5d1 zm@GP}#S~4_;J9rxk)biX2;NDQZ04I36sqG~`u3$ExKz{0pi98-KP;VxyHl6pv9;YJ zF0t|D8A#w|ugbPlWvkj|u~qfdIRz<_C^NNz>p0E}XO$}IFGA_~7U2c4kz4b;hj5#9 zmb_E$gOb8u>`Hh|nq)D>eU`sKqmV$)IdFu8?jxduJoAyZ!|;EY`}F<7;~E}$qleLZ zdA^bwG-({|192~s0OGt1^D*9roX2czP2qRXaCW^U9^)nQDtMD?d3$a3wj|$hzmlWc zH2Yz&umB)(wmYLGaUFGxq=3R9or7lF_i8vd_LCkTubT;;ULrafyAU6gYX>@$sO=2)d)`12)5-AmL_W#xgIRj zWX|L5LIc>fp4Gr2m?!o3f3Mh&(mAHR=Wc4{*IK*;CE7b;F5}elGv>e(GI5hufid;I0OXV`?n15Vk zZqd@BSrg(K+7z%4ddR}e&MIy}A}|HW(PdR*!tXK)@7X#a!P;Q1SH{&eM$wgu9 z*2a96?sKWb*aOChH_K4{%-kLIs7j)3 zsf#PYu~{kAg_U(zr#Mcyw2aF`*OW+W=k`JtVLa+npV!(CkGC54QLj*%^mSBctBlww z!|*hwY%T%w9m(meg!B?k>3=SwWtZI_;%na5Vw9nf#A!^m0QVRyg9Y#4sw|>JGdCz$ zaqjdYN|WOcohP<*W6h|I02Ibr@5Xs9K2;6=lEQUmksh*v25Pe{4lBg@A9yG-;CP&B zmFqqB-woiWsC@$wBTo|+AYZ7=^O<+rLE+qMEK4$=m^;VCx;0@t81{^XtbT4PlO2QP zj)YKz93eT>wIjY;2^1=bp!e)7D{90UJyXFqo(| z^Dmm$t{+$MbK-JWscmQhSHHpAozd0=fzZy{{Dr;2hR??Z{Yv ziHq;E)l<@R#cL`Ep_T9^v6i^w2hgANHbi;WMR^kVP{#m$`o?XneQ6et{keX#5fne$ zGdV$`mgPi+`hN}{n(z-0eGAKuVC~M@Iz|WkEXR2%~nLz}v;^5wfZS&2K2aA#AWvGwbI+^>9%7ddvC3~M>IL^-fUEb} z3Z(1I>UbgWC#||BsY-IeLH(n_op^=!au5a}W%ze)gM z+wfDAnbdemaqMaz2>g%ady4^@gYI?j+v{$%8Kc_xv^cPK$P+T4wcd_<_IfIh6h)J9 zaSH}G3=hNy2_UUAdOrCC&|#H%2AIK$ZrL`exv8GMC<0fXFB@Xmw%J+!Fg=8<(MO3g zr}MDK5o}UdtAJ9VbCc#dlIJYIy$|iUd6`i$qGjRjUd?*kF_jxk=&;&#ZVDwA;PiR+ z$XHVi<>h7Hkyhk0Z3t++hxn8MiRBXVxS~vyGoJed&wYSqwTZbvg`Pl#)N;Zk+9Hrg z1=S97Kam}0dX&rOoh2->Ju8;DS|0F^ge*9($$$3{J!)R*nJiNzr>7G37z`tOSW7hCl`2w@JacXXF!Jwn=>u@`Z!2(6GqX7hS&_=wSzbeT zx7`z)zOSKrVyzzfRUYa27^^x$GETwG7|%{p#F~nJ@vTxjXJqNWh|z7f4H|7rDYz%T zTFar@k0I97koapBtq>+B-Swc%vS(k#S$kt7 z_I45aw~muRM-``JNR0goMO5>Sg+aNWn0x;GlDZ9eo`g3%5vDj|AjY zm{`=dnN*v6jbR10p@d4Np9n2&OD}SzDcmHMRwQQABC2f@n1r_P*|z`v9?X5Bl<5rU zZQQYwoRD}Vl7 zqi{7i&{WRaazg6hLBA_kF@ir}nMyw4O_*9>x%ML1TrI7?05{p4JVr$_u-35gg;+B3JN2p$qpKdzXD9n{c_0 zc#2X)kUE^2gEe9~k^ccx7+Eb*mfJx8#Lt*rIFL=$2KR3X>t|5PC=Bs*nFZfNI+j1c zq4l5tckz%L|P3%F~j%$uub#p8yY75X!B9CO^T8Y8mFngIurC| zD8#Bw%wsILA-Scdm#Ct~#E7&(hZwq4`cd_%Y}Wdbp1uwN%2(iXkAfOslMYn;YI>|7 zmu!=It!TDcgyhg&LgG0{dxTS-n`o^#i9O7@HOt$!V;ehj3;1W9J%q}wAS`kNS(3wH z;!oH0{B$HPSTc>BzNT!AU&HjA%l*HXZGHq2-@=KqCrj096j8UNi1RKhnfHj_w@q_V z_jGVG)YxwSH{R&PL3O`DJ_s-J7NZH+UMAHZtv2}*KW6&HBv!ED=aRgib)I0cTkz4b zxO{8$>(y@c?2vKz7l7=+0F9M+-?p?t-nPsM&W}^|GZzQ@RRc%=gT`um4MWN`gRjeb zv-OE0e&uG^iD8m|dj$^`U?=^0?|A7tH~WZ^Xs_udmeM!YYmv*E7uZ*new{OMj4P3! zcg;a&48aBa?|k9Q+EIruFI`P%Hm4yotl3fN*+sbEJ3!pc754NHc3_t$dzw7-2x;@i z(bn{~Y;ReMsf17VKgEC^H&nwHh*)q{Sw zJ-XmWv1N3R+3$$}|6+pn==MgF$ue?_6ji}?c*}P95>dvJE#Rf$+$4UE)FDFZh^3ue z1LNTjRGF(+Fn`I6?-Z_5J;H{85*d)_vjzE#++j(Ocd$~on`daJ z0KTn`h@~WRHJ7o3zURyakIk@(~y-09`SfBlntfvn?KI-72 zYUR=#=WT{?K?XeV?ZDm?5)E39~Y?6Iq|IYWPb z61Pb84MX0*V1Smawm^QzFb#csC1{-c;Hc9}ISc&R`QYeP6rb<+yU3IoqTv`LHFnW( zx-hb(bNbQB^*gXMdjAZ}5G;yzU%Zgvh<(Vx0y&+|4lPd|S_C=b^gxjbekEVOtR=7b zg+AB~9qKw#F-Z>^5@>KWfzfA)Wo&0uG%Y69UfhbA5sHQ$#NMS^-8R{t#=VzBV7t$> z-nkjHPb-gl<8^^f)bYqqG0J^7k?y*CoC%+Gje!XbwGduIXFyy!)_Yh<^$SP!0XHKl z%6Q>v;^AFRmi@u>+ww3yt!JF@8^H-t30!^B5}y<;=iv>mg#KYCH= z72Hp92&|GHzwy8Eo#Rfu>oO{653|Guv`-d00cYVbWh^X>K<%RjQ^Fjm{t`GLbDU6b zeO7-mP(ZnlkSHqlx5B!*8su?;Q0tze@lfZI1VKrxRp3ljCwB~RS5R%Q77LYU-H6}Z zvGZU3<*lm+ZMPrBouDabHK=a=H(S|RnTk(cdnaL{#TwD%u^$HXF+P=^*#A%mx8BD1 zW5V79Np1ZwB!zqHCR~*8UqPHNU$%^fCNBYc8KE_S;8%2Dnf6;hHz%KpmzjGfVW_n` zqRD4JJpZ=GJ_M63!}On<$cJPFvGNHMbvfV@rghr@U1|I7Ty!elfBs$krT9dcYUSQY zqo3Wd#IpqYR%ha(2me-*A-2{>7kmP2*H@dTJ+>A8OF_n65DA)L!+r>NQLd zc9i>$?lwy}@jnp?>2<|G=lsmdnA>SrJpn(_ z@*yaf43LZ>xp(bugdN>FJA0-xG?H`)4{mxxx15cN2K@ARwCiLJrYP;MC=n3S9$wBK0#Y{KEhIm%_xjEc=m|y;> z!r!4(JD1K7OxBw39Bu=RE063v8d)f~_E)pqXfC%1`+j zd=zz9t(8)5H_vf2RI7PjxsvMTu75vl+i=%f!r)WmsZh+<{)7T3bN}2;Ax#*Mee{O* zSouE0p|jJK`;~YujDkK3f2G+sz7iAtP6}##HPeP@Uy%v=6@Od-+vd0z>s$IJzy+}c zFOzZR2EN4FyR@7BYPem4Z@6vwE8D&yo~+t_##QYn`Ay~b=r^jdzLB1)?4b>1rBS}W z@q>s99VD524|!G#zvXh<=?=;5k=t(|M|$weolxetz~fu0BWK=ux&-;DdBTGHl4MR- zO_Dzu0VYX~K6cr&6kLONh%N_u%Qtqr2LJ)YB5+$2bqUb?qOX?De1eDs2#jC7ro?9q zhjui}e}DQWw72&nAQn~p1wV{9i%8EqHwM zk_`yfJQ#D_OJ$OK-OJ-;)rDTV=n&xvO@|eiH+4=m?8M^l_ZPJeX?1mf3#WQV3|7QB zd;YRg$*Fp{_VWtaSayI|aDUFCo8Sl9(w_TcSSs&1H)-70ks!90yWRh`|6?gZLCtB` z#D?=?r1VO^fv=rYM%iwkir!FZO}~m>LtkHHY6QGeU3U65t7^M8$J$B#ddZb?pdK@c z^K%`VlH=@G;~juaU6_M<$UW@d$yrzRMuK%hR#0JeeO8iv9JDhX>;2sj8@(jQ*+BJE zgxHEIdQNsieS<1Zk9nM6Tc3BZu{&5JH_{8AZ&UbY5;K|(9y3z+u4hB6Eradn8kWjf zK6Cw%6PLGtC#!xKG+zF5oijkrFesGPFfKdX2M-@L3Q{E7c45yTeKiUF89jA zOt6@}2ETw#S^kpJSCr^uf2psC>oYcXmQtm=gNzTm3}pS zyF!<%u>!z(6EP_5usv-7l%rkp$@WXF8``}r+5CUi=OkAoz+B~C)z-rfQNhBWwYY5khZ$*Azn)_b-PqaGbyIAJ^J^2kGeZIKK7-&h@zCH#Iuf4yb z=i|Ph({X9btC21crl%pGv8%3w+VYB`_<}PvyRb3z8!LoJq|8d~ZEP~V6q8JQi(^_( zHN?!8H8xzEeoHuv6kRMl&ZswKhDfL_>oE5B)!oVOfSLe_uUT3^I(u` zi^TI5i6l`lTBUhOd}n)0PXCJCQbV29K=}6V5DQpSH3#<~Nu|9j!g$pwb77zg^;-9(P{ky&5;?xhv_vFCjlEa}$>j8P z?CVzef90vz^Q=SUHj3goNJKv599w9N6yx=#5BGp6QtbcaYG!IuZR)Vt6-dX-F*9vY zZdTM$Nde9~3Yi}f_tn47=OA(E$d+EKq%`JFm1X=R?Sz~xJsC)DFV2m^6~T9ZL3TfY zI4=5LN5mxy(AJYHj-tf>kuQ3<2X{2Xk@HG;HKqBaC^a?D6)%j#%5YGsUlkv0b ziHk6W9+Tmq!l8-ND@M17$7kU$u@}TQ2{MFJoU?S>;*#1gC3k0|XGr(C;@gG%82&6N zEk3QO-OA)%hxBcNE-HPn(Iqo*G?}{+lyw0uy!`Wl_~2&&f*BIuLERf+>_dZ+qS87Q zBXJkA%9;kcJKW;}fw=64Sl{Kq_$6-vD*c1sl8^hlrOSsvziTbO!7Er+^UQMt36>%p zdG)kH*3V0vyBx^uq-j1?dh5XK(e_HF{Y`Aqh^a2beBRipX~l*+S`_ZbFzrFTp`_i? zQS8LM#9A?|kHMnDZnP0ktz5rFG-NPNfeg(thDEsi;@W(#6lsw4!UbE6spYWz2If0; zrolu-g_>SU3|E##>f{P=0#|98N|w$J0QYT}k=#*PPf3iC#4PpqRO)P5w&6zo6%*_h ziwIir1D1G7uWbt@4Fs4{U3+d9IU;?#@V-t=bWAetna|??FhBZ!H9(Boc?%Gv8Y(B` z2i-8o8wk&fFaQC4we*_`r}%N#Cbz976aSWYvGPPt$hIm#oE!Rcl^xfa@fr>YJ88zw zoG)6ew@d#h`}2RVV=}g^%e|8o%VkGqC9=QWW}ca~V)4@(0>3Qavwbq?(=#l+kGYy(7~=oW9{XF2{N^K_z+CGh*5i+uYh(InysNiMhAYkjvs}9vU~Nsyu$z}B z?qd(L*~MJ;FYKn%wffW|t*cz#VJ#{4omnd;wq5-?Bx=jcilJqsgA(Ef(oy$`2>`?b z$ofrJSh`_%HS~tmFR~=bx#_97KMnseJJkz!$%`opzvqD>?d#|qT zPMhoRhBdxJ1eq6+NzvF^ZPb{^vporA)FtNv=nhXE0u+UHupA4aT31U9hGY3$v{3WT`fuR(1H|#JJ7Ga?2M1VU_&4#*p@~>^ zC8{s|X5`xc0_c;*#&&O&zTdv7Fi(4WQAIxSq-|kh-j~TV{SJLawb(YnAc2F|knh^= zl_f;0$Y<-KKWv>adSetjUgKO6Ilg;`Po(Us{Fk6^U#-W(uPvY4e5Q-0sa9=5b{7$U zCql-nc7MB-HScDDDJwTJCJGzR{%xDXsp5a@UOuIj%Qbnq{I8m-M4mgBXC|72y&W=G2L~w z-@RC6NyF^T(4^&dXQL2hDRO)7rwT)}loVXX-YId6N-Xk<&is2@eX-2uLxDw}xy;C~ zci&xg(``Ojl-)Oz87V&FGJg60|D3C?P4z|Nvitv^Kcq}hq8d-Q#s7-?9`@>3L2)$NIGSr~7NLQJ@p_0yP=2M`XAv zoXf!JNX8Bbk3w}k|I|^u1?=+F1{z+xfC()dzHi%}8acbJ1&*IV|j z%gWb9GHX?ygS}c)EI`QzS+RI$v@PKMy&ov@+A)Makp7Y=xmK9k z8#qJigtewg*H_En#185FW~HU^-#D2dsgU&tD{P7BAGZidM=Q;_*+&BmoXt}*xy00QBtEAO(&3@u#MIu4WD~9F8 zQ)kY!rWr*&w+Od1#0|`xb4wbNJjXiL7-%ZI53B|P7KMT>##lNc32 z9I9zV$kmeumN-pjZBY>kKgI$`bL zMeor(fj9f1mozI5L1nbD`?>dU4!kWUB>z^`tdL1-;w!jT+y`oO;2-#GbcYz>a5r(b zl$G%$OqrY6(LBF3M%TTf$k8G*%IX8-AlSHY4{EDWEA(ZU#nSDsOUhZnaZnekIIgMN zmOC$wYwQN+Q3J>uo$4fU6fgZoZ{RD^S;C>sQ-tH2iJZ{3wS4M+GEY4!0k6rqMUJSs zH_ttQyiWl|sD3i-1}qg7FbSyBTJNVTn&&YG;faH{$O6r@%U^e7@mq8l>nk19+L*^x z^y=QO3Jj_W)eG2|)NCSDvHL?0(vNt_DhResX*=x?nKWxkB;yWjo3=xM;tC3Tz@J(jXlJ86`34W^*7N8!-kf{`33$KhN$t@3{A}=RWM*_xqgJc^$YiR5=g{ zK(g4}fOA1V94aPd^fuLxQQ~I!2+aQiu|rnxh(jRcW_=NsQV`0Y45aUx8qi%TXfsap zn$#2^WAP8FdH=IG>3!WbGo9w(l7RWHS^nRd2SG$!OhU;3;{+oj*co?xHY0>@aP1HX zO>v4&Xg)a=iQTQj2{?xtcr0#KQ2ND{cLLWe9K^wuAM}_bL!k$6x}BEI@E$URDcHCy zBCB^fi7lxv=&vX%9Z3;y)0=EuG|AloF1dYCK?$USEN+*C!oy3Sz^_fp&>s;$3?Cxe zzP~yg{XrF5m1gBNSRTUX`YBCig05&jzuo=XU{Bg7)%I2};TFTZm)qYzZ@*UzUQ|=x2_L`8iX{0R>DS)(vxPJz7V9iSV3djH2Uel6llafGO zr#x;c=4yU=d$faEe5c$tA~P>a6^njxd-Ra%o)@K#LX__Px4dg9;m7>lhkO&9YP}-` zwq28{sE(|Ay?@JY%hd#YJ|pyAsg`A1^ZB2qiWio`mn~pCS)7R(<>x2+&Mz4NLM`q+ zJHnno*{hlV$5xiYPQR%N4jE)al?PSoUAD3dD1WW>^>wRMhzLc@yTys}#=V+=i{ZUKPz!65SV=#l55?TrV6Cpx#-wSxT3k7i9x^`8=nb zrko?O;7^hkq4u?AMJy>3?|%Kg@7v&=K4tMJTW;3z*x*{Qbq4JKQ5~2(@$UPftViI@ za_hw!_cw&0?|fEitS<9S1L95sMuOEPKuWx=bquKxJ8F5XdM*O8dy zxm9+lLQhj|MT||nzfYI55iW+z^3Aq$UluF08l_H`z};G$0jD)`@Qz{Mc`Suio33Vmj}+0c97QK_vWlUa)3;+T-Qh z#C$?}M0%g{&S1Vsm##Nqx)$5-#tSeirFc@`k)7&bT5#<+rgHh(uqYfT)-=Gzl1oT7CmMAnLpT9^C zg(byt8F?d}5%n-fUWEZd5&}c)!eRyr)#8YhZQ`JOy8)t59&tK?fuF!cy6W zx;Jdj9e(&_Y4Ds5{@PTva6i9OU>ZV%+C0W_Z~@QjyL_trSeMAT+FrMnE?qV&7hyX% zR}7sie{K7rzZgH!i9R|13LaREZo+-+x5U@oNv~^%SPFZiSqA6LT$gubDO$Z~!1(7z z3zLJ2rJm1?&+C%%ybOCMn-foo=C@X!wR+~Td&?mqw%`*eZc-)AxWYBA=kM3^mfd2$ z4KE{+*VE(N`Ul0ve>~bpM=Qw;PvtS?SJ$|wfVh>ZSlKFyTq7T>(to)6%2=H1T-*!K zR^5_ULvE`Qg|U}-0J@9DPtrG2|0$GHPxjaSJLj}K`r^u29i6eRXB#hNLP)!U$-XicD1)|JP z#yeEpDqF03=RzGJxS%kjrK*0AY7!5KiQHJ@os?RN&eS0nMZ6crPB*6_+L)HC&~7uSvqYC968Fbp z{43P(c8P8!f%*~#|3PKi#w(yvduATLd_c{Ve5(29SkWayT@l6J4K>A_G8C4lnSAOS z-B63J(Pq`^ekrHQlq=StNVy@4qRUn<>}!fY3f&xon>|kacuVhbO!%;RT-4L?AJ1qu zH`mP@NBz^PL{nuIK_BVosZybkRVHb5rwPEI2Ao>8l`oYa6(HxC$}ws2eHULj8R*gF z=F4BdaaJSZhQf}|}I#Y5=#+NJ~_NR~Ov!XtZ%~;g1qdwNWm`zhiui9w&`?aG*WaGf_4kDyt zN^y#O3UK_P5VN%Mr$r=bGgBnw3b~Pd?RHqThAvT~uOWBe zERUXF0GB$I+@X&aH;XVqAgw#!B%#DqJy&~xQhV-ad^-gBmuE)Ap<~1?>8y7g$VY4w~U(=`O zNou(j`fa&&B5yf>xLyl5nsg0=m_rt3&W(q~C238#2EDcs-NzM%jp!xpJc;}2*ETAK z+Omg@isHU)8nw>hwRobm-9A9j`?{?xcsZFg7+bqz2(Qwwpq}y0Zup;LQ#zG1OW_mh z&o0Wj9|W&p$TxBCijH?x(1t)K;a{f~T&<}%6%++=0_g$Yt$s+qS(`*zZKvugN!s2? zu~$CswLpg`g4S2cE5h2b(}!b)hZb^(((DK-25HMoQ>|RKb<#fI4yA{XFi1qv{tSFA z!&d1RSm?-XIxHF`@E84SX=@p_#;BRwKFn-08h1ZbD?Tc(Z6^Df?%Rq74}Pb+U+=IO zLu5nQU@e^yX#Uw-NWR^5uWsW5P6ZE_zBrWK9*h}SSl@n%R zPC;|eH};=5VH|Z*cfOq${O&(UQ`^oi3!^?DvJV_wCf@x1gh|@uK9n4?cv27zsdzE8!K)!YBau?Cw)oHWnxJ^*CdYq!z!9I|!=zG_7@r3JQ+f>!E z5V0Y+3zdnzh`tEVS>z3`)`E>=7en!yy;*?PHqYCh0p` zWz+u2K5{JWDziKjEo{M+@!Edpp6@l)gVPJkM|{aZ-Z#JAG3PV~$hl0#4p!E-YO4@p zAB;e`9$s49;MTOpK5XMU9=M?@Dl}I81UZ&%Ph_VwURqdx%)hjJ_4paFUtj^7)hjQ` z+WQV~F$|VHjpg|#QjvZ`eq|owyl*aCXZCsZkydAsK*64O_`_uM30U|d^YnLB3^8J7 zVB~oltKN#5v%Yi=8?nsZcXpO7y+34Jdax?(bzsF-8Z;8Q`P%k+rkVZjt;540BD#9l zfOvo(<2G~&2<&koGa-U{f{4Cnk>gvYlng3Q2SkD7L#hAkLR2OS)b*CAC13k=n!3rg z06}5jmv6mB>u5J{!wM-)Z9%;vWCH$0OOVXAwN&;-XS-}^DDQe%HR633a8f2)-}@=u zmTl_;46vgWVs>8p`k{??`FtpVA~H}6fR)1nAc2!`fo1?*`;ZL4gC1dN_~U$3wI4C5 z>JJzX(qF>jLGCi+5u)|e6t*(^N6hdv+jRynlMs<%M%3Bq)uAk2o1)57J7SB`;S5QX z#|g+@2DQri7#hrV-waE@AJfT#sGyCCYZ*91l0 z;YvPNeEM8r0RzF%u$nW?y0u!IBJb(p8yCT%S749*7|cc5c;*=tD+4A1TMd%}}7u&ia*PO=I`>9?tU!-wZ7SEd-ZC^hN}ww7&nqG~MtQxcTOz2G)_#i*m4tJ!tRv-rF(iL>s@DCwc*{I!6J3omN`*T-uZN z=aYiByN7$HfRvbV8uvJDms)5qq5QLU@a-nX2a1&R-n1a4IxMy@>38R@5A)N*^YT=h>LJh~P#`d{&skOP{t zv{pp>ffiuS#r5rP0iwYA$@`;=|J~ON3tb6Z&6A88pAIvK77%Q-gz?rJXeud>79I@G zL~W%TyIHSb19{Fq8M(jS2|6+V<f0w&cT$)SNx;;+!OmU*g#?F}ew{kPs9e6a$phLH!d=o!pQdISjXBP75KX_`esL zm6z48(hZ2|1ht7M&S`$o1L=2kDSijZy&9+JPwxl!$1ryTisz1>SKEx8%Y-PoKPmNd zR%$IB4>~hODSZJi?t+Z51j;>0z#1jm3FNF;~7F4X;nr~ zDuwI=@nC8Acar6PVRAcUtZ9R4!@Tg|QDk%RxV5{IYlqvMI4wDt_SDCQrR-G=U$K3n z(h;Y~&Lbi#_QIL~3G1PDOcaYRUKGibU)$*TpF~IZ=cPCJT z(71}RJpnlDOu8ru?%2CuV!8wDlEG|!LA8V*K^e)QZE`Ga0- z0fehW10_3Rd*v1Q=cSP?+Ov=Ys6F|J$V1xL|I=Nn9Emyshz3S>#6|^UIyAF!U^W!8 z@_=cJX-j-LE)OMVX2nPQAH~d_(~Cx(UFW+F7b|gm5Y)*vexqu7>$BKs$D^OVz&GV$ zLDLP=_p$s9eN>*D<#_*??x+viQ?C(XET%ZINujB0q2Hc-$Tk%ehrD@SF1EfXi9oXdVZ4)-`E{Sr z8@J-yH?qQX-noE33dPjMb`QSH980(n%w@g*qqk)GSH*t9CB~DvPF;)im-n$%vO_bT zn_oBdhBQiWiM|h`rx|k7g3c{pvqJ)9prvCiH$qMKyhs}sL$bZqiBD(++|I(e>-(|< z&7+DrsfVkdauL-v(Zh;*D(2Fc$KFoVvzG$ZdphuF1pG)b2U^u)1lc5-ZVa*z+? z=2?An?!nDtwG1p}($XBT!zbf*^PAm^=4(C%$)rNkcgpfL2I>rYyYqi_=QjrhcTxI& z2fy2KK0|ptm#+Lq@Yt~RL$DI3`P|Dz>x7y9x`gIppQ!y^rcyYbIa#Z;Q`Tj#v2bUn z>|t2M#3NZ1mwt%U5c;-d`d7Q9D&MOIEpth+ zH5yo+=?|KEpm}HPv!{{0cXp>Ix7th|F5>eb%er=H4Apa(=E<#mhr?WS_$`OgbZ&W9 zWbyN;@{_hew3?kBR$X&_MUXE_D9Gy)c7FNC48)By6g6V+vr=)OR_qZb?29{WL0WUz z$k0YlF1uvLbs$$}9pHhJ+}Rn(gop*Q#%JcpORzt4K#2#!8TvJ)qNV?uSN2RPTz!;# znR7}<%V+E30JAB(T1eN(9@g>n8K1UU`p+_}={mFBSc3EGIa4^}mfNAdF0t7KXw2M^bC~46{I73JUzXlr?-d#RIT$#QU0t!;?6Dxd(fnmUjEnkp z{7rR5wN6OS1tw@eiaA#W`^mgSSNjk1j9Z{)R=5%UU$ZO#!BPUT%c^UGyt2tcWY^WS zGG&m&uB`d8ZPaf0E^;5sxooQ!R;A;m-sGgX-+gEZ&!wxP`heng#~KdhiswaYngatP zg4SC$76utT0Nd9!NgAWF%(5JQ^Zx!e-l}q{Q5ZiLe^nqdtuu=|JDxO=VmnbRs}zxG zDTB-GtyvmdN^$YcvsixT;?UI42b(bzQa*SA!Wl{{9aunq8&dB8CUKm1xIqKcNuOiF zmxOBz21?9!-3cVbuJLMNfzoQtTbslaWs%(i%fciT%B62)yZ+3H_@b zkoNG;S<66u5NV{Un~-w`^kc>H3lH_T7-;sj=!=>HPrP!r@N`ABXHD;q$^y?d#I*T{ zGHr0O>vQeuOr~;3YAr`CkLR9*XJ)_IKgBZK0h_6{D5+IQuiaGcR^F*ILfHQ9YMzet zY?;n5m=TFk!cDI&0Ul zz`^gE>I-##rk)drKe8KsBv}}Fxynq}@Cf%8=PDgA-1h_J(-S$AyE&;-mAy-2;UEpx z{yO1FTu#7t8#2*)9N=HEC5)>3OkMV5?=?|T@5+lh2z2U)6hpV&vOhpraajtC*;B2$ z+UP5=;-eNmRa1xE*vg6SJz?E=5pB~~+p*8X3*$h{w0PuSE1_a8>~yD_r)biUAZE>@ zRUsrIgFY_#5OT3t1=Za%kkKj^Ykj`;8CI697@IWY*Hu;xdFHTaZK&nMj_C4A9@slk z8JHOwFLHI#VYjLPIl5B3rQ)tP&B$YDPgw^T1U%%)ZCO{PsU6&E%eUf0zwux=12j`<*K1U zn$GBfPLrNO3GBS^cB<-c3k1j~ zQNo4~sm{~-p9+$8T^RjCX$rK7uI}!{jZ`zo?05aL%oDb&)cJv?3)7i|MO~|d7o;$J zSco!*aUYUqw`uD`F0Ut-s~($C4SGdSi~hiEEjZeRF+sIU3%2@8Xgp)B#Wn(+hSb69 z)E4-V+bJr^hs*`4haET`;p!uTea+mF2nPFPx~&QjKgVwdo%6mQ^!;4O(%YlO(+w%V zabXgPY-W!lH6I(+%}d_fl5oi=zmyfneXaLdM6st$jP08-2(YK%eM8Air)GHnHQB+*BHFlIQQ51&8+@!18lFhfn0WduY=M(k?YgfbwsYK z_XE%E+^BqU)SLUjA#>^zpA+-1V1n=C93`0dMvax7R`@h&x1RZB>$-n>##Qts{^Cz{ z3)m)q`r7FrBqT&#?u4x!HqhqmxLPImv4+{qtVU&_N$3NhvVY(wltyJvHCR*GzYH|B zIDxgxKxs@Zs8@Q@@5|Q)cvZF3qtlf@;9?cv7eFjt;E6Q4vC{(X*aUi!W zK3UcXk!u)HD+&4_o_$nMmm;(}s?w6Z_^6Q3kOJM(%u~BmoZVRXA`U$6vN1^X@+LE) zvb0cv5lz4ss1YNfz;(d}uR*W5>uD2n7^egF5u8zTKvc7Bw?QgXQ(5uS05~2EHPO^A5X4Ox4v7(O*M6MdYSS%qLq1 z0^c*0R$8I{pjGe3&fw(6?2S~<(M>1R-a^V^h?aqnWWe$#*jZ|Y2VD>vk=>Ataeb<7 zNa)Dh0+0Xc2++%VU+p)?r5)Kh))+%fc^r>=_Uj^w4FwvaQ1#hKxG2Vx1QO_T??n)Q z>z8rL8+jerHR?zEg+f@{MZ{&;lNOS096urMkHJxb+|*B1Cs?n_d_Xr?o=(}Ij8hiS zyJg3#{tJi@F`W?OyWr05E;DM>HKagO+4n)p_cQDyP!tMYO&WpNM;CIIU)WU8{*itS z*=(-j7fDhC+ef3$fSSfAQ=aT3W%8#^cMJoJ>svV|`lsQC~ze6#8kap{CV^U1k z*Le7CgG3fI7S?ai2QZ1k=>01E$)F2|)#-u=vNJnrxlPW>jrx<>io;`5w3h9$%*tX> zXs36ibgSNrwg5B~O^O4^W8}h_RdG2cr-%t84qV8DOr{I9YJoqQab+hRt3uzop`+JC zgtdo+wJus04%#-O_$O8fr)Yns!|guy&qA}-A&;5X;RU|5W35F4a84%z{D+Obw+WBX z?52ofoz0Qtk8SCe@coZir$_S_5LtVoQS=22I0Ch$01r{q35lLTrby3+7=OmRr}h%7 zrNN;t@Az?ipmj?KcvE)49pu;pU-QJisZOx<=3IE+D@W;?@k?XYb}DgZUj+#s`bi2R zj8E#2vo4^26B=Cqm_{zf)FBP>7?<{J#exan^_D+gu8~q|cYARjRM_fTqY%IhR2O4! zu9>@ig_7%^#Vk%uJnfE^V@bCVP2PFkLP%n9MFU*JO!gd$xIMu7hiymMV!CsW#vTEW z?cCDF=0`n<9=-1uiqwYHcwwIhuItJcx^*sKpFO}R&5CU~JAIZwjJ1a_@nFALeXejwLkQhs!3<4_Xxd1}gl zy60BDdfg>t%w&JqWPg0cf>2mD7V_HW=>7Z{VO1(*pQa-)oC@^{omC!j@r0oO6RJ(PV{ zlmeftWNbZHsii7a1I-ZTGtTlcKjj9iT}r zjLoFk>XHCP^oHn}q+iH6yV5xxYP0Tvyrp@ZOaRZW_{3ux3cBmZOf=KgZ}%8HB%u~n)aZ)-R)cvjUs z1c&(%(MR%krkoIdnJMltIVlwDivc)z5I5sG@T*{qCd ziuAgT=J44PS*!T0jQQmJvIe@=^}Cedh<^)p>-oJ&*gk=~MmHvA6ShwUF=<&_|GA_r zVVANlqdA+6VSsu)P1jF3+N9BMIia06wpK7zv<-2I;Yws7h@J-Bpv&RW(M+z)YorYm z9YCBbO5i9HN-oOj#+XP&9(9_CM$Yqs*#80apbs?FZs&zAU0eI}+lF-9c8n=(XTww% zvM0n8x^RZc&@WOnNc#y4jezz?z7uM9v3_vrkdpV4%ja%+N z%-%&FG^g)sC_b3=#f)86Q_kO)(PPz{^>s2gS*(9X^d|Nc^u%ztd3igVI6b~yf4&*K z>E6yZO210!DCo($iFd?18hvo|ZR>9D&J+VG)g7Lteqfeo7LDi*XR@Lf-}L<@K`g|B zSDEoaMdGW3KkUp$klw}-G7iQU6!biKRSF3Pi4oEcGUGw#wFQ{p;FGIx0&CFM0e^2- zZ$QoJxh?lybpe*dd_z-svNr}5d=%T~sq zDSRj18T260m`$$f%^lr>uTi-NZMj$;kudnA)2@0~M$*2LwXmaRw}YogHy>7^D`k+9 zq=0nn@c94T;aMa}sP6~!IJG>jniSk7QuB!w`41|T2<<{hf5Ec0_dEM5VyzNWGwDeR z>5i#x9T`aqOCDW;Sqh@%KgivGk|3{Q`@hmirFbConHZh{oq@+Tnq_UI$~P3u&ICpQb#>Pxy0s0o3j{!ryTY8A=e14<`dTUjs5^vhCP`+Ly6> z#`2LROW50y+{=8x5LF+M_|gIeB=_W6j6p#MH!cFLq5<;Zr$$hu@KOZCX_aVKS>R{G zI)+OY!>fwsdkI!mK0uQQ^u0YkjlvikHyVO~l_@FW1IESDCavr` zrG$|$FMv8HyA*0o;x|XX74*ap;fL_gW(o_tUUyG2>F>`ZT|u!L^MX!hz4BA*Y&JHk za?N(IDfIQ+D$M9B;y>CjBns7ZFM)%N%nD)n*HfD}HyERHwQS%k;Ra)HZD{N2;^-;j zsRVnbIhy_$-nTDJ?kmc7Q7lXgm)f`RhsJ8%J~N}yDWbN&*V-fGAG)^s;=uxfwbcSO zpn0TOql2A3H?I#GpjZ(7+;%l7?=%HFF8Fb29q3Z51q9uF+*Crm=oNk)+l0T2Pmv{er{O%102+C^hsld_JUttWy&`C6f|G~czX zy?(gbe)eX&$ws<~Q9*}XMaqa#7wRNx2uZs{bxtXrFvFMs1!3P{6YtQa0|Np}68=al z`zeoj>_`Xtn!=BzmA#eiXej47Y+6Rypu?_f-&kaTrW7MEtwzJrSsfHAN3oenay5Hx z_HE!X@p1KLb#YrU=6|Nnjp#;lZv#ZzvcdnO>fod9EJd{+W2$*vGo_c{9WeB(+m_#1 zCK^hNghSEBKHoXDMh7a@#uadlulFswVe60kjn^_D*-Mtp_AMFNQRc+0{a)Dm)^k*U zo!7e~`_=#{&+;+m@bg-pfd0C~L*x4(ruM3tR>Uv~S|29y^Ktm7x9#3|H9m9~u!A7kvukLGM@5Zu&)Jt_}HCX5Whql*S+@OAqo3>F4z zdV^(~8+$Y^{9h>f#oWCbwbSFR#g4c!VJ?O?1w~+-(Y|gScCw5c!3i5A-xm%oEwh2K z)VEXhg)0lTc$qmFW@D{fC0T1i%7I&TUwihfh>+cj<6K%6cI?}WvNo^?j$xi zjC_jv?!(fuoLvgg99eRZ@|Nn8lC5Q}tJMmqoa7egFyx6BG z$9V?$0_jImCVJwRlOmB* zpOUdZ)F*LsByNT15OX-mR9}6Y|4G8Au0QmN`+?{l**fL#kMuSW(-C*lHfC~ScsVtC z+OllcfoA2?rqPcq$Gmy2XJwydcE3S}W_vF9q98W)K2+=AJho-nsbMc^kKvf|_t`%F z$hd$J;%|fNfSGBj!NP3U(IT`7gXR5|W_UDo&kB(V^|wScF$L)(f_{Q{pvm+*eq&-+QL(^>69`%Q zX>(E|5^9Yw*3{0UYmhMON5urvm3^Zwl?oe<@6H0|>8$BBuk5S^BB$tXZIObP%LOYE zB4;5l#_O)taXt~;!^zK$x7f2nBc}{m+=t{%sM18~899zoB@RDK^+S$!K}-Mni_Pa0 zGCj_=%l)W%dDYeZtb2c4+h4-e1&;3*1S)z_sSxVVX85bBVCyrsr9XnL^9RPP(*&)Y zh0A}TY@J)mws^4u)>?KnD`)F6_&4RnM`qw+j*!-)>;%TG#+KIvxoCI16l^CR&CgKcp=8~K z3rEtV#wVdUT*At&IrK_KSJ=|Jz>sUMM-y{IL@D$oCQ=Y|5lo+=grKc&%Hl~@PZKHW9F$)Q!dCbr1z-E!YAmR>a z)*K*-$oR-9iFoNz@wtWT*n_H%rSVf0wVN9Tl-RC^B=j3Z4Q-wx zXzsIYwn3ecw2Z^G85zkO1wDB1Kvhi2a(s}>;>`T;R~@}YQ~AJT-OQdB#8)+HEOcW} zSzXl^33pmk1vR@UrjG57orU2em?V}YUKHoQH>T!27^|uQOj%WrDnWE&0!mFfm*2R? zpg52+a876^a=jgr z_!WDD+Lc#?AGD)BjAWbTj%R=~&nBKsdKT(0k~)=ap!&6{O+e?eWAt~oDU-x+q3xpr zxr*&ffbffraju$6%}=Sfhyr1OGL(}w7HsoZ;o=moBcU_%?94LVz&6W0X%EToQ!byE zduDTu>n01uV;l68EKo!JTI#*pf?DjF{o^-6RL$K-6O}imQT{*NITEX|wK`^-U&jiB zDbs0M>o23`rvs`Ke&|3pkEWZabBY6LWAGEIrZh}An}YEkPWEKh7iHrL1F9YIKT-^S z#-n9=jbJF7|)EmnS=Xi*=4ITa$LJXryPq}tn21< z4%R2PeWiL%TZ=cWHbr|T2TPs~+6*>5eo_mbNn%a%jA=+DZ#0n`+!ju9uU8MZDYnBy zO^;7`hY#e3osd3$h2@)uJORb$&}1z~$W86#8D2B!^O6PeZe5{mxYcUPTQcYyLkf?= zFxcsxOT%=xx4F4pxDTYDQSHs>GIck0VSb(NFv6!$V9oY}W8>7Wpsz-Sw@8!0g`q}_ z?229Esu|-+&qDM!t=j2VanPkPeOl00hOBkM_Am#mqlc%pkHaf(m?HRH$hy(;SXS%h z!n07`$?GDStG5j`$-kZRpk1@N@RAGgl0FGiN_#caoHq9JByF#W9k0GIZd{B(3I3`7 zAI(^~0zHJhv7Z#}3b8@wU!PYib4{E;nF@LotSf1~nD%ce01jVL5w;fpV`-6Dwoy|y zCSGb(Bgn-B(GIo>SyzUa4O^P+jmt>>{uvZ^POK~FSQrLcFSG=yh_!;KujyR?zSq&{ zGsq7=h%yXJ_s?!E2iUC31L|FhWo|rLNq|cfuzh*^ZICkGHnn$XV84b`R-Nb-Q7!|oj9er=%KkTgQ$fe`w%mC)L>(tyA5XDi#spsT))b~cM?B7 zW(}00e6j}crpC3Y(zU7dGI(}1@DbIXXwOW}HR{6Mm9B4hrgChQ3tpD^7**H6gos1rSpcQaJqtc4F;{<<^UrUbHmb|EyyWIr+fWlUd-c=^44?4H*d++$Co zVvD6^^OjNBSW^Opxy%t4F9fPM*5%guR?K5)^FuPO$%+3OzuH5%4?=?~G;@OVDqv6u z47%;b6A^;D_-7?ojclJ77BVSx{N7~0;R)3UKVR8(kf_7Shdcg~iyd&or7MSxiO}|j z;2RwR`$LU;_v*rwqk&s{hnW;6bUTiLKHEJYusjgIyW~~7rJ^{P>DZZqnw7Q^Yyu^J%)0@z^ZI(0+jC^+noIsjU zpmnC`bQpji(E%$Njy|Tu&W{ZPm>l86)Xt7yN;K+9iw9uOfcXx z;45IHsG>EMoybmFR8%-5wAhtHMWG)kz7=E$`>{&Fed<$YG4GA3j8Kdmn>(YcqCnx7 zf{gs6F?YNWYPwJBA!9dQ`}g62{{;qDmF+5c?<^f27rj>>TiMP^=u zWgD{$n*`-1iSj;!Nplu~;zF}fn<>mvHqi)XY?oqQYYPs4RJ4{iF3nH8(i z*Fo(}vvCF6I}mb<1yx%H&iuM}$u_8}8e z%M+b7D~I)^)nig{agJ1E-tiY>SVRJF0y2F>X= zE_}c>wV!0Vcd?w*tw^U-j)OH7RFG8rr;1?uMbJG>_*LzWwJ8cSRZMvhx)Vh)BwkIwIQu2+q8;_ z%ym_dbAMKF7e?!P{`PF%&=j%m+*WDn%q^ziMiJcRK7kk2`6Z5p-iC3mIjrAa2_fz) zr{AOexo7R!8WDXVqT-MAk?30vz|XSe!idV^d*aO9vBtMxu+bUC^m~3|2yIncY^Nya z&Sx6nrzq$7m1@lTz0b#2m$Y9ZwJq6YYeT&MJ7-Q-KAX+{ebjZR;|r5HCPMBT3ewKY zbQ)8$SKTh|U zmXt5hk9Rd6*IT3VmBGK&bbiWL><~}y5Z{8LMNhUGP#+O*kT4~u|6$ZfoZQcHum6{O9om_@dm0UO+dTcZs>CXHk~hzl(AcbG{7Aqy1`pyA>@k(s z?y&AO)$%7l$@UGiK(!LZo#fgcz@%ix#-UHNUPWppd+SpV@Y|iXthPK1mimAD(|eks zz?>)4a=dLPgXfR;LxF9H?!a5!fytukmT^Fk|1F?@GPnA3an&NOtj$i_3tLx_R?|~Y zr~&wOOwg$yuB2_>TT%XmrmShSF}d7iSz=Jc?(Yd>a+OIyOG@K>k<~%R!r^fhKaQD2uhAgfwxu6pm2>;{4s{uLqS-r(v#!B6Nl%Z}AECVVhi9vf7%`}@e4 z+F+uMi2?YqVir`gu8~Fy2ZNagbkKoB@m%&LrP>{y1j5^Hg76rCs#&z{Ii?%;|9l(k zon{dM$R!CqU$4txk#%Yc6!y+9g(ASrRM@dxjv(|xvUdcHsgWk|ju@Qxn&#BuX=pJ8 z{pPv226Jkr^B*?=RnhKmqp`2`vN4HCk9Z|X&i58uU^0tFDvL&Mc=oUG?8P?YzoEvk zk0$Wm7+c>~Svp6>pitK0lR+)Q!5jBZGz(mh+Jq14+-5^vVQ`o$jOw!oz@_M7=JfU$ zgtrY(64?6}K$XNYi0WkWDC<(6S5PCk8Te;e0bH)uVWkfPE7`1Ro5E3X&7=8RD-M80 zLTT&2v2$($#nZgxjq~Ok ze)d?|u~V`RX~mCGou=06;=WH@8%$#g2Yq|BttSiJOQCDh>4eX5^-CdlH7onCHwD<& z$&OjcdJN}(?t5p{_{^^%+NVsf(=ny28w27@6K<@~N#FSWPPox2N_OM-bq#;}DA}o; z3mX2t^H!6Y2IQrm^HxorCaw)Oml(IrNkh6Y|6We($((g1Qh9_eZxZvCaSavv>4bu~ z`qdCK&D!Osv;JHv)_NE;fPR-6g~!8KfSEgs|DhXIAvAf@@iy!ei{p)0M1_`0Fzgu;2&#f2*i7`f5>Kk)nzGtAb6h% zTMedMT+(>pYN``Gp|e+#qv?Kw46+yCI~M(Za8IX_krRmSQMi08s@~%}nuE#CIhU5i z(MgY*7PjmDZv(M%F)Z)~^xK%14tIM@+B&DRE&Et2->+6a_4~96xyX6@2HJ0p_Gw<7 zDPA3^PQ~&Z%TZ)7N7%2O`JBlaW;mjYVcDwZ@suP`itTEll`MHb{>*NaYsOa;aVBI=O8&`rFyhf zpLtQ^x!K~sUJ>F&D)j(5D){;w`&O}bWlLU0K@ZazaLnWlTtkc2qmP`hl5-B*3MoQ% zdVOMhYp#w4kP`(q#B>w!p46 zzG)N`hn6U|Tr z=D-aL7aek<3TsXXD^$G;(yQlM#|^XwO2HeZE_jWZcx~Xc>QhJ&8sbYMvpURhj@L$a zsd|r*@S<^bQ2W*oWHfZ6J3D{bg=96?;p5t|P8~4XTo|nMX#|GX$TD+0wdzu8Pp<#arGcLG`H<4ZZ8L>ViQj)eYOcj1%UE8G^Q(!DnXlQ9MF!B;jh%OvA-g>$1ouVP4gIRD)aXbNnGmNqxTaQV{HWOZ7RGuL8V4QV>BwL9n7Ju z|C$dgeCB+OP;}v`+klseTc{YJsNpGjSpbcTh(^f$RQNuY#shy=TpCTvjgH9uy3vsP zb?|B+*zVaVIPuBn?HfxPYx5tvaO;8b-)V!CX@lsaKMlF_*^bnv;ArU1=1?iQhL~$P zCf1d-)R4Ph=68n_Cg649)pT@Sc)j&&sNp0XcfA(7WJzH>}xNWO{hN&5S0#)XF8OkW9Ysf?qND$yTI95Mza^m(Tgg@1>L@OItt+V$ zm*^QbNEu(|B6;EiIF-{X6UNjgC(G>WHghYt2BV=}YPI9!)yZkT2b$!Rg8j#iEyKww zKZvh-1%+QZ4rq^bA@7xh3HZo+W=(VBM*I=CJx@Wu9&Y}K@p=H0Y##hJ621K@B>i*R zg|geA_oi18qPxq6{S!ZoYbs|u=Cug^;p4RrV(-#re;6+s1@F?wF8tnA-B(P6cNLBE zB>{xW6~jsWKCskPd)RY!F(i34HfR;ofTIfKXw((udCUA3<*8Qh1GsM zL2KI!w9ED@NEs;zs#q=vioVy+Iiiu}leeCwD2&T2^BdeVwrj}+Z?kSm(pkNe%ojp2 z*HXIegRd>)D%lN%!1ab+O|!tv#JPe#uaU|b|5ZidumS_n>cG(l zZQvK|xnb<-J;i%;r&DyN`<8Le+`l_c&wa?a%L&Sf_$$J#{-#_Jt?;Mu)&rV6?wr;r zvN`NNn56P1fX(hcqGIcW;njnT_qUK4x9#KqGV67{Q5t0L`jq42B0tE!dW}WPseXXr zS|N9PuS|0x$!>Gx|IzdvP)$5Bt5RoEPLB$4$NH0-AP$?0RUIii2MWlyB;HPv@ zks>8Q5s?~tC!quo5m0(ffB>O~P*O-p-ui#9Yv@3SnRv-T$2VITZ3KR=)3PcAu`y|MJGSYv76#80)cd z`;rn*WvMQRNuF!rKT2~`TUvkT zQ^H(C+#+4J#fPA4Tyf+F(d(U(j~Z zbzMz{^R}ZAJB2L*{PDA_^IAdN!N`rKp7Fs2`MqiRkj?ZZUKzOcV#e3~7bnzO&yDDt zy#Oh7jfQ&|La?;LlHOswHKTBtVHV){`nooxXfxX|{4`U9mAD_ex;CrmD-3tz{Yr6c z?`1E{!(RoIrHXR&*ZM8FHSv+x3+-mqerp}kb|xNbAVq=B!A~(Oaw-;JM_Binz+yoa z($1r0+7~+(QMh-z>rLU_s{o6XsbfA*L72!a&*&wHiAJ!LArTSt0^7CJ=B7C|4$-1< zC*#N=HW7`6rbcYZJgxG~MW z{w)*DK;)vXW6G_?k)I+LxuhPcibGYleeW!Z-12ZPd`B_4U6U=$(@C zuzrNV%$XYNueFJK z<3p4K^|0*YEWbT=a8(Rox$}Flk8T7|e^+rj1Py4?j{XzeJp%HEb?xjb=rR?zG&WeZ z5F+5Nt=by!U=G}djjTv`98KOl9{i(QOP(_UergMI5LnG-;;?tS36G*YALk?V#utnD&z=S!H+)af0s>GTyEeZ}91cZk@?N7e+Cm{QJTW6sA#DaJ%8 z;`qR)Z|ejcoLb%gOt%Oc_&uPL0CZ50Nm8_`TUx|KvU^I~dbf3vyqk&R?~lnjZJ92t5tAyD%6XAjc!@s4`S9>Dv;$_lH@2 zlQ(>OqzKu$m2bLmh53+*Px%iSXzZec1n1Yr~`9=G8?0Y-=5g`W`B(eq= zCOi8dLJqDbKM;V)bv*PWOE66ALpZuUI zF(QB$;-e6Zrsp^8?3^K=oV~HG!Rdd4M`}L3UA{_HBj~(~)fJWm?Rqgk(ZX97n*#bB z-i;^8ER`^awOiOZ?xHOG|=r0_{g*frUYf0 zDFK*4U|R5y4veX%s~O^k?r+(N#$K2wi_&9PWj?^pcH+4}zjsqWUN@v*s!Z`!BG0~w z&u6gDXH=LgUAj#j^Q&8im<-JOcb#>i*O|h$c%}k3A9- znk5Ch-aK!jO}^?Fn2{{Lv=(j+@NM0N9xBnur;k5}J%JvB)-B4?gY>26<7eahaNF@3 z((?whLh+8LFjma7wESAsPP)a#`SdotbT}?bo5Y6^L!0iG=puhb?8M5`J^Ori#>yUG zQ@WS%DA;C!+*vx-fUyr{N!NmRBnuy4ec!=0ijL-E`zSYk~20c)1_FiXBPc3OWHw(cxM;JoB!{>FOcc5WANF3$gtl+e-zG!lt z%QYzkv}4M>gq$;YhP)t(Tk{TY84J?Gri2CiR`2cMgrj0G$I;ySJwK45u4F7j zc>2FA&q(vT+wvp*4jvGacWrWWo%aJQo(JBv4?a@-onmShwn%NJX`z@1Aq=s_Y=d-U z&8JyNa#_4IK&(&w7b%1s=FpP7mBgJal#JSOD`tD`kA=jmaN`Onu=35WFtR%?cUMez zVB5uknL+i@Ad+z{+yF)1&Z>5^$|;_ykoX|JdecDD*qo=~9vj8lI>QLzRr`uwnm`lZ z#N3JXC-{x+vafyD$;Gp&@X#JmOQ`(Pqb|7e7#k435BkjBpZ8Dc%Ahy z8>Y=bOk(sI7y~3+-x6-gX6N=rJnNDaPWlPsaRPB;6j>K){j5T@e?yY3SSwoX4%*HE z+0>s3(Uu`i>CH1?PY(!FEs{TwyvxK6$prRRTt}E40n|?enX)DSvh`PqF4~L=x;Lr2 znyyRPIZoLDYe2SGJN(g9M-TS34N%r|CL~21H=u+cSlRiHIdHs-={v#3{H0@*`ct5k zg~J4}#OvU_@Dn7Vt%4EOos9u2dx93>-tM%#`%X<4U5PM!U`n#4`IaQ@z&aeBFt^WQ zn%O37Hm6E=;c=(=Pt>s9p=P|i-Y`PFGwi`YOS?ZRhRug|U|}S3meJ95hglGM3z8hB zZb@dHo!felDFOYE!$$}&ot?6Q&3k6O9S@~XI=rI2R$hyjNcy4GP=U%@tV1V>@{zGh zNVNQtbQ&EfTRXDp5t4^m1A1V36-jR=3@r-uuUI8VBqV`U#lZ(=Zm)!$M+=wtL!cNA zsv>4%O(-gc#0$Dh5NlNpU}J+$LbE$P9qlBf5W&Rwx`XBTWIZfD0b2JN5neX}*s5me zXKr=qXa7#nFi=Ww{EWgi(Lc_a-ISx5QZCHvwwnn`R*^HK$Dn0o>~K>IxH_>C^8fR_UN z8i00VT_n9oV%LOsfAa%^bZ_8SarnZBb_q>#R~kfr>3g7hZsTo4p1j@%5V2Sx-HvuAcu|NGX#j4{@x4xzLhE=$cBc9v1c z@3e5R5tO~KbL&oGQV<8F{h33CX{S^+CIZ5RA4*i_i>Zda#C%$j zhx^Zf_<*O&GJILKp#k62({1K$ zPfjtTgKF^~cHl>}uW2E52h{cVkdb2yXSRDePKYt^W-r_nq?XJ!sDY3e7z>c&Q1Z4U zh@Q-D?(#>FvjN;0>+8Y0WVZ7eKDH!{ZKJu(4!QwM6n|W3-~JI9gNPw>(h?&dih>WT z8AkL|PuN85NfcbT0@$3ASB1US%x~47-~%0HDfgmI`0QK&R_8f`iVkwB$9&(Nd*ULv z9IhWBn(alZJo%AuhJ0-+j>L(j9-&7ZVcw0vZ3reDUPBulu0T6M;e>A9m*;-+o}1-9 z@f!Z!>9!RWa$=moxj*wJa>ePu=Wg4na#(V)6OR?~6=#T3POrdkPQa+Tr)@?0a-!LZ zo_K_*7tx=1a!Y_Slx_Ot#At|3+wGUB^ts3)z;QMo7J)9XEOgrtXEaV(yqPe66({;=hwQ z)peyk@OoT|;=Z&Yb51XPuauuJ2^P74;CijiAAF9Pu@T?uQj&wloCy|lV92$iPY&B?pZQS= z*u)U7YRr*!)SLdxM;L7kTNrzq?}9RC(q|NpSp2==CDmqUi#HhpG%HPo8@a;gE^u+4 zi#meMZM{5|6=4t(LnBFxwZ&iswT1meouTi?`4Xx%xY~XO!~|1po&=qW#D2)#6h1oj zW-8O0drD7wK5sU)iL1vx>X&`gLRnkjYJrv&q`l3vZN^LfXj21VTeecGg@x89`1#<{ zOd~ggwyewtPgjJHc1rwrpI%g!WkRh1{)K>qd24xB5J_~jpRDRyI74` z!X3QoQn85I!$h%W^ZjOl@Kr-qVP4SBQ3chjTztqwq+w{zZ_6;vpAx*d?;$gzH|Jv; z+U5p{FL%}Kn4~$jQy7RA-5*2a+iHXeG;@?F&duh`Hr>HDWuW^1i;|u*yMsEnblH&) zYk5>4FABR1Xq`T45fRIyxV!*$_3K5t$f-rTQ?lN-RUeMoZ?ilaP%9?Jn}#|ze;RZWfo zW*7FM8A%em#%d1{XR=EvRqm+lix2zHJncVo33BY05GVOT8?U>jn=Y256rqQ!rp^f)e9I4 zNtA&sfTsr;9aErvVso%@{eECEa^`2Rg*3orE#(0=ItT6BTs`W@IK{_SXHKQ19K~zL z#IQlZGkzyVBL%V|vEOH#1o@*#n|HDNS&`iGBJeFx3{7W?)a!%q_6Zmj*F1sJsB3eX zB}^7{TMs2K@PgVUVb9g{-dhPWhx;8Okv#gt1CT8l+4Pf$-}kX*@tl}HXj)`A`EBrO z~7?b)R7mBhnNs#hO|rO=UozH91gvedo>C4IrX zNgaCk(_P2*4nj6TpQZR8`_u}L-ZEW-n4KJOfqG^|Nb#Yp-_DSG}>>q z-#kWB^Yz^UtycfNnUp{GXwo()>5_Dq=jB~(W_Rdjx29!CFi>Up^AbbNDro1vOl!eL zj??l#_w0EZszmQtxOsdGTZC28N&Yi&N0+Ix^*?ukW02;3;+%X29)NX3#IOY&F!#>2 z2ff|hy!l$K-9-2qK|bN<{RH_-Z26}+hleyg0 z7d75rI(8kGfBK*6nhd&l(nUr61b3FWAkSv(kApLlGDU3N{V{t~`_$||35;eKZ~3j` zEZ*+}?I1B7YzkEnR~RzW)BIZ5JXi=2O7Oo#7#1(TuL7+s^?kN&0XSC*Uw)+H+8@OO zzNf_d;dPDW)m3>f(e#dXdV+VvZtbC#Yv3D~z&GsVwMz7P_fMC#d(ez((QmT=uf=*( zd-NTA^s-sd*AoCM*L1(s2}xk#6yhtms$uII7V?LG6`%Yq62xqjjQd9bHgvQX_w z6Ix{FVmknpe8emNB|3eWwd8E8YsVbfEE;_d`$czQNZqYqt(&fEPRB z{z2OPi^`5a>g^ud$qj4Fx1-Ku=3ia(qx;lt#5c{<#E^qzI@bETW<1+?7ev@^xcM+V z4w#LXRJ|?8Dp7Ht{(F9VX1(t#ViX-?Q@N~1i1#_dTS-25y6AohQfjqED#u&!nc@TW zshf|Jbg(Xp4~nwlVqE`UTIeS8pm4Xas_$#XR-ESpY>m{2{)1ut2Sq_~KZ4?R84?e$ z^4p6uvE0QqS7>a;VkwRBuZ9P6(~ysw;wF=8UY9IOWNI6>H!t{ik07z1-c2D*= z;QZ{NK7Lw|{-hxNhq3$@WBI>1Q)gc_e;ip#e{5l?_IPyMckk0Ihk=Aen8(7|nN-;? zdU7T?w)b;vD_y^lZ8HePt3>nti>vL`Jw{aoTZZ;IV=3+{N)WO9(wl5~Z-Hp5 z)25R}e@!O4)|;!1PQB`O}-Ncf3(FU7Tn2XO%;Y~Ox7{RX@N-9#~S13echu? zv6~{PfvU?_Tl$&cm4F<+D&pW;kyyU{F#6<1)A&s6;Mxji&9*D(K=i9$plh~@Rf|Qa z4!160#hBq>A^(ZuoYb-o&8r@}tnV&atYg49r9aGao9rI9pB~Hru=)5lY86JtbP}cF z3`14p!AYh$^mLw>z)v{my|5M87#)J&Erb=h;-`46Lw?X8F^3{o|EW3uDLz29FHkyE z4wm~mj&^NJT~R*g1ZZfq?)8<%%!UEl=bEI!i8S9&{l+@O5}+rU1pxytGdtg+HFtA^ z9P-Bl3pWGPoTu^+?@8ve-;Z7%2HvpAf~P?m2Jx-?J`Ywj%U5$vS91sHB5Y_Eie&Lg z?#-C*mGqAqsjDg}2EDEE8{*b0&b$C(`Nz{B-^VwW^?@|K9iQii>llAc{r*YIe7})4 zHWwiCZTB>dw2}R7H_VF^R!X3P)RuzkSj3J62;SM7O5KT# z{of9GcrAy)B({YTwb`8IxP}2ZUkSb}8{DS^N73`?VR?X)-eSjGrLVxpCYSVDewlkz zjULHzN~iB|mX*fP+P3y#n@61SM{+pig@IRfo^wJ0fc=C-pgHOxZ+RzkS~%Nw zVrXZeg_G%n4x~4Nvo1o*DpGQru`}eXS(SMF zDOAwildMyi5#~T-X+F^Frg0AZI8dy%gjK!?uDeUp6JkdBUFWsFD^d9*h(|~-P%pu8 z{Dk%|W>@=<7r@Bv|7HE<#lZR}f%RuJ?1Bp>=Grwp|BWlafASa7&WMhIA9Dz56+D|K zblu_RC5M|&TQKi4oxiLeyd7qotQ&_4`CNN|bxApi91KP{YyKJ%Ji8{eS-xjqFAZ2L zEtn^i+B0Fc^;6sVZ=2kAKJJIa!kz}*{I+TJL$&6;YRwbkp_8#@t{=M6A6Q)MO8-(< zS-UjQJBjf7^vKtBxzvzo{Xi)8AdkKo^MaMi0ApH_OYFqqPXq`vcPZ z+|qU2{PTLzsix~@TBdq8<;-SG^kz&b^`$Noguh9*SE^2hr>#uaBxspal2*Q~=LqXh zgk_F}{Wc(t_OgscN330ktz9MKKwR2aSgKZdYdOZ%cD~WD##?IMR-wo8qRTgP-)Tez zsN9_9EMY1e!bB|&M8BsUU$c`ll;xN3rQZ!^0_z3p&6^JIdfYpT%-V;qJ=<8j#ZWK7 zqzZm_I}WaG+MnwICKki;bA`2XbA`ZCkzDg?=D*($Fv@7WlI`m!lkK>8tQYl;Ts)VX zLwFknAR%aR<^7B8*zYgD(3;vFd}qHj0ZdI*fzcrD_L2arHBqgGSj3TzRHp6(rpOR&lB6u8ZEY z#Xj?(m*b@WLvpN@!Gw{LqrQ&OK~Z}%#4Q7-4b&~hjS{>Rk6CYY4W@k^wY9bcZbyv) ze$?bSj?A&cOZm-OhByiB7lESMKW&!l!rP(!uvUOiBkaog~xH^ZF5{uu}_z_=Df3RORFGXQV9lRU- z%Hx#dD7y+!O|^a%ZQJIE-{Oeh&twVh1xN#o7<)On5B!{3*!FkMl!U_hYUZS7Ty5@f zY4-0{y|4oSX(I3s{k}pUrsO|@tp5X9@0L%348vO3HvjeA47FhnZB<4;81Imxk367_ zJg}iYC}Dghc)+tM+r05xyo(zN^1haDg&mV%zxHM}wlDhVH}vCw`9^_nvmFsn<6~W>g0bF#{T*jv0GAa zXKW`o=4+lRd88N7TS0skF7uUn$%uuxr-FY*$_iT)?0iDa}*eUC(zPYdn5E;n_&q|_6n>o#zmM= zCL;dE&}`=jl2sIPvc`42OmMMqgJ^|uSZBuhQP^)oU8YrV4yXBhUdsh5 zS?do~f&f2zNrp#FVCS$Z7A<405Kx{cHSj7muDL%ZN6TX2uU=R|WQ*CC7PB^7;gf{o z3ti?v1dDS8i~r#7lvr^&T(O_wz&(R(3uuH&xp4?+{23{>n6hY|6g2^rSiXf3i=26b zQ8O+j0m{*bPi54U+HKP}f!`$b9nTAY84GM&F5V31#zzwBMea$7X@_%FY*Cx3il z@D!Q9ZJ!}-pxE|#zDFf(l|?aKLRZrf6y00?jyBJU90su~1_oFHIIT?OK;9lBSm7s^ zFKAUX?RBkTVlZf!-Q+}%%csTVBjeaN+bc@q>DjLKMQ7F^=P9-87Pj54bzK+d33GcY zI_Zfq_W%S!x_70B#{>X;qlwVO0k_1|hj%eD=?=BMUFD}h7(*9_u8j2Xs|e;x>!=n< z>(Q5|{zAwPsD=u*jgZFxOeySpyL=@LHthsYMa)!OOhKAm8UB);v224K<}_LiUIWeDpe}MyF97gayE2S; zRkko7UpC3hy{5tH)sNJl^bL~l#sSU1B8_-jZ+O6tmOR4Z-zun0Pp|r(+CyRexUJS} z^4U4;%k9oYE5_sXT2o?c>bQ6Q>hxnuz`xY1{#E3J-r|4Pb)j6%oATx#MJ+u@mX*{S z9UhY3ThJO$8jd*xgkP>en+CXE4sgw1{r(u(76Vcj0#ZpCh#U9`04wnB2Hq01;FPNF zSjs$9LK3!s>4Nr?o-KB7A+t&?U=mT|zJ=z9Hz4VQ?0cZlWHb8Z=Jju9H444T0}8RY zqFq??_2Kgs6!V2SbMBk)AL>uyV`PvegJEBb6rJeruR|ZE;^d!(15u@x_|q66B-|I$ zR0o&WW;<-Og-t|J9pn+?p(q@6CSI%Li9^K^P`PtNPFRW6nGLHico7>DE=hz7RF#)+ zz^3F+$oh#_wE}UZ8ySSS;y{PGuL|uIrWj&vrK}Z+&q6OE08#aEG9-VyI&~eN%8gZ| zrWTPbD&dwZ&8`Ar&r|1V*D0OX55%L*D`u_8Sd@93b@8}#@q)j_oWI42#!4|)M1Xdc z$IJf++MRujKXc*xNx1O!ypgzT#j)3l!)ud@51d+rtP;Ui_CA>K>QDtM1y>~n*S*_K z{*{>-m3o0_E)B;N7tab{m)9J0THVgfb#E-QNVr>MMBej<=br)f5z^XElQH`+ z?~|C#NuH#DeGSrD_LiJ&cR<;TZuLaCIKh!vhZnOY@~V%%mF2Y-l1Q>*uUQQRP%|(# zK?4Bh>J?3Ygk>_h)}**55rub$`OX+49%w5jg_KGotqYhh#p!d6W@+hV8Z`oZY)+P z$@htt6Sou~3ac6)KH}#W6TF(Y+7<|^3f;P_%REEV-QgXH1%~}$@sSR1`=V%H0Cgte zK(#53%^C@s&}v<63YD5CvqvULBkNR;aFuV99HR#VtL{!YVU|Q$y_-H3{6a+mq>4~Z ztDw$e%g8YgwC87%O&H1gKtDKV=P4)&Cs9XAumovOn;ewTAamvgmSzQ(7{GmTaK!ty zgzbS;bANuZBP8)@kfm9W<(hA(1&L!#vo^D)45l9nQXlUsZE#~R#%ogi#g^H@>37mueZmR z*=MJ$=71DxjecEJ;fq(vpH%nxx{3SdpKK%_At0&3C#kZcf>&-iVqx4An;n>fzR?&f z@;qf1bNs;9w5%!CE+_@C@qq4&4_+I7ISND!S`V%xfE9vnXpL>O~gu$h>a7k%U=XB_gzx03UBYv>4 zY2Hqwh(}}Q@%f%d|LVPKZq$RHM7_%{*Td(OJR=SNWRH~#Duv41MX^zTwH7ijJI&~n z6&{l32jBc*GF{T<=CLb|6Y)a3rFW)_FrkUNc2Nk=f9|jHUF#@q&t2OZrR6F;y54EJ zUgGv3_umnnJXvT83n8hWIcfO8g7F z)7$n>S9@Ew#xbU17*nvbY(*=0llPQ)IV{U>3gvVl8|!W4l<2QPn1LixCH562-b<_e;m7@u1!X*48?owU~40lFG+k~ZZ64U)?$eoSPlJ6dq=HDCC;+Nn|esTu#HOnEXg62uQihSgvwl^DuncGzE_OU-Lp&udZd zo-zn;v?Kxn@$oHup$3<^m)(RYJfGO9Ogp&qgTG!AijUniWnS?ICNuEOlnh1!i(NB*H-g$MUb^M ztC-XgJIcD%fSr3rDd||Ki%x||Tp7@8?nQ)Us7a(@wAyi+UmL`p$?1P`6mKJnO~^}# zYJ8=ThFIYn@lP^s|+2PPv*`aOL~MLz0r1MIsbA#JOZqYV?>zYj$B9QD}& z+oHr)VwJ4CIM6w2}n8MEM3+mgDsSUI{;%GYKcii6I)FC{U?l7n-uh4Js zOH^K=)?i<>K0W4M`ct_5S5{*QH8ovYL%Pe+ZARX+RK997y>2|D*A)>Eg6uoEec(V;&)WFIm&M=Hb|S_{XMcQ8Bgu5>MQIcoL0&qN6=pve z$-;N!Mo-I`B6nJMzS_*2tT(@SS&$|o6X*ch5+(yYB(|(B>-FY4TSo!*f`l{-Qb5C3 zD%d%`%$evKxuIpV-h6ZGP7RU=;p2i(;n3{pQue(PoHV%*!Ljdk#_k&W#Psul>u$d< zXNFy?H}x+$LKgR1Qlr_@2nRVq*77AlR{2mGIG1dfs%sPKRJR`KGY2 zJ3n$NG7qaCHC0m*VD~s|t7cx~jYb@X$7}6u`r!Ezg@Rj4pFYUec-WnAG4Mkw;=;A% zI&l$Q`QKWTO&Nb@htn{HLg}};G>w_TFW(`Q__7O?t!LK-wYu{c-pJHUkHr~$K80}h zH~f5}Un%^1aO==8@%7fJA;>Sot&%h)p!75%PdQ|^VO3FbU4X>F*qc7`@~+Ft$gBZ} z!B&8zVQ)feOH->@*zPMOf0n-LfB1h~W*vh>sV%9#d@(z@7FjOTC}ix-*lHC#Ax6|y zTgK&U5+c~HO-;Zw0-NF|0OR<#JKNK7-SuQR(fB{ak^ZKFQSu9*4+^HFVr z_ExxZcf!c*h%7^0j$_8HWaGK_Xkd~jYwCuqW@vx#U8FsCt=0MT3IQ)TaAKGF+pHoA zxZT%`u`#<5Iyy8fgvA_#nK0$H*8CITTD*L0uIACpQ2{;UC>EYW@*Mma^#Ai?6et;w zDi93Fju9AB2C5CxS@r!qez_rF*7rstyY_@h*yvNZ;}tmqXqNp$Yb}fHNG|d13JTr4 zyk$;KoOK)-@SVkDRU%xA`K_B`GfBEj8ss;nd)TO1m-*zViZRSCM5%A2g&qT#|N6`JB~ei*@1n z-1NIvF(?ZEBui_S!!7J{0%!=07fSC5b(N?M|I{PmDpAq!9L)>EcOgU0L7yH#53y!n z_lhZkRQc2CUl3uZSoQn*yq_gM`zZd^S&|Xq^&eoSuiV-JL{dUGA+rNY2>x0AdG={m z-6ZlTvhpB{&Pl88iYmKZL#nhw-RvEjue6EEGbCDLKip)T&ac1etZ!jiv%1>pE)7|BRJO|Fhp}6sj%Zl@CYqlPrx^>5+F0 z3kie%u`_BbvUG@D|Iw{WH5UbmK>UPTWGqHaahO*@1p=^|iS5468_(47>N~#NfE~(y z>j5_WeNAO%=?vpl+G;~@Yn-*(dUv*Lt)AL?TXr}AS5_-f3VNNjlQW^mvz9S*fmIMw z|9>N6dbS(uAML7H*J{13$*63j5YBnI$1w-b?IWeaG9G6Y&KI|VM#d?|-@l}|Gra7-E8yJ=yu}MD9QMP``wh|8 zUl+&Df3G`IS83;|4s#2&t%*IN|5@A^f-$VajCHVmu-jcLK$vUBfgwf$+S2D2YWZ^P zF`>z#(}?6o_6b$lI-M%(pAF-vk4AJlWZ|j?wWs)5dSrkd=6Pc#?&P#5vS!6xRHcQA z7Mw9Ao!)d=yM5p`IbEW#djL=C*Hn+Y?MbMQj5=07_wMk6!unIcZ{^-Rd+GlDk7f6d z#a>A*OUn7

#ruOJ-7B;6YTJ^!4i(>=TLpS@djwx9sx)!q2BWKhV3v?b@a4PnKQ1 z4#li8n15vkLi$VVa8xw4fr=i<@p<`qDH)!5z1qRK(*0u>NEBMTIC5p5`2AYt7l==$ zM~jb{K)nG|Y1Z@gM$N3JHzu=;!%^mc^1+x`haW5Z0dD?UJI!tLrT;$Z(RcKiA$jX7 zZ!>)=Gu&6Xf;^d*o%S9Y?LIV8p^i8D;1=%8NU+k219iSJ{9+aeoG9#&)q zQOav_+biq)ZH>7`xYO-FdcI9R2; zYFfA?aU>6^650q#+BLtCxt;?@kogKSfWA*SbP+sQv)rG)34KijkJ3_SA16K%-yQhS zcW&$4M6MCM$m`E{$9#q2wvkGJ#`U|W+RnaGWg+L-uXmHHGKN9gkY{*=yDFNSaz~r! z%(kN={VPB^p4rC{g-WLB2cdL-!Qiyc@_~>E-}k(tZN$$G%$+u(r*?ME!Ii#(^V1~^ z)1d>w-X3k@3rFG$<32A1~^YePIhF7%-S?k)M@Z22RO zCA8yhU)I$e8P+qNJhYF4)HqcZAPBlBxqla4R+ht!kU{tdF&X;AE={d>>;^B@Dw;-# z18w&>D?O8=W{_YBfY`8m7@>0nN@hkRL-nYcw1>}zeP(MOEwn3U(No{mn*!`hFTe`jwOH}q7>IV??G3c0EFl=+1AWeItSeo4)ckbN`_ z{E>D^t>^V8tV~Z;ALtSEWA;r6shBujYBy`d^#dd1|?+g$FjholaVk4+n!TtMst5 z+OlL3DS*VY7e2+d&9+8p_j3>LodNIJjqf=N(Et-VfHUQvfS+I)65u?n`(vAjib3G7 zO$){|=`baFYFWO%5vGPK~+ zDXVVuxZu(2%umKCSm-vy-r%>)Mnf6@8Da#$SA3i+LSW!9SuEik*#0EUwLu}bj1!}b zzPC z1zntw6&nw`TP7|RZ_G(Ys`;-XkG_z3(sJ^Tac-zkZqD63xw{$>tM+dKkBl@O+BjMi zba?Xk(|;8oYW&~as{Ox;dH*Wv0~PPKoCJzrp9@a2(MaJ;4Csq5Kh zNKcs*8n)Fux-6G*S<;jdsW;@*YOSOS-uXh|1e(w=`tIbZKW=|Y)N=b;$5>zcavvza zP<*&Ld8hj^x)8EK{&{8tNK!`_&u}+9Z${TgzWxD@e@l%3UMyJXS6<^^R#@ z;e6NV)Kh+rUEv>BxL(|PVsz?{eQu_3ZjDpjXyoV-ciFq15!HgZHFx(e1392}`0=NX zrpt08z5R}b4)(?#$Uz8_)-?2Jqp9(=w+B8lWpbd*$j{ht1LetkNYaV%QT@zx)2@aP zGiUSLz7-g;s`zHigTT0z6iPd%1ugQ$(a_U%q`^U0{yuK$+dAAK`zgq4nMe?R_;;XS zc%WdJxCh7(#ARlPT*x{+erjDID@$h7# zgKMRHhXaZ9?MH9nm-*;+q?3(t&N2AlF#=em$AGGJ9u^EIL=$ZFVS&!g)4@a^8FL>< z>r*us#8)!-Fw%qkSv}Fucuj$I2O7{wb8Js8ud?+x>M!vnoCy6Oat--Dng9qVmBwpk z@7IjpmoQHJcsfK?$%c^NmaWi|C^;0J-WeFDnXRrf_A%NFV&hey8uYEp;&b1)hl~=s zqf8w0=g~FZf}b6QRj*}%15K!xc?)(=U4I~9Y-HmN%hFvh#60F>mmd87zIUeFxiHnr zV`QQ{wdz^1b8f2e3oUa^nCFQ9umyBb{juhnx0a5kr+evHaG6i309eAu`yANEYsA0V zV%xzpi(XXY{V@;E@VDtP*>3?Aq#~O4Oo26?QP=N7qplhuu|y_rfB1YCDBy}bd2Mct z`l))l5tcIKfmi6qUu=H9b4uAZKz{%IDDTZK8<6m9wGTf=9M(kJ*b1%1@0-XIk7yM< zP5}=x77XauTfpflxB-f~5$++$H{_-fE(V@*qd&rZTd%QBYv2(T_UjR~M-(6J$@s~- z;Kehjx{yetHq6(2V?;7+px=49Bu$?wM;p%9^wV^Nt1xA*@S%mc!J37*-7f;ltS{q| z*RwjxfgYBhV?}yfxu5Sh@faB>{18$FItzOrJbx*?dNb?}Rm-hrLd@*tV7ImGL*6d8 zE%hdnlh?01#M?`EVOJA%U=MjmXuGQ`Uqp}&TH%pPk6;gxKj_GxH67TYjsoytHh6w= zP6QI1Q0nka+{-v*m}bTT2w_fIRDuLpPd7RXf6wg(kRk8rqAqZ8HB{A?PvYCby!Ee^9re*zEoZV_)6Gu&UNqlXk38U-3; zU-!<2JK;ji?PhXsg(J>|`D*l4-Qv!!*7&qEBdm?O>HzSQ27U^y-96zPFybK!5vZtM zHL0@h3?)_JuC<7SX{i_pwNk{tFgwvd0!kwsT|%T=-YJmk8sDRl2jPa4HUWseV=zZ-+AX%0>4e~1i?iRz()-!ic9Pr!lAC>%$%V}Y37hAOEIYiZY1S?U9cHjwn}8NOaDFpS1a8)2e{T$tCDQ9UfB zEzwM(=!Fl0ml-jOS z9`#@-n|sJMEfZ8Xz4Wcl=D^5z(Wb>Qduck|Le5({y>_ogeM%4JX_n(5o!p6OJLg%N zC^n+}^UjDK%U$E|>q+HPn$vei-r)%N`_~h74m?u0rv5lFZ6971y)&+CL&$4W*5dWb z)9c2>KLsp~QDqBFNPcZ6pdtf}Un$$LD1SZtE@?8&*2uR>wAqF#r9HKael`{5#DE_z z*mzcs>-A&+VZkrDc{dnVr>aROaRbmPV;=eTY%sYd-5NY%j1pkW z88!=T3~vG)L}VStd68(P+O_b;z*i5Ow0Hg(%k!}X4SNtfHespj|A(vhfNG*^qefL! zR0I?R6a-#H7!?(zBq}0OgVI|9nt)0Py+dLs zp(jHPNl5Job;aeQxb>bV1}f^U^Zx5|0iFS6BMzxaq&toDca^;Xp1x%xjC5;Zb3<&W z7aH@00lRx**5(dTlvR0qWgnADiP=Th`GLK?QjFCoX6$nR#wNd$$hU0S&wZ6_dbL;W zXQ|}$z)0WHSMtA|-Y=6)e@5b)Pxnn4T;Dg5KGjPpS-A}7VXNMdb%W#94*iHYAS!tD z5?X3*aA8&X(fU7wq@DW7rdL+Yo}s1ZJvuJjIc^-IBQj|83a)85BGKfq5A%B80At>K zkKluHa%6_->BSH3-cNjMe>ifEyIIw?rsuB_n@hC@MR%V3knI(=BOAywc#7MVi6xP- zXsVA`2;?*Y9KBbl>HBwH%^M}4bF}EY*zfdH;Z?0)JX&@wzWd5*54}^fQEl*{iLWUqRPbXbBIW@7;#(7ygK<6Z8o!JpUQ$olu;Ye1rWv%V?0D+HR4dX%YGT zs{SrHi4QRGu8%+wK45bDkC^-vS@!yvh{($1`Jz_(i@7g;98{X3i?lGQIe;fS~ z{Yb;4_jmR0*-uwU!nAph>J0Dp6RYkRR;vvrbmMNBBwr5v|qGAbXriMl24~ShCjsh@X&SWG4)o_2ZE{hF9)aE@|T*j zwS&sZa1TSaHa9R3U8fc#3<- z{BiRbx@ymOGxXOio3IlpM$R{9g{PVimB3R*d*Yz+N&U_z zIi6xvoDwQ<9eiL8cLQT5hU$5$c6S){PMH?OK@Jns-tM!0UeY_^*`5C2&vBIOe+yr$ z1~SX8j1CswU&=UlMRMIjm~rl&&g5IE`J&X3`n8W5NbF1;`#pQR>R9r#&?-G_97W^b zXAd7Yn~I*jf9r8URs_y%vV!oN#C^`ju;ni^>Djm>@Yf* zH=dUV*iE6Y^pW-(o34wko{gAiFFJr_uO$Q;JpWG`;u*noRSJlz=R@qCiA=+bT68SM z=`-H?>6y4zRnL0_a3cLPWyQqgePT*?=Kl5Ip!aibe`|iBU3*sb&b;~looDW5;T5w} zS;1zA@so)0--g~jZ&f}<$ZR3Lue|r<_te_?XOQPAcOs57?mHU(Z6bap_}PS$46KE9 zJlu>I(vnnsE$Gw4iZ+*IRBm%43U<^)8PX8)Vl@Aid1uKR6)83EfnQ0Ih@z-p_YVKg zxLws`y%|vw)qD?@KpD*n(JOi0|vBAElH!n|;mtrexjfs%2uTtJD&Yr`@ zxutpQEtnOLIa#?!=pja$Jp9lpTEwyCeIFp~MDR1EPhUHT1K}NyG17Bs?*!qQB>KC9 zVwa>}?+zlxDRX0{wqwC%y%DW@BF29~U{A$*$JB}wO~Z{yNBYCT!1X4AO~?ybrN@hx zgde#l+#B?MuiUR<2j~LB!DZZmYNP}-VpX#?{q+it+Ip!qS6lFwWdAYabw|^srEk~h zm+e2My#C#-4gC6jkwu>$Kih$PQK|6Sp!a`Iu$xe+sJBrVNAK9!DHpYVe39_m|3e6F97v(b%ldnO5rX;MVpzVWS`YcC zsMNhRF_mrA{3q*#ORp96hZVp1kCjHf0?VmdMDL2&Cs1p_$)l2aEzFjPQIq0u7aDGZ z_`@ui`}3&CfUCp`e-IwW*gkRu^mNyaIv=ETufl4S<0<4U&+^er%TaiMA z7_9B)4KLlPUWWAs@xKo9YgU6Ii-ygbW+#pn3#5Q02l$jhGhB5G>^F~iQow0PSEISz z1Q3{lYAxMg!o44_ja)veR}ArhZH8=uWci5~UNFBZG~hEff9^3ciq4L4@*3WGcgNEn zzw8I>Xm*q6{_)V7T;-ZwL-FVL2G82vz`T6BWquPWdEJ&-dk6kZ@NCe31w=0Em#qaU zhz*E;*e05F>-Fna{>O;NH(*M5UUiKFZ{?p!sB2-5S2RzU-rR5tOt z%M(371)jjXF8t>N=zOLu*5yLKQ9z!2*5Se5?6~ea;}HtJ_WSsIB`wnTp>f_BPUm#&ZsrB_zL{ z9#vRT{WPwi^gwSHajOf`!@Yeg!7Vp!Twx!#``fRF!BvVn*T-m?k9V++?`9;P%#TCM z%3fBB6Uz?J?#KnhTq=D|oD@+;fBW8;fSYJ_ZHN=Y>jaMu*N3X+flM7sBpHZY_D0U+Gn$wVbj%(j|xQAj* z!rT0zf5GB<`gJ+2*Mn4fEkHciAT(_bPUtzQ05NJ!qK;jkFbE~BecD03gw2a4O`pKo zyGgiv1{WT5xZc0-Q_Zw7_eB45?c9;%76Efr2b&vNmqtTwMD9ieI0SZ{Y%cbT4G4=4 zPY}!H3td}=a#xE>uXAMQk->$BwH##SaC=aXcrTbXES!Xz4t6JRC*U33n4m7Hria~x z`pDaH_c3av-0Zlzy?kDGMB<_!#;(BC!TPBkiS)1Ur^xj~?qwr>D<%B?5`bO?$RXTw zMfCHd;zgu;Rc{^_nX*s3vddkiMHCn?VkB)(iM19E-v%(;h)_Ig;bQ4ZlrlE0hk-dM z?P0B5d@}ufVCv^o^Q2H~say1_&$O=(#o1pAee*)*qL|%^i=B?6C2D!EJ1cq(=WL`` zbN{#}`_~QSeQpkM_)+V3zK>@#Yb6wS-Gk--AsbC*&0~&7=4=lTDo0gkB07E`4aiAIxO?qs5tu61Ts>WfoVQ&qk? z6c=}uzv|tEHu6~3rJZVVh(g6{rSxF5MJ_xf4JS!y^87r3=B~1E8^Dx6N;SPaXN=t- zLwGfj);ViVRZV}ohUhyyY-#>k2PKyQK^7r{z zO6%rn3U7%(zm;%rLQEQE7pNCKxKdzpWP5wtsj_z{#a9r%8``0%~A9nAq znlz9nHI*;Di8rBjA`XwV?;qK+>Zq4`s(AbIqwTDtBGIFF0FP?tnSufr2#q$iVE3vmd^eb@S}jl)X&YaaguuRA<7?uOzQ(R_;eo)>>N@JtQwg2bk*l zwt^yr-pJ4ft3tyc70e91sL5yC1+$DTJtdlE^p14Es+PIbmFB)DePLZEIztGKZyi_9>FGk^buG1BQgodGQW!{nFx{>h|Ql{bI$a{=eQ003Jo96es9lUjwk}6zo zBj~e1f+S$@{Ng|{(r&gq5Z&a~ZIn_qaTH!X`E%VF&6h@{1hl;pWX{v}{a$yvN2~lb z?EiJ_gAo$0(rDrDj!cV*?WrMuR+TM?=tzz2fe5fq?#o6+O!^-VUTjNoxC6|7(BqtK zDp%t#e9{9qbi9iF3^6n^Rg<@lSZc6iM^7a|yPd!dqeh4M3#?#k&Am|(uT!=73%LR6 z(53Mfa1<8T`^7YKH>qF9{IDCrHkVC8`6gQ6d8;SBX^EiS+wgB!Cla;FYGsB~`c}+J z!&s&wwbvE0OL5*Lt3`G?t6!X(g6@qbDd1FjW&pJ&JcdVO(wy}Gj?N1(vmPRpp&_ch z4IZm@JXH(e4ChrAY#F}6t1C&p_ zAg%i!&OPqv!kRo&iwfV4y(VPT&y*;Zj6w_U5jMh+rfn9M!0HcbXrqNCfe)3PLy=Mo zp(Udi&D93tDHP3l_WxY~%8tHid$#(a=Uf2*Gir&Pqz!&Re^BE1yCu5UxY=hymssn^ zzw^}3FLXGE{Sg0)4jEg|2ijkhH}a+N?tE8h;@gLx?@+~wjkR~~&OIIeT)Gb)y&Bhu zePVc0Uhu9Hox*$9Dd5WCbcOE4q{h$g-hU!J^F_MV4(s>1_ZM+c{i`JRDng9|rPcGZ znz)ywM6V=?RMUc?uzb$f8aKS`C}(T@%)+sGBdaLdv4(hx%Au9DV-4@Rz0hV-0;kB4 zjt5Z|@1RP7rv%d3p>IM4?he@1sJR2B7pW<0TBwi~mzwo<@Ozq*u~HenGNvo!Kx zL?uKm;8d~nf`tUuXYy#R_w|tnJ<35HrNhji#H=TvaKKsGC;N2hhlimwMxY!ADKX=B z^_WpnArF0pwQT&Yu;E0LN>YBF4gIF_J49xr==^=F%youqghpkSjW_Z9ME~0pM3ZYc zmB9c}(i}4kD6Ur;h*ALw=|dvVyZ@r6k)!+jT{qby`+p9Ma@^tt^z%J(ILf7TZDl8` z%$0G-1dh-OW5=ZJA+|8@K+!-wcBBE=*Xa=u6^#%9DTAf3d*dWUdaclsmaHw*qGg7Q zeF2{#+<(Be4q-i|PKBBoj?0{FuNJ@gYpK&DqAdTfKelL^F2&+lJzcBp8!J_EW6q2%o@3Hj$jyu|f|1Q+U(#^7%23oR zVAwJSZ`=~5E&)3){L1vA+2X1t6X9x@8s3S!?@*ogrug@AWIP60|Rn>kWyx2EaB`G9N6qfm7 zzGk^&c-AU>KYiBAM8BuN`{gh-xSaJV?c~&adsW}+ylR==@YrGyZADI4c9yRF=6Jbg zWNYOkAm!)8oq#vL>E#bo{PpIyGBTl6U{9W>z*Lxaa5&z&qd)(Vhi00fE^pOY)_#Lh zWPiF86>$?@e5B1oL1q{3AKodTw!W6u8Lq&OgKxtW@vzK?EZHsUhY5>U{@evDAK>@E zx8=hMP7&>|9#e?R`mWE4Cw{-jl8li|)WYsac(+O4cJE=)A?{s(dhzBXlxHSa1<0(= zq$LkZc_(OeLA#H-7y=@HaO$88|`_HPe~0`6v^__g2n0Jim=)ZPdF)ZS<)K)w0L z6-dwCQNS{lR9J#g>P)}955D>kR@A0T5W4=1%ho#PdJMLiz8i5x*HxDQxmw|jk--#z z2a3LbL$nW1JSX0}j@PE%BJS`MQzh0CY6MkpVNL$1fLbIaQOIr+G+63DkFEf`} zQ_vl`ySMnA{o@4C9}<-i2uIXuNNMK#Riz!I2Oi*yCy!gjGpR$yf!3nWP+&bMz=>ff zF(m8@^qyPnNTb@C?{J|ax6G_3Zd$)}GmQu87FqDkGfqwqVa44443ZPYoAbRZx7@#e z8tVO!P|Qu@A?q0lVi{ou&+SIW=#H*$-~V(xiLiF0Xn(bfIYB@>xRsGbKbp{40}#3+F?kdGhs< zBWf?SKiaTNXU_dr*&U&AZ6xleO8Z{G`@wR+@qg3d%S$Tm1G*ItOy%Oxx2aA<5Q zT(+mU^PqR#$7%EnzIzv1`W#=#632^Wd7(fTpXCCQEQ$<8y6M+1RUV(_mEgN5()m@c zXNzeF>R+{u5X7cwxQ%bHiIe3OwnEUxlZFG~0%7ls?(u`6l@$W<#{c}%(<3m~yVn|= zO0N2zqg9n9B@~?c%qm>3+hx^ben>$<|I*gDhR4m9jkA0H zJ^J#4&FSrjHedh#^75Gz2F@kP&Brg^xi_(zQA1Z>{jnGU^KON%*3hdn&=z;7ZVqbt zK+9NBJW`tev;rv8I7~L$1UYCxr5MQxHGs@IxFT*3FPnwms;+}Q#&ZN3AL8ZVGMJCN zNvPZj!lCARaEf5dkI#WP{Z@^v`dNCWR;*CN}01-{xL)lex zRY(Ng`#=YK5=*>Qlm^ldO7S>lVF?fSAd!~xz+)HKP7`?D%oD&B?tkuWhsm3SpLrl= z6Yn8g2>Q%aQ>*KZSpM~;teHAa0!gy>uO}{0ONsJ3%2tam^wHUw9b~K%0?%%Y?)7inONzx3Ty>11B@?g{MDG95&lIk zz}L4Nd@JO<5K%WuRhJdL?pq%c5^;!u5_) zW`b#>#WUFn6lF{)&zI>>MM!#Ri9k~{miGhiILby$CNHhdB%ZjP>?G7-R)aYz$u2@D z69X*PttNs8hyNp5WyVtBJ4G?P#(F6#9He(ZH@$_`WuAafiNoy>mY^_U>jo^Tx-BfF zn3On=9qvcTyJ{{A?{kY;e^EG`jO$U+ZEh3GV`EBu<7%%tjkJ*hI!AF;Sd7gSO*MuG z#T}#Br=_OuswZ~F;|j#rg`k`pYylueX3V_;`peq`AT37aZ2jMrQsnTmg<@x+8W#&l z)=5&!W6Wvc4=KCFIy@IZyrq$*Rks}&qb~ab?{3O#TdH`hd2#oSY6CAWjaOeA z$>DM!r-ku1)~qx|*CJk`?t6^?V*QGGogJsOYDYLKVlzGB#F~x~MK2+a5mhKm!NN{p zw4NQO)o4f1ChT{JAn+FJe}}&wtNtxT^Vm#w1jVl7rI!|*$6vEZn-KCiX;c-@zkZ?m zlCW@LE9mtw9{!pKp14qsl2>CboMR5s=o=XaL?C3z;%s8*s4?z@U`rXZHs{0-Dns+A4K}Z4roLb&?NAcHRS{^Nr(+aJPE zV`KU+Oy)`gcr?*JFtGBy7nZJ;${hY~M}GJRT*?yXj97Py@mS>6L6KUoex>9(wk2gD zTB@Mxa2#_umplfoZY#Em4Ex~SyT)oSn%M*>McYv-zc5^L8LnN( z!X~PROshP;%&nt9YPjl70%ae>N*KTm0LmX`A(Z$b!l40HRfp}P=gwfrHG-)P<-$DoiL zScr{!)f@1dDiWxA5_(D=JMI75PJVpMxG1M`^a& zRoB(4zR0?9;&JNvW^LzGCkOr|DASj}@~m%khw4t7^=h$x85I_=;F369g6pWC93ENa zOdU-tjAE_EtR{jdlmYKc#TZ^!*sh5S`GYT112z^-n7wR)dY2uwi1E4D*X#BKEL|Xx5@~~{x zYsulU)8z~A(;$=f4EARZm?XU-ULt6%S_K!bji~%(J8wl5D}vn_u_WQ3=u*)_N}6z- zpi4*}CtrkA{(@Qx!R)Kl(b0J{ZM12=k_Fr@UwEeC5!Qql=H&=DETxCwjm}{VCDQaZ z>g`78uEJayN{;+1-Bex?7}N^s)v$TzpUpASiqL@CC+*AyeccL zzJ=vdw;*ML{S%~ske(RPBq%o*2*(fODk*yqh%tNU#Amf&&TeovNFFRkvpEi^YO|=Y7jWugo)CMS9^B6!I2i3(v zO@>2$$EYp5X9s{rz{#}C2z;wHWDJI%Hj!OU``@7#GGZ}o8}j0F4#XjjE|G^^Xfuf@ z1fdAW^%t?Cp9Z#&O1gp7-@*kfg40lb#`yndAEt)d+G9xy_lw%%ReZ#Ce8iVV$nS8q zg$&E6H%GV)MgY@olh)fRHt5`cPiD3;Z~%^tS=905(EnmkZI zK&bNcJAinj*b-veo5^DyfT8xNL#UGUURI7TG(kd*^}sUfUF^`bjmN}+@<<`eygq|9 z)ecFJRb$1l%>f>njRv|()H0G$-NhOY(!_~N#+3=)E-Gl|H=2l$pi4nSL)C) zOZ@c6(dm)gn+*=TwR1ysozE5KzZBd5q1Y`jjta~DQc;l~k75EF43CrTvlbs6#eAAp z16HFs@?vu?$B>RGYL(5Kmz+ueu!E7q2bZ4^Y5q@ZatuV(vu+fsW4eon``Q~#AN3ZV{mmmr}IrLE0*Ihnbk z6ZY1sAZcN1U6}K~0e+x#_gKa>pd5UdcR6WI!ExQjXx*lipXtZXoMy!R4fsIaw=7*a zXSDXwnLXIObg4Tfk+Lbj=Bl;(7wl!BdR@YgZl8ST&E>NA^O@!T9yOc$;ptAz`oGur5KZWYP<&38_6*T4IxAoNJpZ8Q3*BR622i`=X(@&9*oFAA)k`#95$guMu1c zA?>;-1#~GGnTd0LZDhy6rSr`ypQL`6*bn%;KfioRdihk#ZPpadzfcjhowbI1%{$N5 zF$#akkwYL|3=oi7zm}+#8Y609DkEMitQ*WF+#f8o(T4NbiivGRlqm+ zi8Mv3MN9TEBYt}_{o-tle#aP5zbG%iHuA}zkSf5bIC8f5eR=5rO47g0F=={48T`-+ zl|3Dj796D4@($-m#KDbnk^Wzh{s&o^H&zXgo)1zj- z8}Jz5IUCxdQ+b{BX7GHdM1GCEm3y9@d!8n#+l(sSDpUce=>x@~dY)GbS~vJlW&7E= z^jvf4ncn%~P5L#LkHFX~=kDvJUDr#sskXM=N6Wh8T>QEPT^)k1-(jVFg*|ydU*U=d z&}C3+ru}7oZ$6ZCo9s)ApK`8ZIRV)p@$sUrULFk%_@*noP zQHw0lXzV`H+O^wzdXM*XoI&Wc-t?s2beBh$jcs=h{!1qQi=cWUn?%yyHzlU^C5UEu&R%kMP3rfQa- zI9(oF-_bodIX#yb&^%~c-yiPR2h8QwPe+Y>UIm^VuSUnKxOeNgFHNXws<}mkuFS0K zg9Eho*Wvl7k}>FcNNLilV|7Z(Km$6x;i&{(9zRmk=nttabKoe}YCS;6;a6(16D+;l z$It4SwhN?^P9xoECVG*J6LFTv5ui-V-R~%A1Rj}_Q{(Lm`PyoJ+AA*9Jqpgu*c=A> zh)2YuJ4u`5S8I}K$=Q-(NYYM21R2t3LPS8{n zFXT3^c8sFgaTJOC;vf!~TbS0_gaW$a{o}ylmuhYnMQlYXG7&wPwMKcS>s=Aa$p>y(T2S5EfT+}L8+tody2$$Ba}4tmSQ4x!IdFw=Ik3v$&pyVu|BpH}U9d(v^eIz`l!hndzSM%sx{zp_V4PzyN@ z>jFv~TD%GIgEF#_l8NFWxz((h`sI#`P_vxIu=18oUe%EqwOw9`k>zt2YbEnXJ`vVQ z;tQiW(CKBJOHhF;N1i^?Gvo3qa=L-9N43@N$ur6EmYoSt05QSg@O53T11m>srn|Vy z7SRLV7Wy@g5*^kX?w_%wv3vkns#%Vu+AenG5pul6Gm2%U|rLd zYw{p|ySn$H&6`F=b;_H4`U2g%TlT6~$_cPf@t9fg8)NeYL7pOO(=viJRcJlrKOK5w zzVsqzz_>-iAxmZZttGM}W zE<)mK`JbQ`i<-cngq%AZTCw3CpPlILt3DB*9-4i++5hu^x$&{lNOy>S?#-;V3lalC zC?^PzeVVhZ{H0u_2MqFe&jXegq-Us|O(xglyk%8{Wkl&&7YTv!>%NXUveEn6v~ON* z?mxa`^&uy&-2G zlM#q^xIb$698KIhvz~*mU7kW4tMiuvOQEZ~W22~pD%>b_pr_m=SPmJ*mua!Q%$@5c z?BC#(Ic4(j>kE>9R!isd!Ib{*;k(G@zL@X?D@fSVmZMK)Yg&zNU~b&~h+zA|W@n_* zL{WXMChw!_++njuQk0e3bFY_GS8xX8&M(OA%2Q6txLe9T`?tW(LqfeqzbZ16b5vCD zR|9 ztFR=>6LD!zgd*?Qa7t?Nz37Q|br3U#fAeFy(Ym2oT`pWD2d)y@(|cjPA63@>F}$cXPC3U^W$~7hFwcg;G-7!q zIp9l|U89<*=WDI}K1~EP^PR)4UCW&bpfbmBgFKpG9GczdB*0D$dPVij&4#oP4TZ)U3tdug~_GwH?o(*AX)U z*Cq{Cri*{AxDvlQ5RV`NZ#FANjg~xS4}UBTycy`S(1Ivuj=Cs1)(kIfc8uy&^yDaJ z><+9)luxD+b@Brf7ZwzSK~{Y$5mK;knz{PaavkSI`<@~@f6;#7W8rNTl*=<;luGJQ z*nGUjXn6)&t~bZRe=uyGt`$^`$pcbwt=)#VG6PeP#0qOhdBA98nSx_}Uqfp7)XqQ^ zBW_t1ORD}c>zBr00@y7>cADn|QnLafoMS6@Rp`}$dA^}4_k0JHK9>h}84spXZ3hDe zU+lZL7;x910%XwUGApU!bpj(o?ZBI_ydi3_iSN2~K4t1s8fEGzclq-)CZ=C}!dVF%Sgb!8n4>2m|0##0QjL%mmyQ0!1zojh+z7ofr}(orA_o zagB;C3U^ZO1hfmQXzwOW>LTeK!oxi4f;lh}h&AP(x;%_6mYVHBPTfn*qk&AFAzATQ zph@Q31kP6o3d#+|l={ftq05|p;Rmc>H!5@Oiov=~@rbzzauc!xvh=CNN#}M%2^bP? zoSF4zf3cU;N}!E;dvuh`#Gp{8FK-;1M%jWcg&ZcVBO_cP=#g)yz+&MM5B@)Zy6yg1 zsWP7F+2g{lI=x_vHY?cl*)<(5 zx|?_Kda;K0*fT$pa8a96CM?nBjIPL$TTo;IIO|`cR#H-Ik5T0f0}T}P;S^pZir7$0 zH-D||(jVJ1im?dug$5a<@a}OJ*6mlaOY0V{YYRGa_jdn=6r{CyI8QaYgwD6~xASZP zA}D>LY#BO4aP7%OcDdx3IJ?j~v&*N`zSvK5dq~vI;__+LtJ+ZXj2h6zF5n-|4b?+Y zP=3qyQ4&L!t^_P6T8ax2hy_%750chtQ98YTPW$Uuqho41rMV40Sq(nWW3a6~<&O*2 znU8pf92vXHK9={C@OCPH9RkDzm*vJuW#gIv1qFazHVJ48q=(g}c#Ji!i(S)$v2 zxOb1C`^B~NL0;`xb*&kZQ7u<<4HDL$hjd;k+ywSC>8t$9$>{b)_b7bHsx8-kI1%fO zOoleOFMM}j{)CPgsWnUPx6rapM=ffl_GY3NI-;~R0OMCOnzriUp8&d8MO77GCdIl_t;%&U6~*BgUlgM}rcCi?YMRBsR@yjq?~KHJFd8<5$RDRa3j_@@N>LFmNY z2WZuw{W68V4XE_DuW3_-vDexI?iB=Y^jv9#j*n^FqaHY^J_ zlIG9tKgsMwIFi=Lt-f z3X)7mTGk{^>JXe+5BU7Bm25Z0_tIkcoaxH3xmkq3sjPKnJ9GQW;7UBx6_6>i5F+a$ zSp7d%-mSRK`H-O=tDf*drMHaIV&a^cgs(Sz&>?l}KtFwDN3o5$pudpU-%2hOB=N#0~Yw$IcBZC)`v^18%UyDZN>pz+zFLH7W#y{yO?Wv(z*JlLLDjxI3r1{6`sUWJ?76xy zResnPiNVmzW$d|AY*qgG+EKZp*>2Eb@w0z(DRW;~Pw(kx^KXx+nTIv&qeFKknk_85 z1PlQ0d&IjO881U2JF$*4T2DeI2k|nj^Nn7tcokLtld_nK_75XPe@n{nX6ja#8om8Czt`Ln0I zREdt#ou><@`uvn9|LF}e{Pk=s^_gO#tmDgKl)4*}P@lUwHdLQIW@VGU2y8+8XRL~(I8b@}R0eTc+6S&r{X${cB83%c^RYiRy09_pH{Ig^4U-zOrcWpSfFKF*sX^dP3PJI$MA}XgP;zfD}AZ=#bZ``;O60x zi-GE=%Xd#1M+a$a>7k!*3%nJ-cJ9^@M;uA{$Y!MkOZp4XVw=rSOM4&e(tao3vN-T8 zWR0Zve=a=kZr;7L@5RbNAH9PaXWK5GMXTM0XM+4vjI6kiMgNmoXZdbK2ETCz`txQ< z2rqcXNd~uZL{BYaKkPj)Hvc1X_1@dJm z?0R3ID>>Gnp|Qy7a;V$R7OG;}h^JK@tQfsBt)VNE#+`ZFdX2v}_aFee?aK6!#+KGw zPlUHSif;ZmEZsCwkydB<03hWRZpCjUg0%b%;Y`CUuM>QbWrd_A zD!7l5cuKtC4}_==h2KDbtp(`c{ZhIgf1~Ul@uH zQ^uv|{s?c|Rv6wf#eC&?@;m`ZuMn52%7#n1zd$bLzcuj{Ep9QMSfjbZ1apgNS}h(q z4DwH&(%e2aX%k8AzZ42t%oG}B6ZV|Yk81{uGw%bWXgAjIjq?6`WJy;IvZ8Aq5PE}z z3IVg%vltsG8X^W0mxxmm7NSZFDegiv^DoS3ZXz?~Cu+rOwII7k=A#)|`qlN-G~9Mk zN61OBHrL_vpEZvdO3zy;6Uq-%L6Hdl>L?0Nf+@idH1E?R%VVxChQy#3o^tA+Jv=ii zan98xNfrb1#a@vU!%|bT-||a0FXD zdASHHF!b7C$oAx30`#JrsOI%ECq56}zgszR%)51AR@@t+@z&Ht_XKvdletMScOK)H zIU#(@;2YBKaP0wN3_OL11(hfw-WEy=cJO(U>>v|uM3x=Oc04PcjP9U6!O+cS3%POW=C(?H|Wt7(QoYWt{k7Ijcf86Kn4HBw?g4`#pTl1zRfo+e7bEWw0De>E3mSE0gx0w7Q-q{BN5 z7}Oik7(3t8&eyqzH!I?6=RvUYFtuoUoAvgHwLob6 z{|bE)^|q$OiM4p906m5XQpvn?Kwe!Qm9kk^Nqm%N2aq0mD2cc7qyc2~3^ntY`CnF) zqD@wF)e}Lv=K=K?xFTiytUP63jgt^pXHGSVaiMZHmnSf`jA&v_D%>!Ve;;7~U$qnk zbb%he=LkuqfC@Bq$UoR!kbhyYW2-@nt3zlmfNnKeX9RELZBhxQKW4hn=$q(rc?!#;@<$kFYxosgN_gfM+GLyu}{koYl zxovaXFx&U|{Jy{MKd<-uyv})_%g(m*KJWMQ^?3cqkz|Cl3oZFm{x+>Ph$)6BLstj3 zS^~PFyCxV-U6Bx>G<=`_EoLck5R2jkWR0T#*U!sL#GHU-0kWuPNXA9tMN-vayigin zU+cc|2ON)(U;=aaL`))EoZ(Ai^E#eI>Z6)1VKUHnP?+ng3CX1W32A)2$&BXJW<>&s zZX~ZZ_9-?mLz1?IZ5EmK#~i{O~2ReH}te*knh1-7eN||T7*UB z6jQd%NCbtDv)TID<+xpI4cht{0*sMtV@@J8ZD?xJc7GJ$^8(=Y{}YETb>a`;`4Jq@ zVyLqRtC!?^kN|}4Wg!{?_P{z;Ky7`0+Pr!>CoN+A2?4g8Q^m-FFn?Jyf62q=dser{ z^qqq7U8~zYSfI-;3{mWLy2!dkO(G>^ZP$i_g7KNt>owtMyB4nHlTJq-Na4Fi*OvD8 zN)TX!7!d&KgVg%d5`_B`MpTPn3kpVyz+dLkQ<@Qk$d&9T}o#2i_nZeV|pfL9Auu&$R?Bb z0STnx`#8m6mf{m+(J!^lJD1lLhxJ}2UsMzcYs|6xA$D9eV9DnZ?zAoVy&d*_!DE9~ z*t3&(8}+Gql>+3&Y}X}~f|(2cV|uq3CIh!fDx6M=tW(dC(2<9MMe{Ak^{n*J7J-}h z^mFZAP)?ivryZ+kiqHPIphFvtscLjn{EkU{dSV#WbcL9vf>*E5TEBk`KHKchf#Onn5VIaQ0>H4#QR$_RZ=ls;! z#mNF#FQnH(u36CqocVXGHREyflZo^v%iXoG$@M46P7fY=ImS9pydJz(gulX36pFyb{X&i3bbL~T8T5h49 z-trn-L*i{iV|@b4<9YJYkda(0f~<14tj{UBYm%jlKg_;EFW3r3KG~(@9zcF@%Q}ku zq&hU)HXFEoKch(?sP?trO9-&8bWEkb*Z9RnQm8~#R>xbqB&^eF%W z%)T-#!OFj}dGq0{!IG0ho9!v{p3#cbEYAw*qfcIw|@X1(&jwGn)Qck7;W_X>{ z(+AA8RxK*_i!gsQ-F5kqW40-2w!=#XZ?+7TnGKhjEn1O}d(3HH-uqF$EV6Twd}l>I zbi~8Ws0r9tz&m8px1Q}cOu#<;tf~^@lz|xN0B}j`8UlCumJ|maUl-;0k0+U% zkrDvntBXH3;^1<;%#G5i=Go7Hb#$xd;gQBy6r(=~9m&{c2Ebk>f$ldRH?(P;(9e1|8mD=lcU8?k+ROy*COCb4)HL*_6 zdLrx+b^Q3>aX<{~oc)(@+~4cv9$N~S%na`gGI0CXB*<{-1f~a$Giz=%H5@{ef4#m= zIGQ1CMKluJ&PFk<^3mvMG@5jhmKH572vAg1X@~=0W#mKy$(K}WqQH7KQD$@4(Y2#()A~}PvRLSPdnOVE`gnwxSfY(_G#Pl z)wHfZOA61!Qu|=j+>*h4qsS>f_&rR-QRXM4uw*dk$)+9IsePOhPB~OqW2XMxAXrMh z|KX?5#I{ab$T8?kC@B>9){CpQ)L8<+t&qyWu%GRMVvyw(n2F0s%rq&XBTu7NxTbMX z0STQfRVy-c_9k=Euw!O<7lTe&>qgAyf;&)a|5oKo@vVUqZ&QSlP|ZvS-J$8y9D+Q*s)XntEOx{2`h*PBh3Er{G`Ia-sgGNI+AQp@ zbncBg-~7NG((gKYrzhXRy|&B}IGA;o2RdougIAvS3sCbVb-tbD&jS$ykF9}NCc1K7 zXz&0gB($>-Um2nS-dVoSo_Pss*7Wopa2xH)4iFe)fi5&AiG3(*cMcbhh{(jRnF))n z?%bRkc%G>~^)j|O`>wCUWV=#WMjmnc8zu9YTBcuF*U?bltYd+q_P3eza z+821FZ+37QWkDo?qH8RIuV6N2+?QOdCkBERRIHrw+a#85*>eq0+a-EqV)>MRx5g`R zS-D7HQ@QBzZh2gEFF0)d3_5gfTCQ6p|Hhbz2X^Qy=JuJU3Xk;7cTcq1_Bg@bW` zTvgd;&{O)j)#2Wq<}O?2^3%QPt_hvye#g{S2c$xYuN4WZvcE1zvY)xr-~ z%l zOKLbyf9SS;BA-4sPO39bie!NInfKCfjPY&MUzP!FeB$~C*eRdg5d+wQ`LjhC-i-@d zo3C=hq#8Cis!{sfid>ufg$D9{zpT<`H9%_|%MSk(8uqbFYO6_pR|_+)ij6}8KbN}; z4@*PikLeffDD4vJ%v|C*^#2xjAg$Z01jpWw3I$}%gk2&k{8HA(CL$Yujp+ZWm1>0g zKTLDJ&8PaYO95#!uwDsuzJ=$k5VfOw51}6~Nwo_61I`ELOg^BGjY3vTKuFgh>7Bo% zfFcPez!es3cXt8UV0nLlNPjm-g;{3QRK=yV`2!Qye;;yN&vsG!BcY%ONl`T1{7{6f zo;Om{|CylgUfea4HP0C@e=slSNNh~pBMNNXP+>Hm&d-G_NPD6v*m!c`eiFGSzpfLrAEf>Yry`D4ykp{$woaSb>|<< zt2;tXiu8XHX)pS|YMYkSR!E|~Y&%qO(CMh+5S+vvRf0{I=2%NQ06*C#TvU_#|RFu#-Zv^K@{DGYl%LA?bZr5l^k>@!QeGjUO9`!hped2`%=gJXIR|{v$ zYpn+SD@TkbSceB}sJCh0L+qpApKAb)7hBj$yqW`!$3@FeFt4i%>2)IYZ%d2m4R6WE z&qQnQD1~vSjzR+kbG^NI3sA)E;`K8-#~i(DwBq5>nG@MD3-a&XwAF9(2<3hT?$U>y zXkc~U@463JL?2suRZVE~X2f-8?|Xh4x9xf6bCjapFJ5(8GBRoBGA-Npe>+}KMsyJh zh~CI=2isKgfp{M%a~CvzP#3!C(thh{^BFPj&r;k4HIMSQ4yPP>Hy7=$_-PCXSmw0$ zlydgHH^E)d`X~zrT!T(;%vSWGaP)!_BV&uF^+=fpgy$>HKjM{$xFv>P4##Pgb|j&u zJ&Z<)A`JQxxP1Fr{NXXc%+Q$lhR2B-Ek=U(&1IfvgYVBjPlqRciBS?u`x2wuONj>{Hsao_tyKE7W>T;Qx`>;_unruPZsMwviy zoq>72{K@{(t!0^dv7a?MmtH(DShO=(Pzx-rka@vt5L%qYuXDn*fy|TN(I41raF@Hc zdQ9p@dVbb7VO6F2YXJr6{Wp4=WJvdKyK&3ZpR{$>o zN2uUg$Cn#>*DmmmjQ`LY+snz-H*i6Bd(0i@OW8hOqD9XMKc0+nQ_bAl$_W?6RDWl@ ztO`hQV`K8vH}pl=X0x{1ScLAs&M9A~hmV*Fkmut}0{VB(F5%b{113WLYEv?sa+t9q zFNWEZtCW~)L}i43nqe4h%KME+@XZ1pKyOu6N1iw7RlNaPrDlKj(Hik37V5QWyJF2T~bsZqbH$OCo_m0<$Gn1hatlT_K_ zIBFr$s8hhV63s18g`pw7J6PQw}0Xd)p$il-@``3RYm9DaPt?(HE7jh zhokeODw3m$Ulsjkiu~&4XQQQafIYtq*wjYy;yEMw=dGopt)*TK-L3n(n`R@v2`Q~Q zgG;yKT7`3PVcpZMJFJhwrdyYs=mp)5o7Y>h9WxJ$(;WlHbdB_MmU~$d*S8!Os;$MA zZn?DbdBW?5ny-1C$=Fh^*Z+4*zV#=j^$%g@){av4KdWaefJ32TW?|o7(Yo-l@z>%D z$H3psX6uFNj>ERC*qWJFBgvBCd>(M`QSmP=gC-TjWt4+qHP%&Vu7ys=h|ifjV{Fjo zZp3mZ0orUW9X=D10o`ixjRxjg&qCi!m#GNnDoELF{8KFBv)j0Me&cZxI!Oa?IC$<3 z8nG6epJw$Udi^Uijix~QNlx7>7Uc`F4>o%HbFqnlp3PWdA*X8BISI|B!D+XlRP9FT z5Q^a5Z{H2sr4FJ6GnRIN<8MC&4qW1hPSdAYC{1@E>9aXnb-oddrv$qRX;__a>o(Ns z+}A5=&St^M+{>pZoXwqcme`24wUf&t z<`v>HTTj^;@?M!oHB&ytB|aLA_k4G>;m*f<^n&vVii3>5zyy&>;v@PpVa|2V=5Vu- z<)9(8`F6_4HT#qW@5?uo#6qo?WN?O-lQ-jQUZ+eL06Qg|Zg+freorX;*3hU?we?L6 z;}_X-XW1!4%*oE#qb%`bzys1-&U4e|@UG$MIN33+H$ZQI5bxP{VJjt79h4YRIENK* zDg1B5^JY?!Ia5FE^FQr7Eh(2~3GzG&t!Y4UP|OFsP#CVW4Nv^@27DI zoI)xw|GROaMqQ`N+3c;2SgW0vY=+@_kP1v&hp^aqK`dT*NN-GQ$E|{`Ld1+AjZlZc z=a65;96r*p!|qXkS1*Lc3oSY>$k=+<=m7gpY&BQscks|jD2V!m=1C&$nr~h)hk(kyERvo4&s#H= z*G2nFtjI)CO5=`R?3Qz)w(5pZjyFqOb{^Yz5~0kn?+ul*2?ZM}COUjj#TJac{1R7_ z)b{hbYM{6**L3cllJUz21Z`E^5H}z8F*7uLj(0RIQh6w!^>t z;sV6|1up}WJjr1i#kqn8ZrM2R9jX=l-V&-f~;d6WK}I>s*#HVAqsj3)$~? zc0_jYtm*N7<^uS^1-lPy8=!B@R&Cu)%4d(=*%R99x}&7h^&>`gb5j*2^TiC)DeSzs zh0onM+QG{MwW3*$;|L=fEoT!<=~~_U8L>C^4N;?S!UiaINl|+n%X=oBgLQOZN|0|aj53lY zwc|9R2h0f!Fw5G1UjvIRIJwb2O7mdd0C{{=(V0dAq4xe%1Q0;~Dv0^Fv5G2e$Iy zFdnc`dP}C9@#Y*lgHj*RV*TN$gNtQRUZ!A<(I~eux*o@$g@cPk)F#3oqHl@Mo)Yw zI_TkXK#AuQUheBOft<9pJI7d%tp`RYk^azS%sC{6lMQ(9!u$~-n;DHrv z7M8V}il2$Avzv`aOwB0|Cy!np|#<(C$nDs*c%;-u$1;G(_0-fAr-C&l~u zsR-7I(@O0GNj7Hf^>vu*y`b-BK)}u)zp~M~fJm5A@!K|$KqPpv=av!73pAHDmtU!V z-X}*JjR9-zAm)ae+o{wr^WkT|V>rd&e?zyxNH4cHep}$x>WI|+NT9)MKost{?WAk9 zXYAGBgdPluVQo)|Au-IDwv*(mXaUSjpa|+9@^M&_OBF-0H->^GyGt!bFqS>Vf}_m?SN%Zfk8Q{&-J~gKex3r3yUqq5Pw2EF z;JPV(!;OAx;r9Aw5_#C7l&cf*ZsEDh=#yo0IwolXz*+an%pBNC=qe%Ua3s%J_(kCP z<$1e?QMm2_+B87rO+o1M~VyqD+upF78l zTx)&ZAHID!%xq!$-XR`&mTX?X+c_}}ygU(tEnLAqpbd#9obOHR6Hw~#W@XIU7qbs% zLp~{+e%O8y#sr!L+9jLvn+P226+IkR?r3^1PR=q;t{-+I8}ecM<`BB@HovbxV&kz5 zl*ka{>eWiOyOBYlS8Xb%5<85UXSIK$=kAb%jkj-|!rZ>Jb)J^=r{)W|d#-J+9B%T4 zE4?JK%jnI{%oXFiW{WKs0Q)oK4a4kytKBJrG2lp`$l)8^AS7Ai?c1lMjpwrv=Sm;H zS<94Ty~(W%pH(sb+qGXURb`mmC!a88p40Av0sL;cO-E2dnjAR?*t{nFzs=vK$_dsEnw&ho5QSFEkV3@%eNP$GF`iQ=G2dEFP z7{e|-bSJc&qm_PKERqAgv(Mk_DtV(*a))HmZM|W)xcrv3iS#eP^+`RF3uTE#e$-EsI%l@V9$ln_9oCFQtnD z`!c?#-PfVto;4~}Ev`8Ye=Ft%$|;C7PEnJF06u|DyEU^rgtm{=Qp?np$H!53QiRhW zMSZp8JF^z0_I41!V=4rAEbWS^rEmNG-e*|eA$rMI3Yod&(RFa7$v%Kf#Z)9}}}`JvRLw`eYtS>e+Av<=~ldwaK!JKe4r zbj)X4zQlcCzwKMN|0iiEytwFem|1I;_CSDV40I#+_qfCHisCPxC$jJUYtedn-a-i& zS-qq0aon_c%Zq17yEHiE-+^5Xd0W$<9>+iNZv%5~G+t~?GkGn1|8a^@W9g@D+vC&4 zoXd9f)89=0i4OpF?}Pr`7`3N#>3%BTldVbVF_iR%RyCMk0lshw!9V5mg%P#M{7{Eh z$C#FpO$*oScZ$_@AZ5OHfNEdX;DTO-?Q=Q@Y`Ltf+7Lf2mpYP zhqlq1Fmu~=3d>cWFjENm2yE9RYr1+H(%8Dc6VD1@fB5>nyFh)0UNjJ3OL_O({i;4; z?Y0oHBZZs34XFs5ze{$bfZ!;CPHm7 zNo`E45PcP>COU{N=a?`5d_+h_`*uGf+(oX~0ow&SzHSfB%F)0B5f$oS+NHvP(A`hPpylU+g8`?V+wosU zSH^S-q3_y9M2B(vYh{qocjhfW`Kzvk;d5kwWI+T<@8P*L(TG7Lu=KV{Z9#55W80E5 z&(%`it>4%%$Ujy`drm|0Y5!fr&F7rGu9^$u2`-|oh+q6&S3bw7{h3Pke-@jYGwvzY z$4|JT1L^rtl-zgxiu=Vvy&T}O13|B344-@tmdXK&f(gh*hWWEz*Ub#k-$<9S>c^>t zR}5_ZfyvPB6MLB2R8(ZZGCRZXPwoNGeyW0-w`d^gcC48{so3f zn{^V36N$^NV~A0MNL5@;U`xKM{!b&_PUNAk`ae5BIEp-mKBi|e=gUbbr!_{JhNtG* zwQq~5@p-c;QLH`4W|0VII!H(Y_rpNoa++#SD+DW|ue8klJD%ic8D> zt|9NG%WCa-t@WjoQKQ>*1t;C1cjO38SaH5qA8&Vp9W$+^!edrPp3+iL`$gj$-w|Ej zz5At@6bcAVfX%3r(VbiNM@(Y1g}j)jaEhVOh4L7LFfek2$gp|lulVHd7MtrsanR{# z?zr*y-)D)k-hJO?+l><0C!v8aX@ySYQ*0N8v=`HyScpwK2tZ~Ah=rYLN2Jw$GF%J; z62L<6T%0r?$dQQ$s6|E{FWus$0ni(Or+P?|kCeZw1^?cV`aP+$aOJznPBKQ0bfLwP z`GlJ3f$VADhdhuIP>0ZWn3mLfy}1%oztfJga2@7G4GsdvnM0cy+SC9nJ}PsbdjK}u zQkRU&kGPj}U# zRJ2&+PWz=~c4(8!xJO|!*hhU7pA23(+*PYqB7&HIH{QcgtMXUOfqkTE=Zoe*}YVS7F&= zunZ_OV%wEQj>PZ3^}=ZTyljMwjp}1<)yLcCNC@r+cWun>+Q0!O;`cQ@8aC>$MW++b zgGzg|N_&v0UXy>5Kf&Lhur^NeQ<9L!^Mo3~pO{X>q!ht%^3Zz15%b~O^65_}ROSq2R z`JamG4a2_Ln@oj0ICNl z5J)xVw7;aP15WwdRgd7~Wg_8%PNg*KD8Y`TgxOAuPM0p{@fs0bA&5YlWRl=yQo>5- zD3AbJ&p=NDLNf)(cfLZ9JPTME;~{a}B?T3cT=?GpG8W(MoPvo_4RL4Y5p^SQgr;$G z7yzf6EkZeOSm=d(qy;ps=6EwB$j==Bn|U=6Q9>Is>!b^dAlS~zG`=?Qhdo5(9^%Jh zIw?+M{nP5Mh>MV?p2mIJAn@4r%V(T@{+jWG=uA6Dd`EIRtl%b?UYBUn2^i}n6^_iF z)W2gj_RKPBl_%4Sc$`)h^I!N@=V;W@MoW-h4-m9GyQBfg%Hl}0Qc?;D%;_t{mZl=G zTG3!ZKqRL|1Cks9m_mdMlJVd_LRS?d;?du?&i;33`v|EOl5QJIVs5WQJJD+N9kJ&e z_{+|h7q(@8N=T(ucT$BQ5msjrD(wW5)Qgu{?>kf9_>pLPZ{{?RJD>mDq{&A?PC+WH z{A-~*FW*>TQO8*?8BWm<0m#&a*O*Kq7_@_W&UtISYQd;pqqNp+;^3pYfF%HDH6FAUDdT{Fk zhW!nga+W+2ROI@aQPK`c>QcGGl3|JdC(!%+_s)-jb0%1oBboaWy-=FUfA}*X`UGyd zwoiMxPh*%TFh3mzU%Ds&S+OpdsCqF`<(dawY<*+hIcIUsH?br`!CcAuhLZLDi!(ME-8)N<;85SjYR($z zH91pd`=2s?}r=-1=(o)2`Jxg zdThXkyq?qEA~)6f{0i6y`lyiuepcXL+o5vy2}q0Uh*O#CudB$!NUW@)Yq1m3tB6_<FNGsJFolvu9Vsfez(umLec2L4z_TsBBt%*NzFuoUsb|T3&ywE>B>5;`0fa6i zn6{BzWQ(}Cq|$1_oF;CQC|m>;q@LsFy42rY?P*C)2OQ6^j!}Vh*+)l2Z~wbNy+Qj! z|9y@Wy7hZMLbj(7+*u)8GB3zr$ha01|JIBjbGM;8MkdWZM+J zN<)`ADq+~&yTN(L(|KrdU)(o5npmRj0AxK3`nMR4O~*VSC?LQ2HF#o%-Jfn6kfb@w zifv6z8+L+d8;mEiM!d8qvT>C%P730o9}B&c^Ag^rh$35)rPaQh2X8!|OY0+@#7XP_ zHrF(p>r#d10>O;(@!-eMtt+g<@bFqjdYqfe93++v{J>A(9dYbKAR~a<+Si05=aMhz z8Z2qYsJhvEGDS1Bf1bC&+i5-y+`0n)o+kN(Hznlqj9(QkwJEhWpcAEgHe3{;yo8}1 znp0`H4Af_DrPi9HUSYja1)g;#aMFe54fQz{{X7L9W|64T_+MN0-*UEpFG72roPZYx z&KU2)V^Ptik`s1il#GMyeK*%Moht!E#7A%t7oX7t3@=M(oTjsU)qn|bplrz}MncmW zIYi%D5j(>)3r)LS&76pwJ&QRv>6Hu3d-6B}YjF7qbA=k>g>23uuZH3X5hx%SoJRjn zSkhw6m>E4p&*R-#%)(^68=oMmCm#RAq+ZI|a{T`z{(%3t4nhw|I1Q88P3WQ0Yo|$= z!#!0!)TLSu5^d?qc91CCK}ZlGQr<$8Q*mWueol7lnl1X2Ff^!MwQT%}xlteh(o(G| z|Ec4;2~GP^o?E5pK4-TDW2mt%<~gr{5rpKm80yc9h5gd_Pmqt<{+GQQr#wdi|E`(e zbP{8SnF04{b5O#ozOSJ?U}Yos!{{7)!t|>Ki5`#2O}aSJi*Ip#OK$xX+EUyW54H509vF)87qUB{yN{5n!(h{qz*@ z1wu%f|D0WSim%Teq(}&2`t6R3W9NJ8y$^dB_|60Kkn;N#HHo$^!z(1p0fp2mXJ!S# z#G4kA{P-T-l=ETI^>GCME}xkPCVf)twzAHJT|Q@a``ij^fOvv>qPaxvcHY%bb$Qnp zvF+&rBlE6tX;9MBrAGcqz3}jRURpmU8sKEA>ss6O5ijcZuMvFDsNZR@q4_~7sv$fe zMmR=A2y=kB?T16Ki0H|B`ZG7j3WAg#k1pY$)bEzq_oMfgK%kYl_oJ`2I{0@VA4O;* zrydjY!Q zivjCp%>0e;O0(Kc>xWOc&XxS#9YK4MUAzc;XHfrem`OsT84I1NTJEJ^m?}9!YXykX z;;hx~m2hlCNF(Fo%5Fxt2}hB3wj1O0d<>+#mF=N2mi-yUxdT!yQ|_VHDpEn-V8 zV%Y$!>yeFL==-mF07w(xUP})1{wlRA9S5rFV$mJF-Ad?=dPw~02&I!oFGBNtV}Feb zgT=%-)--BC=YSD+RLVvjEwX!MmnhEngYIL=oQO~Jm4i2gl12?Z<_zoo=1fRV{yUnb zsNRjbtXyWH(p@w3!?3TS`co1KY3&ngIile1WsnIajLH#B^_BROg zDD&tj{B5h&_Xb&=Lh;9Z$r8$}qtufm`RKIMY^mzC#FJ}@uM4s1*2(UuJf-Afp6qnTJ@?dfCwha>L`e3aj@Pq>e|KFd&zA077l>wj*Ii%HjsLh%D3ED z*K0nJ{JB!JGq$jTAYz0vs+s+?m~9SotvAryT>Hd)avCAJ*;&X}C`emg8356a+3W_q zRZZ6HtOFaR2_WH9(g33AAUZ8X3hQ0q+hN?G)Nz5%0dlS(TL1qY21 zP8R+*bL=K)NR9z(jWh6nx8vD*OyObH{p$LN(>~IzwoDDK4gCwczU{Ggw(zK}XOB_d z=2KHQrlx-DxU~1##qaW6EY^GBsQZOQM72l1B<4=2nb~ zs7Cy%3HYMQ^!g=;w@p6cDIIMP4u7P0XlXlLb!&0#Bx$_NMPP;LvwXXHYf&UTX!%0J z?v2Jcjdss~%RanPqkV`s zF?^hO4=-DPKnPah2ErdeNc>`H`*AX0)Ry2Gqy!9zJ88i1!}1xB7(4t>FDF|Zie}&= zGe7UWd$jfIS6WmRrwR~u1AU36=Mb+0sMFC;s0Lz?*!nbaGrOmi*fqqG2a-v!wV*jT zb^tY)28jvzythttSY&GvL$GYhLF2BgbGp?Kqdo>N*K%V(+DF*~byf4Z9K7xMy{)o` zj69`dTsGCD0I=<2Vgf1cFys^)M0Kq*;PM((wE~F$|5l)Rfg3SpD}*tK&Xwndc`@fC z%YEafy>9E69l%@Wq_@`%;XR1si|o79P|`y}YUm% zw$55NGs&$g7>M_GTxoIKgNe5oFzbkUo_L0CND|^$OV^ewnazcfVVP2OHR)zsj&3~= zy#Ceh*%IxQ6p3(It#PzM*US$qtXkL9X`1w5Ev#DA)Ct;hTrNy6E{)t*SM%3~KBY%1 z4_`e?WB5KxU?{Yibk?nEkITiG`uF(!()NC1mrwbAzG-RFjoX+v=g*fieR$?%KD-+8 zEDgH+D!g;cYSoJBNJDT^>RPjR#i1C7rAGp8_PW9Hyy0!#<2yQx;<-lrAAz_%B9=tc zb%Qm3xsz+q7FVyK?Z1Cw!}UJJ7j;*dPsh0 z>8=O)aze+B&IF!!cRZ_7^}{iJxVYi0LnLd>(Pe^4d4M?e6;Cg8e3?)ahrkKep|?y`d0vu55q63%fhZ2Vcj zz9XnIP1FIDJhGLXTLl6iL(1#c@c}mw$soaOeUuM5ebiirxS?@rcpYv(faQbqG2wAQ?D(-5T$)5*j!xI>=~@ZuE3?FJG_zd#q0uK#2<&m`|$szfg;q9i8zrsLf16l}KGzGy0jf3$MLV~~GeNJ)t1R_TpfVb;=yG}77 z2}bLA)3!z%gX4v)0UokogOOHltC;+^+2z5j!1CtS-dF6lG{C(cup>)4B+cls@1p=F z#XHHZm=%xQkp=|l&v%uDdHm!*^L(2%0|en; zDZb>6gz(dh3pvfYqIwVYvMIqi556wM+SRv`3&fup@4ao`Km621&$MS>Ei|M8JM>4E ziSWbBleED$E1G+JS!-b38&Uy>vd;4`?m~{$Lk-ut zrc~bJzHzs6YpAHVJABl1j}Fgbs6?pHH?*+^Vue68l@Tl2j9;s@W)@3*o?|d#jIkBBoo#)L2WagHkxe^r*&D=4gZg z;U)WIr+ZX!6I6_p9=7SH^2EXrQnN#!}9ROi^buLVy#49FgC=ua)OAN3C)&eE%gpg(M&0adaU%E8$ZB zr9ewcul8sUAvKd7kk(rynuTx8vf=VphC7;3+-Rv+GueD+B{M4XVGEV|5JH>i_}?>F zd&q~{d@#Y@QEuDDY3Z;&We|InnGC&{fsSHN=V8G6aUkX3{jwm=odmG=T<6 zE9+U<@T1IE^B_(sFM{tKJ%0}0vJq|qeR;17+d*iRAC~tc>}H`u#GyIRz_!Us{YYM@ zuDWnwTlkkfkU2@83tkz4kfXtmd?6&=ZpkC&t?bGs7=eflGlhBwlb=DG8wmY8zG?IE z&!AO5<`-h=MirZ=Hbkuiev*4eVYg6z1~kaUr%yXg*WbwBbiD6X5wX$USXYcSl4iz~ zLl6=+wzGwT@V?5;f#U>KU54^lL(R6-m|70w4+q+Ji#{L#{-V0OkO02!^Mi+(uqdEU zOFIpboK?`G4hSJ?D{tAs!r98S0U^u< zPP&Y8PMQiXP)+A!461kiBmM)zGq(2@1svAOia9_#b6USJu#GP3>DfXs>zEi{P#mIQ zI~&3xqU4a@I#3s-Qq~4O&5g^0#Qvf@y~u^;EJd38TSWG}zYg?^_e;m^fFb#?zxak+ ztWgzgSPY~c3x=!=C^%`n1P-%4Nw*P@c31-!vcTM|^5KuHPGXV<{Rr{MqQJ_U@C1uK zpp1CEW7G@_*96gkdctx{@b+h2SbdLm>TIDk%YXg4bnBXRJ>E(?xc{_##Fw<{q%2iQE>rq-J!1XwlY!`r8VdDpTX_R3oKTqL=uH*6JbZy$GvO)=8$(ivC6~!OP7Els!+e5LfSI+wIcNoniy@r*#K%v=av= zw(<*lDd_o<7QgM@E2HhtF|f4@Y}4K(y`Kn^2s97e&gVxdGvrT>`_rYp-jOK|bu|&U zVD5h0wF!|ADc8LtINcpCU)Qr0zN;R-Uo{3!GD_bl`|yHYf6>;F=Z!npm!b z|E6)3ThZrOf5xNA9V5Hwb!hKk zUt>uTDeVs$+A}%+3LbmOWG;weVOe#0Y|Ch*W7py!o^xX`vLi9)>42Nk*!i5v}jAE z7p?gkT$mUVwfOb`>iAY8rRKa0NHDc7^d-acQ$Q>~>i9d87k^IWGZnCy@5eIMUofn% zn(MIy&3-p9tljCOZ}{2An|&OCHbSOl2Cz%zV-K&#Ltg&mxxu`UJA+oqeSzJpCIsrr zt;P+>)+LzAY~H^5fmLes{WC6-@RDb6g&)HmboVb!mhzGbM3usBT z9Dnguy07-V2q|aw-y-=0)w}m3n1}oc0#nQN3g)Ht0;zBqPp?8of%Uh9gl_>hGEDsvBWfEA4nkzrhE06-EZo@`*YQzI70qE{>4f{4kJ(;2LTep$?AfP96w9!W5Shv7;)xkfn zrp`=VlF~mG^hNXy#|!ZARKo7;+>Rp&&Ui7wPw(*AQQnZBdbYz~pf<}(Te!=}tvt6H zr>kM4Et{GJ`K~mVNmdS{L&5Sg4l6Qz={@! zpWNa9m#kV~82>cUNTC2oKOi`8F&HCzL!n@N$1(7Xj)hPB=)gmvl7h5ovO9CZKz(#X z6=)ftgh>P)1VKg%1Yh^5pRGUpd;Hdm2RC(^NC_@kDilv8+;&So z$r9(uh8r?`)#Z>9XKZD2h?oJO^UY2fDT6Sz?jxmVF|V0g-x0FgzAxB@YlNc!Mic`y z(*H#H4w0P>iKligoE(2)uODWq*A%w#9?Db?yRkQyHlVqp%2a*BXUKR|Ke%z}JEed; zjOQi_56zDfoxHq(OQL#&aa-aM#z3KM*Cm2TUKy{J3vSe#J4`*?Ag>kASEt$)7sF@0E88Z}IY*(%(f*vExo)OWx~9d{ z(9*)goP@OSVZ<@}T799+_9qRck#-n?G15TXSA3uL++n>==ZNG7*l#7Gg@QGGXGv+1 zC3Y-{LUBK7{<)@$TkfA#@LI$aI>lkBn~gOuIC8K16AR6mK25Tdt)Ra*|P6@nzDxMhDsSrOeG=9WZ$=tbqv|QmJDUzhOrHUnX%0n#{A!Y z|L5_1&b{ZJd+&MgJKp!b_nv!>H@J7P@F4m{L>4N=5|ReRETz~C{LWnn$sAo8UTu+A z!F*d`@nR1dldKG@3mFslLErkkWS!gMmk##$f^}cS)M$sOp}+L}JSb!-r~j?L6_Uxj zRITYiQQH|%VnkQCB_7Zf0Y?#k@@FdJXDSKWf02@YXvxvf_8)2phl(o|g0BP4%KsGCXY+O$&)1>7r@UWM!NW#f0mqIB!=eE*=_%HwXOp{@52&;O#HC@MyaG) z^XNa831D~9+*QNUv|k*#GLgSJd2XQeGs{9`IiF$?_kCQs>=fpX}IaTmYzTD|o1uy?O1);=Y0q@-ZY!j&l^9H!#oL?|p@6~g{ z7J5AYT|M_F|5R8j>EjgQ4U!Y#eK9abN9i0UR+J)n^!Uh-w1ewCc}^-ul;!pY7vkr| z2;r;-$6(zfVw+UFsHoHiCt~nogw!#}>A>csqj-y0))bl~N)Bre>&n%7uO81}qe|fz z=Z;H*{bYX?$5Fd>4cI;Dyds;Kw@ zJF(=dI@BRRIH;adKN~SrTLDLn>;(Pui}RP_g2~x}^Yn7ZiSjz;72J-nI0C+yu zyG{chsuoSVv^FVsKHu;~2d4$QGjixFfhKwTQhgAu4O6~q^5tqHV@gl_#saQJ@fcV= zbp#HI-QAL%mHc5DUm5F@U`;N4bR_0J8($Viz6-b?s@u{ULp>)}-9(jzRc^UaJ}d37 zPtH4RH#v-Ypq89argtOua?A(q6~vn(5KsL)cy9tXcFhpu)9oD%e3sNQ&74^$6uO>~~5)L98c zNUZzwnDls>>6YK{XBUlFt0y*<2cJv7?6!Ebs!6@L`?ySNjk8XuHRWQDUMKl8E;v@% zftF8&w*A@RYJKv@T8H(w1l=4wWi=%#;3YvfaMkA3+m7doF#du4&)_jt%bI5K4A%c? z&or?;^jWTcf~m!fR88WtH+e*1IVX6mR04K87v#3NDI3;YRwrH)xa@}O-R%Dnay31r z(u<*v&HM1X-?6?rxjN*4H&Czz$c>zm8~P|)cmKe)Xp z$><|HW#(HJg@}u$s#_Q`Bl8sH0B2V+dfns#Q3W=Z))O#f#467x0qv0e!WsKezsJFqJ+_)BY`MKzUV=ZT}Y{5g`^_ z61@ME5%hrw1o(^E9F3?&F%EIXYqUrwI>q$w9uV({!9%+H6H2R&WR(A890J6!&UuU8 z{M(y8;zCE)6E{Vbwir=UEvJrisp@YSHv|szfDIA>W&!Bxr8{KR&8mj9z_)u92654a zp%o&xBnz{G1`ocJlC;v~*#k-FK3_s7E zZ8e6?F}HRNGXJsNT6R5v#-a0q*sn$Qc!iJgMzVOB_2-SquBq-J9P)$W3lj~Aoa*cm z_m6H{`KkcJZQH5NY>|**B3!7dXEa>DYfQ%5mK@rxEjrDvK1Ko?=!KnRAVvXFIZI4Q zulM&K=m;nvh*q}Tu~uU#vgUt&5$Ul#>2>5Ub!*L#d~X3+-=YeGAoHXo6pl|PWo3_BxM-as5hu4>HTf_DWu6+h%kS{ZvNBx z9~0F6?j4};`y3zjGp*h63=gJOG2UpU22J0ZI1%u-ZJ9P#`5Ns)=|6MKAO604t?iQK zw(%k3wWBJQnvYz_CEh3i%{)73Yuj|nh7%Pa9a6eF0JqpZ8UNBg^6>(_y!d#vVa7)LGc5|1v% zSs;+=(x`bR!J=2QMD?)5MBLmBE*4nieF?!Ys}}T)|Exv$Kn!BC9arpJ!$I!s(QkaH zE%`|cSL`c`TKwu<|NnXZ0!4V#-m#4$r$n>c#NB%)<1Y0ZYVJD@q_ENG8R0M_l@f*Z zQE`a&s%fE0zSP)kZdb#_&pVKBRSg=-xjeV{sg`Em7E1-aE-X^3Ryh3Ly)RTXs3+&* zQ2;fS^CRl}Dhdxiqw|c*;yf+Pd2yZv6W=&(<(B_ktyW0SKJLwz+f4X?`m|uv2Dyco$tb#;$aqeL+e5= z3WYrcDu$W4Ue9`_Zk&#Md&x)+_hKLGzH^fbb+0*pVo3YtxS?ay} zuPOhr#3rW=>eY<5g?iu3J%hQ(B8PL@2kmJlB&|VgwDkveH=b*s&niBHDQd5YwBAZV zv041K(%kXb68Ab^)>ygCX_Vy{Z@}x(IcC$2Gb?|2OOU3{|KaDzMW{#Te*enAcS z+McD?6PO8O%$pnGIO6TYFe=K^mZ(^>E7G>Nvn@X+r+lOHc$+k{g{MrFog_?_UkiX4 zG(HDf3q(}hDj0tyX?Z9|#jM;@aG(1&h;^@w!d_(XP#tmBgl}0IB{gFKK$xQ5PwOG^ zT>&^Pdvea;x3Oj~aKKn?L~TN21iMv;S>|3jrAUonTUmsGRLyx5aZ9b2yeD+VG_9AZ z(j3Q|Sp#;_5F?lgdgKy?&`EEaJ1liP`8AU;(HPO32_LWax5xY)gSV;17rE}x*7q5p z$LkX<6*Ud2ij|ea6IK59Dw_P8C5%U46;1oqD*@|oo938GTp3Nf<%zAMd-{g_u+mbV zB2%`J9{K3<`SQR)JJHG_akRS=BYIGsx0BZWw8kr{?s?HquP4)ryWTcTVTxv0g(@RW z%sqvP)$?7sXUIj_l-s-`-U(fbKhG$7(h;d&Ih086qX)ToKNON(XGVpf`)z5y?wGm7(K5lW>^Us1!JMd!nECr2g{nJ`a)wY`G%Es=nror|!`0YUy> zr#|w^L#H7xxG3rV8yoqt(ekVA4tVVya9wtR_aHYSGkr(l*~X0B^{mjwVv1EdTYD&? zE|#9|c+rSs$Zq5qU8|c^_gr$!&MJO|E8z`&#?Jk)rngBx<;Br+Gk>ka$cS48wMC78 z2K&B^{4!8un>vC}p8*G0SQHd%i&XN6ZVaXIBEkI-fBQp9&u5Xt#zu$nA3o{nukIea ztl3LkFJmzMFI0ABWU84ZjKTdx#^o)mn3#cdJ2Uq~GyS6cxQ(05Pn{Q!J z&}UHS*U1BV*t5H0<|S8(v+tU>CX1CnFEY{UVivafP^*>CBW!L~a>ZC?lIU^N!kAbM zQD0S|%=lyIEsm@HgQ%c=>(aTSMh^?r0e%L|=!TYu?x1sw27Wh3ve5|mB>$bC4~MY# zk(LLDAs}4%_sHnhylsZ2V_JH>FE_0oU+TXT4V-}gzFOo@tg-NFSovnoyMp<>lkgq+ z-oa_pCs>l!)EIJ7kQRbp{r!8I@4nPSsl35wyF0`2D=S`CzMxN_JiW8xcf5mDLK`!K zI>d*>%hh=u-bW-)*}ZqrI=Dg`#gB?bo)0ZwXWXHkU!O*1kNZ|Q?;>-@2`xU_%_}Rj zO3M2VyD+=O@5j=iR`jbHh@x=eP;M{p`##zT%x~WPoZ07s%TdSF;o-&*3I|P4Q#1hO zqv4a8t|a>|LOhh0&i4h)gwov9|8826qz!$(3faA>TDT2vYO9`!KQD)ub-g!q=~a3J z$JE;Q!`(tCE@*$pq8LHzss`@nM8hkq$cu-3b|&1;J#zL zn=2N{PEVZz$BJ}s`De#gpIe zaMgz7cWh=j!*K@!6ba${KPU^{fWUdCQ$eT;sCWA;0S<2+9v^ld4I#g$OwzC2h=zYH z<#!2w{(iPO+cGD1^;3Ie%xd;1kELek=Fqj#NHv;wd~bHx5aohp=bs@P`D*?vc9*Nw zY7M=(Fq(wB$MBd{p{|_^WUzdWDo{hDPIHDMfne9U`O#=xYlcH>G!hqhyVx~$I=j5Y zXokbf6ow0Yeh<>6qZ#?ef*r)!p?P&w)EoX|efnakyLVR56Lt7taYnF!7`~-*=ZW>A zCKxmdjBV5K`B$cUw)n4o)A*k>-2u>^IXqQxDnD!&vg^H)qTE+C@u0N{ zHN4t7NZ{&JDJ}RZ{`LA16YYD&G9w%G+ggIoO{-dG$kAfDnMFYSqX7$**{f zP5fxmD`Fo!R)+~+ zqVeuVbWLM($lLU&K++Gw_bp+Ez+NnWEfxW!MUrarVvn=VGSyAF#FgCtQhT}c;H4n|B!OgZct@DIAs>ez@HA2kAEK$~ zx11NW_?PbNc1}HTp%x|H+K)z*a*!3vj@(m2oT*>>V)GaNHaV=kU8oTg6^O4b4S*tzHvC zUkgd>yZrs~#9pHGu`t^veKYhQ87Oi{9|Uj zjT0ab=x;E>;sFxj0@mgJ?W>;@#NZg=8A8I+K7gMB*5xRnOPM7*lDo}jt^6p>Ws=v; zTz_Az&Z|nDhH>GhaX^YQb@9e3-y0R-CbaMj_LK0sIwfeSXlmg&5r3TcGE&E|h(B01 zCrs@ZNOT=i*hy!&#=krw`P@lhB4)}lpg z=Wk?rkRmQOK}odyXr-Q1xNUnoGJmR(8&){g$OcO(Z&a*!h+a<}4H-p~3;o7Cc!|T+ z12A6fcUS8aukfV4@mvM0*VESN;L1LtCKixz<5emRXICrOzKg#rCa8lb&1m$=HKLP; z1(AJeEJ|n0u^MnQ0c{=g#2%$?GXb3*^Q`-#A6$8p@Ogb{N=mI-%LD1Wz&+ks>1I*j z0Mgik?fP77#eRJ@w%E_bXE882$Cs~{++f=4HFiuG+AEYzECi;k?KZ%UX&HIPy@mV$7#x8!l z*Te-;Jh1X*c<$1>+#NG0B(!yzH<$Eu*IE&p@GEH;TFL>w%1?Uwgu_Vta*;u>YzZvd z7#Du=XG7XOZRdXcjyXKsZ#Q&Q2+4=iSiOPdgT3kVd5C>}eC-y%>Gj(--tHal>RvK# zkf+@k?YWmbpdmS-+{Y&$7o@n@ZrmbA7gcjygEjS`My zY5sDwXZ;B}_44BqX0I`sYW z&D@uMyUAib{kcIUd{T(Hd`0p${&5|Xo(}nk&yZjXxT$Z+>g|J;}H{UT2}VC{_9#xAyX+G5DS;bU8g{)WEHOREcvseWfh(_ZJ_BXM0L= z$LW?fk&1F6>6W$}HED#|ma)WHeRU;7DP(mjqgG~epizo zwgtP@^~`VNH++PH(D%E?%<#DJAY;neP|(&Xpqun-LRMTb7wKABetZSSYwNmt%{8NE z%qFrMznZ##p*!`kdu+PygN%i%g=6RdqK7x)Oa*wmefw_53xS08=YoUhFlyo#YT`zsS2n|TznEiZkEg3cc@rU3yX_k+ z%V8A03+2oD05#)q?dh8Ey>c&00hDNzU08-$RH@xp?d}Ej^p|vm^e`-!)ioFoH;*pD zjF*>O7n}BdD_}=)eZBcTl~Z*el9)ck*L%}8vV17R=k;bWvOZ1D#fOt$Wx>*vpaj{6jo(Kq&6>eY}2=aj=|wru|hPjis>#Ii$y zpUWSVUC%FZ%DH%MB?&*Qn}?CofN$kUHMJi#HFnW^tN2hM&}f#_Nw*n&Bf6!aSlAHj zReuE+E#!?0m)i*7Ufl|4(#Fl89D2BTw>axCs#7T4o*#jM9**M%0}cEMOk`r>R91O9 zHOK?CA@X&`HbBC|nR0IwveOXO+?UofOZkyRx4DdtIPt=M(K7nXPFJdY}0Fk zD?vfP>mmIf^zf0lORxPChP7#Pzp9k)as{EKtavu~@4cbmzq8}8&UEjPzX?jS&0hAv zp3>&=_rXJUSzc<|Lb)UD#_7gge>CxMvtyavo)IMM`9XgIdgjoa13Sa= z%3iu1_GGh0#E+4?32IP(56Ppxx#Ydf>%D!R!kKy5y8%&>VK)WSA3rTR%P82E%0>`c zmL|5in+gF;QoXG5^YBY|65lla?(}#-jbc#bbe3a-b$T;n_K5JzYYS3ND{Gv=R>Qa` z+<4KI6|FOr-DW&-{hBqp8FRbB3c&SH>)b|kVW3q_bJu+(_E#QWThCA{$Db12ytZ1u z)2fDH#+z;DD7U5wFFVdr+(w-@S6XvC;JjOEE18 zf`@n4*uh?dvMeX&z5p5j=C0TO2z*crvS^*{cLmq@cfVe3NjfX}YkG)NjE+hyOLXuT zy0)DI*-d7G|!dU_C+!n#|qM=Ujd)$0+&W5`mQW4;n9m3wh^U=_m?inT} zaAM+n-mIco9ncKP(;Vyc9-2P5$FUnY`sPv=f1se6bh}*fu^c-1$2!waJoNFZTLgLO zLxMo+e42yLxGa6eJnQZ93jylLG^YX56-2!JJHAqtv8J0l2=qWgmY_r#qn zpm5T2%nXwt*oG}^J_=encv=vAI09`U9`KGblxfZhn26noQ8;TB(>jwrDTWp3L?w^* zvd!PB`XmcjN5YcQb`oQpz{E!i*P!gi13|~HA+iyZ4oDVAuwjvb^1Mp%&aab*@b&h> zEaI9~%i2L}U*u~@;Xb)|wS^XIq;}a{P(4&~EtH(Q%8<`OKlBiw%>!PeJvUBOQ(i_Ra!i zoB=VjBuWVtG)WBxnxE36;7p0`yqZ#wy$WO4%B#w4bE&Mo3RC`;HG3bKwXXCz&g4bF zgb?3_nDce5ysREN`;{qJ?KvW3h@f>SvELF=>t_$t;MnhGS$qve=_c^{qk>99{sQXw zxD8nU4Z%i7q*uHTKv6cYiI45gdHrNr?pmA+DnTxtaaca%aI`g>P3|E&Y$C$|eN=$2 z_b|3XPrh?loRMpMCCV)U)Ve=53TfT{Im*$xzn?Jb5WYET(*YDUCxC$TY%XNpkq8fn zRDV0RBPHdqzx5aRJSSp{e1azreeL@@@bF7vRKNmunL2eC?iCcAFY(Ua zo5r~?8!uTz7zW=Gj199`Y~$Oczv({Wqh&0gaA+Z_RjLAPjZHbJFe&%4`PY=szP)TL zEsVnbh1Zmn^^VFRv}{DERIZdqS!y$?ZxcqHRl;_U!Lcy5jVT~gKQy@9L4>H)>@Rp= zT?pwQ$HUsy`Hucp_3D{kow==MYv5Yy2O8D^)-ulyq-CQS)-HIs*i3Icnp8eajfaU# zS|7wQ7BTzKaOy1OaeoplD2G@}*js>M9|ISQb?H#lES@WMB_wZ;{==nOMfLXM@g8zLL;>r2~ZY%k>IV4#nzAO?}nX|b%r?OSsX9& zkA^I~mMSK{V`?quafK+)PZ#Wy8+_oj=oFX@<$zRagh7V~k6D_9u-cC)FFGPu+ysyJ z6kZvn;|tbnhrE&(JskhtABr=7JQNmsyxdXKN(bh}yZj@2I4P{q9!ul_q`ZN~POHMP zR30Q2@wcoTW^B!_4)@i=25MRt-C3{)hIqT+-$5qJ!M`czXM1{v3(XV9!=bP40!)i) z_;~oL{0g;SH1dFyLVUZ$cD#LuxVIpM#f%`4xsl#>+w@cA&`C)6YI7MaxGzYH{`7c{ zZb9C;w@WlzrQl1&pbq=JQ4wG~y1To_C~E`h1KU~DLC^7$7d03+k^ykx)l?VQMNiNc z9p74HZ9ud3r0R~Th^U*r$8fLRFFT?RN?{MknUUpvh(w^RfKK|K9E=HFshT*ele{~43OX|maL|FtiErm|J2Mw5`U`vmh6Y3*Y zo-+gznEY!aD+k~A&<{N$C~{JVb*=l0L5!1oX^o?iPc|1}450*-If|ggJ?d=aLs$p# zIJYFKhu-r_Dium+6!?ve980a)Ici5vZnH3acYQP2M5yQ-MReS8Nd?6NpQOqIp&D7w z;h~cI$T3tD=vdSY8Bojk(9LH-WoY&si_*{+SE0k999wXqWB+wIc5=K>#1$O+JNcc^ zar{?JnsW>Tx-QC2X4ugI3B9=US8xpVI?T)_BOmv%ahf5%2XCB?oSayO%N>h1Nh&X* zOTw6qjv|Mumky2#M+LXT8FKsje~q$;<5S=h{-?$#6wWvq&f5?)odiO&GL_m?)ubH* zoQ&@`YP_DgUNy9hJYjbZukz^ik^0N1OrlxtF)J;MX#?gI~h7<_ATh%4|{bonCpV( zDe0S4z1@l@G*9(yGD+Y3PO$|z^WzFAf^>X+o%Q>496o1C2zvI*E0kO9KK&F)^hw>S@SAHkjSo-ooSrHH#h-%h zSe{s64t(M1YjR zt}Ua@Ik_XFjdPD>g*j2o!r5@1%{^%^Y(9RSi9l(S**nQ|x;0OgBua8i?m)Kr{sY!& z$8#T(m<`vPfcx=cZ-vXT6fg)KuDetKjp9Jt)YCutd+BKvHf&+(scn4 za9$v$Ckj(veg4NB$iZjz9F8)7UaW_xfzr9$No?=>ieV;)y^Nh|Cu(f&u#kbH(?{1M zK$7*<{{+Pcq}r#4>q|KZZ|BeLadR+RmhdZI2v6?oHF{f`a7iQef?cl1JJ$9(cNP)m z@yWS>3nI*We4;VfD9CjBc^u`t-_)X8S4_Uo!egkOgmI zX9^;KegYTuFG#TjS%F!|elH*N6bxPMFMdl^EkZRoab%j_3s$kJIuz*a*C_uRMU}Uz zPX*zAJK4I%C`H*%E1mr;%6!yHBN@4Ubsi~1S$GR5A5C_!Vv{TxaOAMy;P z7_@ZeU-h!TQJ_+Tu{Diy&bL&h;I@_b*N@L1M{SLZ4k4e=jdJ$3JT5r0fUE~t$N^6X zyVqMe1dRE^frzB9G{X6hEW;$Zk519pfG0szk3{8J9O3&BZzsB)yD5mOL=C88+@=}# zu>=Tc_KySN;Cyn=xCTm)w{yH*F3uKUl*;ssw-a9spb^KdQ;d@~hhZ8=0wa*{3uu*iYvNF9)ZBoZiY|*OjH)Il1{#=fUGEr&d*W1Af-egF$rgG{TQ3=knCyBaWGu zJZUWasq+#RhtlmK*;A36Hbix0DQ&dXa+w>SZ^s+nL6dYeU&F#onQEC^hTF;=mS|;{ z7$(h(OFS5kvX{G_vu`dXwywRLkID_I=cCTI%&l0jdhgDzuc|#q*%HdMDiv1lNq1U9 z$@6U&Rxz7dsy+`1vnSwu9m8|29pAc!o9j3ZqHB6_okG}`-3gaCj(o${MUQ;HSSnX_ z#a{c%H-W>$ghbyMeoNt3UVP3N66$$b8{zAexWlpYRx@#-rGHx+-tud*!p~|6uV%}_ zqjI&5DKbNM_TKh6(bBNT4h#B|kYuKmjEwcRTZK;5t8KS*!ZD5J_ zI#=~$#bXJnfcfMaEOox^whoa?S-Njn?i8Q|qiEYGTRlHQ-~r)k4pT1Qrl9J}-h+&- z!_{HrxB}!Yq{J_H86T3vl)|?u^RFmwu&b$C1(?4qXN-h6f6C?Sc%wD=q7D?FK`i<$ zI%ITP(P~jSbbMSTYOJ}Hqs6ZlwALoBLnN!N4!L|`%FWo>7x)1Xwrfy7uGO6NHo?`; zE+>war$D~*2!E~3j;pKnVxpqH5rv1_VY|dprEP8^ABTIy5C5)-wVy=9EsqTcCNj2=s`MEQ(CO{zY1|cYD%58J>%oP zqNcQH?EsDEt(?%NbM(CaBO>p+e<%~Z^$`1FQLqVE$CJ5P%Y`youDV@o1B=oUf)#SV z)yl4G(pKiSfrg)LPy09~B{ae1H|gJd!IL$?YU90=-t(jiwx92I)eO)6dkAd z)4^?K=mVP?;9`n$RqbD4U1XX4A2gf6TW;6d!d|OqtCfHvAAlzL_+2u&XsKJ{kX=Zf zro+WQv|G%!4_HPxJX!h8Q~;2D7VY#1AJgaj2+z4_g1=2Gs$lbe*ZQ3-RL=@C-m^x( z>rA=;W`*g>bklC-WrzZ`X&kqijUM!cJXiu}CzUYSK5)?khGAFW!9P5@!L0OP3dGu; z@G;9Z`ak~%>Q7YISu;)lK|QMT0z0c(vFegywxEZ;A-!0s?!boQ`_@e3}xnWJOyA{Ad14&l4-luJmi_@7a!os=0jjj<_l-&ge@E$zvF4 zzO$7-6|}B!yxaRA%g*wvQfcsAukNoPTf6rFp#@6m8*({#c%(^}oh6`}0rVisvy1=o z`6vIP*Eqx$mt(d$7rmS3O}K7ecQ z4sh#&IJ?IeJ`BcJcBu4+bx>6^lm_ACfZ(artKH+yu#{^em1oCCSz7qKJ-}o?E6j}! zs#00d$6r*X7TW-lkJW+Z6-G3r1b9I>qjWBI*DS!z;d^?)=q_7;4@xxx#KWHef>g%Z zH3nxnSV%wX!ts|WQKPf{i_TyHh^N0nYMnkcrh*L(N0dMWK#bBYPLDLw<&nrEfw99g z&H&2wNk@PLl@z1N!PIxO*F7Dg3L;e1GUDrBj6{f6i02hYILpBa|0e+5gE<0-xg!9m zhFyC{egT|d?YTZkenHKtIE{=3K02xLWw3sd+pgQ*RZMiGmq)2I;SBJ|_y(GTtKYF*cm=QYNzU>GdmEP(ir2&kF%vqjUMAL)AVWK4#^7{Do6gFY(NZ<|VliD?I z>V;tk9cIYG+Hp>RK?hb|V)&kXXnz-z74^{R!9${@4k>J@iY)gQE36}tk_Zf>aUB9H z-1DlE?6=e~)zkl}67NvM6BBN}hmIb*cZPEX|KE!)utQ=-b=^y5DV;CVIwZfPuo4U( z|H1K03t46tG!!Z-{kBJVHNXLoJ?-iP=nU+Gk%E^#(_(vsQ_K@9h5L4dsY*F~kY7i< zX*Cpb4pl}Ki@O;on9JsQluMPN+1*oo93g-jtdIeSeUV={5X%67(fUinyu(UUjXA*P z=Z_4r}yvOG)}!R>YxE+f+lV5^tA}imb(JFX|7KT)Pe=N z7Kc&Yy|)DrTfm1UxXE$xLr*TPRW`0CcdGP51Q%U5p;u#9!`5Gm9I^Xxi+>IgVFRPG z)8x8QcxQS2vp+cE0DU;SuIR_OM_vc?2|dGk3yu&NM@6$5qu4mzA`t7Da6mgTbp(!% zw@$b;hu{E1o(m#$7`9%=7wDQ{mC7`A{7&~rK*(VT)^j)<-^9}*NKf13){aa(K0U)b z()e!du+3Qc0xDBt}m|_1i;u4Jzu8+x=6wL*lV5M+Jwyf ziMznY4uaw;r6kqkt%Y?bUheYN#Cnf&H3OSEgUzQ<4>sH4Cd5Y}2lqD&N6~EM#B3Mw z;ZorJ;S!p7HR_U#TF-~}xYRl8xc0aSUh`v--B5eBnV2=(V_<}4q1dvn=;4k)go`j9 zShlw4R9v&N;+!rc@M|Kh!JYHk`eA2ftT=aG4D<@RB&vzWwkKGbEx#20DsR-~^uV*U z&-sC8I!g0W6l?WnAl6k{r~pfe`6Sx8t1qYReW8ENYV5R(8Zib?U~Eq&^+M@Hm_)T$ zQ%S_wP(X4=oR#hPS#cMaf8!8X%x}eM%5mYJ!Yr}v@Ck>#laNjUlfyEK>!CaZ7$UWf zE8#IOFw$pOTtXQ_(LJtHydM_Gsae*Yz-W2wU)hP!C+uDkKx9fM0^_%lmk8YT%spiV!{sT%mThw4_wj4nc~1&4;&6`N6_^n&+^W0!7Ua9k?yGzu$b%33 z96?*t3iA^9a5w}3?pi}uez&zpC(||L^(kW&_E;USx!8`6!6ut+9~)YO64hhoN?O~K z8umepq?;9L9m?#n9vEq$x6p`dm~4O5%i!3{@*Jd_4i+llSdUpwI4}8U1*doC;ZGkP zAZ@?$NqHtlyeFn3p`q0=Ch{z*XN3T?K~!+;1QbM0z2ha*Py4HIQSy!$0BlX#R-EV}tM`|DH`ltHwd{xrT??9a zhbMfu;SGM#%K9P=7~^lpCN_gt2RX0TO^+cn5*2uiVHtN z#M)bsS7cUhree9%JyB_GXjYi!7XXn{o$0JPUbyym;MBG#RupeqTU2cMSHvxn{R84n zQ2;R)xCa(lL!{rZaEG$U0!aHR{brmiV3zGDdB|t`Cdo3#Rpui;r+HlyG+Pt!JO?or z#>NUx9XizdhsO@5Kq6nJftGNU3LJvkkyeWboVyNnv4Y%FrAEL(e(c0OzgR>r3sLT4 zsi=Uqx_$-ZHWo4Gqw?|;Mx+*wY%63%?PLH5(@SkDj1?B^DP%3Da1R`^ZqD8!dEy$% z5x_9|K3)bwvfi!hILe~_OmvGd!p}xALku!xEN+rsoKmOh3{z#Y17N4rMFxT4N*$uW zSdUU0o*z~Kzb@g96qjc3g^nQFba)44) zd-*cMvqHoGV)s03TsQpNNLW-a?~u|&NK*XJREi!ByOf|PqPs%Ki}1PG+mbPI52L$+ zTjFXa>V{|9xmSPdtm$72cAtD$?VA&#)*-W&u}AE7+d1*h8;?%@9BjqL$VgxAmpnjnoDu3g}CK9fkRaZ!6! z9x2hf3M1TdUaR_J-11UGh;(d9l0X>oR_{^z?)tT~$RtSeA~~=1sy>dKx4-*27@TGn zNebRRnHe9Vc<`O}^HO;LjEg8*pQe-)tbPX#oapm=u=w#o;j0RH)$)jELs2skFR{)K zWD8x>;*+LW9{qwpom56Xl{B>QOvt!dZ)9PPoPn@vcAue~jlQ`jA;qfsnbs}MD)_m1 zgd_Y>97vb?aVA%lBvedC-Q;`Z9x27j^7-%*Q!qHBjr#GagP}kz#pp9ttvCdT!jQBb z%!LqDFARhr#_EB95n14ZKvLMY-u5X1Ezj@x=A6;`^uo=ZfNjFc@1yQC|s_WVSe~;cb!5g#3M_NZqRbNS$J+q zt+iC$E~expl?i`F*J9laj?dA>U7Ws4XBgdUL<@bb0fe?H`HlTj=dHN$(Mz@9p$U?nsEWEP~9WHq3VWpYqnn*FO<) z>gs$v3ctj?w4Y8IWNxH)x)T`8GpSaEs#Pv7sLf%6wm8<5O<#kyH?f?fZdX&*7e`S#eR z*}tqUio-vl6z*WJoXX?*x>);lQHS)2T)!g)UtpO%C00|cM~WLBusML>W+Jjr_1xpu zF=s*R^Zjik^>_LvFMf*U{s~unqa$JnSd{2z{876xC_1=if+zdOqP>@2AFi}y0_LLZy1`edFlh1b=6X&OQPQ0+OQNC2fe#B z{`sjvCQ{?o^*KIuVPBfg!_pIs;tp=-AKccm%eN>pz=_tGY+g_=Rwyx=OSLKVa}n9o z=4D(YG-1}T50?rKTo^VJy*wX~}LEkeA~SnhN#@x%<90Hh)? zro(I+r>@0Ua1nk7Ctar(5YsUtP^ZaPuwTNFVYFGZnsrAR`N!vBo>SQR_jT^lV$CLW zr~7(UU+m}zXPstQL1IaUl>xu0N_8Ky?!aff;xWG^KTa{=fveU`!A0a9oLs=1GV%t* z^zuN^oz%3ZA{t40&p+MY6n&rZfU?X*`;1EZcq7X+WmJTmVZvS*voK=5cm7Pls%@sc zOa>3(Pv=V;A|$`J?oa&Y)Zen?KY9`tf2F1Go+)s43QY@!Lh69>CeL2D`?BlS5%w;^jjg z(F6f^d_$pUJ{{kreFVm@7AI#AUa%K-`UOsou4TU{vnw+jDEtuKMQ%wNj*78!1Hd}T^(af>k<>qlG8IY z1VbHM7C$;~B14L2Q`kKi1N{=K16BK&+beRN;VaMT{Ml@XC!fUt{7uL+r?3?ZSG_Yo zq28t{o)`&B6@lL8M%SaHWJ?3=sW*16?QPcK$FEUjD>W-+_MegTv_l@8S%L0ON2l%K z_jo{8{h~kg;}n?~a>DN1D^RD_$R{i-(9R?F0Sr~5Tb3%hh;Mlb5gvq+oJ5NK7up9b zk{8AxJhNrN{G?179lGBHiSro{}uJk1+Ga`o^y24^l>+ zUArmC=~Q!t?n->`YFdzpb-xh=yKdxwXl<_u`n-3TxAH}|MWu0K zDy=grNpHhOggn1wlDt^i>*g+KWKaQ^75X`Q=1$*az2#&AEt0T<|(GN?6UxHVSYxtWIx z{M?W^Qwo@wFG1oDba8FUcmMG(WyT*p-7e`O-IVz{ zY9pZ+@!8%<<>}Ype#u(MQ|E}lPY3dPc5ca~Ph(3rxJHF4e(05}TjRt^8~V5`t(C!w zLobz^fBEf6$b7Xg_UCl9UKagViVg3dOK|Ww>g95sR5v{&3=zs1))VRGTbZ}!eh9CF z$X{pk{BU;(H3zr!THN+H0)Y;-y~2NV+A0>)I&Cd5_kNHR4=qL`c|+4HGL;9s$E!P? zEhK*b`s3N&t-_{P(1kX}OQ5d=c- zBtU=wA%sv8ASAi3|Np)Bd3=8F?9A@$>_+l#c4uZYt_V~W$P<2aIx?Dj<0?0f+sOd4 z67tCEnOw-jCL!*91@$5(z3lH9QQxcaT3!1P$tpF}v!jCQmFzcE6N^zu z_wz@@cq6s|TXRP7%c1rm(;xc1Ja;eDKi(%Rc)I@P-l^b$a&4UG%6Ut+1hU^n{)5vg zzw2f(H~V^^>PM+Ub$)@e1(p3bYt_pje(!AtD&6`PJ|cWSNl5kdh^U8toN=DW=-_Xl z0_({o|5eLw_4J|2_kIcm8iAKBDtvz4Tu~3x&vfeZ6Wft+Lb^?3e$@>2Uh&<(R6zUU zCw=FajJnpR6n)>>^jUBdR6PSR<8?DrCjF;mMSX7@d6sVswBiQ>)`@>JPmcvju`j%?K`;=&8s1s#bE6A4vFRnU)>F$?pQMBD@Z*Mrzv2kOOL?!ZSr|$EE=i;P4Ir97LDv zZyNGb$m^i-(6D(qRd9(OXwMQ4%0O6vKY$q9O=d>T%goj3xVj_#F>cJDU{Q8*j?VY( zu+=bG(A6E*n83|Ui|{Of%b#8KJyV*jK?2R(`lV^R+I`x++jmqmbpClwmGm z1W1$Sh%SrXVkbPMK6kXbP-6@M-pngGA2rO}b|xUPmdLtV{#|(jB4jZVCQf!)bhTzV zk93ahdfLhOC}VJ&Ku5|L3sQ%zPMLPR%OWfo+Z%^kwTv1?}7R;$7 zWuI6S8Ukt<9N_n-YSP;W)JsfWj~(v{jm%K|XNA8r^lqubUpvRk8cuflJAO;_h;&m_ zlLawO8cP~%2zPe;p(W=&))3p#u9ATI!^iS3LH_hYp* zsNlvsAkc^|_Y(58Rl@F{lCTV`!4|8?O8J-e3V(GR$Lv4@bq;yb>dyJ+1(YBr6<#Jn z9o+e!IYf#oyoA=>*${5|8XkUzts7Eqtrk6Q-SVH2lRW;3d5#tfpOdZ#@Dpzhh_ob* zOIb%|$i1|K{w=^i4Y}?O;U~XWI=;E~p5X$^uz^)?A{{+}%f86jj*_?YFz5^8ca?&1 z@MxB19(?c=GeD1Jp)^apFh{(wN$a~#ZRwkhYcZh`-Jyxgwazsb@C7%(HSVK z5{(-k&e{DwN}b%k;HChj8y?-?I3EP@FC}kxAT+BUvLoS2z|K@%W_}m`RORiR*8_Wh z2bauIE-bq0?QER#QQq+!3lg-ZZ2o5WDBrj3|0f-J(b>70kqO{Z|Al7t5%aJ>wY&fW z=h$x-=pNCN8ABXE)lI)Un?dmmzW|1WVRYZLrm zf=V#cn7|D60`RG4^YPP;17C)~eW%nX`=m!v1w#-wL{A3{Svd=L7Lccj(8G;`tUp@H zDpZ7ie;_AZqhoS8JboH=?W|7Mm2T7}y2+?g>7^Y9pN4fM!SktE!f`3Ni}?=_=OzjT ze4dW(6kVz`HWe_xtP&qwSE2S+>J~)U?j?2XTwG=@!!^Fs&?n_)#e=?csWT!A4~?0P zKQRif{WfofyM83XK8DzpikBqJQl8ns>nC)5@&Mtwy-34^?i}S3vvI#prM3%u-%at` z&oD))+fb1Pnr@k2LPhRB=I0!B=?NN&rT<8osP9{(~IXzH}nK*Dt>Fj&YFD znXBjUR_}%5VitpD^kv%*7LV5mk`qKc2IOx=2rCvnUO_LuNceW?079Qw-!WMQwik$B zBl6su-;68eU80*eyS6Bt_0rYmkw0T_rHuBd6Y`L?b;Z*3sa$I8w@=8d^jOpj8dS_Lo#1kz_#u zvIoGa@3jM}^`m32TD2@s=0?c|3?}tvk{%g58O5oW=LePj8S!Wl!pHesO|!TpVDKgD zk@xrfu(h+57R56e>9LrnHtdUxN4;c&PJ5TFvfevNu+-1^^o*=WAsfiFpG}WK;BxBs z9|ncQS<1T%$etimw z8_2$EHHY^EYr6hF_~16Pq>1^=3`WG%Z5O-yHeCg*gu-Z~|xSi!Qn8vQGw zl>1__w$!%Jurw`wN-cfCJ_raC30bzVR4{g)vu?TXQGSP#jlbpRX4UX4b5a3axi8nz z@q?k-+v#t05CL%9AbEz(se4+OJ}pagPv})fZ*O*QpU?8=fh;|W^IkJ5um!`U?0sPh@S(VEYLS5ni5g7q5>-P0-S;+1yh?&)#VAJ3YA zvhd7{XHBIr`isSe<_X`8TXb7<0rRWKU#v0J#fH$MXJbT6{|P#B?f2Nz!#Ph7G-Po-oDg#g&5zW zS>B58H8ABo-Th_S0)*i#ce*YM1MltYbu%2;vcRq+g8+ZGUt0Qv7>n?*v{2P7vi?5^=jI{j9%Rstl4BJxcN6A{ zw0t8c*Q@Y)UqGsohDc~3!c49$rdQCEEMZNAm}RhJ$sYLT_F0P|)|l{0OE2VHiH`{@chvhq+ zG4jm51zMkyy}o{F_fl%dx8jzZ^7j9aF~$FnUO!8L2`iYTPqPZm_D$@*b8c9e^Kx}O z2RUV{HfCg%YJx|}tr&9)OLq%LV|Y!{JEbw@l>}M87w|HSiS-pwDW?ciWgW&7oZWRl zRlT}6K&sfgXdMW#`nDb$RCY4GI7==K;51GJ+DqQ|stiQ~ti!9h0D|{onk$O~@=LY~ z#4LjT$bQ0lSWUC`&D*rF07po@< z+ZLafa|ZNl zOC-*l?Pco<11JR-=9n^9n=8IGTEOS^;HdI5U{j`zmc_#Tz1NGpU{jr(n+KN*4)%lch65O2A`*crUd`Vj$N15rC=zsT18SOeXS|Q;TAb3A;pJ@ zH2^2v4A-8rJ~65q_*6SbV=MoE8k;rv2%DSY{{aJfN~dFl%`nnt?*zwo(s)dPuJyZ1 z)&aLZc~B7$A$E7-zpBL|W77LiF!?*}F+eu(NWQTWF`JAh*-Cn24);7FyX;S29X&r? zshsh|<~hl{gH_Yzujsnp_}xp?ZNIU0^bp!HQS-u82s&Z!c~rDOnJ)9UQx3H=@wDxj zP!7fLLB_V=9^VEGl8kL$kgR0Tg=^x4V&Ui>n(~o-2&R{&M-eZa)_$q&hi;3U)~JbM zx=|AAl$)V5cL?ojqtS!Y0mXnI_V7QvuB8`vv17JQ{gx(DPdjMJb(lKyov+$rs*2NY zH%)eO_N3eaQ$N>@{!l#ok*D_p}X zmt3X|9NqcW8_#?P!i1FBdatP2FWCyOPDhW{mPka8`mfsF$X9X1@|qdsjEM32BCWf9 zYsK7)*0|bZmNKK?M`7dttwEHZSsC5-i#XCQnZ6wyyqQe=Fz%nrOQR&^@UOnXctN8K zY8nqu!CWP~MBR(vz#16PuxDBTZ1_(qtC?h(NfQ7^kg{agh&Yac9Zg|ZL6SegwFz!l zQOLOK^dRx5;5$vz)w_ss#*V+?u?M<8Sy|LUmm}tuDv?Hd47-1$h7Ih8C56(_Z8Wh_kBniE&nOARp39S2946G(V0Y8I(gWSc-*R zMBTlJGLxtQpv@Y9z&gggC_x@R`IK0^)Bd4xTpup_l;~M$93#9Z$>1W_HCwt+-G6$H zDm5x@)8<>P0&LyWt@`jgVZUFWXC7MZ zoyJb!do+QD_D=7JlA|eNOBfC;n+}ycglqVpwkC$F%4G(SVPl-ULR&|>y6btUVW?~(&rMZbXsj> z>!o{-pO`i6wu4berF!Er8!_Y5jx@ce>=^k(Ub$%TCD}yYv6!;evUQ$57k4G7s)Nz} zkXxrSMkaH1+B3V~9_ob;KbQgs$s`(;fEym&56L=hIXYOE3*bMK_E4Vl%DXM*02Vij zD8HIpY&e!K=8;7a_b$pI277!+x!nkO&$?_pRe$fgVNP@~B}J_(1?iIRi_K`iToye& zIW~xV$fKtWF6L;x4S#Tx0R(ZHwg_S%PXEP;v6NS~ihb_D=gmkT7B2vm%KYb_k}Asi z&nt7Rs7L&Vv72Y)Ttkhh6=2twVWSRVqk;dD0CNWq3y-12aPD){uPsiqx!K+6gNM|j zZeWkG7H&mSJFM^i^Skm1eAS8N8)ZIEnUdd?TZ-uF@4(+Ut##cO_N48V2Z|-^l{-sL zG`k)>VFM?Q+*l>@5P3{mZM^;~xV5rdx9g&W+iC<{IXr2cyY71Q2b+H`&){X4*YIoj z>Ho#DGO>zsAG4Myc%ph!+SO7wd#Amuit?bcnyI(&{)6-4kGC^d{7Sj~$5)S^pZQ(5 z=Z59u$x7G=&hkb#SW;6uZl_Pfl^1MGuop*cqwUKzDoPF>HPQMthXSUg`R_v}k) z)E9Liq{G>c+M43rQ9tCKTN5$!R{nA2H$Iy$cE1v{D!xrkh<@T%t_gQ(&s_2B`VYb- z9`rbHc-BqbObB^fdbp+)xVfT6Q1uJ2;WqnHs=~IKPxTAe0dM{Vb%#>7_JwySn2UYL z89CBVjW}6GEPV;6DFF80Zl`i@_e6Y&>5l@&bp&Hk6R!5Ta1zR7zAWAA$4_fC2K^cK zFSR3g#kfWg_67G!-uwH(6&nK;M}wVTwb8EaX)8V~yX>p(F0%Tr?I|nQ<`hMTwaR>b z^H&0tqnGYI4yz-)mG9?Pgwa+aa=8XhA?M2^ihvpWp9$G%UT;lX0e)87e9N@YQ$4Jn7c> zIu)CVJak>9$K30dyB?paYR*r=YaA>n$6a^yb`#Ho%CZJkixA4z2DGa+^EQ-s-QD8} zgNi@g+%cl;XW4Fi!EuLoq$aJu`+X$Uq|LBh+giu3kD_LV4vBZlWy)ZtFZ&Zy833)Mzy<% z_WVY*)thc@-Q)f&yYGNn>J!Pp$==oA1;^_!jz?Rg`P~VF@G)6Ra1YvAIMGbl&P;R3 zy6j6Y{npdzo^8Y9_KAXW9v`y~dZ;!_&hqu^xC#0C>1mkXOaAg&hIojL zcMbdwNzlS3Sfuf|j!lfIv~w-zVVDzpQlpg9(KCJ~QT&v9m^~aAXmX*~l7oC@<#BNv z+$dynQo~ci6PRCM(;e#?Hpk$zNzRov%f=0Y%mhF-y*1X}Kj1)eT);k>rP0hY`KjQ0 zWB@gsc1-!5YX_#Ktoc=HThOBW#|{yPd>|XH2Y%T`=U?uV=`&W9?KsZ*KrxN_d=N{mjm-Rb$!7W4n@}?5{Yz zU}P5#G=!F)09_oeJ*GV z;?K5eg)GXKgsJx#Ssy$s zhd3aX=eN_>r%~ovOV-qmMw)kC*uU&ZaVq{A*a}ypgVwl_&yHQ>jjm4q0+|8mD|?BE z;xaGF^pdFuRlRQEA*;ld?6!(t6N7w(6iN(KLyEy#E~r}r)e8@8f-J<5)%ZfLcU~Ep z1PpIn2@P0`QcVM*m~8OP(?ARsR%cpAj}mdRTJfvmYU8{f3nU9IxTi$bD7qp5 zE!e0b=f@M~0^`y0)L*s!o*ikmhg)RPZD}f}F68J)iVio7_i8Q~Wgm>=1x~HW zRk+bwKO`}7HE-nS1xRWx=}0c?NN%GB630;j?rUAZ68E@^Y>WHz6 zb!&2UbXsf5z{#CJUe8zN)1vC!QZ(>H&>e%F3a z+Vd47lULI_uL`=ipaW5s390t)Fh2$aZ36 zIZ66P4OrX;LvaIJ46)K-jPy3Zgrc z>s+}3fYU3kAX_~|V6v-V?!e#9u6YVLQob+Z<&SbBum4C}TbImG08^%VFHRG#`{pHB80J?KPW}*$iS?*ULYyd~`gpHQr!zqkVSo*Y8+;|mD0Z9c? z41`W&Y?gn!t{zzLT9aTRT>ptFwO4d6W}@rP<5g8FuD1Ia z@>LCL1R(9Y-zsRWZJK9o<+Cg_7*Q|F9ycyY&1q|hAlAbFWygT#Fe^BqMz|^5vf!2U zQ>`kaHCJu{Kddp>dG4Lk98Y(n0%A>SILOh!f*bJFAZci<>9(EP2z&OH8`)2h3?W~_ zt%7g4FDJi0#VO^;h+DvGEN0*7&HBr@*o3Mfy!nCOAii>kasKOG5>#+}ue?fhQyU1G zEdRLY?sYLZr+2{~f-RVCIu;f+ZTogyX;(^X1Jl}FpidZX8af(|O2lNjhXwCxEYNWFEM+(caWafD+sr6kJixG~Xk8tk$`N5|YB3x(vMlH;CQ^ z8=B-gS#xMcp1IoANPrd!1R2xj&ZD%qa|t1)M)sp7_M=fT+8F#SfIetmX7KSjAS>8N z6B~23G2egQ9zrzS1CX}0J8zHnXm|zKTOBhJ6@sx_!AZ?hfS*9D@Ld+1Aow*Ex;O9W zl^j$6C2j& z2@c7K;($@LDd59$YMiJjDG2x@q%=7gYNoDk29cn&RT3Vib`%m+O@Rn}Qg@nE^ZG}V z#M9Hjl?2(tmTl!o4%wPU916zO^WuVum9~w{KdmW6QihZ@Og4aF#O(tD5P(Ch=OqS{ z$9VV0O~B((UfOKreZiK!@N$NuHBBTQmNDLxAHq8loDL@fjQGtn8|!vs4GtDw1HG(@ zl8D4qCR!I?)!e8ftxY_djB#PZ#06R2rP$VKT1Pp@k7~c$Gjez+T^gn~4t;rZJjN~z zBRCji9HuQo=|FMLHW9!_YsAuRo58xmejv+McO_7EL)QyN99{>`zDFzu#z8O&(S?O# zHx2eq9eNjWWwU-A0(<^r(xPL~JbwpMXoD@vwmc#^F#>p?!${zbb&9(6Z<@>kdY$mA z21`(qMIpdu4q6)le!ou1UINf9qFylX(AsZr0ixqty4ryXAJ!U+(P5XJFA3W&WWBUwa}>5MMHTA`TDB zs|4>KKGT&p->rcS<5*!B&@7I|R$^p7kWOaer)P(7B(`61GMc4hD$U_7BhQ6t5x5_F zQU5}pAm*7I-9)}{8bx~n+_EV+ZWVR2bAo++g$b0Pz=;T@h0veXHBq&bC|tE4z))Wy zTKOhV9Zy5y7l~GEXswl&CQD1wVDo0v;Gs%F1Z?lvc=0;Zw@V3ASzW)XuFG>^^oTO6@E@HwwD z(3@Pf@5AVqCB7y&5dHfFa$-hdBG!~rt56NiTqmF|!xTm*l{(pHbtP9FO7~Wsc{Mst zs|xfpXO#fxUowr$s`66B_I(oU^Bhr|ADN=os%j=k!}jc2<-!qT2=Ffi*k*8VvCWEF zGqBhO+yo3;n+1;SDSwpth&x>sdst-Dbvdu}g6Y%C_wKc)RO z0ZzdjLejKDKoeH^JK4iF+=K5SHEOf12?BN|QD{7n|mI zbvE25Hnuu8!%?S?Dp<|9f)kVK=c_t|n_^!4DYzlUhuYX`9oVbY)T#*S3rXPhZy^Qi zXT4wss==6lRyqx89#w=4lSnahCY9Q4f<0$GLeCz3kPyPUyb(GZ1ew>a4Exv`xES31 zXLpKMyqh6X_eiczCu@JoQzvp#IhjxDfxG_Y3X~dDHIm)QECJzVY9D``k6ik^Z+BMf z17h80>(2J4K*FbyI7l)p^8;FF2Y#=`Xdo7*26V=(XB#dmX|EW>NhUnp(%Z&JaowNI zT;)^Oo}y^C3HJnj6gg}AQB48yVMNF;_?{8O*5t$dhowL2NFO>mDSvuh)>&gD#45(C z6ZixkDln|QA3Q_3zEM3(p1u+&(;$aH%_nyH-@PXVK~O%~8il?i$3f2e1;2ruojAC< zf4LH(+;*`?87!!Fxk2S9ZT`b${_|%gKJAC6{;6}>PRofe{6R3SXzw`V-LqLq7h-dsORuDo1-NqvcyBz<;5=nB>#w24KE{}*&w z?P4WbIg+^~RYx=k^-=>hB=3WhlX=gw9E7w!Xw8R3vzIQ?Pm2wGC`EDZc_GC4_@G>S(JRsy^Kg zKU976}|&usTPMCF=4jQFx& zfJsALZ0V$WXLAs^9CJtnfrj}!8RU7bxnP{{H&6i>a5Qk#Vt)&i8m>EwRpvmR9I7nV z1=)=G}DzrYWD?yYNNp9AGHg1%Rv056ii-?2vns`6=|mNvf*o;6-AX{`_Ik>>>S zldAGZPps){p|aw<{8{>OUOt*q54`r&wvdGLK`QT=)mvsN>gw*#y8TKdUfmfXLX>z{WiXoxv@uOU72H5DRo_r_q<9g;fd_F`EdN&^Sl%=brl_D85#?`6Y_z7JAuE4VJ zKR1&ck9XD=8c~@_AS+E@omxr9*cLSzit?K;06lr^wHfj=dPYIMqXUe;#;M^GdmDhf-#Zel+aI$eX-V_~(lB zDnPon36cC17NCW?0Ds`Gx32`~u-Z&cxP^QDBmE3Yh)un)r&l|%(`lT!bEMS#nYz=s z^>l^%t|$ESzP@%HyOSj|@qAylit*Fi)c@}z6kw8yfga}L0bm&P1;fTU@LJRD@nbLc zK}~XpzDh?ac57kX7pKhV?_UJURB3-&NZha+IzK>o>^^h3v`w6)CFYEBYdL&Bl80*M9LI1V*%mrD?R&39x1M@R~zI-H)PnOnPHs_rRQp( z5%miLJp>xK`o#}%E$O3_DNyDDYNLDAt8WYPJ>u3;%G}~k6zqr1ToUZZjMi0T4|r3% zO(}C{OKDmrb4TMA(1A*iw~>DnInM6~ksl9J12uJ!{~|xl^DBV=>mOMrHu z8r`uI@pwZk@hGzs|B6NLOyVc2U95v%!tos-x6G1+w!IQ=jvx*%a~W!Q;1PgyO}f6F z(%z$9{?pFpvk7V`Ns=5W!woP_S>hu1O_^=t2QF>CNvggq1z*I6nShU^w?~M;a9^zt zn$pTR9w4k+z2?#8QKAHBiIwXG!tpiKJQ83X9AEe#!Pwzhcq_s1!`;X_*-I?9Es}LY^d#N*xFr^DF_6RC^JlpXhBQ>Fq2-7ckUK>#EdGbfVbbIG&&t zW_zH*gt{$xfYiI70o>CXdI`CBfOpiYqkiasZz9Si()?Jb{4)Bfem@;m>hL#Wre?t% z63%|C69Dst3Q!D>l5pO+Kcv#LaFeNhSzT)-AQXqh zp1lUji*5ZlNuGX3l>m&PKvhEn7&JlVNRtt^D4?$8fQSCMEgLQQ`hVu@0)s=n={|mJvCoc?y6DDH!do_oznE38iR}l7<45NQ zDF4h?dkesh6?FNLg03U=HyW{T5cXQcorq&}{&x8;{y3=U`*Q_nSw>NRg!7X_fKGuV z@0V#JEhAt5ril!&|M|)4y5Jc@Z|B4;0&ny=&eLZs>64R+194(aui5t){F90Ze(Too zgpI%%TE5J{)XmXClODMD#!;iorgKCg70=TP98n6T@ApbO&*ZDjxF+d z;>5djZ+4r`C$_5?MXH`8Mm(KQTpZpq1Za#gzy-(u;dRa;(6HHfQV}RG$^!qx-tFKM z0?umMTg`uHSN?fi;MxXR&ijF*4lMHiNy(=GGx%$(@VoMVymftUtVo=vT?t1|7-&Cf zR-6{=f_EkvpWn}~2fpb+@4(l#9{S|raG&24Xnuj zWo~ZQbzgi(`|}^~2R_iHqCa%bMJ&>F3^ur)3NQK3F`EPl|47BwdPl0p^J4UDjnx8j zTZOxz!2*IpIvX&$-a<1P7zLD3HOhVG6nlI_BuVje1yt&cr`$s0E9Cu$+E5LAPCimG zyTGm;9%S3+qPWmljsE&}dD~`@^O^W)gEiQz-I*l$`G&m)`o~-PuutpR?q4Z+1J`=6 z-$-Fs-lrFI@1-85`Z)tFwr_|M+x9P~fULo7<_bj9EH*C|H z`u$JZy$&LBsV3pb{he?IBrZ(f>fk?>P6@!I3I=(4+krP~I(!cv>}ID`*n-!?{+>u* zIs9Y`1)uTAJX`(?le@t&AyUW$4RL) znc|;wsWkz|fow^*8dKuEBS{}fu~3{O<#(0PiZ}FLdfUnF5|i98i?%?x>ud~A5NW_C z#6cyF%x~DM^A^3KufMNH3Cmf)8nbO}vxRA}!uiHel#}Hpn1vDmcREr4AuD&h%%Q<| zw&KllFB}apT5x%9i0hZoXTnPoFoIh)Q=8@Ub&aDT$Fox1Zp%)VmV0XkRW%ON-Zb@c zj^dlG?5JRG3o9>+rQY@Fz!S2fr9T|<-?a784^N)B&f2*yTDnn(cBq(crwX4k=VdEw zJMR&;Ajgwa8-BdO^};uW8-9Fh1FHJHI3D$TyiuvA%x_pW5OUtstgGOUjThhF6m&~1 zHLEb6Tky9md0zIWrdOjG5PH&-O3j!D&284pqPEA~QrXVJ5@x=pZN@LM>fYq_A}rgC zmsz)E)rvz=ddKz0EM{ZAGz8DmzB!kdW?tVfcITRJnX#+LT(d>AURLFySS58)Y;#>E zSD~z@Z11Dbfb#5^epkcT($wLqn)B(Xy_@vV@zLR$9q)BCh!Y(8hD&jZlN>=WRQuba zqel+K^SVo1^d|<2$^pc`S8;x<*$5_3D{N7JF>|7q53^*v#w%FGOf+Xo(1R=|E#khk& zWx0tM%0dV8bebD$3#i&(pnOo>((V>XnN~Ij6mrMH2u4T#cy4-J#FSfe{Jv~mM|c=q zYesovVxm!!K)GCBZn8M)THDh(8l zWkDgK80OZAXRLl#ttU;+#eh7~SZOrytG|b7BCjiM?Kj*1M>kK6dL1Ccg%QAaHyR7X zK%?be#Xk4KV14L9`kkxPZ3}Uw+O9)JJo>$;?o2DBT?DWS~K)i$f2wCZ8SlGu|ezABT z&7fL!)kzn7qh?j)w-ZLA)&fAeP9F?LR)mocWL-?zVO! zEi2&?NTp)dc7xgO<@a#EDw4PY)8=(uTNw^a6SMSmp8kOw_{Y<5Uq5)oRIB@rLLD}1e~x31eRNcU>`?9;Xmb0x)?c%*exf_8k8-6zH3_F& zG5gb(=U4wcSf-LT?|K!u2=oTQz0LW4xmS4t!<~ng7)CnXtUAH667@nf&9nx}kWRl> z#jY^~&k|P;Izs$RMl%6?){&h9_9OcQL!34Kg*T3Bk2#K+# z#1Ml=saTRo9Cp=*^JO1B$N6t1Y40@Q<*r_o>KE*eS_EXHv3Nx~Hf-YGsQY4)!}A}y z4|CcsCi(?hOAI$|e(e&ZejKtGe+sJB@0uo@x2V>~g}p2ivS!U%ufJtXs)ZY94^E>A ziz(yao%5(_{7L(1n2^p4O*?Y`?fkbcr84R+aL-@TT3z7xnrL8^AL6?-{+ofW3H+|D zjI0A_MnTPfzP1dq2WU?eV&-e7>>J`E8!^gQppo{BU#k-J*DNo-n!Ilp_#GbZ5TZc; z#on-A#2|SFTh8dS5kJhyq;QR$boZNryBMLz4Wgi93UU?2cM-mpV0Km&5&& z4gr#-p)PYC);QC`U!*l~z16+0{sv~A9OJY(~x$ZvWl#78#-i^B<*`32Z$4IYBuo)@eh zKOz6VF6mv(4Fbn*bPJ#(XdHl!!sR%>l;$VbZ4tl=KJ%Ec;Shcr)x-y)5l9PFy{F$l zco3eE^d(305;9Ui@Kp;aCyKr~sb<7Wn)C6YO1=-kHA!}BvKBQgHyNGU8x9SAM&V4! zP9UJ$d(NsPpkg+A(Z``dQ#peQp!}u{piq5ftj!lxCE4dsu9sA4!XU*@`4ee$=-s1} zXbNwvBtONWsw$c`UpXVP7sQ)97tV~q4Fv5;YWeGIGWg>Z-xG5~I)Dq8o_1kv0eB_)oXFnOO8I zY1in@V()uENBDI)?#ntlPm z5VFHXwEP3!F*O1=+_3>$lXF5rRZZ#pzz&3+r!KF3m6Jcu&>c=cD?6xh-~PcjS%vo$XV7=xXmCkgMngtT?$Vi!qw@^gqiEHR2*diqbkDOB49hhfK6xnO-F1*9cxfw6&?k4t@X;m8MCEBq&F|NfVwY)gpLs@RWaz`2_D9NF*oIBDjOE3Ls1V+ z+V}Isq9);k+C~&^AAYft(`Gp{OseGYd*Ylh>@;oVhuqkSgr;CJAG5xM8^X*HSd-*m zrCZX($WqCBwaUR-<1^!;Ta!SN-BzcLn?S25b|TNF*zVYC^aGA z)|I9K7LdgS_gyDNJPwXQPqVZITEt3i0KK-N)PzXu7lCCH@YnmVXNqi2kQqSF^=g3^ zyeGCs+DKbUojO7XKJ{<+&(@Ku7lys}UXMgWw?bS@PGLm}q8ugqi-q`O6Q{?Oc=r0d zb(e6F!Oj&#r&gCJF4QGZlRm>HK(E#keOuvC>@=QmaoeaH^VMz4##4drKQ9FUSa@Ww zrSj^g%FX!_$CG%##te4(yUB(KVCKqq8UZ7Y;Q@;Wu1IZ-d7CtAhSjen@9%^Zc|_Yh zGa|i?h$e2UVILpOAa`)FlByD(SN!FiT8*Pf93Fcy0bN$WSIz}n{TuVSZS;g=_)`Hv z;6UekO$p8Uw1pN?lGIlByhP41&?&)vt98U(!Bc?_6@q?Wkrz0#Z0?(VMXeR+S?)KM zmf=SI!fVxN{bv8>n@5kAmsco#&nZEMAd3HQ zk{;rQHTnIhIw`Y_^dMVFBf_Cmm^5W$OPb<6NVr);f8nl!b1UFnV0MRe>j8R1YH+dl zySab4C!sHogJi%Ln8ynMj9AK0!%H8C932-SCI6V?4EyNNIe{Wmv3`2lN{a~kon5Eo z`WMxYZ!f0N;m8?E9F)eXj?=^4)<-DWpYFNC3g#lrN+=Mn>*cf;mokQYSi(4B5uw>&#-M$=?C7l;(E zUGO6FxIPKk3_&FYx>WZoKQ&1lP?ho-4a}QJ$m`BJ3ZoCdB>s#|*PFPRs0OR{dfur{ zx`>x1zpri3Lnv`t$Xwpeaz6>~hkZfzhFxdCffgy3?wK5wpvThFv%SrU!{tO@&=Ds{ z6*+d}4?>JP-jCmqX%Um&A}p2|>nEzY9{JJulElK2XJhm9h>GVSeKCu71-m}w!q{Es*pN%jR3{Bj3qn8)cuRUWq zUPY)h`1`iorMO+VI;(tOpUxNX7}p(SRPUytaHO+P-g5|Rw-`arzi78e36m3Q`63~n zy*0cfLE=+S|HUZrCYn#=F{93~{^bvFruWcNV-z3RkSM;__e!ObTj0>HKBB%E z<@cSo(=>1etU8%l2>YJi#I=7m@$_+^i-zJR^=xyXu#`AcnOv?6KhAh0W_CIALklk7h%M^M@d_K|B8DA7tElqwoFsi zTpO>h_!-r|+}7q3^2|g8++0X20#;_fZU@QNzZeDyfiqwIe0%>pCD%XOyDR_tRok0u z@q8AB0|8&WyI!Tt`1~(#P7Hta_WD(vEg+YS2TuYu>R5)0@jaZ(xWnf^u&>(rQs6)T zoERa?C_*A0Z3OoItN9{$5Qg;c-Ti=-X@;~=9NtiR{CoeLNCDC_9~qUy5c2`S?S9cy zJpq!2H#F4+gQ9U$>fK6O1Gr9((y0NQUZQr#e5ma#{=x|u&Jea9Geu9haDpr}$9saD z@~jyi-8Kb}1uB-`M>u+emCJpi+YYMhK>#NS+IK@u)A^^>F5-LT=A?HJ-kmWqgmQ;)oa>`+qzx{w;lV|s2^mz*gQL$j(=_uqT?)S|s!m+UMQ|MiAu zqmeX^*O@zipn7e$UGuA<+dU@?tEU9G+VeVM^G0?Nuk%JiUTHV|>M?uo@qqoD>ka-@ zc_ho@K`kJNJCq?P+xvSKWF0o?iR)iB;;hs6?yt?V_$HjzW|tiC66&*!K&AS?S}ZtC z)jK@<@55Su6ftJqSkpqUwT%@=;pbm3=*8uDc!au4oZw#fSdPh;S7A30>9;wiz= zui7}?n7a@S%j9+E;yQ7f=mj%Dr$~*}uhJ5W&oc_*l9L#?nbV#fLSmO4b5Z!_-azN? zzR?A3;aB;k)szV}8q+lolToiq+Wtg-+;YvI3iYASe1@{cnT{+(M^_LMCFSMRwH_zq z>oDn$QF7w~J|Mc$WJT<|Q%{`k{GqUfdPsClTSG*2&CDLlHE=AjvO~T@O(VH>;#!i^ zRs+~b9hV#seuSY)z3&KrPR9H=Vj<3PBVD_L%cY0^Sn@{x=$0xMn7`>D7_;Oug$CZtk$~ z0=&W-4agc3q6AOqh+Uis1oIDfiTcMbw&|PmJ8J}Dn>Ri2Glzz|(Di^2=Gx+lu?((B z`Hu{L2-8yr*Sz7Q1^LO1*2KZB0A#*zk$ z;^-S;1gS2U6hkpq)m-cm@P%EE7C^$(8-BP$d7^l36;t;4E9ZLhkn3vm+I8p?u0pR@ zT!s0^;r2#VvO*os9x$L1d{H#Rp0-$7)%0G(-oX`suF-Fj$*}L(=2o^3C#zmSE1OC^ zI18?<&9i5^prp2+y&BnkcbOz=F-&VD@y9JEIC+GIs4X9_UX%y`+h@7BEwH_XP&4%{ z^o6D|QTQ-cR!-NxZn#w^yj8akKX-vE>waePH{D~&j1>oB`~PRJSz${tpmRYMzb7DL#sT-*b) zHwnXgBT{iuwD#lTWzOZ#Fpid$&oC3y+o`I<$uH4ET!(Iwf%pD7hMIqD-lkVwTL5S) zfZf#2HIL?^M8DYWb=YM&0=U-5fdyyE|LT_=yQ@{DE5i7?xVXI|)zYhC#-#vI(DaDy z7q0lSh|?2DCE_pWo1Xn>j%s;D# zI&&OH^a3R?M`US-sUl+n!=w3~VN%YJAuJb^xh89@zS8#;gx)%xcQ|LAN6%rxBEj1| zW@h;Wi7%tBnmXaX+Nh7iw=5}DOa1bvnNenWt4BfT1n2r?z!%-iu7Nq5COQ} z_X)01nM)?po)zqWcahK;<(Vy4o1kN7)wSX2fq@<2qY;yGHX|#VsX)+Wgb1CLlFPplh_i)$jsjw*O>C zokkst3(yv7CSe91wE&T?Z@p_hS2i)gY*e>eWiWnbjVJ&Ra1+Kw)X zq3zwzGT@qQ)Aj^b)~i=Te%CniQ8qaT{`dazaOk_i9k%E_&%sn6+&A^u!RsckRcud{ zV?KTQy&8nuc)ye5V5w<-vaE7}Babn2#sDDC}sP(o%|~BT zo_-rjJ(5N7UK>L+iEoFvks>F8^7nJM^Pc@_3e$@%y0FtLu|Bas^<;e_%Ft+L_b6Kx z8VUUgIKy;#hGp_r$?c3bM>cm;x1#|!*%z524AhI{8*J3103&bG9r_ci_oC4D01j5JSg(UPatx=9Yc^oJ!bTmf+=6`GK^k zNsShdsj%G8KTR?=DQ*HF9%*HeY_9th{l;MpF~rHs#;lOZLMnt;LpyKj`^hF}uZd&q zj}PF7ab_&+WMr$2KaQvAP}7f%rm2p}bV-i#(g67j=mQ+Mjsx^O2ym+(1V%Z6^_y70A8qu_L!p3LmWvL<6{?@ia7 z9a~ugqMCD6Z4h>vQJ3d9Wij+UC;>Y3eLaLR+N}Tgyg8j0e=I{| znUEPOW-jaYXTCQV$;fluvlzmy^K^5JS7TElJazY*maZ!s#-u72Eia|Pzz!IE8kr)| zhb6Gpcbe5c<)1>N zh%hYoV9ll&Q;mT*h*#sL&r+X%AZ{>XTdw~h%_Sb~LKs#@wRNgfRS^x09kL#{XDuAG z)ori-Q(1gQqdH)XXtEPVu3pQGnIY{kgK#W;IYf`!`TX28{LeLOHjn!Z3btm+mhATc z?I^pk-zI~nyX4k-joEe#W+;2{JrC$DT_`zfU3JrWC>?R#C`5%5lo)iX{C&D*_fNW( z6OFG~o;zb4-~Oj;M2iR&`HEGQ=yt_lBgym59h#vXVijF6(6~Z7GLwov zpsFnX*8BLoH2zNF5jDq1Rp#4iWXlWE*<_dF2A4pg=kJb*3WgmajOQ^u4hGnNkhZ;& zq>}a9vC8}^xqU3rB~(K*dwe=$-2ACPBV%-YjWo`rtr#xfZ$un*Rgk5OVu!d=^ksE1 z?i6Ldr>um=0L8=`@9+6ngy}7gkC$uSr~i+vn0TUB^JrU$IGNU1(>`7vP#4(g4@2M8 z|NK_k`f|sR>kWbP_bSgR+Mjaum^ziJdR+XEBtQC4S?0OVndg4}#!io3Yjc;!-TQva z2zQTpfXO$>*8;dT>peO6CH9(U^{RXq?G+$KuC~b~>sZeK*0F%p>z>+{~YQ9!SvNv z6ZzV6ezm!7acalY%lL_dulj;Ku9Msnl-v1}bE5beWj{0-Q|^N;*I?zVFPUkRX?>)U z{#ntIVYN@gYSw6{>$2wzGWDz4Kdm?S--$JuetBk7*n|+7(i(U}Xy3T^c8;-7sK$E* zi6z%d_FmS8@v}LV@x?MG{J)Y+n8qoAPlUEq9K9M;exMSD-m?>`%zM2gX#uMd{Rkml z6>IppGvHGXM;hWgkD25IYwVl$u0Lr9gJaCMaR)dr+Q&}V;q9+u)z_Zf_PJ$+eK2Pn z&-%hS<9F}#_j6~|<4=j35KL0mf`r09#GS6661%8rJ)oR#bobIZtVjQundLKnjvFI^LjKuc_F&@@dQoC9fJmQfh)U$R9 z@kH&mE`p6n0%VvO_B=f(o~Yjj?qh~U+fKz}%o!2YPc&=K*;QyLxyB>ZvMJ9IUW+Od z2ki1Slt|(ni|tfe!eFGh7us_2Fly*|N6jRnM7K&p>EEZ1Ah)_?Y)RwW?Nc-U%w4wc09At#0ww=3BB} zQ(M)iBJ+d?yM-4X-F!1r`Lf}@uqsHPoL&8r{rURdPvM0p$cQyz&(iCg-(E&Iev)*& zHldorHvf$v8W6#}@L#aTm#5G7P81z(d{->4b`^Ej$uIHjG)8!H^#AbD+3CvEIyKI_ z59`8%+}=!X)=!tDpH2TVD!k$R33~o2>Fg#InJJ8)MrNiyTI|2o`Q$7om4$ENWUy$H zp+v;N6~Sb+TMrUaM`#def>EF0Ej}?+DzghaWgcg>%6;3zwO*M!cHi-KAdv?n_oN7es)b+@X zk=vr8iH#*!{qr#2F$s~lwz!-oT87#f`A1Ybv#iBFwrDIu87c(DK>en1rc*FESj9^B zfi747r5RWC@U@S7>Wn3!vG_ZBn0Y%n>K8x&TFlZVsLV3RW_ZlE+ti;rTmgI`<Rz z@3-u)i3;}e4J%s#9ss%5_e2Sn%aRiT-$%cR!I~@n(3BpHyGX`jk%sP=Nr4wJR0dxd zs=Y;StTe`d;e(S-k1;FaK^P!(n=p#aKm6Ooquy0dXt1o%(AY#W*n z%qSL!h%+MzmmQH^TDYH!Pff`84p@~oRDfYmhWwL9f zX1Z(c3dviwT++L7MiWr;D@{4yarS)GX@NM$@HH)N=o&11z#RHJ#|-$94;%h% zc>OI8u+Kxn;DXKVbRnCE3yhz|HV^xrN;IhT=U2Xwy!U1OmzK}nk=u;9>LpW#UUYin z&)>G$o*&;hoNMd|b_msgzN)~y*|q($?=As^jrefaDq4eIwLCxG)+yu4L|!urNBhN$ zG`wlD|Keiq7!*w46EUyT@ZRpnRK=BjSfZaf?)_{v+>_At?XGw|Vb!&hJ`0>H{2 zsu3@jcHlO+NqacgTNab_SdFwgv*joZ(HJIXT~yfc~^ z%3bp(e|oj`OTFtrcBs$X%z$)Z%gsZweZBXe5o%!mbU#sedrg=67 z&R_!99Kthpg7mjkGO<4~_Vqo+KanYG!)+o8GYfh@iS{$;jtcsv&LO3_2DX(j+a#Bt z+vZ?;3?&oB@38NxA71WEKlD%RX`l8^sdHo*SEFp|iO>s~GOATxuXbaPFF9y-4>??w zwmp}m5?6416Cg^iyS7vG0$P&g<%@216;#KY_8s{2FqIURF63#+C4V^`OeW?G{ncSF}tqW?99~oOjf=Sl0G!zsfgGMRStq zLaS<()vK-RqSFn>+w6}pY^~hui(fEH@6zp~T~xl=m;N`TGGKmB&`mVH;P{elujf{2 zv%2WQL6y0KDg!+Ce)HTrmu&mCLnZi;EmBP-#KIQYqgpg7tIyrXKy7Yx?)sp&jNX{Kq z;&S?ETiU4V`mdyaq7h}+A?baVXLn2dhOl!*f%w6nw^;RSQC&Rg%%DP6y)f2Rwl9lI z20I`HRFf0TV$=IP&Ki^(eXOZMlv}G6|A;N?(FB)VL)kK@B^9>ELUpZ8o>tuYs#(?v zwl!ER`$R9brr4UWORT}pCSd16AY2sgdUoIbBS&Sk*_Iia9#N_SYrN&{Y)k%hYwx#; zpH+?X+H|1`R=IRnh^Y?bN1?4z&L%x2yY)=B=LmUr=A_$u|FZl8Wr)g8N%u?w2lm|q z@1+Oc6V)%hRa^OE$o6Z9Xl-R*xTENPPePbv|mrN@c)UJSa~rZkpr2o%Sk zF0qy=;r4Ly7H1lzvI(}GMwOzw`AVyv3> zz0_8tln5T=<}&2Z_l4UgE|-SnyCq^vA7=V2Sz`xaA0!*^QIy!BtIM;kgJI7zbCydn zRyBcEI-w=59za{2`eH`|v?*=yPxZZm^@R(GF+F9dUg`WJ5Up{$G(;(P(v-fG*5yQ% zAxnH_KKXc-HeA^jwiztl9Gph^aR2nsK3KgHCD+nXLK>%R5N+3wwp-kX=tMoK@hp|x zw^!A$HQNBoOL+cN&5P`<4{IPod+Y6i>6w3)?`Q#`NEvibcM~DWJ`$#}pKibT!yLQ1 z&@_;MZQ{nCoQ7e#MtKLJ?W&4t6Cuu?rtKP`LP!4+ zn{bQK%R)tBQtWF+6B3&&&Hulxpo2Hv)sHr)pCcX_E^6rN*|8Tt|8q};X=}*0?ti3A zZ%f$5HE$4#6hbdFW}apY#iM!3zCbZ0byuf;#W(rp9z+Ea^o_P>E@v<*Tp(Uy5XPN^-<<5E5~! z$(7WG11;a-a#4Yq0N~y!GZ3}2h<*-6NU_xKHnUitcRD1e-(3{-DLHqxtg7j+LeY*& zw>OO3Rn$Olb;aEnGuenqge`Q#2DDIHsUV*W%TR`gxLf0l97TMRg9HoM?XL;>>ckgF zQj1L^)Ba)j7hX!`eUJ4LdD1{}=P&9(wRX`wm!#yC(mY zq%&7*ioJUhd$&8H+T>(IMKApGYjR0%n4}KDJds-X8d}nukA3~U*hgSMC*9kJs9p0@yM`HF0c#YaRJuH_ zZ{QY#xblpeVgIkEOCB!Q{NW7sjSlyEH;J6e1VA+jPcQmr0ad&j6AYsa=rzz?bb20oD-2S*$|@ph5Z1`%BbGtmZXSH>^p zSjvQdun5N`8MzhF`4)aZ&0|#yj1Qeh4S%dN*fa^5E48SpNy@!j1aB0OD|7NSK(}@* z4CPo3{q+i2D>Q(WSWt=wQXq@d_91h%7LmmU!A?a`bSrwHHcoka2>WR#EpqW2sZ;?l zfc4)kZxsuPu(yqs8^S&fEpG)Za?|MuRfohXCi^db9_2ROMlvm17Q7c$i49i`rz#XW zhDtc)t;&l(9yLa6ID-dg?UM5si$*SQ&egkyROK5upu;3Krzaxjt7W5x7GY>EYFu=y z=m0DZ>J9bl4V6L4iv)&z0Zx|i;^7@*;Lb;QdcHZl*gkitfE0lZD>g%Iu8l?n+oB3+ zpUQT18FL@m3Pi*SHetyj*wj zRPff|l_kAXbFLBfyn|nOeQaWUYJIZi+--AjsyNnAin_Iek%O%;$#^Rh1q?ZI1(`$L7Q(demNo;3#%O#kQgG^LHPZ`?R;k;rVN`KDuedgsO7{|--!Kq^HbzeM`= z+}VCXuhG}5IDmd@r2qLQrvLiVrHZc+HD~pFBgEBr=RqJ3Xf6z|A#6A)$z?H zU)H~PR_*>(+AUK;7n3jsfhQ`wQ9F;vZd@6Df2`)5r1XsZ6=F<`97RQ!8>eI zIc%q3dd1|!25~25jW@%KAHQ`0?)MjOW>mYn=-ide-dBCP4Bwy+*JsG>@7d=F>~BEf zQQ*m*O+R>Qh zt=vbTTE5Zc78>0k$eifzYGzL4CsI)dtMRU(;H>@4eD4uGMmaF2d3x3GOqMh* z);UT!V$`^DqT0l$K7!OWpfmK9CVFx2yHgfPb}JyVHogc=URP$Iquu&1BX~LYS&NgM zdJw%BqE%#Iu*POEX>==(DC>veb7GzQs_utTM(JN~KYu{{u?yKVnfuw0ZO-B(mqaX^ zmP&-&_$$Se6SpqKd2_xO-E87~3#Y$Iq$K!nFF0jlr!%kv)W(b#C2f%$OIBDj#lr=B z*zLe0H-uj3NEZ%HhYDW-qK>OPw-Xk zZE}r0QkV4BSQEOm8GryPR(AN6!ITgT^WB@mB6}&DYn(K!#x}2Phu&pq$JY zh5CKoi#wlp)W^+1PjF^lsh01F%Ux%-Q%7^`AG4=39!1#?yTCyJcJ(Hzo8Y*flN!#?%4lctLmQ#gvJs7ZgTAo~`D24k zZmhjYu8{;YYd5lSfXTyv`#iB&WP{DwJ`&fs;D z|CR}jCdPDZmLIEP!Q|jLNW)BP6k!$=WnZl!Che>Lz)kwHh0%U9?l1#6d5W92&V>f=5@JWqIvc?hIb4}jH9+1%qS1Tx3-UwjJ8RFC;S8#kkqi{>#}!$n4Q>=DT#5zVNg4Ch*0wQcAby(5{^Tm&ZD*w>iM8&h$5!?vrOgz zr~~UL^g8S)3(V+fDWHzXEd!)DpoR$WSMLWPwMnt=`d9jOe&3vjf8;vlW4`--tgJEe z-Nd|V7`iq#ehoixZLG$~8}$2MfsRBrW{4}|C7SN95!}1v+VDr=ZL|G9Kn)Mec5dlE2M6o+7aT0!TStK!P$HkQB!S z_*pi1k`u>~WF;~=(a8zQb#l4CjYbw_jLx%9G2czMa^3oZ2H@ZtqMYMlSHDfF;9i{Z zPf~2BSM0QMtizuC&X>5ca-p&m(Z@@8dLmX|9>xDCjf-B(0hs5pbC}`z%YA{_HFB z)U$Z#LfhXH45RH;0KpC5dL|z@`&a504L~`Hv(nnojm^CEdSaIA!`V=d)#0@M;yfb{ zF%PbDCWD>2_y%49zGVI4+knVDUY5HU3z)NAiSO($gMFw$bYkUHylbOJ2k14u^qRaU z;UAVStX}FjmI96Fj<-WvDSxQtc%K6Q+BS2ggSqbEUlJw%gho%#@Bfjm&Cq34FAFn* zS}cI#96wbtw?kW5sJh;|I^qz*J0JB@EdzW+4mlTnc~_aa-kE*C*XTINfU*(v4!1iO zcAq~oyC5@KLj<9JIS^#(EL})5x|NK52ZO(p-J7#bt(Sz=47L<72YY?LzQI45YAP6x zFVX;(?hjaP!0s_ZPD#n6C;rK{+`AWPXV~zxDAVsbOke`b zv3aKdB?h^%#fO7}Al?x|R;F$LOy(4=Y8ea(oG>vJ1 z%$xpzqDq?A3@N^dG*4E{-z770XHBD)psrd29ZBMf#;E>} z`zCyw+yiaU1+Na(hRj_u##W2l0)6xKzKK~9G$JPnA6Ha2-zkC@asDqqD#8rYuDE5m zfxXU$p;(>IR(X~PjmS!JB=)xk58UKzx^HI4Y-Gr|q<*Yhx;wE*ur%1bW3G%DDxrTh zU}Rh5m4&7D8>E#NEhr8dY^vkZE-wr;=2&&d$*`3#IR&D@2i!#?m}N!u*>u> z^?5x1e%MWp%N*XEKGvvy$n8QtbSb_mL6H_Ll8sNe-&V+kSysBv2@c+hd$Q{M9`qsS5Zsqqyo2rS#(3IB3ji;gF zwJUv%$?CgxmB%8{!>{h}#Md0ah}|te5?AxwPqO*T!I4YP@9=2fsf)fpS$5WV|Kx?# z6FV2H$guNQlEr^Zz@JA5Ie3C3n!iLBeu+I0dSWgQeqf)E+wniFFn^9Uojm4b{v3K@ zPUi7*=J7eF{sRor-(hP9*KDugH3Z(G4@KAu|L1l@W%-x<72NTAqdP&({98yfTC^ik zBrH0j+J)QEXU>6Lz_)D3;opcW-aifo%lY}X~9^aYgkPyX{&~VOU?p)PIq=+-r0-jf?JN zrvI8p9jX=K=tYkD??=7yUvsL%@yxg5#(##4lk1%5ZVkxBm8%Ie{#$t9 zuE6J5gTVs&m58`T*^x57$jweyAi2ye939&ixrY(pPF|E?|$0LJ&rQooteHzMP@W%FV-n~uVJH%5#p7jFQrw*bP4SWT4OG3C-z!$FKh*?si_Zw)B=!TXkO zJGY3q?R>HMcqrX!Wx2&WVq^Ih0MuXLup*xkiR;C3csQ0pAOTP%O?V2p>*4{>oDk8? zcBR(Y>(`4@=4@q_3I(<->a>epS)c9qy*1!{QW_Fl=dm|+;TqV-koONBJ@+O{M)tSt zj^EK>_Zyn6F)h&(ty@$uc72&uD$bc7j3m3VitOvL;;4DsrETFo>{_-f?2A1GyWO|G zu>kbb2>)PD_lRUD zwBM;0kK9}UKGE1(NXJHC?9oeu3D}7AvPj|}7L|kF6z;X=Lt-%VcCW>66?RW5oIN}yOajn`|VA+RvjtFAS=skeQX8oKdJ`E zY~75FnyaF#bDcVt`yO)pHz|%e2)TU^6b>_AU_WnjdsE0JO20M(mvV51o%kIsZY^=XQ}P@EH=E`pGSHzC(Rq z`wnfNT!_erZVm6Rt6A(}%<;R4aPGA^y}u!~zd+oZKeku64iBEd5Bc>b_w3b}Efy&+ zQQUQxy_1K~^u9d?4Zaz_zY)K`Aj)lxNNR6U-!F~%*J;soSacYY#79feI8YWl-{HDn zn!Zmiqj<4@TRLxWIm&WdduNR&79m4H$V_LqYO&7 zignx@PVz|b+Lh_o3>?0Feybfsied3HA=2uPpV^e-K&qIxq3UNirhf1F{*c z&L``<(_kJZ>3QJn0k-xB>C0CHq&useFEvZ@-4o%9>yD1BkUe=b_8-6-k*D)|Nq1O$_Lt^yOF(!W8T&*6{Ue{b3FY-q>CH(sUs zKWi9y`1a4GVo;Ev%gIvQiBujw+WQ{95{;NY{D4nsSEIoCaTdHGvRZNDe4=47*2jAgbzUoYuH#G9)=gh{3K=&M|6r};n7#bWv(A0zte`~$(f6Q!XixLqte@iEq0 z6jF=SPuxe};!zORcoKF>r>d)1!;>wH6yxP_!$k6(XCtkdsDBDNx zj-6w?mYy{?W{$pPJv}NTP?B`wW2^lB5R^;LhaEJYu9P2)llLLKU04!?UsePHKGHs> zKT43_F#5bdAQ&NQ4LkXfCchjW8;6$9(?5|ydHtCqzX9HG>Ru0XA6%68)BLUp=}jm%=tXvup2m=>{*J~v%e^Rmk723+cgy8O=5qxh3V zh%xi&jYy*4*6|X7*W6os9fG>Y=l#^KR{-X3|Mw4_Mg(g>pCJ#8r_0{LKrczL_f(CU zu*Ze-DqQ*<`WlxFSC&2F_DXgT>)WyxE65hyt$zSNI0Vr(#vkTbYgs-INfQ4w`+B1> zM{q~&bH3Vj3;y}-n2+8qy8?>ej+Ikxy^L#l+w<-k)A9yh?^sI5H3Q3|y=Jcl%wAQ6 z+}KMJtQCk-mvxFApule?UKYRw%uB4BwiNU)Nu^p*{olQBRD4lVUr^oVb~N9M9%qIb zpL1rA{eyAX;nQuQ1^i3<>~pnJ`}sSpInhbgV0yay{>r0wr=?v!1yoHHPv|6jcJw~n z${RfwD(zCKiJ6*n;VxaIT|8)31>}I>Lg>=vhFe}-nN8|E!W1Q(++$WUZ{BHAFtE|v zow}m{O?VK;=&guQ*97f0L=|b?dXsFrTPW2`*nC_)jcn`{djjUB(&$$FX!J|b@>O;SZ`3G;H5>9A+_XLdcH&?1BH?31#0%ke2h19WjNsk39w>H{&_Nyq8 z80)q99cP7=1AB9=@^g4EH2+I!cT zjkWCz=T!lxJ*cb$-L#{Z1C3rOTuByRtRL79z)Hy!WhC1Fsk5FUKmKPHYh!}uAAp%r z2_p=#DjZ3g+cRK9@5U6Nld1e@J7A6c-A^xRx!sW9mC5)3UDBFRj_Pwu1jHBNB>^Mb z7E^97@Iy?pKkS;;Kn+7AL#o5_#U>7N$k5_;&5mUiB{%DlLGFK#l;24ySIrZGrMzFf zznr2dn`7bZ-jLUvB=R#&gdA{|0G6;u@O0`rT$|rnRlR-85BL!h zq7*lCY$WPXqveJEv8p|S3ze8C;(JLc6!m+%S%fftI3Nu2Qh7y5_eTEroX%A4Jb9+g zUK!8+z5PUFx*Z9=HEXh(Ky^EWSA_FBP%7@c1uMUxVtQZtU5ZXrx)z}xn$5g5#o}Yt z%pwz&PT43|wIPq__8bci@%)$=bjT&o!H;ARU1{+k3xK*}ubh!3m(MLer-{r>UoUKL z0b4Q&X~q_FdBev7JCVFOB&6xHg0?B7(zCR-wqxKd+@iqNu<~4^#R;F=tmW&SJrMUPaOWM=r=NI1ilbP2xdd|EvQH{^VEd&q zri+L^n_Ow3BA%xxo+n*r1PeU$214n|wWN+JTgHQr2uLB~cX9*Cmy71QExNzyqdp-( zI-^68@ePQDYyHF${YialiA~YF0*k++MYB$@ydQOzo5+r#BHpL|MZZbsyLV0nfi~R| zTj8_;y)UsgOJNrCqkn8VT2k;bLVxcMmmC{U09ob@z#O_tY`&D)cvRuKj#pP!ZAh4+ z{ubQ#U!1!j>V$<5>bQj{{eU5%C>pQI)>?f?)!@@Og%D+` zFzjQ*k!~kkFR&$7x7*zKadt4?|35&Ta+dAC3Z&AHpanTztG5{7gJ@yS0VtMS}d;6upcc*f*$BGRWQCs%|h{3{|9fb0P5b+bGXc8u-Q2gtMG z@PN1x;eI+j;k=;Gc8Tm1dLuLJq35XXLsOxe~rAf zVe1i7If$OKJ5j40T5rIiGMV{?2jo_?L1UzcYu;KY?bb9(jy~xSN;LmhVb7DvCn=5x z`J2VL zz5?W}NBIQDd&e)^Y7xxe8E*?~SZNcAV*1a5MQ*d3l+S4M8<}fWw^W}ElII3^1hoX| z%oa}CQW?v|e0S`vz&xB^OQ&ljn`*L|!kmx$| zS(hra(DOW*zWJh)@xHQ|%D|_`IS$n!mJ1`16LWb&9O?62fPP7p5?G&p>HI6nexwWa6@CP3aA~;UVW{X zq1RZ)R&O$jntv{PPt|$HDkIY7SYk}46yRlcr~otfhT8YN6SVrtAO%X2XXbh{?bTBd zg%@GyhtZWWa+$gwQ?Tsx*!vP&E-DGAy6e1JuS=WbN+CJ_qC zml^sEOA0Y19UyUk+)dpcvju^CMjcC1Q9@AmGDsz7$qfCTRe{o$ z!DO-bNoQlt(&{oNwR@+RAMZT91ed~&Z%8DfO~oGzOfNi6o_$U+-MbVk`RqnLc@)GYyvOpT(}nDj_l#-n82nB<~eD%e8cDKf9?s z&6zuvkn$L&<5=?_uUmY!KkNifDD6S$n-)D!X(}TzOFtvli<^q~TBQGp+9YCCeVhAY zR-rEKw4Y3n`D;d4&A~&|`n*&0h-dllfW2^SY1JpcO+m{NLP%L?pCidg|V0_Y6zKXtX`ZPHvkt*UYKl zOK3rO*1n(cTt#I`6DPr%qurKV`t*+F3ATuh-){2xgP9gvbv>u`$lCSELG6?Fnjqqo zy(XME#iObAUK=D>F!3KRH!SmptW(GJi4>FemLbg!f{mpY?+=?5Wk|<~7qM;0&&>#F z9iG?zJuA9Gwv8nYb2i{U{5y(gCq(lnM02_>%ZA!IS;fFGZ!cYvQqEwB7>>7deJ`F0 zwB|V#F%B{$tJ0H!B6k`p<%=e82t9h^?Wua6;tQ^@^SZ6GA_*F8rW1cn^IvJSsb?Co z1tW__E^Wn5%FRzSHZLf9%`1DQJ9#p)$vU%O4D;raLRu6~TMUd0$*%B{I|44{+BnEH zv-bbAHxMZ~hF)?!VBMX@C*BuobhZMzgMg>;4JSw2sP-7C4QH0h*2sm(m1?PaLO-J2 zzYo@Fk0BuuvaA==Zdc$zsf-*FE!7Al(P+C%Q1(*58y97?QPVJ^IszaGr;GJ+0qxw{ zTAc$+Z3wMD1;KFN&b2qWT{QBCk{sAx8`lBwnu*0QJ(fCT+7V+!ot;rJ?c}_TVsA_1PKABhF&(=px~a zoCy(=(eut-l8TL*s&!;1x8efy?S`pUkg-s%A+CK{3)nFe!(YzrcPQXhL*3D(6xmMw z0Pa=@K-kfdgZ)?878od9o8&uKE$|#L=ek??9ne-6JxZ7Y1js!}l#2lmjjhIhxBQH< zY(d?em77F3fZiA$0(pig3ZRgSzq6RPos|vVOsYS#hyF}fSUmo}JvMafdH_&hDzYy( zfcxRqUEXn$W{ZV6H~gSb&+PF(;If$WVtWjxbyMq_j}co0Oc@eRCK0?H65~27shK$w zR7Ny(Q-whWPOyifwb@r!W4@4}yIV}u$e*eC(W&JN;}Vt>Sx(ghtrlO!7!m<3VwsOb z++Lf`W^Pg$h0F`U1Ork0;F`4&To~`-+oDGWK3aq>$!a)tcr7wJ>#XZuU|e9aGc;(h zEV@B3xsr;1uR9NBxS0ezk={yXa5VApTxVm=hVgP7N2!$wshs-C66D+|(q@ZsSSe#FMfE|%X-=O6SU!9=jVU5YQ)GUI?k+H^TA9xzGa1LompmG} z)ehz;U0#|v?Dzg6Whwvp9TBZ^<=f3)j(vS{NcWDz!}@dF`{lI_xzDk}vRa(m(9=z> zMzuGX>G^xUtGwKR8cSwt@DxX|`=O4iJU_f_8e{(h^=suAH`rsCxl|!MA;z&^b!)@( zOsLE5DJ@O-uvWkU_x*35d#RCOgf+W{WLj6PT{*;lJE@1i(<~>v_1K>ty`8fxycHIR zEK*l2=G<=f7B;vbCcK*c@@+f8Te$tR@$So)0SuAJV`b^b$eLI8K3w;EcTVc8XTkN6 zb3#&QRaS&CR-Uh?F;-N7-!gJI23^Mx$$Xwk9up>xBK77bq*~0+T25FrwZRM-cB>U> z-eEn2f1wuhCL)kw>;?+i)iwn{mR$m|-<}SKh)RewDnH5wC<@0Qoz#-gdiE2BE5Nr2 zNl1Ok*rvSVro6aiVc?h6>wYP7!;V!ZpEh#i@X+E>LxPnmzSbyyEc?uN$#Tu3kNa9kMQ-84 zAl&PdWK3ffHyv+oINn@TG#0oW;cT>To7$t9`WqpLX4-=qO<&gm1q zu))F+7S;l{uaRy(o#k*@^Km0*k&^EQJV0qLd(w8lxh~wWzM;i!uyYX!%i54*Ot*gK z#B+H6&jD`M)^Dzyh*UOBeTVMpNTRvbJkuKL!7r$&2M6*neV9FBQ-)6U+@m@gzq1{* zwv{ZaYZUv%μ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

;Wpjr|& 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∓df=k`b>s;3vF9jK@zo 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৕|vDn_<^&~1oPYnJRtugu;sJ87m0TA;#m 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

DjAfKh?CWR-+yOL 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

{zh{3##Q;vf!8kL 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�M~_JSVlc6JdGiF@4Af$qkyaicL-} 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

$Z) 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

8DKX+igLZwZ*8X!(RWa+GuR89#R#Bj6ds$ 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%0DfcA)4-XbQdS2w;ycPMEs3G`2@82(L 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%0Dl^#9lKF*9A20+mE>7idOw@sY$WBFXz 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�{?HTigWcA_m0qCGi}z95nV~QCm3hv!{_sEQ}aJe z6S&t|Rx=w7Pn!MjV#th_kd1ntqi0K+IV z#c!3n=hV+{MT1MYUcfKjkrylAL%Bulv;=o?o6tlrg>o&IJd-&!5@anA{PdoOPgI@y zWthNE_`7d;n6G&lp9=COZ6qJ0168L^W~Rqsyf}2Ap^LR&SKouu40zy0yXkAKb!i-u16uev9lqjs6mAL9kSh(!z=^4I0oN<{An(wz^ z@NpLXr!gB`J_)XDcV~64X)aB)XjONDrE-ph;1UsGj%{$eHu#lNSTrZBe(DhU@h0Qj z#=VR?((q9GBL%Qu*zR#mBH<19geulRTvSiZk%lc>bV!�>`QwPGm2B1(!3xND*h6 zJKWGb$LR|gsj+^bO~%nEF7Fpni)+(35WdsjV3pqeVr}I`i0=G#-`ye?+*23acxTaZ z1CIp=BqT2 z3Sp&1QM|Vf(^X2GV2%L0IoH^O<4Ori|&Ao?wg}9wmbXwnf0~dLiu#N z&6wu{OMMSxJ*FXqnWmHzHSY6jk1^ zIJ(1*5o6O5p6#n_lp26`XelWNmX4*Wo>~(^aJ!Z7EwZ%QQjo9LHP8c1Ff200ouxJg zCN}$RLi0cHF7GRp4^PO9yE<+}HL3jDUYcESsgTT|`!BWp_fpk<=@g)K1cZK~|Hv81 zC?sfJqO)dng)GP*6?}Mimm{0bMcZGaZkE{Wcb%%{I9(}&_SVJ0*{_A-J$fWHAk-~juZ<|rrKIGEKx zd?I=WVnjVDAT&5F+RGl)|F-BW4v`f%rhd}4;Ywn1{H zdx&*Jywd73ua>jT*3xQ-hzzAl^4puezs4Q+iuIkw9f{Tj;Vw#vO$yr6$&=!rDrrhK zlR+NI_KnGCIXd)J5tWO`Mbdbq5ko%JA~{Iah%jvDev5(clGzAKq5RZa6vZ;RL4P5P zn6qbfunUvUZof{o^>rS=D%tWaRWD6~Aop z%x@N=^!0~ULrrkvf)}4xg<%_K3=YFeH=zOMPf9)UG3C97PCZr9 zrW*5R&va5eq4E$zguh3`#hGVHh5~`!)KaVl4#^A%t|!ks#Q~05;OhwUY#=ScW_
0%^T9L_~L?C_)3d+Peu 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

ie8Ncf$9cl}?4=}>AymYtu*l`lzDqJfhC744(I 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

6nx+@YhDriV8zC&Z8 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

x?;UTS!))(wymOT)@sz(ty`MB1 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%0DtKWTloU*2N+|9O`XU_fP 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

1>^^swkEVoVp!3SX1FoXnZ;!g|Yb^5PVNK47?L zx>`eYapF?2Ub;+)6u6EYcu$(uSSV^h$HL2AOXlvf^7J*&qLz>a^8#-ECfLq@yt^qdAWaad6@cluuvv;#Owx7EZvGnqlXAmXL`{k$N%0n0a)-$Fq zP9N40O?+Dr-C5NTZIlT1RY~=OhQnno-oG*QzuowW zzn~mB+2U)*{paVu$1fwVk*+0I6s~UI*^6S#ZHI8E=F_IkYuG3xrV%eJrFQ*vtP z?QX==lrxX->Y6$J=3*QcQ^1+HwOC_yw06WTMOQDZc{}MUBhMAL*3takvlAX;XrFwh z^E}#TxS(zQYb>iedFr-mNb^z7Uh#eIEzg)}&&Y#es`;NMaH!BT_1%ljbyxo+?2`Yy%)EeUHqP{Apf&T+Y3&Bo*s6(a6Q6dcu@_bTd&hcLQ`$ST{2Khm-a~ z$5*j&>o(8vvoAQ5@xC>n$Bk!a15lRMUyT>WK?i=TNN}4q=8L(v*_X5yKPAeZIYd`7 zni7z$jo{~`V+n^sXw@1RKMN5Dl`7gP0Sxp=kjHq6%l%|-75FoY?jfIuxT=UYiarA! z;Qx|$EILBIG!X{Yp_cBPzI(Rh>j8zwBrgWqrL?~HZTztHIK;34h#!%3f=F78X5e16hn zEHX4mRjZBFcI!jl&dcmJ{|mUL`NpaC;gI(y8~+%1Q}-yl`wjMXFCsrr7cpPq8K8Do z5PF6V=Wd+Hhz*Q9)4H|c(b{0|39GWp`gK-iMuPDfic0^HJ11R~9F5vpdY)<35~f-a zsmEVeWE)?4KxP}y3i^B-Io|T}-_sQP zpPA$HKCKP%Od6*xqFz=cNKn0h3>bWBaVS9l^Tzr!Jc5h?4WV(SDN>S%)9^u zM*Ai~G1-k#@Y#%0m|TW-YBY^0BpIuYOw56Fi(0LXh>dlZ^`*RLK>6L&Qx5J&KulXCh_o(}B8R-Oqoth(DY(G$JcK zbK-T|X5DyKQf2c_R16#-hYQ@B)I!G@eb)Ox*A~{zS86=VqWqs`%FDmMju=b3YSFmH zyS1O%=)`|zT{8BV=`SBm*K_A4UNYABJY06L@N47k-(2c~-4IoF#>&8MawyPD?_2Gg z)Yh{B&I9@emWdD!8P2O|XU1QxH7fAkVH0LaqQ$q;swI(LMUzY05q%CG$GzoYi|yv_ zcLJ1kqR~0sE+*W&(`-e1X7X?u_ujPFBLKq|!51w4$Lr&))qg}?T>bf#_8)_eWMRKY z^{aGRG1b;4EP;7>Xz|ngJdmPjd_2r16q!;&HL(fn#~rkxeI2|`R$=;=X`ACV`Bb2_ zBi5TCTPZ!{sY0iv=BbdWBf(i{@Bueao)KvCUk6;?b~ss7w}CWihg;WN2Ih5D9vR1Y zp*JV31bItFtdH?r|5p2fBmW#5DD`D%@@96@HQl#q5%d+X{DxNb^H%wf)|0>25w*8S z^rt`_^ZWqy{z7mIDzg05T^zHwuyh^>MA@OgN;-v?-87lc!K>m~0f=Nia~qVWBb;!f zah`_~8p8hcgFQbr9ix{eodF8)GDWw*xq@FSe&-js1$jp+zlU4;aBtv{b-q#h$c;OX zb9!)xUswr~FVQ&ZpoNlbKb6cp2ZTCc81wRZ5O5B5Zb4aDQyPPvZ$c}tZm0He&zrnE ztOE>|E{D3{Q2nb6+sP2&3Fq4DQnW}@AIf! ztm)SUXbIB%%kcm&7Xw`dEZt;s!N!MSGJphtKSfHu+AI#nlJ^zjD>#?>DShp%$zvC| zp@sNJpUE&NsPV=6pv?=#XPQWl>fPxhwZR?-I{JU)9ZvK9RjeGGS57`@jjp%(ic$^+LnIw^P$0C|Lj15;=!q@^B79+D(w8*l)fAHuIo{J=O+Wquh;FCja;M{ zo@jRAlc=o8sIHIu#&Ymxm^>`qy+qVCzUZVU>M93^K$QW4zo&oE`iTN|$$4ZUdAT#L z(JiB6qfz*zvSr2r8meXhC)duxzw-AB-kQ8jG^U5jFeFw%+rNS2-SpF2(oJIbsgM;A zigvhdBa|?X$`o`)kf_5ZbgCEEJ$J;6U^^ugK z)~ivzLmy9(g_pNBrwY#0ha1{xOB_Gw>!;V@Q@7%0<@)Kz^K&LPBei48j#xZtD?3uu zf|J)?@@O>m|JayqyEi?dr1j=}s@|9K(4q2B$w*`_&2ZJTS8ToRrwSc=LcGO#yXc`i z=(Qs_sQ>9B=G@B@J%?HAnQH+`Qo5(W_rjvxzhZc={2ImMlEa#fk#|}Pi8Z!5;1qy5DM zTJdPGw|~puw)_m=i`o`B$QzgDjyB6Kv$;nnWc{pyMti|)Agh(7*!QWW^Q^K}&EIeX zN6;m$TWlIwjR4NE_=5Wxj~84ASdEvRejwx$86c(?Q=XUNFvmrLqvs8B-k>g_e~l98 zrqjafSZ$g3_xR2>p3melJwJ7x`Zmx5${Kjp=fPHYJ&VHfw;5gMkLRFo=-@g`V>B!Z zkvFc*75VZ!0~4J1{RVDhZQuAQlY>a{sg!WLS!IjDh4RU>zlcGQ#Vu@jq5nPqpnK!P z;;o?r4pnBP%J~y(Z%Q3fCDNP%z2^CP_cvhf9Nov)c-u!KE?KsM)U$LIUuXrYXHUq9 zn&b^+GX&NydxI~W%Z2&9ba{@wjU7|wG=5oqEP|4n+)&!!S5wKtW!j4Pk1(r6PwBsS z80@=uYGPz-y1Af&@8kKCUQvH}-q#aFQ^*@-_=1CfKF06ESB&lc>pZ()4CoTx#2L4- zL!a#nY}WdI|NN)U3t1QDJ*$8I%j9WfUGQ}TSaw2Yp`DcRSdsRlVy9I`2*;4gu|UlO zMp)9d$G7 z4Dw_z?FhubyurfuW&*2S^)(`C6=i!Gla!wa96V4Zce zhszF=YJTyM0`#8>EbR3uj@5-SeI{h&f~o_)+Hk^aL%wI(p?|=)V8A;58rn6|!ymaQ z#AiF)+GK*!Z828^%3#$!cp(p47dPT^M{WN5b&*@VsrQOpjx@w`0rB2NVg7sXNoRif zhW9SVx^q@VZpp3MRiXV~hg>7ema4thUZJj@xcGiPal-3v)do0gdS^)b8UR?NeLwt# z_a{}ci*>rI0->~6*NT&i-(m-3aa9Z6RFofe!Qz0@JWq3;7hAQkQg?-l>ds;In#@qZ z@7eAg^?4p`K5^!X!Nk=pY{BEy$A7vv-e1pMKWyEdvv=ZRTvZ~=tDSJL*6SmbGJRsS zYuA@TIGqOEis%|QkOU{KR0lGSD=?Pzt-)NXO}{`O1T5%D(^7!kB{-qn~!!O zEt~B>Q%=8+y#8-r#bs+MUcd=1quj*7vNPQ@?qO|AEHX zu;J^b2`@Nx#eeV?JHGO~JCsPuiq5pTbZ?o|nC04NV+lRLL-~7yr4BTdEtI=#AD#>C zKru$w<%bhp>dW6KQ1(pyopy+X;&b4nAZP~zW&D60Q5{iocKJh_n}T5j86rU{#a#_i z93Z1X+JKW=)~la*zYU|mf~*gaa4NbgIU5eahz7`BS#nN?TaTivF7IPP*+rm#cTDS| z|Av!#g_J|`>`G{vd)@LrQ2B3e3v259E4AvWJZwr2qtWd8=XK;&NI1*EC*6A0vaSxq zd~wUF)zL~&+KP@DaU&qLKrSZ9Aw#i39m-Nc)J`eBmsLYuJvMml~>X4@UD`0 z^>wQSt9Mt5zl(XXLue_~U*8nB`)roL+b`dHOszP=Df>oCe~hmn`dQC{LDj2|Ud)J+ z*(!nf=)Tol^wH&Z6O-lg-UKakSUEeZZ6ByM8|l^=#pQxd^J8j` zaOmj;LPD--$ZABb7*PIuLv|sG1%9j&T?xt(41-Qzn7RJrcmZ~$)0nEaE!EM5!&J@}Z&Fg&uiA3A*ZutHhd* zI1n2Q(IcK2BQYBMy6Gn79Sl&E^`&O|QeBWLuugRbWY$V`DI3VD$vWJ|I`K5z7(FFH zFp_4My$UM}XegK#5~AGLsYBh(Yx=^Tan}n8_e?@;z{46PXb#ENKrO}z02SvtzT4ZL zarOts*&pMblp5x%0)xP;X>J9Mo?#Sa6~}lTMa>A3_7wJ#qyE{q>!aUTt{vaGd%Odb|P=Efk-2 zjA&#T@1$^IqQZC=TJv*x>+VKhBWwCauA1iE^>M9X-hY>?-9GZkln*n_sV3$h5Yz0+ zh?P4gg2t7&mM4^@slP!ZM>gmXJbOYp1&`ebbN49j0^EN&Y3XI0-0^!p@|j**s=q8C zA9pBq5Ca`WlNWZNpTYbi>L}A6 z#oazWJ_`8O$PoPunjOO#b6sibWfnf`h^6_**0apNEJ5#rAU+z!ZJ06t2r<0blH)OA zR-B#jYQr(=z9!~x&@9zU%-2d&e}y{lYTyKpAC7ZUTe;{@h=)RnT8n?S>_9vJUEcb0 zqi=B_khSh?Ti({5NwpDvQ}jEdK0toLw?6(w_}NG zNl2YIVA#b<&eI~|>!|;d{H_2=*8w^2K4!p&J`T!SDyXi8(-g|M=7`OUZd zeeWMRONybBcJgc#@#$CCJ)<}!o=qJzBNYrsGVV3QcOApGnyOojA@gG}=5ZMFA-3wY z%~d7&%Xa8-+O^Hww9Q|x2;mr6S4hYb`WeYzUY8X`g{Ofl9LTuLR`ZYLVMaU~bBJH2 z<$gvD1*x^vRH0wi5p~LXhVKT3FW6nFfv?`T5Ms0l7?QR*APuRo}md<^USwN zQ}tBHYXCF(kK#hV4>^SJ88`|mVSqPVYCb{qwSwBteFI$vId@XW5h9-)meC`66)_DCs(+gUuYBjme;G6cU$}pnklUIB4SVh*?#>+11)%seBAMY$yvqA+ zpK7|@EFzykJFsSQv#2sxcO$#7@KKGvQD#=sroRLb#!Oaxy06Y5z=+>Jip>>4V}2cc zlJMax4e#$wDjsX+G0Uq%F6um^uyBSo$+=yK+w|3V zunCcA8Z{da*4wOg%(x3pG|pz^S{<`_Kw((;)s4POH_XTAW3j1$xWS3EF+-7PU?HqU zT-}{&h3$;`g-C}Kt(r!NJ z((j~h<0~)+Dz88=cf=|{prW-4t%8ND5)pQ+CccST3&9*>sZi#(bB6XF>bj5I?SXv1 zKh*x%kzm^<=B|=_T9cw-6lM)aTMB~DD-+$FNiWUKKV@4MLkrvQ3Tu-lrq3v@02&AI$nJh-GqfX{ zks82y`Pjt#0&(vX%DkjfN9y(pjD%`yK_BtJ38I!2#J#O&vr*tA819OuK{G*aY_~7n z&6^6?9{1$?VSa5*(Y5-02l_Mw$l$42>rX$S?19HxzW*5U_j(AD8z_64n7=|pF(D6` zQjxm-1F=fbrT1$93GvEP_=FGnw9bOmKS4K-6mOQg@t|3B6(4jU{=NW>%M1-vZUu%3 znA!`Yxa&S-7rW4>w?T%*81>I4=09-%x$jRu zrRbOBcZ|f;RCdtQ^(BLba$XF^ww9_d=`!T?$0EfKg6PWlDGmJ8F>+-6!u$VCBQp~4 z2l>d)+tb{9#qYi)T^;YZT1&ku^hwGKeffSrXy&>p2agkfufUVP>I1v5L-2W6c6-Hc0@Mto z`TaR9$Q#yCn1gb6HOB8rVvpbJs9!T%KcDA*jc>a`{#@=v#hO=r+5TFa&}$;+#bc^` zP?MmnrFu!aOy*;&ggGvfE)_<^^n~vjpdPAVmLlA^-JOJ*yt$6N9i$JK%^i!LgNz=4 zSvJhcctI7g663MvCgA3>Zj&L|2AAi75*#3a z{?dPE?LvqHq|@t5%fZQzC?&h1sdoj0S}ID?WxPYi^5vbEMJh{inJo)1ZDGWoc9K(4)-3ouJAK5ogaU8)+$&UsRIapkVK zEw@X*hvaIy(tFDc?Rzluq+fn{Zbr=eiM|?JbsF37_Ts0#h~@nuOY5?7`8#rQE(Epc z>J)^z#wX|90FReUHhads*wpNAX4ZG~mzDuqw{8F4?;n|#L5>l1! zSJ@g^+N@@~_a)-Ua_PBwn{qLmUg|>HU|$ z2cK`f&0>?|oag=#7e0+zUHT=$2Jzf!@oU7A>KJ1k8A_wF<1%_3=k~Nx@HUrIT&mKY z$mZ&7XF|J3o4m^Ls{^xj>xVfv%E!ZT0&AO(>AiPimfSla5Gg2ek6m)-v+%44?}?zU zSA@KerRA&@qpJDkF9#Oc;A5zO2x*jRXc`2}CkvUlqV0)+-1$95t-;B{%u8;k^03(V# z_au=8n?s{G+Zh@?m+udhVl3oBY;0mGLE>vqwA_K-2HVcqPNh-YaR{q+p|?GuY=j`; zf!Phk8QM-i7XHKP=H}YtK_eaH^Z}6PSa?gMCGC7A zu1G`LGY+9O5H8dw;3{BYQ*GmW4MO?(&TvCsWqUqN*UB=pb(;g(3X~sT-UOB4kS4DZ zShNokqY6gzs|sib8eU)&t660*EMcQQinE4eWdXS)$;`ANSr*Ko z^fY=ms0JX~qOVh7>PWVFV`?dbIh3Qyu}XlnX}W3PeL-40CT*DQI~^5nF7Mqh?^R`3 zsxU0;sKoPJVrLoVRmc3B*2T=$#kawXx4~#$zbUUj1u0H4PXI?jhSqw(WxSKob1IC5 zVHd_Yl_=>lmGcrXi?vkZLKhetQf)+Z^XU7zp1o-WAq`BH&#Z(`Z)oPWLS9FJkyCD@9y9=(*j-UAY8jjGBmRh1VdMO%nBw=f@< z)Kc?cffgkCJD3LEguv{GanA-$34pS;g4FK>iG`F$_l340!2VQP9HdjfqbEQnGcY=A zvFkW>u=9zsm|NeTeFc)BFLG;pB5c{%GZLE4cEfg`b{wD}<}eG0Yf8B|W{SL&N}gxV z@gF{+G(mQ*8OFZp>?mY2xt<2pW=N3(et8@cC%1?7k<`qucb)VhY|cu-Rj`G#3#~Du z3HuMD#&*QwGCcVva5I%YY@`Qj5^u(0`synyHxh5cbRNY-JrT)t?xo;kzTLiod{chH z)p4$ZKAv11=7xJu_H!z)c4hmg9}7HAEdKKg9e5K z%@7iUqv)~luWF;XlaN5wiuHtqldxvholuj|-$0shr4sPQx9(=AKCy*KuWA(M8zhW6 zR-v_GGBlCvIAMT-jWY8FvXFp-W^ul>z05Ru+fm48(ZKCE`jkS3xkQ#lZeq5=Hd8px zc!oyHn^ zt5p8JZ1&6%o6|gm2Rlbcb2!Q!Jum_y*0#CMm+%i!> zu)@8M9Fpln)9BARLz#*ZM8bGO7XZo*@;15T);aIN9?cbR6NFRFLL_U23~3Nuidv0ZV<(J0sAN~#Nh2pa9`+x zSOHkKSqZ^W2ton|%)g+!nP_GzND#J&p;mF!OF`ttFbWN*6{QbRu+ndRs#Yyl zgjGjylcI3(2Z%Z21j<9Q7-(XLJT*qNqtJWh$aM_04GgtfYAo1<{MSPM4mtAwt-ce0 z|Bk5V2;ze$DuZu-HzKcr6x%wEdaXG2sweje);wVXTEkIaahf1% z#c8^!RwF(R_i0YFQ$mDYrUD`g9EY`rgt(4w0J}`CY&|=M0SI^`=%rcj9~0L#F|WXq z9-IS_&|KIP)eO-Iuo7lgr~~p}=WcMoHd(&i3F>L`wuGmYx)mO=29+@Xfy+m^x7^s) zz+2KNa5{2Nz8#K7RGJ2@ky?LQ@fUzf~YuV z1xl5%Fgvc;()>$WdFzAo-t;_vvP4k_8gZKp5iYGj&KrNNobo65uzKJNoH8^Q%5C%Q<>`V~Y;0c2()uEVRuEOItFH#_oFk}%M zhh@_%%#>0m9)ZAEgBkD`kf5f3)oqofUpFM7QRVc#F zUow75c?N+Rv|PYDHOl>CB{%_9!`Mtqde+4J1ewt9#fRCk@>h@~04JOq@r3g1Uj}<9 ze+7FZM{;Zcxu1{B-kxTCmD@P`ao;HSH^?aXGVx{eOz__;Ea2S4d z&&y24z3Y(96E1F!LPJ)I&b0rR%~1y5fkh^&LZ2y3TmLRbv6iYJvDhKs3P@O*Y?oFo zg!~|}SjA9!f6`C__Ek^_G4^qbY9g*NcD&=*FdMY7nYgi*S_AdO zK6+y&Ln$5;EA%^;%U2p^zZUv|`)*+ThfKuLp@S0qRw7vo7m+>8z79(zZK-3tqobDE zA>>w~umF7iJwHQOrEctQMQYkBj>OHzZ4i<>aV7M8ZZk5v|B! z9){fHDRCntn_d~Vllt)ms&PHUb!eMS; zwANB-U=#9lh5Y?;q{;jl+%Vg1m~Ab=J0&x@Lu_mKal=1b&&sS<8azWuj}>qsMWsQf z019G3-48mVqbP3v-BS<>O{BGg&cFaS%H2K_46pY1*oLY}tpzN6Yb4YwIbNSmfqe@J z5m4Ghasq}siLwym^$8JP61+Z<%*^>FV`Iztj`KXWz;?3#D4-!$ z>2vP*%mtqkFUb$CQ5@;QAFS?B$-J+9u1>}0X0XCs*$y6DvMjaFQB*QfQ28Z!VKv{G zg+GY23_hQns%_@$wHZ%;fW#E?{bzzT@N_7Y=C~uI?Wi^kwb(HSa29OJ`u&kKUXuhH z#J24Yqg)>d62MBxvTS76jAqh8{oAwqd75uf1#izLFVy>_7yz=Asw3W#RJLP`02_|Y zYt0sF%kxZ;tee)8l$+#GiqUvdJ!Fzrm?jI>FYKCz-7URMvktrDKMlFS#me%B$havO zidB&=k5`NTfXuC8!I=24ri6G(f?rSc+$8$AM}l9WKP(=SmaSnNgq2Wwk*6KS3yzKF z?m1W^J`Fv=klW43!Ll_RQ)rsN8eUJ>O(i;JMHLxe&J+MB`hYcm@sZa1d0hM%LJIGV zJ?V^thUgcBmFQZ7^m7yQD2yj2VcuM&U4~>+6D2mY!+u^O4`+^scDvu4K4`5yl z%f5n;^JsVT6W3+c8u3n;wMxy_a1!D$$Ax}B&dR=%Z{0-PSVP@8%>EBqFsO46bG(+i zQ)00@JxI02)Gu8ly}VD65QsSoCuTRNpbLDu9Qtsdgo?X@GkE$6u= zZ-Zsr4OmuH9`nTAcS|7U=yB&lu1a%YTx(#B{L;9*)t9b!ku9C~KyX-i`eJO0t9Y>e z7%~5_0|A6~Jj2#X%Pz3+`G8w4j&i@B30_%SIuWvEk=O;{S^=jlF=z>1T=IFvNVLJg z@|CMj-Nkf)VE|ckS-pXh17jw?E~kmv1tYTb3uvq;mw!3ff9$2J@#W*heAtXg-v^Pf z9WfKUQCg-2`6fE*)SYNHjPNw~H;No8EL^V)J!1uIc%7j2cWRB;4@_D))|~yZG)Rw* zft8VstU`@Lg`CgWMF$x@zfR1D;2n5VVNTEvj4nYV$c9IJc=8Be@uS=bSk)m#$eG}( zl|{DZqj%U(DSXiWeXP0FU(`*}-#WH+xjZDdGPg9mvM54ryJ8M_HbCo=^c?qk3N?F`^AS9GwfN%CY)fBE510kV7n1y^AQXd73!=~UxImPc zAkC-NM0s8Tx6ETgpCQLH5;3t-e7xDn2|g`)m2+f5 zPvd|;3C__iLrBqUL@8Uws3yo}bc{6n#zyTBQebtIVLom%iH8hc(k2JixC#oRuPm(^ zQ{UoSqiwpR>-ZIYX`*-5GeK%d`a61icbDjE#nPIwvs)T+Z@NYIsydZ?}<51O9+iKBxjDymV>vqAW)G z<%Ao%4ERWA3Y<#Ua{?c~*D(+1pI8mj@J`&*y>6Dp2mlXml4LelCbb}eKh0xegFaS8 zdQarOOdhbm6bMD2vAC|}DyyemX|T4om^|~#oG%~3A{Xa_lxxUmFfu2gwAS2(_h-AjoYKZg5Y%Mv* z_3#ngN`eB~q2NbuW;1I3GnmeF%JCHOu_9)R|?T;PX73anP#CtM7L zdPP!co_oy*fCBj^UTx_=5j_A~rou(bD268sKXt@1xN&}9Vs5Hhd=z%IXjw;vi;p3j z1b|#my`F?<3~R6x1Z6r0Rx-2S^k%=2VLfQx08Vy-+~qhy*pQ42`~`MFY6ZA5VyaeL z0X4XeBLEaUUAV@uVc7tLTf6wlz0IFtV3-1pP~wQ^pIN_v;mIu=xs(cmwf39XzQq_1f|*kx6P z0SywiEfWQnp?n7&1pOX<}0t=0`^**MqmU=~Eu|GXc zy@UE8Uj+O$<5jGefr5GfERu%SlvGpw z9cXnp^Zm9W5lkck9xj3 zj_!;3gKE!W-pQ4sa0jmu=BeIW0b*fD+nbkjy+ny>B8Gof`AbQUn0KRAetB*-Nl+&& zgep2#D)>p+bwWQ^iG?cTemtg5m{b0}w1>+3t6sie4rZh4;wL8YqRXB!V9g=qf93x~ zoCjx^p;Z|7hh2>1e-Hi73V+6gx#%(Gh@9rXo7ad6w-w%yyQ{bpGtL2d%~af^*M^EJf~&0LAc=P;jAxG;vvZB7!?6QDry;K_)`avN=; zZ32e*Q6k??wEdS3uML*W*>y_S^5k|lj5{$%#&>w)|6Ov2P0w+)VRaSUt3BSK4Rx%W z(ECn(VK!dKUn`H;Io6>)o0H404DlcPlXMo7$?z(Nq8+V0UbW&EwbU0v{-5JXQ2ADL zx>Ne6Cyu5c`4GwQhkUvt>d_CEBKFB6)-${km!J|Hu>-61c+1E_m$xDlNcL7|#4bhb zkw>g$cwLEZpXYCp|GW24`oHNOB7RDRSha~*bq_-oR=%@kFaY5|@Op!yevDYM;E9kh zMlH#=jxhbsbJ=f2ejpKxgL%_Rbs$6KBr+|m-0MHPD*WXKg3D*;=ECbbm(`m2KAU0Z zALLTm9yri&S+uRucW|h=(zdv=h9qr(n5DodJl2b-3B%S1<5>6=m0C4*r$L_C z1c*l-AjBqD!S1YUUnMwY9b>STTH^CKQiUd&69w$t0*=oFVH;>v zb@9klQv`B3#T9n#5z?b(?1iO|}sK6q|uYt?kx6DL#ITPz1 z6kSu|>&`rboF4%3y3vP5xnvJ^I5$Q^G;8 z8G}hdOSb<-gM0x$uJFI@rs8WOC39YqIelW4wji-G0V9aV2!`1*;6zcy01;xb<^~ht zJ)=^^v9Id2RCOUg_DJONDh6sD1655`|KgboRSEfu@`W7@U4T9g<4o#j<>VX#dotrB znW4?62+nf_4g~s10=Y*DQ1 zvb>rP^U9q|Gl~me-jq^Pz_u&FAP8gdkwB;?5H?53p{g%*6xb389Vh$Q#z7d$Ees_N zF2O0a1i~h%G)}g#dy20)#eb&Lh?=H@ERmGQE%Ln$1qSUHbRu7>!4|!FD@p;~_&68U zFc+mI>tL3qGi#|#A)j_fX;GI*&>|ArO)#nG)88cc8LHmR6KR6%eGBHY!Ae>$?$yPMFQ=Gl3EMX$=KlC}kM^-2 z-ev9D{BE6thC?B)92YV5qAw_mOMJ)s_DwgE?s!(Yf=f(2k=U8|%el=t-|as2-T8Be z4!i9+xt`1F!RZOymlq|EW~5bI!jhmjvP#ff;q<5cFKg?nP0><^+6C$`2fvSxX56{t z?yP>M>dn4=r~QiUo+UPh8xG$X{PD=kPtUJEQa+RMzx#6ye3S5T@yvIyCNIBKfu~iuEEDYC-8Vr&C{PQ0cL!vC< zoKaNOKHid1RNiK3u06^m=}XY1U6kjUUMAF5t}^%X1-P-tF3QCw-19W%?E32)XWaJ8xWz|ZdKi&shsv?9x|HFS z(;wl$58uKo`l-_oDs$^Dx+dhTp>z$=+=Xr%Q8{b>FS7Tmxmltj%FiC<_k_9iDRb*6 z?ZhZeNt&x6&Ao!k^zu7LwFsy(`h!Zfc+1{;o?7&l?H)wPbEsl%K>5|+@`h+yQLGIZ zzhS?;QYJN?ir+=SH{r-lIK3G+V_uQkoI96g(#v6Ic=6+?cwtfN+!oJl{`l!mKU-eW zV4h1zv{y<*o;ICT$Br2GvyIBrmiqsI+E%~Nb2rNJLB!1;sw^K6v5LH+W0Kxgm~FQR z4$^A2(s}B}w``>nuZ!Pg-AbK)u|qVCD9a6~Z8f+zFj*e83-h0y#6=%NiT~y(%X`cd zLF9lnlt=fNM#7%m693hdGbu%%(7(q+w~w6lfjoZ~3L#iSz^ZKZ7X#9p<0syL1+9^%`YX;z)Y zyu0)2zqr@Ey7KWsN%a!txl7wY<~sHfm*hfr1#6h_xco8HCt<#Pmn}l`Xf0B zRB=3240hQrg~UOym*eni>$Q5q9HDcOFr1@C=fzQxlD{M7bU$LFdm*5=YPaqdBXqfYEbfK_weQvcylqXOoP{61`nc8 zKcEaA%!w3cq(6+(HcI_Z*N^xgNA=lP6=!($)f2GWctvMA{Xp50=TeUYzqT4FU|}^- zy!}ieH$a@BK`*XjhXzqNYM4HUs^T|ZeFG5=xb(jBRCNcG!7hq=QgILA^x@Bk<+-X` zD*_+hXcy9g+T<@Dh&-+l!3(KSmBTnju!U1=>X9MQl_KFq#Yac@OW)y_&)r)3?iG47 zZmq$u!QboSPS$o!++w?S22NCO?c2#KQk?7E*-8(+%T)Vce7y@iRNMPMp8NfNi(HDL z64HzlVXIJ|E~ulD!kj2WlBP+8?M`mV={ObBWJf3JD07@iQ4E8qTt<;exeUq_Vlys# zjLUD$IH%9|`}+O<|JRFWy`N{Ty=Gt5Uh7$Fz1P}Iq6{{wD)^?1cCEoiS0D!ES@&r) z0}kC8?UIA+H70EBnZzOvT?4)-5B-4YxF>fwbWc$dSEND|`J#sCHF&w|qD}lRv`Y$l z;bO#4fG^5Hz<$d%;}ft*BEB5@zUB&{g+pHjUkq6I!*0A`uFC=&l}36JSZC3Hpd}JC z)~f`)kV1Mm^y6rk2s(1;MP>KWI{WkVgCr54?MAyKpr|C8BU-i_`zS#GFpE>%-*;z| z+Y_s;^N(=&I~Fb2o2!Ki_#PLkL(t?Vw+lmUD1EH$!ZZBat9>Zlux;uu{9EV)O3!PX zdV+sDy?Aggww%&y%!S&f)D#6fd5==tRVXnRtI~0l#kS8Gw$AywryFyTw~C2@<*7Jv zirUSc1l3qtBf5zVw9Z|-mYy&y>gsd zgVOU$-OU%?1?#%W;nxk&_vVvYA2po9pKAM1MJVleP^OS>1~R-?4d&~H1s77D-*Wam z8++5cSmSQ)FTrp2w`%0)1_l4k7OV{_l!MyybI%5ERO0HkHUEY03aL=1?2QV|p%QoE z+TZQZ%YJ)khv%u_z?H4^ySb-=3lE>f)AMsfgA2Oy`-$YcxdB`Un|rwmEk4Y1hIpO} zmETsmX`oWP#eC-DX2oiSmP?^mcJa2h&1Yhds*{JpEZk-c7afBb#NfSVC-HqLLxP)y z&E0iN%9Lsi{=6eTHmuQ_5woI2WmC(AY?jk@p3246z=e6Mpv7mexG8P(2kQB1cqetc zrIi$;4Az_+-l;S?H)`A?pa1aw2J2ZqvV(`a&T`tx%PJUKl5BC3YjsK);$DP?=!?3P z*r)hGvq1ck4COSlNLsJBy}5aVl9NCRzhpcxuTCKxqdXk)o29kQzj=3ZoV6s~Qr*R0 z2`wpSE?m9$u0BFbPoTTIq9SEUk3u+38TI2Ewapiyi>rcS0@xjoxJwB`v&OAPcln8T zJc4)e^zgJUMI|mcmEHS1{VSK`D8Jvg=6{gz80x#(@F;?nXsSxu88pfz6&Cub>j@%! zf&&dAGw%kkg^I25oqvpYu%-_BX#^e1u(fOZ{DFURY?a?CkUY|J%Pf&*fe*FF?5eKx z2|90)`7O5cV%rn?$XU27r7#hFuSU6ck=ndC7M{?Mm-gqDk;c0HpTjkf8#0-WD)Vi@6iP+EBDftSxFV%HFi_yN8t!^Z?khUcxV<Y3f2mDKFG&H=0=xE8&-GhdXnNSlvG)Sbyp!|Cf;$42B-J47vR z;XO>@H$}PEGv~i#J^@9GsENPl3bxqHbBsNlGo8q9GS?)f-!0|R(wi5$>gK<6@os$+ za}dS5wKPi^4q4F-eFn+sT-xg)`sUb(nR%PH!rZ!e?0Q{r>Q=10>Oe}Afd~}lgvju2 z5m^L{mMR_IEwdpj6_M(>Wg!Qg2gqat9j7PCJrl>?AUbBh$H#(c6LOLr$dzc!}U!;n~N^b zDE@XTRkxl_{B;93&BV+8(i1?=DE{nUqR_lLFUQKEStrkta45$ni(gCUW<1R0*Ve)P zT|CzrNN6FZbb;gSFVBn~2=3e%D8tG#D7+nI6(~bHc9|C60JK#~fimMd#;w)c16Vp* zg=0BZm4tL#AY;q$UDG`CpqO<7zerDv>aJ~)!KD&etFxQS5_RjN4%agk2fA?odCIO; z97xlxuM=rAd2!%ukx~lyev}1%26qH}4{Jf0($}R&j$L%bSL-0jqT-R>oSO$OJIbw| zSvlCnyOulc&}`p}Y;v2?n-2^6`DVkpr$+CHi=n~kI6Fa38f<>xDUBB$1n&zN5_gJg z$a}mO$2|iDn)l^B-iRY-XLY@KMl6=gb!0c5`SOW=qaur+^B5*Ree;NDM8DBjKSa$v zu~69dVf?WBRt9B98*^>O1FrGx!3`ROqpsb~=^{rrlNbwUntYm|yik6Ri^b&KQexHU z$C^jnPh_8;h#=On@kS2Sx{*Jlf9tXRkZoVy;Qp-dAeZlUCB|eAR21Xo-zhDMYK|z+ zvTJ?DEmt2jAcIfG*&30lVJwn2B>F+~t$NL*#my7mA`Q221*A1vGs)B!{@4t3MRa6t zVIhbXc;B`Qo0xdi@{CxuA=j{`5u6acS8`B+o<~@ZY3>MMMSAXU&6$RYow#1>5&q1h zTfR;}jq1d)tl;KIhU3U7a)a=oya@Nt0iC?>-d0i3CxjvG&E|Sxgx|%`Upjea>G0+e zzJDigIg=_PfJAVE-ogUiTsyOgiL1@ekn1;YALHoehB=uuO)_y?`toGx@Me{{8Hb~% z;S+{acOo{E3%LP?Qv~f^0w|Wcbhb|5E`oyz&l)$^CoD8=&$vuJD4jCVf{MePI(f(W zGY&aDo*)l@!zpWFPC>0xaC73Khl{@GfsRG-y{49upC%`== zm<;@~i}zhO^zU!iH{avW%-{HOmEZJ?Yel};AFw$261UojcPoswrHg9ag!$i`0CHwi zKx-S^yk*hoCGo^Xbm=(Uxs+_Gl@(CNOKYwkq)Id^$2;2ROlyGcEMf4748)@@Zl1ll zg6{kaOL@po2bf2@m{ft(at!WZT-Tbvh$&}Um-P{|no(82HCz$x%b5z#73_**SgMZe zNqxO1{vvBjxJuh@se!B8wufnasLITpkeK=@zUNbpz$32L^e@59GgWQRB$JI1I-|_yA_Sux4Jb+f+{C7(;J%iSmwhEiBc<>54R+u2tSSQmI8p}zKTQr>95(b(a45g z1CaC6LXabp#;WZ#nD+rcJ66;CV&4{SirCE9-DB_(CHze99p35a)B$aNh>rQPvV^3yhm z*wm@OJ(GVq#i8Erco0IraWZgTm3!vIRy8vfy$R(Akmx|Ar`o`s^aIqF$+j6FpQoFQ zsPyD2SN*Ag6Gqon=1M^>xbgc*AlEzOr_H!)!sDH;tF(6Q1iwB&wP@BMwHaM0a8i70 zbfwNk9~?XbKI@j*Pqlc$>iXMm5QI?&+jl2_b*;N@tQ`5aZOpaFO@FEYT*8r?UDZ3m z0j>7m10NRnVgCxXMgD6utj@7u=K z(CzM}D1N8YMx(WegnV1JJgG$MBllP#O+g68H=m5|H@NcG&#-py30YyXV=ueBf@T{4 z6(iGmBF{OM{P@6B!>Px6=i+`Es?A_xCEhW#1e5b><5yYbwN*2e`pzv?&D1@ihiE|6cT zS*L~y0SKC9b&V)2kTLTK@2`lnU?J(Z30);&ZkJU4E~|MVlfN()Z}&`YVr<9y$Z6H8 z$e`KbuIa0Oj+*06DPP|^3!>wGYtB8FIxDtQ5WRx;Xl=bCxTej*kh_Bgp18pW#LGqB(4TbiwH`@WC7*4E9xC-rNYpn@u$@Rqk+{^DG zZr-Wr&Hh@N{oO@>>cgHFjXx<0wToGyL%*+$9R1@fk`4YYE}hA_wVwMB9gG z+Baa1%AUamwM(p>P~5g5Z-?32Rc3d3!9Ga0T*9bNqCReNo_ex}+eI4c{msSWwx(mK zx?||i4)*Q^MQ-Vr;E4I4$0a_$q>8oJF(yOZzuzOHoTx6Y343?&;oaD z9%AZ>7BDwf$ZLzk}o_O#ZcQu8b}ImOlA-8;$d z)b-2kNVU8{t3TCAo0~RKfbVnDd&*f&hRezr?K_O;eKVdf889a8s*59BDQuN`r;+Kbe7m6F<^}$=$6dR11Jo-+SMOVs-;5CR)f5Rb zb!^&kz4qej7zxTMV`baw7|(h!?#qGwm#tfqbUrQo`Atmw9>KT!NIkP+V&I~&^4xn- zBnS*Z(J9XOr)U)NdzM~)#p%pylG=!tW9tU)vV6|W<_=ww(7DI*@mUWQ%jyXfTPg>i zuOtR#e8=I*7FG?q9|wL`lc_rL_~@!K@CSNe)k}UEWd}p5`$FdU$13}dn|FFxbb5r^ zPk0}7Dl2F#an14#nPm+z4rVM?9I1@*&cOA5R0CDf=*L^GRIj_Fm_{>C+OesFWdrs~ zr%5x11<}I%zh}AVk0zEmX_Nj^=}gBJ9}_BCq;r9X1v20v$d%E++v4$H!AOnEYMbwR zmt*+%MKyfJrc8cb{6}_vgfHCbAEcdOTh`W*ZoBWUxADNHkkDkV@!9nhy;QbKsZt3ioM^>XvWn333uZ^l> zM~K@sI$rjnFXVgGC)moxVrJ}E)c8-;$j=#7QF~6z({BQYYFw&N=4e9IFKIcBw|<%N z`FX>@T`u8gi-C^q0mv6hpTw~QdiS~k2eMo%?$(EKBMQZmDM;BjI;+wmu-Jz#_W#zG zZhLv@-0N{yeQJiK+HC2%@+^x8;2}q!3C_Aqz5jL3&5w?0uOl`@{&wF#bkoa^M^DeH z4;}MM_w#>_@$&p{CKOa{gk{sqz#n`glJM z=lE_*cik;e*f%4VbZ+~jOU*@1!!E7UZ5^MG8x_5`LX#WjKK6(4&m@{^Ej{`I#?*Y~ z-TTgi^SKm5u%iETb8vrP#QFgakom8QKpC6c(pUGFKAU|WAnL8bxnq{SDuipqlTF_R ze|qzpNCe+C=l$ZTULWjk;~KPHMI^r>N=TXo z)W=NdjOxUe&Whu3i&9a{>6;U_?BhGy-@MD2CRdde@44?!LLKiLX>Fr4#~hQ)#0*=r zP)DkfXk;*Tym3*s&vWkJom5YiOblXWq0xC!$+RjIaLPX_5dL3qpK$Cj8eAvqan#hN zD5GJ92iheA2_%td4t*Kc&+^74kmv*!gm#%>qaqlCc3CkRW1O&29e5^@6~iR{fVVuR z9)MyaHA(hYN@lnHp}KNRx$x5Dj0!P)>br6i3Sf<8dZPRu5dz=Pg*t zhc`{~mt_uL7HmDtzk4)ADA90LhVnqz^ZRVp4s6>|VaYUM5Cy9{`*$$8t1*2|SUG{k zJmk=7Cg;UV?!w@|1%UwiWk$ zTZRKCY>RI@w>uaT%Xo?to(E|j;O}MhsAtE>zsf8xHa#->h(Q+5TM0ifE(Kqip3i;7 z#eL@GVgfhB8Ud%(ah0R|yqMhDZqjsjEMEW5Pzn*6d~_O_+;R?C zAHMbiE?5|_#q@Px_c)f^?D!2AHd_uHsgb~vL+#egC24TTJ5f6^$V?LXzn~ms_7b$) zovb}f?plm`f$vhC7@-ck%R^>N?jIkj-4p(a(d13;LG3nRRB^=95=rH4K<(Cv6fElG zH^!JIMg>R3vo>_cz8g5X=`&e?G5=j>9Z$?m9~ z48*P1zoZPe%0b*3F7;~^E1p#W${HV(weiKC*FlC3S=IIte&-;SR_@E`7(*&cfxzt_ zsVwhh)v@^?WpYw+1*g;ePk~g&NCFxz#;`1B7(+Uok)36!o)VcKsx85e=aPs5hb+eP znxig>V?LS;%UZT8$=4@|mH`0v{OeqL>v5s2f5aH})f7wu+gjK+fws@zzz@h;_Bvn~ z4wqwC$`NjHMt;k=WXWWo>IWoL-;2?%RI9pw6m4$7t^Sd}(QsXc!*WX#}a!ZD#a12i^x`+LM&8}s$ z(djbIybT;}0sAJ?iv3F}h5A-gqi5L!57CAcIlW>F9G(SS?hSvH{ZT^zPSD{iJYR^*+tVM`$+ z9I`K3p$xHop|{iF25^Z2#Ab4zf3PY^WQ8-i+c2L?e3w4^OCY9bfOHnzOeH2)8tYbt z&&IKoN|D|b2$)_~LM!?w(`GVOamdbSg&4FIOca4c|9Lssy}z6S=2{=bGUTAGQpjx% z*^?U5BZ=I$S<=n&0hQO)lyfUN!A_z+3ZaxJlLEqE+}<=a1E3HNA4F@3S;=5S9k?S;QpxdI^J(xT9Ck5MTw+vX>ngwDJy zeL*F>+6?QKK%#8?LYCVK-jb0LaVBGmwR5-0q!>3Uf#-ORVb;kKO4~jet{{OIeU4!z zf&+8URa$4IxB?DLm^w4do+04ywqubi2rBj7?GjkzYS=N3CNsd8Tfs1t zC8%&l;?e0942Bwm5l;(CqJ?orR$XUpeZ^f>s$6{n0xfw8X!H&^@S;=0u>)8nIOOFv z7)aMD!va5*m-`n~rz6*64w6Vp0?QeV08kv+UCt_^Wq_}r{|Akbgt8=&AF!St_XGcH zR)n%%=JEs3h)tM-G}4&!_+8%~Y$a@{0A(?`rI&Zj{9o9khMQ*l;<7m8A&HoAcrMM# zLJK-A$;e9;e9*umjp6$o^DlGhz1Q8DUVA@h?}Rom?UG^Yg)Jni$LY4qa)c7_m>iJuT$;c7XXz+j_5>v#16A}i6# z1DoVDW%O-z$YQuuQGXWARermq;?S443!Ch3x&*42Xlyds%7_88y`HB`!PwtRdb@wR zw!pT1N2!_C`l3;DYk{rF$n=y{Dw)M2E5cQhXe$^A*z^}E^i=Hevmj|`#r1|3Ge>UZ znn^iV2#CR1Bde280)0U#E!ged7iu24YOU?3zR8(TeQa;~h`Ai$weVG^V01aFwD25F z_%}|r=E!C_==C87_j^gj!J1CDP`!8$lm22g*rwL|lBNtpPmYkuDZc(7$^<*TY54uh z>C>Z~=8l)5G7r)kjFE;{MWy9gHi1wAIU5|W-q%-U%IS8&PKy)V23V$*rs#W@j$*mt z_w`_!zb_~u(gxI3c(-y&q5lFtnO0cq<%ylvLoQVoqVEr3r{xK5zJy$uQyeVvCLct3 zc2os#G%WJ2eUI0e7 zHy(JIcNA+4%}zz0O^z&6XB=aCnOhT{B+!n4_oh?Mt9@I{;$YboT4#aZd zc(m(C5eOe^lTP1NBcD3%QxqzNJms_>L4y^bP*31+%6VmHM4S22e9+fg@Oh@$*2Vdb zCMm>+X{H082jM?vFCQIngTW`HWeDGsXcxiPq(8SS^Pgx4T;3{8MzRhq4F)83VG$s{) zTR-#V8mIfYVbCB$beZCFkg|#{#P;SeZ7Ya>gPKy(4AjB%-+sk-1#pi z`Cjk`4469_C57a9yHvLB^e}h{{wuKy(n#xo!=E_pf;PM@(Syh=0uZ=f7l7+!d6f0d z*0-i8gVQbrKbM7mz*MMG0lT0EKaca!VHSyCo;XreKfS1lIjqARq(ql}&*aajI+plu z6WCFT;8DRS;BN3>vfGW3qU)^ovsLfL)uTM_`FUi(dAlGFc7|>9?sH@Et-ey+5>EGF zY*?P)`*PbTkRit!2RlA*54g0D%j+$%3H8b3v}?i7)5AXiDG#yYShxa}SZO#<4bBro zh%QS!Ma%*Gs04u}OJLP_ZN2WX^>e#hNAar3Z%0I3pSjYr$Xb#vL4aOwL+{0nE`CqHc5>><%83T{jm+Ew>aoeaRc0mRi^EbE%WUbdFY}gVG zPoa&0=WhrSIa6sfaWunPFBNQf&Cne~^u04SEJkqjA-s(o10mqnID+R*dj3 zYz9x)^X^PB+BF!F@&w2J;-d1fsU%t+$j%RBw{KLZic@^+Rguo*w=Y8)kGX!YioC$v zf2sEUls4Nn>~s6^b7M-aRWEtny`1jj*sv0zDw)=czPH!PYB%dYJ(n6?qykT?G3IK# zjI32=;%ShmNf?OmH0o9nfH!Z>)W?m$_L_@cOS6KfwfIx6Q1r`%3aiO)=ELuGriaaY zWxi%aI+{;LX!9M+^O_vMBXfH>IJK{w5;HJ2ECVgbyHbsV>LbTep3iD9=9pei%nBoT zT7xQxCp%elXCwga?J{){TnxcSXMtH%&1pA+=Q4P`i=1`>`b`B|cp3f{SQH2noRGMj zTQW8575yPAU?tTB)(T8-HLMgz6B}?$5kqaZV|ua#iI;ZY0ayD2_@Fs)vQK!*J6s|$c_QXNfwrtgA!|qzc!g=t6+-i zuyj0YHIt|+f{CnONL4D*2(y;`3#PZJwNbi`{Y!tyW>`s^u?%HlB{f!ZN)7whooZk- zgJiTS;kk+$d?k*hddmZUNkt4<1Fm*HsrWT$B}Xy>im~=Kf zEAk8QyRMk}v>Yf^PN`)d=nnzc18Oq?=K!V$dL_Cy&)L)gCsUEHsKHls2K!7$hp(K} z6_wybu2lOwy+_E20>8Qgv=ak!dRHQqKpUb6+K_&KCj(`uP73Mg;CxWsA8_hm9g|qj z!Rf9OAQMUCe?cDg71!=Fk9ye; z)t>~jf;=FVqr+T})xj=Ry9)eFUQR>m(|Q|*ZT>5rd@JXLJ2pzV z$0R=C;Pl{K88HEP?5Z}rE0Gn%B;qj#s{w~BTULfG3wMn(?_ld>W$UEU%2H^xisLCH z@Dw=n3Fx#qT(ugmT0yW%g&S5Q)&mS{Y5vs>qOJzFA>hEQbuD`(re^|Y#?!0|`~nWp zuEc(dRj@ynqU01J?Pji4R90MC?P9;mte%*hcA45nw%Marq&D!OI{DX%XZU$Vl3s?b zn`&cBQ*Xx;hTH&NjYKiNws0h>kQ;{S4m{B&omVy6UH^IqRsSGOzr(yJIkg>-G{PM2 zS4)^J(2ulz2=`d3`Z&cpFsm3DiSpk9WQt?oZ9U+?D~7qxSTsIysqQ{kM2PC47vRJkNW zoaC#?c^-s4OKo3C()&a*hLoI~sSU>N8ue)ef>b#}Z_#)C02t8hvB8a0^b=pUrNZ4K zPqzCMNtL@RbdNOElV~(?QnVIlZlfyOORVJoM@g8wmTyjKmPGy)jbyinuAS=nusH>dP{Rr^300UDRh+UoJvNFg*oA zKr+~v)#j;)Lg$cTkP+2$lv$(-%Y&)6HJGM6l+5w`I+@lxYc7fG6h%lOJJAiAuspNq z05w}PAu9l!{F!wk${nxV7~P-_r`Ht8a@PhETsfX=G0k|7>l{x>$Th)34b$xJwu<)E zjL*vcJ8kd}>VK9#Wo9!h)0ss_(GAjwKeK2hoGyj&2z200;A)JB=nAV>HC)4ERR!y7 zjr7J1pbj}tx^r`In}rVJO@FZuwlRfvzQ0(X@n+We=@t6(Iu8COIz}82Hp9qI`AlY`TO3kMdG@W{gl>_bfAMr^+p zOQtA+b*Mi?4|XF*yRrp%jA9DACDMZZ89CB~_9R*`YU9?uwUEhvB09f=v%wDpcqVZh zwqJ)>(at13e?{CjnQK`>`}RtRr6+Uyhj1}JA4`M-QzKipSN$&uPOx<)@va{(iMAK} zQ};=f@Zruh+v&E{=UxS4HxgL;(OfXu)+&kQF5@9) zE(hm{QRE0X(qi_Q3bB^GzrR?X@n?N>8IVb|jo6>+f?u@Y!^;Ec&%N@;4kvhMVTaNL zKsKv00-5YhY_AK@PYR5{G&pb#;(Zo+JC~ab2WG&5CP>$Z>UZpKXFlVOpUYEfrN4}h z`N@{0%?PYxpP7K(otfMFaZBg9#rs3VV2hfV>#al(s!kt^ zi?mQ>3&cA@;yLscuy!g)#i4IUBjjK|_1V%}HQaUAS^Hjb*OgjTCjk?GlMAF!O85iu zvIM}jN*iSVGGcsZM@T+erpnNM&L|i+KPpSG%7FcLK~{s2w7nsJ^XHvbEH6*EbotQx zk27Y@vT_fSHm=TTdvV2d?>_PWSmo=ev8EY)(^Y-3yB&6KYyQu86}v6Ub9$dYj z@1ivB%Zew6&1{V-s*GBgxw8~Vn4NAWFXfeW`kfk2W9clKYfQM-oL}H)+rPX*lZq~J z643L%bvJav5^j`KjRez^L12F}n<%#yCyOwuRdnIdJ|sW5y{FS~$qqbhQQJ|UW;>CpVKq>1(wbuIEN(+qjooGS=&@y`}pqtV1m%1W1ba8tlFI|LD4_! zR-}B*R9$bRbnCTgNs3by=}}SJWgZio4=+G(NM?G|Zq8iBY=)=9x7W+E8D{e{bqtqi6Ky+Ao#893+rKe44mM4NO;;mw{-bwwhKmCKeNshfc_9;xC?o0 zC#?1^S9v7Orqv2uE+e44HSp6=$l9%5Zih+d2938zdWs^wN!>+}PXm8@-Ikl;Azrt~ z7}@iRsNQ;Z6gFLh0PXcF;+9Ug83%aFWG+=yS$}@~4b-XgUEzP->UV@KWbh@4RaZ+b zVT*SiEBPm3osSJCndi2wbk`=odi{&7_hzd270>#G3-T-7)f9{3`ZcW~k9gV!F*P$; zrH_^0L*zfsYch%Q*nTy*Fiz+xZG?e86(N+2!dmvB(u+Cr1kYsJL)7MQ^O~Y}x4vZJ zT8O6$Pf(wY*eHb~rr3T7B-r23MhO;D3N+7r!{gK*YoKYTxD ziZyG(f$^+OZ>@xqNz?{j(qO|TGdUT=_A3Q6YB4|G=xEllDXY?J0l zg3yBPO{N`cK7Iyzh~C%;->>!B*h!k1->k*>8Q8JCS_{Siw!2VO@dNy%LmiHXQEy2o zqdt#sjC!xdHi;vy1q7i?U&-;gc_z^g+oUs6_=Q9FLA}Kw^ZJ-tdDMFi_Gks7Wy_``--Sj=M2kb;DT-f)qs}ED zK7q9t_1-XKVa_Dp=g`&RBkBAPLJRgt61f4kQI`X2HlgBQSsUNxd96VXFR$#(F?%E& zbS^$XJM6ziTwcg&GhB9TRN~RDsv` z=uCeO)^e8BvX5cM%*PT#zJbctn~SpHW5;9&08XQ2 ze$7$rf7fzujkX({kHn5y!H-jD(*;NgkhN@S?Bg$Ur`unF)q&FeArf$?>h}mBWks() z93%0OC(R^EU}sbpE(oP)-6r+%Cjo2Kzsoz*XDWZJ_k7*h|6e7@X*rD?{8L)Q_>V=N z{#BL0A_v{BA!g^8odL@}YuV4x>Bs1_1srV-M=KEe(ih%`^^e%Aaqa8*?oW{Mm1e?M zGN7|3*r_jntPdOuR&nMmosmXbYT1F<$4z+>U5bR;62|VTdIx7)9tZ-NL>zWTdp4tm zLwChKiW825C4<8Ck0A;{teX8by9))@Im=4L%$|I`t3+uN#W?9%~SXn~(l`s;tX z5*ez&c*8Tg!&ZJ< zEtLHsGVpg*q2ZdyPdUSCjlqz6tZ3zsy?fOjjF>J<5`y0 zNS`QO4_GSr$m3EX>nxMF6&uy&-4t4|k4l6Wu05CP*k}7gRN(JmGebk{qY3;yp5|CU z7zI+;N@m)Q_a;6cSA%EbScXiZ3O1?+zpF8G>u^+p-?>1+ugu&=jSANond}FC#VE0sDm4?w(_@f&9 zQD;cd3{&|$=ri5pT(3;4z@=w4p2xtenMr1rtBg5Ue=x)5B_SuiUxiI8^x1>KZmYbA zc-oI&N};)K&vvd)OEP_TpERW2A7YoErcLs{o2EuO@0{&bpO$QTr2e&x8>D9Dgy;9b zTWqT>e>r{i*va}G_VXJKc9_fQStCnw-_asbv-YG8X;Y5ft3le?mdc;^2ug7RRj(kr zFtB=Mfx9Js2w2nx%Q|eumBfN71N*m zl7XJex~NON6H?*k)_S^2kEl;BIlL907ilp0rSa02OCi*!q*q=mC_B{{30E~3M`S5c z&1UfTtW5TQf41mxc6s zGmpj^?2LjmRY?hLspNj=AXdsdVG9}6V@&@C zoN>(pygMd$J*KbqT_oXa39N&q*X-q?-GC*BhIdST=@3!q7}uC=>r$0-ii~S=ghtLt z4jK-iRP^;c+Z_b=p!3i1tw(hj+NVH2H~=u{9`$9#v#gn1BFgvfSOC&a*np}D)Sd1* zE^UGr6bViW1gAPS=^$Cu787lSvd;GA z)>b+2$=5YAq3(Cb%p|!Q9C+tBNUZfAcs0eWhM$Cnt25jOB320)FaYudv;L7kz7+>M zAD1AQCDXFe@Sh*ac+|3Aiwgb&!JdwVKR9H0*gY-!wkL zm_N+*bl}D`*8HAU>ia_nG z#u9}V&VM5Tbq=;njTo0gD^_DZE5Ig~3qqN|0tVHqX$4Nrt{5h|`2E<5}xSofqX`OF0M( z#r>8e;UkXhOJJ=-E0Szd7wkU?jT|zFPoq!oh=Kv>X5_q=`fJ7TJ<% zO=!6HRk>vno)n`b)w*9E_Elq))UdUzO?~2N=AxSZa>JnfaLh6RuipC|pyX`?Y&RNh%2VzdTjU5E3?4O#^?2wzepGUPv7GC{&M;7=1Tc1UN0-^0NA+FPpYmsC&ixs zYyOu^GUzLnOk|vN}KoG{?H7kQW7xeLyC#XdGV1{ZDJ2A4W0Ko7I1< z8(Ygh51K02Yb|~Z_we`T@i%gA?rLW86dy~sd;8s0IkXo!!RMaP>k49rj#?05+}o-;g!gzz5GZ1{ZA?&=ZDE-$tib z!3(CXyJ8b*eGu9vX3hS0Z1pZa95&REz?!)mIK&(rm$)MBQsbWH6T`hZ=V<#MakUi`jB;Cc6S2H1dUibvtSs{GGTI6P`)#DVL=RvO|{KZQH@{thr8*MX5`Gsu%CNerEN5$M4g*(1s}Pb(tfxsw_ruZFDw#_IYmixWJO zXiohj9@ec(a)j7)TMsqvL*2$;mN4Y-G~v8-yCtym%|^grL5kL>$-sH?1Qur`_p1(& z-UX@Il9?4-zmC3ksO#n6CaNv+`eTnLIlbT(8+;-L72Hib&+XpmoZZy1(vJ8!adCQo z$B6Fm|CXaHC+Dg>z@IQdxVBb*HS)QyxD{Y(eKNwb;XS}KutKZ)x4YJM_6t*1=N9*U z=IKoG_ccc?`9q-GD>5bG#xOZ9dh(Vb#)v~r@+tZ08PigS0Fwexdy9T zf#~>;4@hB^s<2-IYoE2pWjV-73c1DM{Y*`)ltgX;BO0+`=8-U#$z6w4Dt_Tr-qK{; zRMDG_+T%`8CNzbe9w0^x)&rMtnmn7U=sZE*@8;dKs!0F5CHK_IjVf*tVO2Y|?(z@7 zUgCJU2EKcpqFd6#JuM@d*?J0@x5@VuuRP>Xhli-%v_t3I!>gBWd~+;|d+1%&cAGVP zDCp-N{#s&?b}l7gcNOWHL1M%7e?qmn0Zz9m)$Ns}MdckDpo~XZ;hj=#!EOilQt7OY zKNO&EoNPw@DzoT^4@)+%A6Ap?Ikr-(Y{>m z7dnb0mKc?x&$y|eH_Nz5chY8PD`g6L_7GuZLPmVU!q~~1v)yf#>n0;sQJ(qgajEO! z?*>7=YNW}XgJVVB)PQ`_Z2P7w{JRrV?P%G2+h-lVW?W(1zQL(4Xjwv=raDR9c`!0! zLx80oW5yC+a_iRLy4vv#)0016?8(^a+0nAu(^FB8y-(0(r;}1x{;Eh4zs`j^n;${w zFjl769&EoHG~jBncjsW_2J;sSzb6#_{;C3xzwb)j()K$k`0qI{@1Qs7;~Ql%M*?$w z+b7$8*CB1(?zv<0BUv|BwIX%=4HxR0wnG<#|897`vF(sr-(fAvpT?~+ZSd*=ST-}H z;Mbl8^}BmiNq_F}Y`OpXPuK9EKf#tbcOR}9=twFoO!ZWt95Zg+-3G5+*?DD1W5PH5 z?!&=Od}~`ra$(87?Dtl~JF?d^%;hLnK9pU#l-TV&Fw+w2%#Ow*w>Wr(dr<~rbJigC}xiI#RamXg zcU;4C`N5~O+il&Nq_aB)BjI%~w4ddZ9OZwz!!rmPOCO)p(qmg+xOlr7Jfi<>eKA(O zgLfM%>B}b>LgnFPvc#T#iXH!SP8MsfgG~s(+6@;UdH&G zf*yOuYi8xNI_1K3mU)n$!g$!-2$O-MZAUHL0#}j4o^&DPqrJA*+gzTrds;s_z)B-y zuTsmG-s4Z-e3-V?#;*R-i5>&p-1hsyHy);Ku>oF1s%_u=_^ngidAGIrr3>$i1HkN? zC+;w;Gp2LB-M_NW#^Tw-T=Rind@`wCuT~NLPI%G})bDZCpN%ey7H!0<3dx&)1k6&O%;U7D>QbRvAa6{GWe41v|f0u0X~n`l&XP8 zXmqC+_}1Pij8f{wKZZsqK{S%|$t)g?$<0Kkr5U}cGxI=73J2|(m1i?OXSXts2KhS* z8bE7a*f80!Ll9wtRf-{73ka2KjG9(8PUh9(c?pW5P}k zE|5Zk(6pIWvH7+HWNjM@!(W*qmVhGaFX#Lp#@+-R%JqK(uk2g0uMvtQB&Mu0m8GN7 zBxzbEPE?jT6(beKVC-9RRF>o|olKU-k(4Rh$TF1-$1)``mP}EM#`0qDe`cI~zrXAE z`~R>1b-C{Mem~D^@Os~8z3M(C5T=_8fCXt117CRA@BREv0C4uQsIYDGL}>}6B9 z&*w^hgUjW}E~igNhgKVdredzjc)syd3s?^hY4-8&n?xFXj}V)y()$@AHV66yjE0S^ z1Gw||1EECnv$t)xV!`X;9H;;Bksp+ew)d@33=G}d@ovcO>%!Yk)jspV$RH1zfhjz! z6!>%JVZl%&MI)r$w70yk#B%&(>61jI;55h2-YfrIM)JIOd##rUbb^zpMDU^+bpLF6 z1Ex0Ts=_uc5jeNe0j*-Kb5#?cVQy6U0_M;1!ODm&AG?QDxLrKDK`kp+JC~ch;71HF z*)*uQCwE=ntSL`Kb$@5^no;+keww{0Eq78xl1 zUGUpYm69HZ>3G&DkZ+obr@rurWfkA#xQo|FCcac5m4XSV*dwL;`exmD{38ji!!g`E z@2K;$tSYd#w)-MZGI^4`16EWfNJgX221b}lBV$FNdX}5&gvy5+evJ03nDMHf`HC}5 z@nuW^!sq8BuKInSJ@6g$yoWag>OKfW-SvlLdzkor3Pyv&(FOMpde^@8@-!OmR+J+o zMWW?0(iTq(FX^(}fEH^V(lJh5o$TQlw>Lw7Fy_A5*m&=?r2FHJv8DMOcg2Z`58T&) z9D}z>dOB85c*4o~b}C9WN%a_4GcDyupwCOrVst8+FT5(hc1n7&I*a8dO-OoB`)T%` z7t8Gs(1#%#g`rjI5Me5coXD-Ia&%|*mgni|E)qPr*J^s!ql(VXh&+S*h z70+gse@Pu$Dn0YOpmMgV&QlX%oX1~t(;Kri; zXtptTIDD8}Lud0*^Fk`eJRoTRrj&^CeeuSd>yM;5p z8i9$r?9ILnwmR!C>Kz8Xmx=_1g`0to9djQ$YWm9=G`+U$)CF;^iUbwz>+76E6~Z9R zz@r5k0?0`egRWx-A2M`nCOhXJu*@9f$1yY}+>R^#r@)lmcSgPDfRyK>f#PSCDz`xF&hEo% zP@$n-tKGXgOt#>2&9v_9{rpZGdA^RE@*!=T5c0e*w3FrL)LAVJ-vSTv+j-CgMO0GAsj=~8Rxgr=nxv&7QUr2be121Z-K&m&s$>J zvl=Y^4~qPhBbmQ=Yz-tyLW^(;e+Pr&e5E=viRHGIuq})5=iLwLoWe~oxParcbRi+! zSYCZLFJ+N%FWlI`0{s2LHSezL8<^jiJ9Ieqrp*|rcS_8WuPhGVmG%6D^LI*}YEnZ; zs?XZ&Z`IsHxcICv*oFBXH(g6`|_TR23GdvqB)4ZiKpHB z%DW%E@%7fhZL}D3K#n~)Iq{F>>^P@Frj4gFXdBnGSYv;|=2_kzu0z9|g8J+$>63ks zJs0E>T*p6YwKF07*kWPoXuK3RaycDsZ9&=ZZ$9&|p6OvfL^RMXw>y3LeqgOa`t5R& z)G^Zzo2HkNcOC@#ySDrIZ%ZowD@k>1n|_j|b6Y}n2cHX8>b=&Vl=D902;SvC!6xYP zxatEOcW1ar*zs?avT) zc?whF+AI{Uc9Z!11>Z33U|S{G`fdrl=01R5ngo=jjgGw<4sQoBI^4 zh~w_wS-frZ7s5r7p6)K5Gv>=nMV#p!}jO@(N{e#^xEGmw^TH)D|U92 z<8kJC>H3L(X|A(-eCcRCCKxUv(Rs3sN@w+7s>%K*U}uXWwQRLdk47rU(69RKABC~8qE6g`!har z&6oXCCf+7Qhjz)=_|q`PW|&eD&kBcX{|6ow4mKsRq2ZfHr{%y`UeMnY6WR|vv=a%) zeMs#@wh5BI*jWME%I7CecZsrrGwC8+ba5X4vrxvfBDS=L<9@nV%KtUy;=q_UJb$9s z2o+bFCRlU}JicJo!)UH&Hgl%SvPy~4z;NFRMRE-W5AhTNmK=t;5jA%MqA)r;m41*-deCQRWD~ekX^i%g z<%Z!DN+E+A7oYJXgi#XuOnWUK!8hcAZ%`O32xYmUIfY`#X@@Whz?jldj=L;7aK_S8 zwq{hqb9$h-=5bg!Tx2@xu0363I!>N;Ed_e9eye$k+VIGJ5mf^KkW_ZMD+Q7c}h$%TXHYWIF>r=v+E_ z=TB#_W_fNnW4on6bkNf`AF~+-(dA+BW=1!{;@i6|6c?*?2nfX*^?HnbS!vgX8g(#o z)bVu)yOc2Vy-(?V(ommL1tPU!?swo3+)O}_N`a$+ZyMxuiU0Bsa=KJ&)RTj;-oQmj zK*W_c)nfqF^Ll#$ZFk~ z6B(pHqe@urmK!7S{fPmWBwJk?ExQ$S?@A(FXyn2-&2x6~1+0!^96u14%uP`cBjl_U zUC;Z=5VlYv~BIq#FviLV+6D!vQ*it*LSU_aZIT)r)yt|hB2$yab+Se*tjk4^okL& zQug^8NSTB_$no?08Q4^Iht+YE<0pYMZk&I%1%9STI0edRgW?KHm$iaQb{Y8DRCPf059$3EGtpJ>QGGD9ql) z>UH|={bDV97b!?1;F4YsnvVqVPCh3Eore951QbleO+;TDD1P!7bGq{vvO1IrJxNzT zC=-sxlq$jpJbw%nS97|wYI>3hJ$lfLE;Q2udf!5$U9^%+ z?t<~gBcF=FuOCPHvz>H2&Re!vTQ4lWRw3O72Seyl-m6oziFI$T@AY)I(+G_oFi zMUnfOAAv{3JvTP;{?;P|E7n-kFa}`ulX8_*dKef1kCYw;AEYqaOIO-W63H(4H*c}ylMg*d;I=Y6v zmzNJjU^w5l!B>Q!OJ15|qDWwczr^ZrN#TC3Bj06p$Piv8&hSwJ$q!V@UIiDD(APNM zOlBfpMx(FM$Tsj56~Zb7%eBE1>ye-Bt*Qg}xwchCESg0J%^ooU&0AzvU{kxDBA5Zh ztTCU9@wy+lj6c!T=QrDC(^fUqZ8?#0MfOW<)AbuYA^R(Ah!F_h$0vTg!iQjOnfRh9 z=Q4PKSes)7mXdUnkKJB0Wy4Mrb1`j=; zbCCY=;I?NA+>G}EClJ!&}G#mA9RJJ-@Y z5*p33IB27 zIJ?!7>2t>hGr{FaC+vJ0z3GPehmCt?T(0gtuXN;idicR|$*1quNYb|@=j$biZ#_~= z85JHQjDD%5u*3TZ{fybpLN{`e#=E4Ygs%MfR8cvCr@p(6Gx|A953~}#)gj!A( zS~chI2XoxZ7hQBL9P16%xiqx#1~Jbs*jU_QlIwi@B?)mOX^am!mc9;lB9F-+uV!NZ zC-qLZO{3pPp)a$hc}wW$qSIF-#I-?+tB{&mGojMe6U%N-E_>8y%ZB&3}$%L ze`Nm2!@U%W&VWK(lP0Rw@_W)`hx_no684NZc+2Il}F53F}P;2X4mrU-fMC|9A#dle~GSoa3YTkYd z`#lzo^uyg83vp#|AG23b#FZiSm@QJCheDpm9bri2=c%mViL@`%-^R@mpWk!GYQKlR z9O8|d;Dh&5#=Y_;ZeTwyc`6ZK z|G))!@a#4d>f2&EdUI-*KDPg5pD|wavT|Zz%F@j{Bzy;Ix%#(Gg(#DntCG2a@8Oe{?j;?%cOyHcg13xOB(K)qaVY~%p*EXxQb^r(svHfB9C+vhFEmp_t z;h~h*;AqeJwidY(0#pKN*EpST08c3rLcy~gSp5}594UG9E;p=cs4fPbUaW$j-Wg;! z_YC~&J@P%P+e$qy)M_I6M_r8R@aUFtsZbq^X?pQ){PZsHh-jRS##TF0`siJsTE3L9 z!}Kth1!c;MqpAD?B)w~YE;;;WF?tUS!~?T7;XBqZh$F-6$Z3_eUxkq2!Vr?xv7hrz zKx%gkg0#<7cQb?G8x`(3%r~_p!9kFLvJrWCO=FPD! zX8WsSu%?Nj9{cP}v!^YYy_rY;)zwRfh69a#-A#^!z23|=F)yC0DQw}T?ahylrlJp2qIWbcUBI;^?s3}GW#fdy;1;XI@*~&%*!lW z|AO%))0OcqKaY=tME3b^Jxf_pHqC3%Ry9{F85^CB`|1>EjmC1eS#98e+BzhST2}lRH1jb***ZCxTWp0?lC44kB5FA&| zDl^qcL>W1%hdqVa!0lz;97Cj!A%;WWw|v2hd4gb43|d${h-b-o;_(^|aT%7>!HCZu z-vw>J$2w2|G!QR{Q}^Y2>P#7Jo@w6q6?39f!O89{%_=3do)n~-``Qxy1A8`L*8!6m zvja09p=w~;#BRka>0%zx-4n2}q#zwjka0DCLoUz(|7+iDuDoqHV|M90VaCUPDA&_| z)xZ$;>;cRC7)K3Q8-VTM7j3jf{m0jUiH~CJp!ul6(h5TYB*d)-08QhMgS+F~y#vAi z5UAEux}n>()EVVHXHTTbD1?o?Zc9F!ukyM*d0-H$b;CnirCRkrC>JW*VGBh*8dU%3uucaEuQlqO?K^_XLWTFb#B@{8(G#MBK7@p^5gzwFkC zbp$7Iq+Xp*OeI-s)hW?Z4I+Qh5%N^0!Jdl~s5A#kx-Rp#VRggtCr*H*<2K_{6~ndP zVDB(}ZZSGj z!mkCsrwRM^B2<_|alR3|o;EKj&m)|saMA!LNr_( zG!#wqhu)tsW26C}1c?D&UZW;19|gtR#I=ssU2HIc~^IsmeN#Q1rL`TR`^^@$LCDIXQn+QNI zSA%xwH(2qeR=&s)M=FRwi7a#15?KQhV{f7V=}G`jmK=6Kw@=NsD5&&{=>XCUc5t2b{Qh1;hYp~Mq`zAHg$U`LlG*>)}7&yS-c!wyvtsSp;xt;2(=&q>vj{DL`MLcM09bi z{e@V!bX<{TKUtS~EFHHE@1jI4*qQm2X)%S%VVt@02kLB&skF<7YU0&Cu>`GTbHp8{ zSU99S6_VHGl=jFz3TxhAeHO$vP%ms^N|&K_Mf3l%L*Oqn z95=n-Wy=7b3E)UIyWFyBO`ZA3kI;PhhKg`V0(p7OLNzn;6%` zt)_o1yW-m$RLUjn;NP`z>Wj@x@3wQ57PUqc>N*Q0(4)lO&?*MXg7j*6i|qV7pe#^E zy5BDx{Kv9?V}e$(q|5W)vxHnI@ac;Cgr{#`lFhMo4MJMX zU2MoexpS#VOLs-;a z^*hkSyL^A{349v8hZ{qmw(%vh|FH}cY4=_hc^{FS1Cd71gO?Z8azGQmWr$$4+q9ow~k!5$pAVjA)*z*XArZct`Q$2X z2?h?J2lR>!RAnzzugB%>4wP73=Dy)mTl-#}NWe-tQex>9M{-r9vcY|*8Z$>sB!vu} znOZzUW1r!KV6a1dBG5HQyW}GbT~~%~XZdfP<>J%Z<=Nl(dJN>xtACa2@dRO9(buKZS zjLz+H4FAmE|JW`kof$bGZ?@|WKw5x=s)?MpHy^2e_LSKM8?6Z)W|%HBj6R)bDb^1{ zg3giI@qT-Bzsht~T4Lr3rT=kniezvj2_h#^#82U{5RULj9Co`f~x z|C35U{pdbuT`3vvxdkp+2e}Vcoe)753q$U#a^MjXL28RbvMlc2>-ndLuwp22H0i>P z(?ca&km8J3&?Wv`tG!gVtyH#w$6Y%=9rcyzKZUEXL}MO$7CY7+2iQ1$1u5Qz3PG=M8a@?` z#WhsD6s2}25TER=?M}EB(|z9)=Rm2TS9G_0nF=??KT)D~>+*Mm^GwF#9BaGtJ#mdT z8MyY+3K9csI0t$se1uDcpkVN+!L0HX>rjJMk2U9{0se_SC3rBjY(2F*5j&QStF}Zl z^_ZdQI6M54-9c6iY_}eBUeH_blR2GMQ>sGfj%I{rptq|4Ul4WICZ=e6sSLeh?{H5f zR-=JezLvTx0jqHn7yWfXbhu|L{-OgVb?=bc%?zCP4lVVG{+@*I8jdrm^cvT5{i}59 zieC9?56A`SR{lnl+e-YbpEBn{8qnX-ySXp=voP|mFyz82cjkOtr75W(@aE_IA7FL# zz1QIn(#X3a5U~B6EOFiy&A5<`Gsj<4rtZ>XUU)ZF-st21e6yOm0rSp3Z3)=ZH*v|8 zO&9l4jCGmH!#!Rj_&ll0dnr%y^PW8RDSqr@H2P6p9(mTc9yvSl%w~bu?yc5V*^j^z z-(4~4L-hDlUMGi-3|^+Ly$!}KR_ty|M&^sb?1^qpc>35{3)#m0r}yOu0qZXrx6E|A zfwo34@PQjf4TZIb_8&Sxs3UW7Icv4Kv#Q>Rp;^@z$|w73m7D4{<~QtJkSXRjART~o%Szpak#R0%X=jJZQDH%jbq2byL!E&a zFsH56WhuxJ0GKgM**WsGIVHiF+^nG-$82*WGOocVViy>g{=CZhXafHs2L15j@lls~ zb-2d_e{sLbklc~7v`KNgPs9wqFA8hpK-oyIu(yro^L_OO(y5lFS6NjbR`x?%aWTQ) zfpf_#f(SB9D-x~(3sZ0N$64yCZ7GM4yFj}qFfIXCQ)AW3Upt~@s-jkQI|JUOM6TDW zXDJYR^~=qanT5F)#kiD?+l~LB9NwRbedS2`Os@blB~|6mG^kgTv9Ho`FTO5Z8hKiU z3T%}i!$T#fk?SBZ)~TjfV5V@U_#aBt8C|BwB*ABux6gvY7lPq#cz<%ugc4yU zih(SV{ZaFuT-!4h{20wg8~(1q<*jDl9whXOA+?jS+Iq}pFXECa6{$Q;NC`zM&)R60 zgPLgZD|5-xo-6jrC&Jc3mq{G%Nvqbs%LPa9)Av&rNh@^Y9*WS2<&|z%u^sDW6R=`8 z$09#?+eTu=1plBDX&dV-Z9zWmHIUF?Xeh|u4Xiyh_I<`!&<4VKNddpU6uinS8Ft_T z5h$7!bfm?bei1r_ceEHHTN|)Y|G)=^+RD>+8N^$w${}NS_gL{`j+2K>{v1d**d_K zVRgGVzi0D0O^Yj-rvk6*Yf~U;2dn)+wp+3#zghmlB*DNUbi11R>;xmTGuO*M#iM}$ z?tw}o(eb_<_ruwg*RSs|*$IqJP5vasqBSY-`ewmMDe$`R5a&03mzfs&dZ~5|Kh-vk zEe>YLJ|^qINP2q0?D8o)(nPeTS?!qXV8$935=ejKlFxD8iEyH1$%cj=n;P628ff90 z`|hym4bh?dW_hyK)0&N3+QV_^=5}Q5jh7Mo{%JqaR~uWSt+Z&JMBJz}R`#&vQb;&* zGCK#|u-Isz%7BE;#X< zvPcfd!7(2!y=bk>ugMxhzpJ)(c#|0XMBLpP&2{W77WXn|?!}3;MGeA|G2zB*b|px} z4GodFfdNR9JWowA_7I5?$gwhM5+MHG9*V+Xm1Pvxz=5Jb58gLy4d}{4Q<_%?Tj{{L zYaoS{tlV&}Fq8puYYS3p13JjF2C2A3pbS>f(Ogdhkb9dI1QKc|1=l-s=8koO^~3)I z4+Shq=b{uA)<98QA6=#oeL9;yt%eW35E6cP?$CR~GE{`*5c?KASdw};aWaUHSn|!W zTOXL#u~@Q0?coQW|DrI|!3ydDFQ~v_L}OdPx$BooPY>BDpf(cJbI6}@sQ9x}CvpqR zs*o(gsQ{!*E7_&B75T<50BLLqiLyHet*@)+qNQ4W>gH0inp-2eYP30NOGu8(+0E$J*AU z*)6U4o<5G0a(eLb77d^Du@ZW)GPPB*b%m~{wk8I5S`Awp;P2T}f^?bxi|(gzFPO0J z)p6;;9>dmYShgbtP$Ykjn^mp9u9IZHzyzYenPm(xNrH)O? zf=nYBA~d!x$n4GK0#nac7%L1V4^sP9xtHe@zm#A?VmO)+`AB2S!&vzt0SXLAlS_QR z(Po%$JsP=OV70I&lXKTEv!(w~&{NO)%LQk4M#w%HzU&^Wf13A1(-$9ucJcKOeHtH5 zZA(##z-d}gOwTtq`A>b=%pc28nO6+|_^zkKowOfXLa#r7-?Arz)oqDOJUDQ)P1P>7 zD|(Vp_}i4-x>Qw0=8n8t@$2C=;`^d!)BlL`{9ThMCwLLU->T53W9ic(_;8((GSi!5 zPwByGRFmYnxt;hk%2X4*O#Yl&XsBB4qA!2IQV}|J!WKA|ie9Gl$EOfYwh-hWILjj+ zJpfXyw|m@<4{sB5$>BKfMu@&X0kn|k+h^Ya4Aj1s9sZ&Ui6In>Bvq!pBF)VueO*wR zT1--9U~Y~j(St>(l!QqFKv8g2bQ|DGLvuy+U?nOg35!V|`Ve`X2IoF{%s$x3J-_3<-DS(=Ob5ZdeaLI8Yl5{F6(pF+WkeFE$FlTk zovMgtLLD2JCJu7uj&kPyBnZ0wleS+Dra+~_?9#e9qxRX-n`1`lV@AXC2TIIq_ff|3 z^Tr;tUtaedv>v6Jj8boeQlwg$C(~Gjjk%@C;gMr3UIl#`fe$yfj7Y_TUZ|%Ylc~#O z(x+1&vo$)oGJX4>HZyhu?)nQ$_6ID9=GK~7HIJ@kFAJvzlZF)Rl!3l*xiOhviO)q$ zf=c_oq2PWiBAwfADI?F{ca{VCb}%9GwC$Dx(y#3=Dd=b0u?ix$Us$YV4??P8PpQL{oRnl%$#)UhZl3QBdN=RDZr7cfvOig?N$xYRGfwi z=XU+x?aiLwC7yc1o|tUKJ)ORI`rPvImh67rg%|lF8jt7VuKTb=yNSEkfrYwD3AhfK z;g>r2&wD5u`D8G2=ER?G*XzrmM&lzP5<$QJi1HuO>=@$v#{#UWs7Y>w(^s%r>>91kK^MV>9A!H~l1)6Xa#LF-oJAAk){<9P1(*+YB z%|39<_k7V_`Y#G>YsPS|D74~WGo}~<|C(6(nAq_A-j-t2CZ=qDp7s%j?BnL8Wv7Te zcGn#2t{q|A`#tCM5QnO8C|>{5lfaS3HZ)CNek1bUVZdA>$Ldn5Iip{q6^yQyjCWKi z?6fHR4jQiymC^qvj`n8C$nP{E%SuiN{Vf8PUtZg z`E9*-p67aK!LoK-3ONfB%L6qHvVGMKH)vZeiyZg-$8a)m`Oh0qLN@hX4q1bg6^6t> z-uaed**bOm`ISlRTk2bIjQ1njuy{%zpHt^a&d)-c_<&%{X3ahlGGtvRim8H>H6%239um3bk@ zGbR5>?e`(dw&(5U)m-DCpt*24-xe%?t@gRS9$xJU=OZMO z8tyXL+_-n>M<&Vy_zi5Qn}g$=IEg}#Wd^!Li(_`m^}F}8dj8-fg7*jvov)`GX;B9! zd4m#Qd2~`2V~hU?oyjqXQ0iz|36o`Mx8p|GrfSyA^XwB(A2bmmKgVuoTjt%EBLe(${bG&Yp??1 zC~AHlwlibwXW6WCu6F_YsADPmXrrYsQ7gHu?5uY3ZbWvyfdVqy1gceBI9E?j;uNlf zwwY)zoMLI3hrf0B#}0X3_sfI1x#oof^B(#~X<#u8x~R0kM=Pj$$bhP7K~Vl(`(TVy zO4qrRuHk>`#k>*O{nZs|TR>Ade$n~8VH=n*J_f4!_M~P49{8;!A^b`mc}^UX{I`zW zO4zn{h^U1jjBobYmtjcQ2EMu0^PnXrO0cpxL`*BYe)uk z49ESNF8SV&gwXfr96EzqIx7#)?nhEOKC3Kze?s=svefZs*+BTe6ds{YjA>`U5T#Zg%-tbCqj#;U|NuKPY|D zIhSJ@GQQX}b?x)D67OAR`?pc%Y(QTFt!(K-4N{u5kfJ`#2?@*T(o|130{l`!Z7lZW z?#BLoCd^{BGy=Btf@O~S`0}+^*KL`PrBWYLMg4cp3?_v?oqUm3QH2y~Q{?Qn|L%Qa zSrIJI%`83*mmY)G@qg`)Qh(l;!~M0cBwex>_m@|z$O%2A1jNy`-M@*9BS3=f?RDyf zb=6CTTJa($mMb^h;TiWnoD+)EZ`vWAdQJBIM6+EEir>w<4&7Z?tel-v;a3lR*Yp>O zy?0;LJ~}cuv~-8`#CgZ8W^Rqa?+l$4W$T2^^(A4B^9HK?O{2ApzrIsV)>3=>OSVo1 zMwHig-`cq_{{76Yef`vtZ}j{_X5Rh4@U~d&BL~V+y8GLo^P7QeJb%_s zEkYN+B?+5Izny@c@!0$80+DFao%wga z^MG<4`39I~zJGoe~!I9g}WI6Q>ycLPW8E#QwV znyogC*ajA0kcF%a|DS>Lw*e!ee?`ENgf3D=6|(rQMHBHdSU*~4k*^hSwN~x;(X@s4 zJ5Fa@!e4DIy%KO(CAWiSb*4q*8!Okuk{liMa`v-OgtaAEsue`W!<$CYK!dM~2^rpY zc?3Udn1=o0Ncl;3_eg>GIJ^x6fM&%OZ>Nv9i^Ha6Q*#&YHQyXFdpDLbV2)55fdeUI zHC2>aex7t^hE8h-A1!?%gW_h@s!>9@MhT(Y?&nG7=Se;$@3VYArf^u$?vH00#eiMX zw-WUCnm2cpN{%e|4_}+ucL%P#rgPE7F|hh^0?{2LfF%Vvn&km()E(ffa@a;*wwPyC z$lJg%BH!2iJbarD=8>TFoB90FyCkLtBTogPEoLapKFT3iwEpOuhS0w8FmO~{eCtrV zv+>o2?5~&t`t3w)wk}2=^sL>%?BUxBwYig6wZ)?C@G(*7t(Tpr8ey9h@-~h9l;yTc z=RTFU2LJsO9NHO8RRb*&xAnep%!nCQO$J^({h+DxFVlNXi^SvH>;6u<4*eymdR$Jr zIP$ELnZdEOueXuTD(xr%6OH53MLROTOc#QzL+;fRGV{e=Deg*yA`;p?(D<<=(p>~9 zV!63jU3LROa7rT=RT}V#aVZ)BfoiUm=Ff6-0sUKKR|CvPVTd0{5#UO=+8x0OMClk! z0w_mxHTG0m!^czzMbYTsjI^MOMeC7WBG4$y?F^^z7v*P>%kH8zFPVv!@plKI|)LCvT^7jAGadPMuB!K7or&~}TSsBLgxoGtB>z8+E5T1%ae{kL? z6Q0rxfF({8`oj$61Ikz#LP#qTdObWWj5Ktc*z{64K zJXVGnGQ?}?jSyr@Gms_x6oza$ZxjeW>kQD?T7Zn7^TP{=Tx#Yn#RV!A|A~TF4bG z)Y-9Ts(9^u*B;vp|41TY166$!Mku{_EvO&tZV(+&uljYajimAgi@fFb@7|B@JM#ym zmHoGaTfclQ`-jgeB8oeZ$3@i{*JAUVkKPZAz%!=FdA8%CCL?Y1wU@ zwlE?NQQJzc;F88piln}p-11Sct#TPtCm*-}zLmkK73iy|&<})$3aP&viw>HbjC_!o zTDHl;i!mCQYm>%Tj^*rgWgPJpjM@XoZEpmz1K*8xwE6g}C)s7ku{w@${D5CU1X`ty zr}A}1?!=MM_8dRopNU`AL4fOV{5E%=O06TOvpU2H>JmskrFV%_)f4S*I?=m+8}?7Z zrZ#H1dJp?=$Af9iroo(lRH^F8*wpmmGF1k^#K&ZbQ9s>LKT>E;LTJwYJpKGUeK4%Q z1nM@B_Ni5~3yAxZurBGvh4d~(YL0*!&g}U<*#XYL8+HNd)^Vss@U-PKx_IwkhnuM zo~aQ2Lx(`|vklZ!n=n%8#UgmHYWsgtMd~SC%)#{HEqJhY`F~M)>M0$tVbJokeU#(6 z7^7i-aOEm(?Ks|YJ|z4Uc%E@pKId!i_NcS{a5ORkex^(~6^;IXr84j{n(YM!_hKCx zYy~4q=n+T$e^I`YKls>b4zLb913Lqe(Enc)i1xkiwf#@M{)%+}!z*7gbT>UjHYjf_m=(TPM^@;w zgHxZZg$|R@2Apr3n*<170T=ND5((I~!;%R#VmFO8;YI!j%qXnm-~W^ot}Z)T#}pdO zGw-t$grWOynyDVbv}V|kEw9aykVNkN7r<)LSl9+a%Ad*MDSw9Z<#;8pZ9cIZm&I06 zjQd0#or$I z`{}p8?<}6YqKao04w{*}+g_U4=5fx!wCKKy`=R)XlDy+luea5oRkAG69XX){7wYnk zMM2y4vhP3i?=Ca zZQfmJu_#A>^uDLNV{K8sr~7*%;@#gn!By?0MF7p9;(E0E09l=P%zW_!_iu1iAQsWk zhz_)qjFAwkD+coCxVf~j`3Sl*sIEh(8FddCVvz)@Yk>Un8#(kM|FT$Ul;ie!D&tZr z*_wAug;?|&9X#+K8hE&HJ^vzgj@#=g@7ZcmUgrj)e;rz;BQ3m&840P^qh;Vi9bV@u z?dD(W7SJV(aS5c9NKkS}#rl>0l9U`)k>R|%)MC;3nRg>avBWNUY(<^B6x$SM3yuc^ zy4GQgY3@?k3Wr+%2c8uTp(nt#TX>yuP)|MjB3x)Jp!pLO1LWr%Hw~h{6l#^;C61my zr3M%3RgOj$-(VF9QLIVD>nlgaDb}nay?J+)#Uk8HaajeW+p!jGYx$B@WYi7uv2v7D zOkovCQC{YI1_PPWURSZjA|qaBG!$9@&A)#l&FfSkj?&O}?X#gAH#BG$QPVLHp9XY^ zVZzbRqPOF#;%7tBCtr>^?AK8+7;Vr4CSd11`mUXZ$%m|5*?Q;xbhvl!+@Fs36we{$ zf{~6RZmw+eb4Zoonmr@^4)<#Bsy!s9TW7^jyE*oE+>~qf3vYQnzt+_tA;q$0bOkMkoNW0V`A2wFmpcVofI3g!1eL*QE9BU&-9x zt>RQ^M|ZPJ~3CEyV|(VBR!;br=bV7)W2b3AmVefA3Mx3yB8RQ%v8#y$X{h?Sw8 zzxZktw(~fbJC+qb@o@vgx#S`~cGgi(K@Vx9oPA<{fwR+Qh4_@9_a&}Yev+>%@8oacptMYC)7W}4Hj#%DT~VzMP-vB3e-yQEdK>AAAHdgFE)KUJlv zV-`QNvcap5yKw$*C&U4z;D2tKrJWD6O%2$-`>jGSkDh=ilH*y(6V+*8dq1*(?qnI* z=LVSrgx^F$(t)L!Yf)+4juQc8Ogo?j+_ovqIz;zd=sbR1neh` zN^LBs@p%A36yqIu$zPh%L@Ji3%t;8krVxOT!@AUUIpn^&8(Hj}_jqW((^R#@e4j%A zLImSR>r%wJfMWnc3F|`ZItGH76+h@77&SSAy`MX6CvJ7m39GR~zz^Ql7(y;w&QWCq zr!=dUhkIO-WVi^Cj1p3;WPc3h8;+cHYcIX<6=Od6y;^O)>(Ep&A4^d0+e$Cwd-Bms zYgaUMp&o4x`^EXVbkFxn6KmwK{gGoDv}u{j8o8l4(V;n~5{>=<+k8*{;LOtV93Uhk z1#I>pAxDC8sJ-;il#$z%k;39zMdHo@1GikXIY8KNJ?ecU;S#`DXoS;&6$JhlwY9k@ zxI&rJv9ATpW!x~|yN-BD9A(TR$8tJWX%;{5h~+OqxsyL(OzS!tP$7&tNCVY? zu?Xg1K!sxXWeLh<5#|fl{PA9?2&rE@ARJKpaqB0x7Yc5JTXXH=lO3|BB`C*P{#!=Q z8U<9yW1rM@9SEpchcRj|J^mGARMz@pU+pOg)JaapmhQ6c@EdvTN!Hu{1s_>&cY)4Q z@Kf6Dd)r3;($Q;u_wj4kb54c~>SH~67w?=D>LVw^xEuNdexpo0^%{)}tnE-Io|2+; zv;2)KPem73u>55x-K1hfB?xK;d=clvUrE+}^n__Ev2cbQ5zjK%55I|mGzSdCi1>!U zbRm>gJz4|y^PVrO?dTFE_K2e{vdA(uuYZ5S1tgWz@hi4MvxvGwQP8e>^l8}7Xx!)% zAOmD$-ZLdO?K!98ctC{+=Jcd=t#M_KB;_j0-(bFPJ@$t%#wMUb0sEt_%Y@(j>49MQ zWdq)`Xz1$T9NGr<13Vs@;dnpM_%T4P=5%Ngdy<16+VP&L5PM#u!v@H9yek`qzC})6 z*}yd3xFc`9m+il33FHv#zhcA!?|odmIJ#-ROKx#=Yv1{64z<>jsEq^UhhH)K;cr`c zS7M+W_2^X!Uvjbot<61Qj6p!KJoa8)mvcbyI*b9WO9K0Ekl}2dZZu5k_~?DX`fm7( z<_@*+iS4{AaZqc4_QL$%=DaJ)MC;dRpN_Q8rLCNflkhib)V;=Ov=96ZTowgvhBnvF zu*k`r4iVzZggHKDO>EE$=BziX+BgB;K=aoNZ#NCiA9hr!(th^b@t%X8p6#_Lwu#r` zw{?s&F>DH_*S&Xla4ee=l7B;6Eszl0$osaf@+GObm<1XQ3aMD5@@3*&hYa@fQOA20 z=NdxD8YAf417r=}6$Ro;+Aqp<{mdf2VvVk+j1Ln3wyAt6MHy#}npD1wE?$Xxeg3+h zqD3kes|-ybPOrhp(z=AOb`4%FxK-_{#oodnq?x9i}w53@44nU|ZPO0Rt5x zJ{H2lZ$U{)Dg*UZIDY9WSwCMnOH*ZRr4R#Fd zI1PW3K~*<~e$XI>N};L;$S*h@s}y`l9Mo5j)`q|7@us366?6ch?f91ALGyYB3gCrH#SI_=P;_NNBCsXVo<*p%`c_$9#{biV({u zlBK?evNnH0s19)?#b;BKd7Eb1d&GtzwXO4r4U6i&Gw+CpZ2;L?DN4fKx0GGK87Sp9 zP2p~?Aje#sD4G~d+`yBTCyLS-o62s;kf6Qwj7_jw%*2lq{qdT@sOT7o#xXykIT1bJ z^Eby_l_)BOTBUc1-^X6^i(xfsRCJ>?N>FUi@=3@-@sVRLOpMDSerId^_u0a%4#(U9 zR$GU%=O7=wyd4ESAmO%F#^qpVY&9h*DCn$*8KB`e(U9Og zW#`10>UrDl=jmlk8B`_D%a)kZY}z!`e4Ur?Nt}9T+UGb16HpNu`eKX4RbY!kL?Yv;bvt| z*nY{)F6#Q;vY$>E&f1tBbl^IqqQF7xX}gnf~W=?Og1gTDm57U~1n9 zIvLdYjU%Ji1YNVrYw-G@=~p*jwf>ftt!9|#ej^4-uV?%Qs~L_L?gwPRXEQHFk?6Ea zn}6~Pc_}2wwVtsRR@)+=gL$EfycBt&6OFNTz-N^PqU|J!P7r6|vCS}jbTTe-xW<&*M_jQ0i=t#=G$#xZy5eV7^rnbk8?VYMNZU{K64 z7bP|&%<)l@QpQp@x{=Js$|e%7#L|S1EOjYL840(Yx^LWi$o9g8+{)eB@il1*#3mZU zvVAs?V}2M`6GIKfK&!N&dd?D7GvKAfLz9Dj1Y2H;3bE-mTChEUtoa;ziObOk|JG62Zh&>bsy{Ts?!r9;lMnQ%vl=85k zj-fc3?J@UzEZaJjD zs3~|b(Gdgram-z?28W^{zj}rRoUPB}QxeX)vLJcRb|bb!gn1>vWjFPEzy00yly8Cp zDatoij!ET(NSr8z{e<{_4O5zi5CTS-Kx=@)OzD948?fee2t9s{FE{o z<%MXlzXfcMJSavI`vz|>M@2Ho zD4;<`K=LRq!Avx44YCNxCgK7LWL$9u3^IrYWed9+)8l|dSrbsA1R)rf1OoikVPxL- z`M&SJuD(v6KGhKDRCiU~cb%@2OuJQtGKG1OTx-|-@lQ^=Bll*utQVEh>geFfSAxh~ zVusLG5gtHkbH};hA$}1r`pEonXoCahTyOpK1_OPbB$BFr#wn(s4HNZxZp6)xB<3_J z)jI~Pyb7=6j$Rt2+8CFt%+%|DsZt>bj&}xKp>&T>FAK%or*}M^f;&>MU$efL4*u%) zpy*+%TCVXO&&`;MJD&L9sTAx?))(u+Wj};GerPM7yXFr2r{KIZKkXHKl#SRvx~=Kg zq6E%A8e~re?}KfYNofKqcoew18|sBSZ2m^5vDNRH)W^_LurxE#c`tr%mIRfq*RO9V1S!kbgdUzykMiea@k`U&iG6l2|xjUZA z^+%&-BMBxj7)VNLjBRaw2$SqYT16c~5a(LaHTZz=h?}J>9e7}YjwH^@#!{9RvWCw@ za6F=n^Z(`Wz;_u0AP|lD0v9PuPeeo!9;ip6!lK?J(Ij<9lsMN~%37eqHE1D^xLCSz zxk!evZY{E8wDLTv$oPEWyo@6QS(~8BEdR++4@J@@dCm@I`Er7)0%r$lleVB~2ihQf za}F`@9eUv$^X=_q6wks0{?<61A0>XN2Y=&P1c+ZI(f(0IJu+2=TUa|5G&gWyu~b_L zQV@EB2htL;CHUUBg+D}@{I&>INuU8?%gp=UuuZYFB|PE^sc+|y50%DYt)vXq*gaKJ z*HcbP<&v@-mg+HiraaOL!_63@j^5Y)@=2))^=>4_kE~J@9SF;kQX4y7tb}z{p;R8R zl=0MW8I+nxYZR8fpSxxoguH8<-P7{(*>UGeBs3&1J_9#>Xb8VEA2;d;2dCA9PQWbh zEaeKpZ-uFHan2w*K-=t&*GuZ6T&J>Fnr~azeg1OgXD1uM=sX zgk=P=-vT9MZc3tkszX%7ertxk57r_oJfecMczH7iRiwqSG@bcE84aAB7xsw#j!%^$ zmR3CCePNjL92~}gXCy(4OUd%CImM|pV#P#*D-uuK)_B!Oy+ex%o?579`NCaQF zorz$1L?daj*8iX}cZo)`?wM!^fgdNVp8G-e+-MrLP02cvFiCNh#W!u;(})`}-VMZk zZsq||2Nz>9T8{yGqFL! zBw0-xHL5frEt|cJ{;bVR+p~gB=^_YHqK|VASu@(>L#w!lH0a}jr~ClMg*r3ZQ^~Cn zq(>Ub*zLg$FCLA5j=as?An)^k1&2cID_}TS#taJCMomwPUUoWphr9U0B4||tO-)#~ z{r^RkpjC}wr7M~n-FZYa=}B#PTOIQMq*~IG-zv!=L*!O-yi)FEfzuAOh3cYk!?T5z z$_4hy$gTei%`N!a+ubdX+)CiT5mx#UR-L&B7R^CI#2+^HEIzfsr6(6?!51K#C~z{l zQ#Nn>`MXFn>lv^-Co@if(y4NVnGVzT^i7{Ry3BF~!r_Lfo+b26aiOY=r%Loq+z!+K zc?OSYB|WLrd;fz9bU2X)>eT`9|C4sgbGDIAX(892T?oC!?N~}b6&JdS@l=_9irZn% zc#4j<%esR?o~HH(I!#ski$ADCoo>C)>XCCiqLcKb9{lvbsiJgfIee}bQRfj+ihwnA z5Orp`9Kop}x>cR@bveO_S?*2xD$ns`f)Iog_$~k{a6Cz0w}Re`s7sli9~Y{}IG0P9 zi0;}<`l?BIQCq&ZOJjHmhc0_&QIi;|qVOBSGFAB8QJ2G$*Isam;Aj#aPBhiOFYCTo$BmSTWO*f2-T*MzNq(kwv=sxTT6X}o^Ji$amEQ6w2H;w)xTVhL-`=f@k{l7Ff^3?)~aXv6At$ae6-J-pRY!}%jay>?3X zcCq7nsbK;wp6a=u^Qsov&f_na8ftP@C2{$eg=8gIJ%zvNU*6vbN_G1k(?$)Oup#-1 z8bP?EMyfiBMSj3`$ z=32`9LH6q-_8AuhIb5tdz2CTh=Fc~jE)cv{AU44haF@iOm;EsntI$$>K4i%8T$gup zTBj(C>Qbg=jm%WoXje@}szB2JnG?p7$m3{RDu!a>NlOS8@*HJS{&Ipv zEoBEOe-TGH+X`b$%2$#-?7}7T13Y}3z=AZhwmqFzJD$A~!Go>ug*$WYyPetgoyuD{S^recGWc5B=aP4a9Y3{nGPe6F2o`y=rmsw-$%FeGy-B<}R{&8>lYs z13|l*s@qjYrsZ?-uKD<^u$j&YVKu@^v#~d&IM8;wH_^$jfZa5 zi31`_7T+5ksx4!`Zl5Bn5TL^60%;yPq>}14e?j5|MAFPg2E3Gm)QOH$T{hA0dV+UO zZ(?}H3!YF5!VSQZ@totNd|g5zlX7TGuyu-Zs903^wxqQV(HA>{&?tv*DY|A78_2iF!YEHtz8uGqNl_>8(RNyF({Fe&`Q6%WqQnr)) z7jYDrl*I(ShUiJ4dQdnOITzD>n>PmNJ(GRsFhT@fdMOUO5y}QB!Ark>w3|# z*0SjQaQy=7)KNkcbu+*LY6AbYFv_p1+5aN{b)86uS{)eil#hVDsg!VmW`zbo!UK+*=<%Xyrv0Fde}dXe3~5?P4#s`v*u5lKvLi^jL|e=`$FB5s=K+fP#-2j~rPn6Urj0L5tv6E+&+fcuA@?fj8W zt`7=1om@V=bYM`8CtPaSvz)Wmp3A=|B+J34m7xEo-tv$exC%}>ZbI+1V9il{7WKx@ zK&!*AkZLPK3#zZ+61VV2afLEu-)Q%8pSZ$O+LZw81Kpqh<^KQbfv391 zC0?Pg*zzJRFl+>L`y1=kYO84Ag&@adG$l*2;uUU7v2 z^elmfQd0L)&Z#hK@+!hJ1dY_85j7BE3jLuAjo!qsH{vj>eCA5|*k?-;}>6i1tS3 ztaP$kovl}M-ypYTN)~XEs_|2MzquMg7;yWp0!0e4ugc|xeRZXcIm*wb%;NYzd*xiXZ7G=6=;&nFUXOhkgNd@rwD|RLNZ=lp$JVT z&=zRJc$2fZ!a~}WM4Rq&tc?~|SkLo_As1;E_(k^YPM?J(czK2`rDz>~p)8rM( z!+RQRMVeyE74U+}9A8AxXrPGYNY2X%8nxp;bQR(japYvOJO`-r4d3(8MbR;GZf2h!G=_Z$eEc8wdMK=1t4C%oUr_Dn;Bc&SK|E)*?=i%;!p znw^c3h2wkWpF|q;=p}kw6&L@XKQW`@;?_0ReYxSI^C zb<}(7c!$G=Dit`L^HGeTGd9gVD$p5Tb4N%`Pv4n))oKQF?ZwCMd140Frea?{^xod~ zdootXE&tL((Y1%(%9IT$*lRyo9BA9UGk+_HiBQ19D<>%Co`L=gy%;pps~7XjX=xTZ zZe20bJ6GE!o)4PxQ=!`NLhh6nA?DI_E5!VVtIz=@w)pe&n^~3hkw;&PoD5%&$a9=X zRa!F^UF;p$BMk78v2d0@Jr zmL|O8zai*zO5137+FV_y`HS+4)41a;44T(8F2JlmWYRI_T?gA^1jP2!zO6Qx6<;vFGX4?(we)a=oOttpLYhB@q(f2w6At&%#0W(_GwuQ}_{&?JoZyoo(6NEq&v$Jwd2R%Uiq0MrOZBqLS zf#C*Mb1t2{K6(E4b3hamCk5AViy_t`6#QUt`Li<6y$?2P-P!ii&3yG>>`XEjyM%sM zdTYGBdQZ!}=K_bAH+3B@mN;4hKO1z6Z3=El4>z?}{~G*f7v*#vFWz_x^%$xHMJ4CwtX2 zw}9crR3wWf??qfP=&_t)ev@)KWZ=bM7i;4WAyq}}Hy-4D>nGrWKfH%#4E6cF_Rof` zi=zWp%W9j4EQ#=9q_O8@a6~dT1fP1hOZ3=bP#eSPqTHdQL6k7u(#N)M!NqwyfDOnq zlYXqlvweoKjsqQM_fo4BkY|-_YK!aC9w z!9C)0#q-W{YY1Jh`QAgW)&YkreX@3;0lNDA{biVRSOK=MILre0g zLyRG_XJF)K-{~u$Br4Y|}-k%VBX*9XN| zv-uU7X`{!oCOOh|EmxB(4#ia*3XGy{!whJi!C;0%Yc$WS!7TP_9*Rt{iRs}mrIsl- z`{-K7j+9(?^&xRm=*cW_LEc`wyaLX9_I%=;!g(VTm)Bqt)o-3@54Ga40nam;SFFid zVc4`h^4{u%dX+l7Le#;;k}k@IS_JCmGp@uG>=?LtOF-kiVf{Gi{Nu|X$9@g2j>MU% zrm^bvhDUKxVJf+x8fygP^ea2grMB4^f2E>XNN0=D@G3Oe{_~CpS3v4gcO=G4WR17; z$&U&D!_2$>06(DMW{CNw4u6X`Nok0`#ipi~dn)v;X&=DygET$lT&10B{>_%Qt(bPv z0opTN5T?)nHTduJwDG(*{8PyuwqE>I!PPdHtZJfZ_PW7fv+PsBL*pMh4RY1*cm!A#iQ zI&X>T%Pr7D#wrJFtCEShR&s#?)W)=RE*VYwy(h9KHjVm#-)QSRvdv2o8OtMfX@DBV z=%r0nQXdedmF*xGi-dw?>@(W>;v_FwmSK2Op?ZDsDt1wV2AELApe0S;xoBo4br>-m zN)u`+Ky0Tce`DEBTdlNCO_k0L#914_cM@s;5vS-Pth+pmL*kT+wEwi?)tuy@fy~D> zC34W)I{a2?j`cEA3QKQk`_o&m6(JX1GXR^IC}F=AjDiR~mWe2^i|WB=6z#OqGLtsc z;=$+2K{msa`>I!pQ&zx%T#Kfe=(PdMqzy`RUs9vW0z9t?;HN716mu^D_#C;B5h%-h zyq)wNbKdrmuEn>p4GZi}j;A^BEY#t?1e$|5MT-!|y`(h~+gGcjcb1bfnUhN;`SB;I zq()UbfEP7ZeW{8*QD`!yX{M)3FSEK?6&e+4jm(}mtfq=B%^0s@i_)fh1H|Z_yFreQ z86IhrEF1*7+*pHV&q4fBvw^Z>$yC8=>DpR+oNu!x*8=T4(&WP`Er1}*UIZ!kF@B7t zC4d4{3!%)xU*D+z==%J{E3cYON#+K zz#Fo5Fxpy?em1Viknt*oau=X7J+oG)hkX{*+AWpVtMr@wDIW{4l_hqVM~%c!tF!xC z-Z!762CM@4x6voN9#oYT+L`65w}{>Hc`XjJcXkB7SvIojXhKI&!#f8pBF^+xnvst3GqTZ0aL_GLw`CYokxUH-@#HAhsbDMYgouW^Wb`W7;O9Q)!J0iSq$Tff)9Yknd9H7>{wPE!g_YQ_hy5c zWR~Dpnhuavr1z8{OJTMt{qTOSg`0Ty1)4U`LIK{N0NxR}dxZc!0kjaWB3T~cyh5Dx zsvi8R9v>c6*c~xTFos{LLZ3i~M13Y^(LYn1bF|+*cVD%9F@DEO{oRV|`0HDD8k}Ws zfBEB2Yj@?E6W!W&vcC|1xD)$u%RaW>*`+UkG}PxBpY9zVG-me{^+-75m56=hqca@3 z|2t>r3qO3cIG*0|yQp%!0Lg9;4OmFA!U2optxY_S{Z3k2U{i`a6?f2_{mRu|?U=Mh z{K(@?#BJ8O;3dP@CLa&PAq@5cDwnWwo%i5N~XoWt(ej~85;VX_)mY_UM9V_ z0{*)eZ@{xqlhHc-p-%jpzo>r$!n~$SIDTp~5qF$)9K+44TRMDHf_<*&(K>+o3dZVTzXc-lNAP9Ogpcl82oEY8ZA@pmU---!ea zcaJsW?|7>!eA{B52IH^#a_?A#97^a^C>StpLxxTbWGmI{cTAa_Z84D zSY`XtY%f@OUwzo`)-)U${};tVYpP(k_@z9QdlF*XZPtjLzD2qu;`ofl;Mz4u%zk0Aya%A^3qk=@{5EuN}x60chumPROIb_Io>dGR|rh<4BYlTHdWcMeZGxINE{sm& zN53tZ1lw2GE<^d)UnP_MvO%dd!bBvDW?oYzRB$Wyte2w`>d2d^>~#}K6x-38TglSQ21StB96#ny5JfL^r8_f96ym?*;kFR zW_(kjS8`uj(MQ5x>X0}u`K7j!1{a(OJ2k2fIH+D)OaP~p1x=U@W0%^iEQ{%Vi5AFn*fK3H5slyA) zM}4g;GZetmxiLq`1Sj`Q;U2F;F5?rRm3B7+3 zTY|*+%pG;9wl=K7#IG48+*vNw)+8j>9{6#rYB@tinZAR&VJ-bNDv)%R`W(Gg>mddgE1eovXa^y+eW zPaS^uXeE8E^s2Uum(s5%(5?VcY-w4L`Y#_=+zUirp|hZ^Ugu?n^Fme%_oENhyl!?y_Y51+x*g5C%lMim_oOF+m<{VjLo(B z+_DyeHf8e~^6s{Zlf*l{=Qt^z7d$rD`;0lY+|#A>xDEJw@tuReC1b<0URn))-1*?? zLvO|0=XX4vgRiGz=iCQ+@37~5b07Xtd!Sh`>Z@N$n^WR{*(Ga%X%(b|5+@VMmDSm< zZM!dd?Dw+J$MoUGc{m*oGxPE3C~XS{Ff|Ccy9oB66}W~w_u$HVi=XSBAKE=uq&an9 zH?EnU03Xnt`2)pi;U1y)Zt?H((6xr=hm_$B%8-{(Yn@B4rUK+uhu4<6rU*O%&dUXJ zu1x$@v`2rNQ#aJgmt%l9L4~2 z^+)plvNDVSFpzTt+;K*sEd_stTJ^I^{{uFj#rN^RL`9@Qdd(xHs%;pyfe!9E3skzd zLaj{`FpAQjfwd|y{f}i3=!Cu!dixE%v#Q5`^7U#?N@H+}(j?w~qyvk6bSiIjW3GZd z^MC^3K*NzL6~-UHx4ymRk7Nl!Vdf80#vgG-gHUmrZOk7J+}){k6$H4vmBJ1r@+%VS0*h$N*o&SAA;?ANi(4j0aL~$3VT%fHSEw)?=2ZHa; z4t#ePzcyD?qh6`FqNR)z$yH%$q<6~+cC`m~=INm*^Gc1Tl>(cTdkXeQ@KCiA4Jl5k z=4itw>hSwYjoTAwH{s9#J$ih!zpy+!`aB)f+?SVkuN$n4XF1(r2V4&8R#nWbN=*y5 z9?H{W2DMj__Ps4R^x0<yJ0(K8YmLE$ zBCq0y{a{*fy?ahldIHT|*b16KU^vnxq%+_7juqK33{>e&+!H6sj*}y(B(o4P->oF< zllMWrL!4G~?g>-I&Df%pH=kIvg#+p^NB$q@kXy}7&{saOfpIgg==V3D(h4mZH&y5l zWXcsQF1?i%M7){8KlFxFuuTiT$;8`+1$mOKPpi`h=JlDQWRhK`Y*Mr6iQ`lcF!-Rxo$C7v(kIK|L$!F-&PR*b=oGK;(TJ99|B!vh zRL7cD&$i>49+9^F#YLy0jV^!L2>a*-KhM$UJN|Guz$f_mB`nQU^m}etLD92u%FYKj z9*Pt&0id`He=52v>&vFWvF#5s-<4oJA6R3+qmT9OY1o}Y(3Q2jziD8w8KjF$BC}TT zxy?C2Ce4?yF2M~qB{mEfU4luxASg^7UIyMEnUDX8ujR$pYFB0mo`~M(p6er=P9j(2 z3%k?{I+c;H+=_he2}Sz3Z8vOVIxf7%Worp?h-cTg9wC)0`b09{856!X8lV{DW@Lit zGk)qkFz?iPq8EKe0~*+H-M5+0xFc8neQ4tF8>d>lBCk+R`s?EvS04?~{>KYj7sFU3 z$mlywChnW(D`4!U$#y5;*5MVJNq^OzT#fp8gsrGPE>mD|*Z)%pW0`mhP&sCl^SOoD z!d7J%3&I6j(qA=YB{nf=Ij;~1f6h2eKF;ShOGDBdumkp?37GuGsaAa$s|w}w3d^V( z4^c}GA)ooq54UP)*=8~^+qb#vLjuOXp(Lq~p8%)I}Dd7{|gGHdto;5^Dk>P8*R@2>ghFH2Ih z!X{QRgJRqUoIx4^b9{EX^u9ge`2J3PPM5eX$n#HbXxaS~3hVksOyC=-HhH|&0iAd0 z+?+S!F1||M$fXDMTu8ul57{xlMA{cCcgy?OlPFq*?%H>6_?Clz^oz82Hi=vNN%;8Y zOJ+e*$*EwL3trjE%P^Lu`j%i$er>a zMXS@1(h;>sxwLoznK|yraM2?GDw2I;@6SYKRL5*)L|iDk0US*V^doUadW?vaNo`c& z4g#SME(A)WtbGaZP>r^y{kE>%hW1+`Cg8V`HFS{CQuQjd9~{%2RH*U-j-#$s1(B(e zR)DHV6|Z7mn5SUXB{gI~s|i##t)`zIWQvEjn|ya8^&AJVFYtv=!}s!%i-db<4aZwcYfJZIve zQkThi8eE5m#9xThVFhwy-;XS$|5A1dENlfA9QcsHZ;E(t0#B(zGrYnYM!+!86ntVx z<9f8j&l>dExX?w6rO6Zuim=)bHA|C`Ez7`8iN2U?u$t}!d`Ul$)Z{rogjH(*d|Luu zjs8QavAS!`QWZ#!NBm8^jP-+9AJ~&Fgf3^d{v~lyBE-vcR+H2;C)46{jL6y$r8f>!lT4+|soN-KoY)kevzqHA0-Lj6Tj(315(c^Hw6%;6606F#GHcKghEt zu6h6JAkg3sxC?#v1XnMoM3@Dgd|6keWGskhWjfv^N9@sk)SfaMS?nqoN&sQC|Ao`nd7u9YKs(d~GIgvN{~HF5 zZbSn*?Ihf7&IEM_9QFAHUOdXo#1nd>=Y!!v(c|#P=O+QKHuqTMnai!64La$Qkb}EFs@|^XgbWOo~fR|(qI52YNjoeM3c?oUzR6er<1|(Jb zTdu(-hI@SI6Rv?8{cWFP=YL4)x`ew-yN-dgJ&OAK=&>)@D>L);%_h8p{+gV38krTy zrG0lDnMoID&~zBP6_}C^lF}78z9lc%zNB;=LJ-rgoe1Z;y+?clP6VIL(I@U(DR`X% zCf)%DoRu^!kyhF_<#HVc*RCITE+p@LW_rC;-vXBz&kw5;IZ%z~DKPRac#>GanH1DL z=r-v4EJAio#(rI}A&nZIUEpDGIxsBNAyl!x^#H)!c_WgqkHvR8lDNw!IrO_(DRxpZ zfAliwe%ZbaBARzZmuTHg(t10Y0^CUA-1Wo#|JstGY2QstUbw=18Q(3m-Cev2H7Ch@ zN-6wp|MKZnv{alc4`nxyW9RuYDEky->oD_XrFNR7(AJH#Z!t$ZEXGEG;4RPb;ZD7pbs_Vgi*%|HsTFfvhf%E= zJ*PqlP^OpEj$ad3Hh@zOrSU_-HtI6YS&49D?MI|BmX<9s5D7z><93W{T|z+i-m%aP zQ+5ZsG&~!_u?NJtDv)<0E)QTL?RTN=JBvYJiQ*AANIi5olR!8imMjI{^hv$mTExB% zu@`DZoC?kxx1erJ$uAvr7?HqoNxe!FXKH8D-wa0;PTK!6=l&QkH@(%y{=tRlo4?SO zP8<)^*rG;gmFH|F?bG569|tb+H2z_*jd~1#U8n5cW;}>Wt(bbmozf-rUW(+MVUFi> zr_>3(DUt6-YQOWzj2b!4OM zJWxeidEw6)+x8{#zXal1Z3?~wBHQx&SHKVIkzY&sGeUC9;NdW&XnQy>po~X+Dzse%hon}ugLBOo z1F@kQ+?#TA$GA{+#()wXIJ)LV2ItmJ^hPIS=I2^XTqeJr{Kq`hBg$8W$iPb^wDlP( z{ntn|U5YB=Tt!IK5Sb<75(|X38t{NJv_MlLpM(o-@$;utA49E0GQUvN1JkVq5}|E? zI9CG_f!1=$)&w3$sE{i7CUX>RjHM~``E@N3`>mFu9E9Jhk1tq=N@r26 z4nd0xUe5C!V!!{O528e2*-v6WC5XuxAoBAhhPdn6`l6Aox3;PfudK=TXbV?G5A*p! zpzoMvGv{f``cyv0-|@LT>$o;=&xJIJtpnn$1E>lBa8UKaM4 zihW4dk&oNWGaqK_8CZ>+JD+!hy}(nJ=LH`9#sGFHD-W@ zRr#)zr3sP6x?n+*EnM(o^&p~d%FLiC!CKc14O=vjpSlUleiZx3L#YkqD+@epP16j-nfDmes~Fe-JO8Ff0eB3lkhah zLQ}Yh=9Sv=wcwN6f{52INh-Aod%=1*;Jilit^1!j`*}o5=|&ye1wR#NZzAo!uBr(i9U0eCtF09|XPM=Ogx8JOrvT?i zTGhuLr>f^&OrS!NJ3a}^a9q0ROlH31nNV~_EHUvSDhw7cpVYJZiI^y?TvFhZ%pbJk zhX2DSjSkj|RCwVExDqf=ScQ577@ZPm*ZO9o*GY@D;e&O^p3$hF1>TA84gu-8e@a;O ze~pLEmjSbqjfRiRvV>Zj5E*Bds}PDBrpmx1?Br2t?5K40fJkE{q7jILe!)TS`+wK! zD4MGsRYHoK&xMqK{qW&T@kRc-xKKOB!A=6(?{nv^ zPD*q;?jf@QWWnTAECN<1b6E~+fM+lk{V04|=l8Pq%9*p63KnAQFkK4zg)NL(lR%;G zey5-r|KNKWGv~8H6Zz%B%7ZN6hpGgICshcwMvZBaIDR12B4`lRQ*t1IJO@j9R92Bk zfsGjLjj~a+)GtX=<|%VXHHh9(gecd51dUUb#&EkTB;XON-kZ>qXybKAgxJrTK7uO3 zGEfL=m+X{PTnq8@h8U<@tJ<2Bv98qC-H4c}jXS7G*<+y3m#P?B9U~TxCdBAPlx`mj zlmj?)-2OMcRj$_C05%Z1V~?C%UiBVD#QR(er;l#o>l9Cy+w?a(^+vkG05ZQ(;K^Du;=EFxtK%aq}5Db9bJ zi$AQDo{XdI3$!i;iZXPIOUxDzbDop<6s+85MuRR(etw-d2x0xrYX6OY)54! zrHzL5J?3*ue{Uh!VA$hU)S(TSOacK$f`UCJA}D!jAC~dUB?VVSM-B^pPXwo_g^DBB z#5G?s4f@qi>f$BL;jnY&zB;}wlk^tUm!zkaffSZsM6!EpJt;G zlYu6elOuCwT-H0SYDav1VlregE21UTkDGBL%`Bk@6vtdOuI5bN$6(?FdZZcfZ%sc8 zs2xw`PAL#-lB4Uaxl;#7Gb;3e#_CTXGT_4;w_?CL(+L60@lf!fp$t*2I9(()!?VfP?%85Vqz1DO5HTCPwe7hR}6K?DjTr`>amI_PWTGxm@em9xv*xXcR)c;}l4KUzSPQI{r!hCoG zUcJ;k{N@6h)+BT)aL$oV>4`{A6|w^ATq#H#@NI2oma7ubGPI7LiyZP0mJ7TuD*iRRU_0>IKQ@@la?0fq6toI;6+vESRb4kOdmp{a)s)k`t1D$O};9@?(YM zMX-7@KNsa(>>|1xSfY3lLtTj;&&951sK*I@<6^-`*GHn~WvuR~Ud9Zd&BC`t`4(9HU(TFiuGSFz&~Xjg*^Pf2RH0?w#KR)o#L z@^FR{w2Q}o$Ov#zf&TGS<&B`qyr)WnI;%hlkH3CG`L<{VxW07Y3?^bT8r8p2YN#dS zVMe&6P;&weSgu%T$KQs>2W4e52^CyEL*}%K6F4w3RO$U(>}GZU;-Dr zn64G*i~|@akY{*;PrLE>z!s#<$xjuMy~GttkY3{~s%R2!)KYen z{FiXnF)7M~8x2!Y0OdLBNdDhq0z>km#p`06f+JF}0joi)eu4J74ml>S0AZxpLb9K@ zVi|O!Q3C73n^mD3JpP|l&$GGc6|w?X$PH&v5hv=qBqS@q^yHcMI^v3XV^UxEz`wkb zu>|r-pcM(p2f+C%kPk2-0WL-x*;|4dllV6o>PO;fp>+sFT(P;}3}II<$WU>3d~A=Ndh}^NR!Y!=>GcQ& zDBmfV9|Td2V7jWzLPT{rhuVqgtGLhC(BtiEDLYBsi#TfF&REI-axa+w&!59p+xO;N zd2-}hTNW5c?4IrQC~9DJhBQt2^RPnE3!%tKDm^_N)}G$WBiilA5!qgQaIPPES^=5!tMX1!N)Y8vCr^AwTbfiOy|;LIffdmpvh z64#r+ztva$&0N~04WDKrn>sW5CA!isP1!-|nSXsmL;N$Kn8!y8`Cm4PE7nQ7F48&! zXHl#}PKhfv$%J{@&hHeG4~r|*pl9IGJ6{MqL=)rPxzKr1bj`e_D6sdeB0Q`Fo#*m1 zgyaPZ*3JMnq>xW6aQqw77eH-tJRG)(#$7lFLcO9uY-uukRm? z=q0P9l^{fqGi*{#8YQhfL$*^2YmB!#LPCL63Z~#T zqgeszz?%cqN2!w*Zss68$8M#@V1oB2W6?}aNM4OX#$@4+fs#9HbbOr~HgL3ZZltAB zFa>>M23cm=)YRBx3eJ0f$ejwrsR>^gw4di3f4?YqDMd0-X!)r2m{CWAugbO~Hwexagb? zHcp39a66;oZ;Oa+K2yR_Gp*cJ$Q9F|;SZ+dem_hws|I*7>WOF81Yy&_#Z5w3qOE_Y z5*_fgT>kH(^E1pKK<{f(dbT(Hx^gs#KE@8scJ6aD9vU_GY5h!EN*EZNegIxz*Wdr* zOcPl<_wK-m3c1k)B(2kdjfD?&)d=vcQvMy!C4*~o$Qv;Q@~l#Ma)#T~wOGgNzeHrP z>gB1PTll^oqwuwcd$%CW2Ah6Ek1aJLRUyGF%gZY`sq)|yva!3N`7g%i_cSS6G_+VF zk@zu@UN8$@_vhUJ<%-6USMeT4&AgqX9(k;f^N>x$tZZ8MXTQN@pUE)Rddq;GV;5Lg z4Yi1f{thA@xg?Ql)(Gx%Bb4bkn)JfgviUa-Wc?lzJea`Y-*}e=Ufy+LwRdNW>wxq% zwk5f$VJ{Wdw_-%Kteo30lTNc~VcBD{#wDMY1ot(Jd^020vJyD;Hx#pMW)m#Jkcn^0 zF}vK1iYX%dLNSbl@z}9qxF$}Ztmi61*pVhGoK8CHr%OR(CLf; zy$XmvSGXKEu^DrR9oiPYsa?qNtq(|zt_v;ZmAtXTVG7XWTcOmCUE%3=((;OnyV~pj zk%FD0{*fj&m6TpoY%tKNeZFGLoP}Ehp6eW(mK2b}_goEBwW??lahPUm=g&J*>ps*S#QI?UzWlOXsU&l1b(r1xb zF>wNL(*jeO0*6d;)*~RyaRP2|a18E8iSUO-K5t;0|u-y_THNt7UV_V3lwWj2AkWN|SQMEQlV& zo(A(S&zNQJkkYTV+|#bH`X_A~zN<|FB4BemXWLoa(i+qL;Ty=w6XNpe^Xqm85@*Q` z{(NXxmQBgEtWjz6^MmFMeq=L3b7sYw_ELEkKLK2NRq&)+0A1Frc>SLv)qn`+Q_xOcN}be_l6Ys#EaQ#1NC>&GG0$+FSudU@?lT@#HaLp+i)}{6@|L;O7<44nB$$X!^Y>AcIxpyb<>^M z#{;!Co_+tNYVIg z^|L&l5OBMe8|A)dPAHOGbp_{$m2CXt1*A+meT$ zeY9sTses5r%F-x0>?Y^<(30G~)xN_HZd;~@)p;1^xjw8Z>VQA z?Z$qNeBvflzHP2O)9n>xGE$0k{3Np9_2$W!uXb}OH%E3@TrzlO9lWt)!+_!TeXgHZ z2fcl`*WyEvw5-WJoiemGQu8No%U_o~w23?#j-UAXc2jq1FkZ>doc25A;2WBBIS_?HFN4_8Dj6BvgMweMa;leeMCvn-f-nUt@dp0!b$4N;mlw1%I_F1oaatz{2V z|JohrdF4y!ut(9->MO1_SN6aMdY zc~X>&WQ+4KEe?!1>qPBWp#3b|Z71;!z48$dAb!w-!tYDy#NiFZ_fjSIf?U2Ve&&fC$lg4VogqOLvdf)- zFQ0v$w~)a*s*Ndv|BtV40f%bq|4;4|$t{;Cs!56?DU>~>wWY1OC{Q$(f;WR^(N!1roFW`eA__}=5R zldjhLK`O}7hO!qRZcQWhhVW8#WHa_`UEUHXTaaak?@grLROTnr7T|l&L~R184zwE^ zybPP?k6bc^A17w~kHm($8*IwLy)UreWN8|JU6>E=5$4 zdwmYx3gK*68hUo%0Dn!zeXol9uQ><7F>JqU*xq9Nxrtl71_Kdvs#?4Bya*~hi* z@z(~R;a196|0HZcpjTcJmS~YS6eGx@ zG@(TLZF7=Dnibxq%yNW3R{L`SHwOZ49!lZB_;XY4kkB4{E_I3n3+)l^wZpknGXng6 zI+#$5T-Q1K(lNAeSyMvT_Tw_nR7vbk=hi#Ckv~_5J4_Kxjew1hGfxNtr!=T1GF4nn zwHnj~fr7Sb8j;B>wReqnk-ifb76=-*W4$_1(9`iaf2?;A9;uELB+@3~0_(Wezl>p> z6pkmp$ViM4DOX2$cMHBKnd2$EJAMXu4G_V^dR zduXQtKEJ=K#@+aYd449o$UtJpgEu~j%}2L4MT4Q!#M1KmiZt-yNs58W>6Zk!I6X+y1*>?^L+XjSC!T-wP^l&)v% zd~W)&Z)wfaEknqrDq;*q9s>~WfY;o)8t$U_aW5;U&uVr$~VGn8cBH<+o+!+NzL z53pRxWf~3ZwZn(iki5kI3c;{LCY5S z{Y^|2hbXfWu)>;jbD7*wwphi*cXr(DkE8QeQ`W%#HV4YIz-P?!+;-ngMJaZgE}j%K z_h&?6=SeYkznzy%y)e^a|Is(|x@Ng_Jo;fUD5T@jUxPutzO!ZTXUnF!_j*!P-OaSE ztVM>h`b*4{ubw6Q-n=e}$ldHM`ds*G(6d(jy|=79X(ZrUfbFbUVXHmYUbp?i$2Wzj zMIriI*8Ir(SF=73w`GbB9z%~NTpWKq=ZhKFeiwXEzx|_O{OB6?<{tcNXY{AY`eyyy z-Ja|fk+CbI`r=N#W4!8J68Ze9U!I`Jj<)VxPn;X~ZXoP$4Gu~o|o-1{sbNihQ_^UvLqVos`C_g)g1RPGAd}5^Y=Z| zPB#3M`Ih&}Y;okt)r`}wzNbL?%1kHs-Md=wS&VZ-)Y_DW?|P;gW?P?>PBV0`zUtiK zhUn3&ovitBd4=er-~8rAF8a-Iq%`W>A&Ta;U}`V%u4WAbN{*v=F_)I{72nZjrqg;0lnOGX35~;J1$3|qR<0$)mZ~K z7sw2snA@p@&I_#vE!p&4XtG|@*20LX&SCMt2EQThu(zWD_Pl8MMr(F{^UNogm#Bn3 zP%GTOsq*qm^XRcpf~ez1@WWEA*moeVEQn+52|5hWl%=<9mzI3+3uao1pPSm!C`Z9TlW4krsx5=*zIi z1pJ&Z;8D5)clA$*m@Rsa-mzODeOK${hX0}qeH8dPw9yu7B1d>^OZd4uas;z8g`e}- zfqk2PNy=aroAV{1eT zLjdfFW7MmTLoE-zdXl$*wdGCY2Rk zH2jk$eF9pt#|1B9MveIqZSesv<4+|e3hZqKVP=A=tm6k9@nKCwkw{}QEl4$ma{_bOf}3m6C*Wh+(ivP0 z9eR=gtlce}gPU(7EINY$<7uAln%YoOCF8unSqs)6;jw`|Gw^9960@_?e^2=zd6&=` zycjK4eFHHzSFmawZa$U1HkmUQb0OgqcUTLaZp=Md#or_fCr!t~M)uhM9%RN!w(O0p{Xqxzbh;nvA*3CBvv` zo{4Cyzrcz;|ACn;!OvrKm^xzt8sFTNdT!PNlhdR}fL4ot`Rhnj#IA2_ogdXEDR^ew& zWmAZf0%sL?!RgUt%5hYU$C!$5{!aQ%glP+$*I?OGAVW1|60S>Fpe$p9Z#I&hG6Xx( z37ie!1!u;SQw7djv1~2KP#yUXs0L-NI-I*f;Jg9sTL)!nj%M zLVlHuGtX+d2|g-_T_S3PWrHUFH~7V$eVld!+pbN&V1r)3w%ftmtNh9HD*yTL_A^}n zzx?0)5&UlG$Kb4tsBxX&25OL!H1ToT>S2#5kP447k<|D{^~|DwEUY;UZO68QD|!AG zdg6>>Q1jpC+wZP9a}I!G`0h?i_S+u+;vW9C;m|uJ z2|nt`?L>4Nmc1xX{0-xq0lA9548Od8>`w8J^K|Y_ZF-|1^m6Zuw%R-mdSfyt1atAh zF9WzU#aGRx!!`FLmu3jxOad>PomxH{zNrf}@)%{V89tgwZz39rWjo-TCt-S8ufTaN zep!X?{A3VP#wOuZFQjVKPv@bJ^N9^!=H6%L`-Hc_E@Y;Ygk8xArtPAf? z6$=&*$N!4C=yLaK(~AV5{{o3c#D_y4xcV}#(~D9#&6vwB{POe(_+fY-XV?B}zNHi5 zb_xBr6s#aEgh7*cf+pMN*}bu$7GI+mgD;!%HUvm+dsQ4zM|NVjpC**N9R}L9JT-RMTc8XP34~@(tjqK2e*cfUi-3X>4CFRobtoB$N!mV zF0$TwMz(S7xxue9{;06Fk}aO?LRfb$HD9d{4#+NUelzRqidTw9%wqcETTWkT^x~kb z6!XrnVwd`Rq4&22%c+lUev#r^g5|kKWtO{T^K0`{-M<#cA>zSVF3hLqAr4Ea50xse z>3e3Tv~-ClCE46ra@4WgM#9{se9$c`O-0G2iQwa^H>r&IQ35{-{^kTN*Yy-1qyj%p zD5@hT0Hn$i+7MYFiB|q&=v$Bq{PdxbM4AWwMi&|p_&MTl{*|~)i#{EDI|p{D^iRUx zPN7e)@>hjj{wBTxgUcECcJ+pF>m;v6V-nF-ST+T(S4I9ilveR!{Id0T1*Tu%Zq3KH zA{5(8zlizr)hY*CxZO!8%ws@!y(#<+j&@6)Q9d<=3}13N*YWuMY56jphI4|Jg?WX` z6KU7MCW+8Fuxlc|Oa}rx_DxdNAfG*9Y;E|m8nOTjnHjgkN6RJjUFnCBHU!VgU>B#cD{34Hb~C z3W~rLIz%oB&qyR>iK&R!9uzjf7te%EPM|gs@pLsPO%3r96n&2c{0+5gFOD3pvB3fs zcNfi){CnDDk>-TVPn66I-)-aSs3MwQ#h;1qw1JnL;7r1+z$0heuFVfv)MgxT#?rwU z{xuQ(A!2r*4zx)fxgjXph6PN*oLVB2$1uYe8xB}4Rz>zDqD!%W1w%#C;9s?&7nO`` z!8hodu|!$o2o~UgFV;jpCZYsv629OuN(Duh@UObif555m4lT&Ol93`P0`Rmve+pup zi0WVgb8!Mz@i*c-?F#7j!q6L+(2ezsiL{5maX9pbt98M;iXA%iHMkBiD8&9VxQW;3 zYliI?HZ37iT#ZNhk0gI8vVBkMBOQ2$HvO(3^a56_!~OrDFtoTtuizx-tx|lw9(~&* zJHTVO;Q7m??_>#gd5mH~kvY6W7Xt7cR;}=F+w5nYtBd_8jFD!*w|toc!90hirbVHRTYcB zpVM8WB59sT$BI?P-yiRMaT(RHq+29&renox0O$cPW801u8_3=@!OO4FE!2^7f}*V; zgU7foC^CSTgQ?;5So1>spc-=S+5kz`hL>lA^BE3d`^okR-r}e(>`1|>I-&7QEg}vrbZ1oVA2ivm^Sx)Es$A7YToCt5kq)<9z3o_r)tx|E6cPF*YQ+B zkGEPC?SI%DEel&Zu)aN77kb2FJaoM+io^QwX9Mn+ zO1_mabP`599#F~^PHld(efns5k8C%O;fVJck4D7t7#u;7Df~qTnuM3(zJ$-}NO>X( zVa=2;nO{zz5RYMv_c=@7@pILJkf6grWUN1DtR{- zbDM`-PDR#&H4$gvmNQ|!6X;x?h=5$ZYW~j=3b$$WQz@KkEb7O6e|O+PJ)@D_+qlUVY}0C%?;i&7hRpE=XLhi||WY2lVm(s$^~jN`O4?Cn(g zl56xO*jpR8xY9rEm=zxos{D1~;?t4?y76AE?lqCCn%>n9B9lqEiIoE)}`xbi8b9x1zuTi>j9HvY5@}zP5Hrr;fC9+fK(XpW;#_^Qo8K6i5HI z2l=^Sg`-X`2t^6Y3-bviqljoq5lHSgyLy%uEFS8hCqB4i_+jWXwfI(>9`taENTbtu1jZt_sgoldu!sw zaIP`;8$^F^Ap9|ALvT}$;lTc!wRxyEB&rnUl&~R9NTh}^1x#PeZ4%~)&=V;A39Lwz z%Dw7Ej+aonnn)sm+qxdV+PNu5QzY2~iJXv$G!c!#+#J7PXc8JD6i z+9Mrhb;01V86HqPlLl=ElYKApBV=V-bW{7MFbMvL&Jl0G@kBOwpb_klh&~1Jz%}RI zIai$K(r0oVc>MVh5(g_MKkSH|pd`675+hh71Ws*6m%V?k%jNYR1Ar#r_rx|wV1Mc>kJu1dp-b$VgP ziKrypF4;+qFM4Y}}li=6`Jn31C0(KiSd<0#a9Y%hLwMN|xb-CG zLlu7#-gJ!niY+GuYC|jIZg+Z*Z1(VYx`3$(_n(f&`j4Ztc_KZ$#Q^>W<1195hTKsQ zG8MJnDFrJ;Me{@j0;Vb456mG4yv3N?U&Rk9)T_{?H?Y+~$hL9n-R``14@))aqsg2& zEQ*Gg0jP`RYzn3 zCjGH0(;DvAg+_TIt^hzQExNuytny`7e&|P4JQjTHF+~zHry*G1)%rE(yD?)E{zoF^ zR$;~_qQdXs6t9Y^xo=KK`&ae&|A=WP(SGb}JjtUh##gB!r@(r?T9Cdva!MfCl3#6| z2-ag3&xJjf#W#OlfdOE|wc_z@2Q5Dvz#cP|ID$2%#kDFXW`63qA42QAdt|mekpaGH zW^J!67BdfDrGeC58_3{^3I&o`uvMBw9*o6+e*@%WqL=T(Vx~bE>PW3X@?&7TbrKrP z6KUhC4EUoIfn*&PGZmt#A(L=3^hI)W@@!o~-f`5BCt86?eF8OEsz|#U(q1WAK~Q2A zMdo>mZo5*cH_`=iqa5T+RJUJv!Xj6yx`>@9A)%^>(cv1e(SWKU41r{Gc!CBr0lP3W ze3c=bcLH@D48#F8<>poMnc%%QOKzSn9Tkd8v2UO+=?0S?&GL# zL{NeXSHzWr%9lE1Xd_$T2Kqpu0 zz`Az&wE;(U#9tuUI6Q8QKb{HiK7rcvM3XRrHK+sc)~0iW;^LA#?nw^6iXV!DwU;FX z1sgHv?$#wTqm%)ze1H1&0ggJdLLgZ`JU$(NYyh_%M=c^ASEwK>5>X2*CP`+LM*Q01 zj{&K}Bbz9S#pps|KG2tTJRSgbI;GN29S3 zUp!WmK9J0rgij=C0Pn6Bd2~zuEe%gVrCJTvmC_`ETqTF9MYk4+L0nOV3y~05q?))Y z96y5#Rq?$W!7ONeGA9E-d~D&rz%ek90qM{YfjFy&Pr=9L!SRV4TGcn$QG%<{kz@{v zjRXX0Qmgq4q1YLYH{n8)aC~eU9ZBJ^j&oSpygyxK+xPM3C2ui2BF{Z@CuH!l+V$=e zue8@v7DraS3IX#xJ?oNv)!Zv|bC>u0sSOhF_DJ`@(dJ+lyJ7g4kK^^5$~ihy_k^Bp zI=NFKr+QMRC%;#h}(@Jt{~q|sd%M=81X3T@DEcxHQ^uB5F>1ZwhnktCB(oT z-0bt{$WQeHx9r+O-mIG8{&P=qitjAuAA` zYXmuqhO*Ace;-TH8_FV~M)EiKje7E*4pE<$MZK99wEV!jgdZ}IH}?Q5fQM)--EdAT zS1XbvlJ#3lRvi6fuxtz4m+Aeo?E3n1bu{y#tZsr6PRoCvOAS%EYIqzx6+kpGa$iFd zn*b;L{J5s>=gUL}@jy$s>{Oz7)4Ll<;<$eyTU1oETn$zzj>y0@TOZfF+F&Z(;7vSv z@Q5Qbk;txE^GA{4ivJ)}JbqbL+8EHv!xsKb#uQ1jsGhX878_3+z}v# z8M+^OWgvB8U3nBQXZVaDE*hd~naH#*O0^?+xFocl^9?Ti8`hdff7({7WQu7Mt#~#= z`fT+?M~r8_6o)>kU5}H1@!-q zd`@{mGcg)=bx|y&g*6Uf5a0JoxSvVL0iN_f$jCukDj3Xu;E`HLpXup>5v;uOSvoP8 zNqE@My^i*vE<;~BXeQ0J;5bFXHdLsqR%Gg4mqF{QJtfD%Sd$K>%JK8o^esJes8FW0 z^-!ntke?~XDQaB;T$kavIP$zTqO8LUjGazH>EK){clp&MxvSzyE8?C`jS%(DS_u~F z7&Py6zXTpm67g_mQvur@Igh-1_lI&Y=nWZKJc>#rp7ol9BWLCHY5Z9^Ol6UrdqCzK zA>rw7kob$P)ABAGYH1#;zvWbZ9&o_W8fb4p9nE1VOH7V8B70)I0ip#t-U#CQ1oKY7 z*MXTxU>9WtxCvwe67q|L4}HKLm)cNc!1L*U6LN+>%RPoXQ$8)qP}V6W3l-4+jf{6C z(YQQfG{1Ug3J>up?T(R^6gu`y6OkVWLJa0ntl^;~AjF1tfk{I5xuW>z9mmc^ApiWj zx+nRnp$U*)e*)znX+ub__7q=>$oI)0S(l)59+_%O-P8fvJv9@V+QqIU#v=*m5aV$I z663MpYJ>Mr5xMUeA-8(LcCxu99H%DjAX`!(^0@2#UvoT%@4jm0+;;A8Imz)PPaPv) zO~CKwe1i)CtO9eliN1BW{lLJ8veE)#1E>^!V-+y4Px!9u5ybAqAH5-IbP}a%FA^C&$3B) z2Jq|zJV5YlW*yB54B3^T-A_WNPb5yK0E%&QFxjc0<)0lCYoe^Gokhc9{(CgWsFCRAD82)qe zUbRbJeH%Ypct1*>H*Mqcq}9jO9;})3r1$Qf)SlD5rB_OA92tt^c9n}aewm$gF2Hun zR1JR1%a)gcA-;L;w^y}G#^KSKVXL5lfw-X;9~W;Ne<2vIXB8c|1C4b)`szI5xcfkN z1w6j>uSUaBc|(ueTvxO3`%!;2T8tW*c~I1AHET^Rt#dZ;v@5mMC{q|4!#%@2dD^_} z2X4skn|-%YJS;k`k|Y}n1+D_u#LnY>cCHSt1%eWR77IE--FhfuRrorHwHj(JbL{QS zh#Na+m5ExPr#*P!rsrydQ0E{A4>1ELioEYWCdiqQGtD(S!26$hCtx(+={g9n-~v3c zGs)S`RmJs$Kuxe&+gHnXq3c}NDzH)pio4;+G3`fkIyf!=Q)JoTuF`o&frAs{=Y%34#gH}pzpB029zFO%RLr5H_q3al@}D6n+}yMY)h>Qku9ARbQ|T7ZE)i?hYrdJS}@7lha#pxbjJ zG73@Fq9Lh~bY1aN-Z-CagU~W*+jd#Du;TxfOi`n#`gUi1%?mFZ@<8PJ|2G#7*7N)|Ab)~|&mmOP%q znbzg3FRf>)Ys%17ndqu6XVlQLk17GYrjfIm7qPS5a&%U0@8c}Mik-T81&GK;$9D?o znv#UP74rc%UKI$&V)8JNGj8}+n?1kZ$raINK}jTou@=as_3E|8mVGEel~fL@Y04yw zgiju6o$NMm^m%etdfW~(kE?=YL2{yDqHR+s)D+4s+_L#J#IRk8{5mhE0Y=%nXY|16wo$YrA~JS zoI1Y>nTh*#XaP<&Q2bJf%=8DGnu@X26u%q;oVqcYIv-=tldMr;ySGbDJR{4{!(qVq zM8=GqDS+{{<#yWY6g6+WXwJSPCbJZ8YCJR;Cor&abbtWV3>JS0n8GqC0ri<^u}mrv z^*jMcst|RIa>vj&s3rJFGF4YV@IheM;u&C77^2g{%L`ZIMNsVt=4d1?o*_1VYoaMiOCfXKcL?CZE%|)Ue1FiDIgTcIN?GdZ8wYyWS0`N`3~ARk zQ(uyA2}DX#fOJ^Tg|t#3&ATNy{CNuXBgSqq05|0zw>w4sSO9M7h>+$cw;NRhH>FFI zjp!7srs13nMN_1^?_|ypmZaAyxT}*Aq;-d){mc}JqSXFztCpGS@=v|rz5Lbh0 zwW{9v{5{|%DLLoBC=Og~A}*e#>Ww|4j!a!1IOqIvs{fX*AP1-v<- zt&+yWH{1ZKsw5GhXTJdjag0Ez7(-kBtSR->xg`-9Lg7pyIup34$sv6MQIZWnpM1OmPBH_~eO^JT#0rEZ&a+c^jO&H^U7 zXri00nr`cQtl~(>L~BOvFY4)}Yo=2O;%yA9o0Iw}xp6ijfPN67KL8110>sDvgiGJK)+xbm+|Xh>CJsrV3%-4wymokkmCfh2TGbm1lK81KsWzc)F!_}ToJz}>cvta z*h{>q9;kjxC0eW;=>%=DQO*oNI|8~S3k_QK7N{?g!>_umUzHls5(tJDLPC=ffAH~d z-3W>ot@8WDlI>$L81v-;z1n&Z`rrq=XeMAOiZJr22lK2I zQR;7|n-92=WICe66`&sE0T-6K-Tk3L#?fZ4Y?nOxx*tfE9Xw<^Y55R{w0sCeT0Q{X z%Igg&NQ*lge-O0BSlOpC&h{!~yRuLFD|ToTbr5~}bth=obQTydKnf)l?Zk`Bm4a9r zT8x1W*@>qi;U5r!t=I`x6mi~GA#X88)Xjx4bWZ7#cE7!kIS-W=<$oa`vAH5&k9@=g zA|J7aB7eg;^9b@+OWuH#(FyH4hcTwh13I<9a3GOVI4Wt{U^FOcS<g1khzdiYRH939$)~kOrj0$&y-EU%n2jsfxI{cdVxW3;MbOp#l_Leu`2H zDR$b+19Vx}fN+%;@4$;pCi)>aYwUbZUq$@hFGhXAOMIkOOzT}DqLsve+Ed>2b9s}Q z_(FPIed&|fKdNK@kf>{li+%I??)m(()#3Mci%GJs`YEx?A!ZYsFr{;vN@@l9jwY6x zmfqpvk2xG8OH)gK0$CdY3zJ45Q$_wMs(3ofeW{tvjHHfzyZ9#3{b{e?@l-H!#^0x3C) zl3MJQv7$uDOkb@1@y?0v4isi6JMgEk5h+v$d4zMt5-fa9yJT1OTB49OUnylknHKW# zfg)?kG0H>kc(Rt)56^P**Jj-j&@R}zVrz~;*yKIrICVN<6>11+s`8LJqjU3e-ov!lw_e*Sv&eoi z7tq#{{i1<4&LI26K(WkR@#ZNolFwBk>+!}OV9JIVDVBi~!brZ3u|bJg;_sdgd|lQt z$}-ojsLd?Mh&wC!={i1+td}cj!3$k+h1c~TIScarvkG@l2iClQ7I|jt3VsWB`+(FR z$OE4}<(EO4C-|xSGU;>7WjpmdxlMTBfnm%3_BY!8ad{^2lDCA1m%pAT4>?JFd6EhY z6<&ymVp%n^-y5{82xFTmmOTP(yPQIOiLsjvL02rEC~MI{NDksUF6fs1LK-k;^#HFg z(`8*2(wIPSumkYMsjQtpRBV7m=Y2(S3Bho~RWButbRz$(L`?j{3Ga6a#(ruDWK#t9 zA3W)`r_nkE;++zY^oSt7O@rwYSNfk5-i&IKJuvlmwFKwOGzxcH+#^i1@W){@#KkH~ z%dPg`$iSTf-b_l)7clB_jDQV72cj?Rl2Oi-oYhJ+(E*?W#qUDedyH)hxGO|RGgtgR z8wdsx1x+H4Ni?11t`wXbs*yh(T`|fMIY5zfCK0%MKnqEs{&A8TM0BdL;?F8%2hpi_ zF*Z0U1D(1PWMk~NM5ivADBG&k8AMU~WKoUDqAo^c(IhbTH@JF4pq5~~H){MHO!!kN zqKNK1^tZu8vyg{4%X`lO5%qx}vtI%yqj7;eB#C;6kn+ogL?e zN@`064x1|etVWJ{hhs1|2yfJ5y$AldM0!+6TPY6#20SYIkV5^8u|10RMOXE{7(HmV z6sS=^XjO_~q7*sGh)c;)76}49-UoIJLBVCzcIOwzkixZiqYBHNWQNE}M2}>K*%-T; zUDt}<8mYx{SIUY$>g+1S7YGPvk3XC}G}wN4 zqqb7nj{RTI-P!9|%)R0Tz|hFiT$w`6#n_Ex>nZZyX-Yc-RO3F;dLH6Xjg%3V-X^?J zomECydO=l)1K#)%SbDuP6_KC>Vd-7O*t&$-37kyAaReCno{Gl#^4>(H8~-&@n^iW^ zY*4{ryfHVHBF$lhuH}kmcQW%@m9)>Kaz-jmc;Qn{81Y0<)g_~PY6$YQ`H`feT{vCoM z3XvfweR=P*$6rOsjlT}We5IOsR3TPi^?F^xbzy5NhRHxt?+L0h(4fVN71F|l$#G6ta`713ab)*U>Bk3=T#-j7^F@3W z0^yA!va|IS!=+?rCsE_c&K?uc==*mJJ$mvv0$to0ohnn-fs$-uE$`JO*+i2yMmhw; zzyy2X3qEGqZ8|!u-M$yx^`u8LuIyk_z}Qs66bBAyj^kJaw`Y_wzx~Bw4mw)DlzXw& zvB7lQl|BqyULt-oMeK5ZthNh!SU$I1l2H@ifBZ*|N`JdPl`a6hW`NEW5OiJCMDn0@SAENG)6jL3-F@bm~7=| zAo>eAhi57dCQ`3}K-OsVa&6Xf9^z9V5Xe?uNe1gxq6=u@*m$l_72<<2{JIAoCl`Sx zMejNXoD5LQGi8?$$c}XK2t@wJMWDnDeck(=3dCF^1x$|2*pW>_l*j>Yn198;k~7i$ zT}7ps;%>Qfzf-^N@-%q4E%K7!sL-N1hVxK!pN?LC#RM7H5{giXHt*SSurR=*O`n0Z z9gM!X93jO$9KJxEGKB&flw${M!HMvay5isl<8c>Zq$uu;;v&%C%~M$qh^RA(N|Y=> z(1;FI(trnZ5IEVLk!cu1SLwHi&|S&YUCL3siq&RAR6!W`Qi+KWog+6}_5}fktgEkP z3N;C1yfOe*R#FwR26yh!(ffj|QI;77!8`Ofj4?wo&19_6sWG@~)k3*hGBt@%sAQ38 zK%q|4VQC1_p9qCIr`ybTP5teXyx!jYw76;M6!{=&Dz$qEGen73$(T3ynSa@lv}!Oi{iMrU;RJw|keo&! zlGBdjMdh!Mf=@t7$2`IqE9K4oz}#wfkT>hG9uS7i16|gGYUDFv$$hRuJ}Vj1M;ST% zpfrX9zaBJI9MlJs6q*LbF3`Krj65}Bvo?}GBbNp=( z&UvLZkJ3|Nt|z3NkYLRplIkdf>`^S&-H2{9`t$OZ|jV_dX#1&NXlRM=4S z{GsL)_-IUG5_~k5jQKSHpLf!9QoMH|Cr^M28%j>#fC&9Xj1m33>+dMbLyYl|h(duM zaOkGnPawjfRnnqC77s823e;2NgC-1 zP2(X~NvCiv##l(QiWOc|i?Qv2^U(%|xGL)lVe)^`VtuJZJP7X%C_N91kwH|Sfid(a zLT8r%<5`iu5(?zre}}t?pw{T?vRK0V{j$pS%-*NEyHm_1>i-diar;4 zF9@jQjOwtyfYL;#D6e9K0h5x!AqqEJ03!peglcw@TAji|3+@6(2%v!@4oC8zfS4JAF{~$|G>{N1wn|26;;WGO3Aap^49cTiPgYr|(jIQsWPOnm z{ix0Q!b9STXR0jCpc8?FiaG{$s5z_)F!&|QOf;dZsNK}EtBBrJWG(H}SJRaCnM(V- zA=z5q&rsuX(dy@2mfy$cJf^*Ay)+S(GuJRuf~~E z6qXoZ63ZD1%i~ndsbCmsCQ~&9=!q@hhE;^9mhyoTW5Gaq0zy&aG3#(=r5OK-Wo4i^ ztBec2L%frzwix3H##pPA69fiEw6l%e>;%=8xI<+HX4>H2&TjsY^ZJ)(W-i41od#nY z?ySRFPYmJfRmfJ{`4f1AX2y!M-~`x-=q-$4q&U03&4DV!}6si&r~%0Qrw`903mQdk}#s-CGJ=tP+0R5JCH z0G&%z4F=&{r8f?IcQB6EPH=;=1R;cSD)h8jdJ_(P{O8}H1r%9Wg?GjkLiTT84+fQ$ zD`8%p9vL$ik3@BM+G;aEBxmr_YuhGqXg;4$xYHAvgg?EfoLdtcKO4wM5cZZX*ms1x zA^sTaCY#bP#ZJ8TTMTR=B4W9X2=oy#=_H`HJC(6Mk%h9I!0b&=3rnW9E1#)rTZMrF zR#htOV_(;DeH8^ zS%XzWdSqvLh!g3N1!IhQQsd8(n*l!`v^=LanM#m}p|C)1mP8FEhJuq21tkc7(lSa> z9d+dX*Q2T)z{h%M*YDJj6UjV0-RjesuO~Jyavm7U%UDn8;P`)~_@i2t>|| zDG_NnOjT?)8go9M4jv38nQDkJszB||bLH8`sfL6$(-xv?@@!z3C^l=c76{OF-Q``S zO_en;8dt;oVV|P|zEg)w(Hdi94#4MWMZ?t;5jW?$G-gxbI;gN6n>rQhIpHlR% zZC6Ffg1xV@oZL!7AF#YoFh$&>eKxPAB~EPmGOt3bfnF(1d-m+*h-tWQD(pKK@vEa; z78?z@%^z}0fqk>3+q^j<;(F8ZN|TbOPXUh}rOaeV%i7MCPthXIF;?AOg~?A_8-GWr%?^ zXAQ(y2Qkj0W|^p27jr!hYe;hpr0^-2yJ_5RdtJ!O5&3N`53l7STG1=#LrlfluYAOB zxd_EsqYsc~$=_E%XlDELczn-_X2QDP7a&E$xpd$MQb7%E?JDXI#TDRkc~n&o2!zoXdonw;Q^Ge;Tq>%{p`7I(zPwGQ{50ei!pu zJ>?-v_k=F4gD##&=SNsQPKF&)VTZZMrakQ?lenW~0^1@l?5;4)q=6>V!1d6@6zauH zbRRgnnBXByl7+PNB)H&oX~9ng_Ip}6L|R~fNqpv#Sf{%TG%T@{$P6zCxx#eW_a)F+ zly>*W(YrRt-8#{oY+8R-EP2-INM8%_*FpUA zsEZJF>0?yFgBtGftaQLT!34BSc(OovTyX-{i;nSsnd}U9;l}lg|Y3YLQGP~}w)Y8LeN)H1X zNxmcoL8z{1r^O8*>W<$kEN!t02pw8cQ$ zvIdGyrbeGfXJ?|byO`cx%t`VSN!!Xg5t!u$H)k&|O#|QG!2LGJqy5nKtqswcXb?EM znEqW%Q)!E_w8aaG21h39;l%f-kD^(cj(*3V!1Yo3%vM8YYc*I(nj4|djCbrFvjSfm{^GI3q z_4B)!8GBzz5Z$;VGGUUS{WbHix>5&z=k?kj(<(l0X5BoO*AhE^9=y~rgD<2CO7N>c zga;0T52`ee;nm8q(-%ywthRnCmKtzG-h;6TPsGv)5Dgo?o7-9-?AfDL)x7qh5o+^#!zCwPG{ z_DRH`kyx>zy@K|iLy%|_#~W{ zs>}jxoAWK_-3m}#w5LFHNnGkWu&Oo?eHw^5@tNSL9|^1&2^Ap9b+TD>M4Blkng3Xah`?NCtcgtW-?FbkcpH3=~B@+i5iDF_ABQyaoybWkI?Q3d=-y6;dm_pfGR%JQz5>WGKeIJ2tHpe6=*Z zq&wEWdrX}==<7b3`0iA^EC8z9<{@%QpYAhiMu* zr)tV0D96sv=sD05Vt!FDqouVh{QIfP%ol50wInWB9X+SyY+yxbymNLjH@j53|2_C9 z_Rf_@qs#=kKV!UUmn^0&{>y8JYcCiIWE#{-$C(G~a8qNxhx_9t$2V6#kNniRx8uCF z;^RHGFXrfd-fhp`vgmVr(`}fvH>DZ%@wSZ*{N_n2pU=}RFgok@^!d6^@`H>7!-Rw+ zr2QcE&@NXqT)JfI8*LlIKbOvqTbV7b1G^4Xj$C>9_GWpO3V$F`934J>nCZeSNzmkj z-Rd1awWL_rN`kz`KX&-BWjv-HcV$Wp7Hte_cz`jsP<-A6__nq4!; zV^1e|{3-j`KR~RmUxlv4W8SsA7`dkowlf6yAF|Z5nh91qRDGf7>W{TnfJm;PFOg2J zr0>MC`dLA)s(<~b_0F9I!5N9!=LapWr{6pEaNj-WfOWa~x3b>WM}~Ipzdtw2=gqV9 z&3cY;-%*y9uFGwy>sr3!mC;xp4E|?E*S+80 z_xpdn9-s3*pYwUnbH@3cefjjK(N8v9?d@{@8R!6$^`pWchwHZN53di=?M%n_Z$H@y0mOFocwu&s( zteMOA% zSO$ZVVQJw#G`Y5@+ObV|4@s8RHETyxyoZ-AVfO`1ZZ+!FgcXD73&$Lpj`TpLK*eIu zO0sVe037ZLA*ktPQ5xVg|>_g?MP~pTNQao#Vve z8yF+XO)6Q3nQVR@9#&C<(p<*@RZJBzsE3Ha=s_~X$t)K=a@_;=%V9DhU zwRi%Q4Kc^!$9ET!D1?1VmW=M(3+qsW(n!@CYJO2gB!$h*{a&22))bDh5LP8ZXa>_- z49`HUr)CpD6Jcy6KBkL_cv!QRB^yB>+k>x`W$lY(3T>%9mg#Qm zL-1&|U$p!8>Xb+` zhm*M{`NH<`Z$;+SN!*hR!P;mNF7^bg4sd;G zYCaBSzdOnGLQCi&Hv-K{8S_hn?LLI z`bijY4B}AUx<$S~gN#bP#R9#oX0})9aXG^eu~p}F2vW`O1Wn%?Vq2k!w3|K}29ZUR zrlcNaU@%@>H_5?C=!@K8gToD2bS6#1h-osQZHEB*)hD6L38f5&Qf({TB$EA$}K z37Vm)G)K?CagrfbTw4;>*f9u6!fF^$%xWSKVyxuYGuc1UO%fW&pyluf6+ZJjTQr)} zGM|LIOeEKRP+Ht?0&d7|Sxj|2ZJpHi-(_+S%pDK?UwO^=*e|EMhI!b~f`W(?AyOi9e`f7Mz(`UbFUt{|;tw1r#JcplSKyr+w{4tZqu`2)NSuYfM*e_Jbtvz8H@rUr; z8PT`TRi9l8Rbxo_N!crA7}9Xu(Hb+%?515-XEUz~NTZ+Zg)pZ{M65E{FQmveJ;BeA z%G5^+WE=L2#8^j@LX}@0aNUEh=qI*Xjrv%YevRET>QTzi(IGLQ?K8arCqmrYpB@g$ zbo*hb)3fJ2Ik*~qVULwH?WOUqQzlWHesCo{8w2a=KF9&9b*&!glTT%{9V)X2tS&e= zwEMHxh6X<+pDbVwIK9=iHP1U7vMmi*O!yQMp<@tr;x8Q5VrbctoRGJnMlEGeoq7b9 z%UmMBa;Z~$bs_&Lrdiv7{lHhIdb#7P4;f37zU{cSDFU2dL>u*Qz1l-rt^92Vir%Fh z{NszOUFx&VOUy-<(^-q{(G)sp+Jo3b7J%_`x!}gRU5#yJN-;dqr`o$#jW28M%6ix{ z{9b?E-STX&5AtgoKje8IAcr$BpGFI_BYU3XpB^iBir4rSFT=vN?J#6fnuYmI`?%=8 z=Jvke@mX(93`77MDm%FmhYBB$2(t*YD~E*Xt)S0f>NxPct-V?s_aQFCG~Mm|x7Inm zqB*tHcs&7kc>i3}ZxMy@Dq9AkDBSqWzntcbhaU)-ip|Rm^By}7LF?BFVjn$gA70U{ zpJQ`8T&rh%3+Pe+gFmb)yRH3|*Cg|n@3Jy?B%<58FDn}KKVDrp6MiT}c+*EWJ9v!@^5vMAlhJyHH*SW2oF_~`X+uTA)rnlOIcX1Vm+#Ptg$3}ts03`OYq@!x) z4q`GdbYn<;bZhZUHnV5My{;hskZDxM+ew_uKz@V_5hhDG4n#J2pw%PlBDuNu1WJUU zJi?n(Q|Sbm=aV5!a05|e*l6E_djd5=Pnz5C&L-jk{tX``#{p9I+l-U%?03iYxPhy= z?^n#;ZtMEJ3|TTTm7@`$wfo`h?fl^#cOMv)082N0&;Rngb4ar{#d&2H=GL3`I^Tz$ zck;u2&*%PLwyUI3I#Zo=d~q-h%4^Tn$}70(V;9nT(xv0vr;>{7G+n~arNOkiydS?o zg)#A+`?xa>A?IRvRmgL#W}6Fu4o*)`TQ!U9&@2(`$mF^@ zE{QM^q$NzdelAIhl^w|CriKkIcI=}a-t*D=H;NCk(`&uwN9*SFSlR9a)r3c~7c?iz z9wk^`W519iAMNY$S&h#_cMcL-t&dpc1b%$pd@fe6yCM2fuzPp)@Q$f+;HGfD@e4jp z8^482irR{cfNXJ*k7eq_r|t1-_%9k5*V^2T_%9M@HF~Zz#aAMRjhZ<8+iA$4XE5dC|oFs0GYJ*}*Lq!q15i=0HueEOG!l3_dt_s;TAkI3jh7 zdj|T*K!w9C-{Z{QKt`nF%E$_i)iZw1-*C;i{WCS;)d*McR_}4VV@xvS&d=Ebw@4#n z>V+cu4`bk(0Z7mqr-B`i{kga3I=0lCfSh~znw_qT`J4ENdopq7J$u`p?S2E)_>N0n z)l;*R?lBxI3O`4W^z&4&nSh%DRWVROaErC@bBdXO@)}6SXAOk>jOk4sP&B#^T8(~7d};?sOz36hcmasi&5&{C>B zKY1kw{K%SuKOJR9GHK;G2~c8U>0+vq5;>8*ayeBgvGh8Xwp@X{;U+c(oIpKM<5ur# zFj{(ny;6p}A+c10s-#HXz+SoREq4PL60FQ5>FDzO{}?U(i|?yXQVIr*RbC3Gc;2Us zT!0@)A9+*;-**#UM-r_WN!ulZ*(`(B#Or8cHrM*ibHVNX?3F92>4~NHCgQfn@51Zo zU^dhJe#h&`qIc2#v@x5H*>PuL;&+J}j`YcII~*LKj6V>1TBLM3$|2G;NQIQHh-_dN zU*-G$4fTaCOl?sxr`ScP-4sJDZ`VtO`WUE4c!k}$;Ra4ImG5gzN>@fMK#M?60iP>@o@dCQ74f+m)3J)8RBQt+wAVxIrA@utm5>&k;@ke}+ZiY? zPVq9~C2i8S1<19v;4}$SQbyed>}_1~^f^{?qyx#2KAfgGtlL3oM(p6J_?9m zUTNLl^dhmejJ;Bs{Al%+wg2*@S+6IDrM%Zuy1#InN(WEUa3z03F^TZe6Akm3*9fMU`wt%I)?5iiP5Q_ zft1+y7gJZBE=_FfD$mW4M5l;*EB;L@_ao36q?NTO*+^4AU{?t{E{gZj`J9sFKT^@j zP&xy(87^7gerqKFbU#gu&gNe0#L}DW`!eKheTWklc)vxM+*-euf#Z}Y>x9zXH}7d} z@*J&RG!^6pm&hP$xbf|u~ZyyY2KmxEr*T>=*&xWTjHc;;56`VOWGbw$AQI; z2hPRSyI!^#y1h7>x$0udT%5xu| zmEor_3E=qTI&g50A|*u|ImzDA@Y{Xse9(A!2~iLJ2n4D{Xw$NL__E`BNw zQ${}F{DK*{zIiN98af;G)Q#`E1>Yr!Hlh2;V+b;66MWahijTqTfvbrj(EZRDUY9KT zlm9NO)0r;MN-}6H9nug3704;J6N0V#3s4I)R_lktcS)l?=zi*$F&VT6zH6S@%00!N z^2f)ikk2=`jXO{gx)`%0UNC*kfjX2i(%BR}q|6+1C<1o)eo0Vsbo)ayM^-&;>L&}b9EutlQNhvSM`KS+P#XCk{qfFn=-_KF zXJX$qvZsE}vt94lSY0pNll9??eV?;lFAv4I5LFQ~)!W!X)YDVKxf zNm6|Q>m*2Jkd7Bc8Y#)KlK4d)BIMatKKO?+sHk~}M>EqO0zMRP)uEIt^$%aHLrUv`-p&BYn>; z7YF}2CXLp}^Xq$l@xr7Jk+phlurN)SI_x;Rsi#fY(n{qT*-FKG4loZjdgwk@5Gp&) z9XRx{_w8X#7#%X()k>|&dbN}v(JZ`{7i!8qG;5LJrtVIdq^?f?#r0)-s3{W6nDa3mXEhScFc|gBUyi~z5Bfn zXNzha^K&a~L5M;O@9}7N-sQfa_1nu7ZG$%#N;vkt1C_yEB_yZ}?tE|h9=aV4T_Jp& z3|(fR0JNa)O(@M}ACV>RNi5Z&?oFdTlR{g+ro8=%4ttLMG1Xx>bHtXqH>vcA%bIXi z^4r8xXX;-0ww)n0hfP%88_Wwvet#tr6FyFWRx?mWaH#peAocy}(yX>GJ zyYQfX+cIKPVor5aBKxq1mi=%hNTG|xb=y1C+8e`#$&e4f!wVjiLH>ee$U=5;4!^^I z@=MWIOiIQflSt(hPs6=NCYM%3+r~DUQ?nO|7;58eXP=ROII@Za=n& zZM7cuIt__UHZDqrWMD6iIMiui>Z;V5TA4n*HIUxrhbPFQ(ey4IOdxRa1RbtKV2jSr zw}S)aPM`4cJtZBgal@9>%7oHu>>)XFcw(s$wK6Su{Te($3-gKI73hBQs~Y*o!<#-5 z1`g2kTf?7Hpdb8>KzL9M`Jd2~-?0%Mltg+YLjX!MqY9@lc(9980VbVNKrXJ19t6IIiajWJaD{L*87g9+79g0hq(uUsXwswfioben!b_pEP@PcQ zwH-eug|-JXC79|>y|JR2r{e<-cPfJ$S^avVhk=TK2W^F;XQ2Ov=k%&M#n1R1@}#M= zVHXhmjxF$@G%_w35<&c!B-$*JI4n&@B$nD!r`}_J#1_ZVyU_SCSu~d3r3b8rqOtff zP``>OW~R0aW!yWRPzte!7U&34GaC@4yBC{&x{Z)r^XDXy0Fnd)R{BKm_G;yQn~d z36d(OK$c`1F8<-HD#4PVJ4;}sWmpn;RSk@Et@Ap(>SA>BKHPO?yNWiiaosmy;s#3K zJMF}v)smqE26G*3uw1C}Hv~&5csg?(2d5!aSu_zMM`tdc$E5!SD_0I-HhRJa-^!hm z8m8R!Npi}_Bo6K`7pAcaGARY3^PT)*g9TWYn&c1AAF}B@ISC%LM;jUV@X6I2eH-(gBeyy zg*Xf*9yYKWr*QaA;I>CKuxl1tfX9%w1-R}y4mZl7hzXvCXhc&qLOllDl-r%B$q*<+ zn=Wxbf10a#pwLW`X)eQ3z-MV-%xj%DM4JMCeM~2iSV8qn47<%XR3v97hApFdDv`6< zhJQ1?Ko!`&94a)hm_jJUnOO)k6QNxqU2j_s8_fF{%>RU-+!}l@ce>Ru$vg}j*a|bx zK(E0YpK@RGo%X^8s>oX@&;kUxWJqdMAUm)P&Ck6Iu66drXGya3>CSSPU>TM^K1-8J z0Ng$JELoO+q`QeS`C($14Yg5;{E%&EO>ImJD|6}9S0+a$h8a^EyD>jvKDpqtv@rd( z&OZ1oX_gD!Sq;-)Px$B}8lyIXWx(jjB3IMt!DtT7UFZU3Wlo15iQXr-Hn=Nt;>!r$ zCCJ5CJ+(ijZUHuY)K^a(u#W??Ch>!HEj#`)sT`*JoUT)3aAaHx7LOMy@}1Vhc@jvi zWM~1_=l>>2vP`ZbSWbOw-4q!Cj8^Z^CRs9=n>e@y_~HCob+82Vi^cp3@G`oyA|^+M zwG8jQ2$NIm>@^yBwztI~)8l1n;ej$)P(3;JxKoA#`U0 zOisfrA`c^)9lP>pL96yiCP8UHpv}Q433q5VU0T6++6?DOA$^k}0R1v?D;u5sTI)*m znZG*}{i4R_=WW7VP4#_E2~7+$q~28|hqCi6sdp2?^4a-vPdLv`xFZ$%F9>YL_hwvELw2M<27D*;q}vlf ze__%;kV}Z-;K+O@b<#lEOq{8(Rf{x0XS$D+#V=qEZUK($I3mW2I99u0uViQw$4Zm5 z=om7*=07 z@ZGV|K@v>m`kBkJ{PJ~hfCN%G8C+!Z->}{T+<;xa6K^ZS+CYDzfl-!aZNS@VW0dJn z=9wd{2bWZA=yA&+o;Z|ERj*Kp!!8rrBtn}R%%yO^{}-Nt8v2Ad2ceBFNwtb^H3fATxt zR+hD!{zMzIeRJ=X#IO?fUM2FKo5R~h{gVLDKY6*S_sWgomoh9zysZ}IW$lw4cw1?f zBd)3Ha62n}nmzBw1*n91!o)}}WUZ{s=4e6KCn?Ysun>sqV zEOTv9E@Ex@?$J1lDcbJnAVsEiL*>IoMQA0aH7Di{ziI*cui3+3ZsUNfGs+gRhD+JF zTz--|g(IRkYuz!e(-w&N5L2M$n0mNtNUIgq6(B9Zsw z{XLX@VxKd=+!KQ>OMsjiOhY)pT=+lXz^||r=*fYZ0A*wt0Q~Yj#_}u%b1w&HD=gC? zy#4wgXWhH<6aZKPM@MbF~#s?S*P$1^e{a7 zlb(U&tgbQkUVG}>q_Ao#^Jx*NoeNdL|95>WSM}?(90w;YJgUKzUsKDJqd$?v7;UOq zeVP~MP(%Sw!w4@dlNMyU=jv{qn|g&HnD?15D3M+%0`E^)P*gHF7Ni?X)FS z*uAXXY0Zt{YcecL{INxtYqd|j@W-TBcdy@*CVRKs1dBXwbCS~& z-;+6Ew^|u_je{$9Q42og}V=c+~WXusqkn5WZUN+r7S$ENqSn#)QvQGCQEv%fZWHyl}-xwhW2+KnXS5P z|8sKgZoub>Q?=bY08^j`{BoV)J1#Ttm5{ylr+7rLYU_@i zk&B!2#K%dKBkHGws#KcS!yewbPOpc(yb}l`gJ;8>W4oF!Eh20)4;DUq4^GdH-5y*Ib!PA!a?x!_@TB*ldBVaVJms59?$=Ie*|e84K{ zV#l7MyH~Z|&wQJ-{lb5Gcx}#>&NR=$!_YIIRa2(NNa(#aH%9{Nj!xd9$ z?-apVKB$mi?hAJ>z|lA>;Wus42|Cm6!};g4-x8rf2Gb7iwh;bL_%i9)4Dl2E=aO2(6S7PIX&BiHliD72caYb?*`@I!)JRuB<#vTBS4AS>4HRB&< zK(U_r$|BL9m|>=6StR^-JLd2cxI-F6s9J&Ii1D}xW2|Zk8-VQ? zNwOA0pcsu0d^u!o9d%T_GP71bw$Fb1eHxr6OyTf{ArV-1GvvXTYU5vX7U zq)TeAWg3hiY7Jmlb74UOB-7;t; z>hAi=Y$-cl&B?74X|gswSIRD|Ih0VgWV(R4r!i1HzHx+yqmMaJ84yq3V8YF=>Vcgj zA!|oz^47aWg)Q$J_F08VIV$$J1w3C`?%x@Z*t%$ZRn@VQ!iVq739l&7<{FY`4M}%q z%3x;7Rb1tMl!pxj{F`4{n@4#!{nywf@@}##704Nhyron-C2|J4a{1e=4AFoG^Rqi| zdtU|DqLsUy!L)!YmYvhP!scG&M=6r*(s&cw`B7eQg$(ja{S@GkH2WuI`zJxHdYN23 zha&86Mc8_Gp=^J}H|3cG0^`H%*;ccx%vhp&#B@%s=1gTKDNvU;bZ``yXNfW(*(oEh zaJc`1>Fi1=aH0cQ4QL`yiAq)=TeB;dQpu-z>F-b!(Ii|{7Y;{G=g~`nUkQokaPL!@ zCv-^UdCZUcPpC)^V^>-Z2%PbOS{PO>!5bea&2pv_R52{Ru(Kk9m?dfgc!;%8pME@F zTg3Z1P2h0dgcv;%xsLhYFs?=oxkiSiivOfB9QaX!rAjAAV}3C(YibD_F~xxEO$W1f zYmV8SjIU9&Yc1VG_hBJAWPt+=kP!hxF znlF|fsa1sV$#1Q;k+V_C(=6N9lzm@WwhzfY8*0K8k@hMS-N*{hqUW^V_mRPhRS(BwI_WyqWM=mZ*AD zLE)^z#a9zqt1|ZNzR|Wj`?SKFybYT*#w9d&(ssob2xh(slrPRGuU;%=r*rf4;+vN1 zS0!91<6}7*O&5!;W3l>pVer)6DFP@O`s3Cw z8bsw27MVagh`=UOGWvK+iGkW!Jr3{YC=Zw{bNGg?pIkaMmIY6ND6$E&M(~s;F-{uW zdzKQx<{6EQsS@MNU1!eFc6Sr(8aA}u`D-|vvi<9{1t&_8XxHKv52zxvoec^xMhe=_ z;4XqO;Nk%u(}G{IjA)m{JlHL74=5+ffN1wpSfK(AVlfZ$D{RDJ^ISwU2vdfv*-@JZ zm^%E5rD97-oG4i$SwYMd+fibOEGH>Wt~xJIr0HOL8LVf0ynXQ09%7s_wl|#;!Qt&2 z8M7tES@Rm7jpn`}3n>2gCedY4cMo-6+}a_VZ=t>rZ+Edw{)64cD*2DD>y%84XpGo-1X78#X~BW+>&l=qj_w&acnq7EJpoS5&5lR z7Ua5l9bSgDXh#1#R-N6&i{@iJ?mhJTdh^MZ>uKBmC6!CeU5dSP zk+S=9=_>4y_BtT2nYK;&j*sRlG4rwiQ2h;%mcNC5|LK=b%)Pw5P-Z@S-oK5uEt~SD ze7BV%NUZkc%74ZBc*D@|8|GuBconV$DZJB+F8N35;6;k#=h7WN{mu|`zicm*0s;q{ z(E;MT5HoeQ7rKCNEeLthURX$LPm~SfSi7A| zd}TojRVG*FEJ#_enB2A$>(zo@G`VeHJ^@~ztpn!sz#^LxBG!d}WVX>RHlrWSX8{Pl z{n}o?`MwvcdTM9T!sa)j{W-ihLiU%6BndB zfBGd6ySCDfT%hC=OME53|3_}}{)$U(n_tZ{50q%7{!0jGlj=`DUpvC0`S5wa`Q-ie zv?J}?3YUSrGW=ZnuNU%_N_<6n0b&)`DcQuX#aQQmNo}JY$)@aWLEHZHyJk;N0;=7$ z6#FD)cd-J98!-3T5c)*l`di3)^8RMpk(Z!~n-8D&TVS6wqrV4~eX>7IY2+*;5kKmDvG?{B0HiEG=76t~Z%pumWj>34jL!M7HK zmSG9a=)j6jFHl}Y;bMQ`=Tf!F`)fs&>sH#(13qsYOOHC*5+l$(NarnId3bD%^ zJ0`A;TF@Rp{r(+mN@t1a9|K|)*F_+O*_2cNNSS`dv0`?D%K8KPzwEY>%xdMzUuCL`^Vw0|3>=%fcfl?9RkJYW^rV0-{%HeD=~hTC0B!Ua zd3AH;`_qIcOT-n6pjc8+d_x@bJQUX~lO3lgI~MbfNWbm+_0Arwcs1D_7JUU8Fs)m-`dEaBEeaguqS z=5Mna#YN%Ya+e6VGcm}L7d>Fp!h4|HxvQDoJ=KsxqC{FWylwrGzl??y= z(tJ8rw4jwHw|UWaH=|e1*UQ_MU`sZX_{wB`woV})v`d{Mi;89L2HNh66z!k67m0T+ zP+AX;^@__Scx~H1VHNIk&p`|IPn7dvzuE@yoxmK>JZ%+yY~d|I?u+|^KpWk|w47me zQY!dEUwtuEL$glwq{UB}&~Ov;`rlhVtp@(c;-A!OCKP#sh;i!J-VDkxhZj3C=0S|J zr_oX=!wswn{#Z3URV3=1kY~Xl(d0keS&R{(`Te?)tu^;wQSMi*E8p+8w?o%(5Un%ir!#JC zhytz!@qR71a`*QH)PT>c-BwXnTf;~yT+YqW*;(@e&UwcoGlwFxgYHN$8sAn!+EhbQ znSQc3E__mRX3EQDPNp51QgBPaM6rcAB9qCaMf3KNdB8ec$?l<7S4MemQ(dEO{q{!A z!^5Csf95XXjOF_)*LuRVjwH^NR;W#p0$s53T;3Ay*XaQkeX&LY zK;RHf3Mk54BR0|8>Q(F9mc2R3S^Nq~#F~&e8lcHcRepu$&pagZfh1(a;L5=tFO2a4 z)j$B-gm=FUuW^VESAwpwqkP}ii75P02D;`LAD+nc=0s@`!_N?J3f_71Cj*ExDp+I& z1>*2Cy&;2 zC8GGRhcCOaefKRR)LOy!2-{8gC90E~a2NOT6%iLd?v^JWNkQ4dok~zFI|@bi7zTDn zIZ^7wA1#I?KotSIW7MtqWld9Om8s|Om*o61hv2pKdBZ(Qu5m`%p>2^Y7 zGZm_-<=VRj&&eX<(+Zi)6 zT|-qHwTPQ0+ zb7RcYF%6=r5|j!|zP9gDr*m)cV}K3V6y`>L%yOb(ZSnenC}~*6YzfdggzE9|Pzi`_ z{=t^85O6G96!6G?&1qB;KSl;|J_JhwG?^(f|H{IiujOWo+4BsdX#&%nBTyikDng$8 z&`Z1yPoR?9L@H@`a3)j+V&8f$ihLKm3TUw=3utl2S>hc*j{+i#VI_-LQGxJIK=F6I z0s%RT5G%mTr@Fz*yN@Gw0KR5}h<|YmNJMTQm`_?3|pqcpH0p;&E|+0tDDP*b08GHSIXZ8r_(aG4lCE^l^uxJ&r|t z^iieXqBaCsXBLAhL#MH0<#hKRk?+Z9sq<8qTdYTGSQhEY<&npY(R)+-y`X(R_XfKk zOGX*-L(ON7NF$EbqmAGr=Ct>T75i4_|yiXha?ttmI5rOr@ca- z!nVgs(SC-w$LOPi#$#;k)%#m=Mn3=H9@7muzj)anog8KA!aX=#923JfCYJpKiW8js zaFn+$ho*jkrOW$cAE!f?_C;CcFh);4zPm=zDx9kVev7@DN z?;W=fT@8s;gklCkL?fI0uL>xxiQdN@|Yr)sDqdjS7Sjj zABft*>Chy)y+FJJG>ziJ@A4X_iztzhNbz|z`zN4%rCLP7B5dJT>)gQND4Whd+h<#M z2jNDm%lU&Uh{BDC*Y4kd+knQwLz&ZggJ7E|rFCtmEx~bkXR&i&2;yV{#jdYZnMlZ< z{3uJS6!)ngAx^IEeXao6u{$=ueQ3wl5`KHr?*>-$8s1Q(+l0BHs_>sWh(LOAX+cwE zA_~pv&>>d7sCZ`miyhW%H6yg9Si>?%t1+q%KWeuq=d>O$Kh+jr;}6OqKK&K%?H%^F z=MlvFLXd{S8O28MpE;8qs>DR7vJx!ao{dUCri@~Fc(j>hSHO}co>G8J*&WiXwS%Owzk@DB zMW}-p-+lux;@ZS7?nTEYqEMU;E#fKAy`fFWfSsMiR`BQ!ncnR4Kg!2;{F!1I_2qDo z)+x)%^*MP(P5oYfrrv!n#ClvGTr!779Tv?{y$YGt-`Z-4k`nZ_9~@Ol41 zE6N-$sca%7LiaQ7VCC~IIywwnvx4Sp%knYC$FF{(v2qBqw2dc=s7^-N^9L<(PlMPU z`x-lp`Uh=s{XP1q2m@3^X7Mx3+R*_~or#(hXUfgd>Mw||XtP1I*=Q;19p&)s==z!| z1qi|J*aBwBh`-=?A_C;*CJx9=ly>7AO1UdA*G*#-+ry(eh&XyN1s+ny#x z&@Wi-9nT-MCr%}y;yE2=AXD!WL8gYj5Y<#Qa;KRR9485)Tyu{HpbC&A+erdtGcLNRok*018ww2^1*jnplCp#4UzZv=P#D-1X04{{!xCwsOl+k%89tg=r8~FUFoq zVuxLT4P~%NpYtODXAxG!DA*@QN7LXJsT5+xG_cDg?TO-(Hsv-x`FJ{o$PX0vIGZgyqAQKhr#(I_pY`Bys6j9ol zT9(F$vkdLbS;`W=^QQLdjiTbr9rV8!vlm>6nuT$bI{#NM^P(6Mb)npCsH>jeS4bqxH%?dotdGoFnhu*#G)t z!}-a_DFa?3U26H6O}pE|0y|>A-w1_D0zQ@vN_fjp*0^oxaMMV_5BItd_qyMT{%|b%L!bE<-u*SrNu}Swa>nosNi~Q0U1ej<8Lyf%H?Vb|Ren>M zF|;HGNkDp^RrpeH)nZ!EX^LLRr)Wu9kOtPimZcm`%BMX&1-zF?)n`f7%XyrPudEEm zBCyz}chDp@yI-@tjvhn(7^Sb)Uf00F!-jUWGj%NdAPYYl77dDQyxBRDsve?_j-&Do z)DZS*lq+nW1-y+3iChEbc75jdN9{HBU{vaP9cz9YYyOI&*%u~5%(@VEQ6wBV&jY6C$}$hKN?H>v z1zO#0tWNJ?S=M6n6y|ci0l0^Gyl@xWX&am=1?{@nu>ci8FY122$!+rzX8N)16*5x?-swwBa zQ_hAnhPJ$SheyL6^9`gC!MCx&wYW?%3^6eRjAW)h-@u&Mc$%rtagrl8DnJfwCr>z2 z7J7I*0&fFn>L7yYxUyF0A=_yWF)M}g@DX$_g#wOEQue!3cBrj-Jv;V7`|xcnWu4eiYsW7P~ z>WwhS=U%p3#l0Lt#9yF%-muK|FdgOjaokM{nqImatGD;32%_<(_61Ezf@m=}gEGQ* zrirIWTusi$!1?egRa#Ka%#1U9%DYiu*eJ*^6Hp@E-%u34vScPRn`B1A65)Iatk&m` zYb9xxTWc(@W3@s)T|G_m)<9_0;u77T=Sd*6l9`+MdCR%UX>6xm@D3R$?ajmjWZ;&< zJG2p6bllC4tb7H8Rtl5H7MyCfnlkPOppqYBLJYbxDR6_U?1(|~5X)kilEmcog)Jg_ zU*vuC;yZg0y%Q;3kIspxn7yI5gJ?---4;*imIdd$n($&2YY>$-B6ig%(TjJ&+KH$e z1#A9>e>7X2dW%&+q=(;!i_PJLJ^CEC0LxMVFo->^Jb!V0%gU;2>|_w-YJxlNAV)s7q*hM!hVq_mSfaXl9|T*JagheA`_E`jG}|R&w0v-C=2WYq+7+E%Ll9!CWfD9Jqe(op5+ebTTM5J zC~bhwavz*tfFsW5MYDqgO&i*XgVV&(I2u1s9U=HqxgPLCPl+&m+NN#y6*S6l^Q zDNHGTz+!HeEE{Y}wvm8jkE>xN5X#A7HW9SwQk-%LqHZ%V$|>S*;0G+9$kIz>Zs3$_ z5OrS&0~8R-DPlI4pTaKR3ERj(DUR{FU<6q1dY&hPyr#9irkz}_K-5))HnV|y`K~j& zd@F1t1#MmeeVt@4LxIk<{>j`xvC>$a>VK-(+x)au`}=~X_^h5f@zqJQ;euuAUOZGRbTaZYAB@&hb+jUr0B zOlLW^a#sQKiDT*6M&vCE^}M$d3*7AeTu&e(&TvSdpc*V5f3`ETVLo-aJ%Alzu^sAK?es689uA zj|8j{QBJubanDNuwTlh58kfmIT_7)A-;0I7E(yb!b2W0rw+ax*YRk`BpO6@7L|8J@ zkRPD+Gi`taTyr82%Lg--I4dM};|EYNy;b2u!8xtAYc%^MO?;@d>#URNYV7J9-c)+eUl z8E#t=aa9vdHz>rR!LW|3}t)fHk#j{lhA~H|ZS& zR1oA)Oavkw8z6ENMI;JJC<4)l2yA+nu1CcX37}FAN<;)iAecx~A;AM0=?P#WO#-1L z)c=m0>%H&yJj9F^~1jpgT?)HN4*St+4_`UPRi$z(@n zzrsTL*Y{b}8aMVeUToG4t2a`BxiFT?s1h+xAUo1(gaC6|gI#3oC@-uaiLA@)-?I{H z9#7WYj@i6yss^$EE~mlp+pjc!%zgtF!i0TI4pu-w)Jz2Z2cp1UQF#}a$Ltq{6(p1W znEPbm&zNWSuQ}`k?%% zLWQuPlKX%n`GNxZ0&Pyhak`y*FmG1V40E(ac})Rofk~_j)b$5LxF`|Ks2nUbkvyo0 z{a^xG&_rBdH;KVQKgFz?uP)WGBbD(Z4_K_hU#1~027OK13`Y3NkS1+lWG6O!Vtrkl z-K32liN}RcL^4&`kxoExJnq1PO0WnJECs(n4ayku7~KWGz_kQXYRGxb7d@&4)Wwk> zaDUiq;4RuHjm)L0iH(cwNDrV{1U{F7FPZ);oHl)Ne#sDMzOXNhJ6u5o8T4Jdj}LVi ztry0=pw^sO#mfS9+i>B(a5;k;$Nnqc_0iA~10K*Pusc8ODp;W`&w|IXN>TjBE3rn2 zxIgA=#qf0>7^mw96!TyBm>~%3w&%0)V$q|zKwUi9oa03>XZC|Qk-QAPaL6?Q&MQdxL*q&j}&A-+WdK9_-8 zp-o47%{?Xi&b_CsjZH_hBjG@^E4Pog@GbU37&MYx7Ng6U{X#H{WU>phe;;rwf$Y+N zeJKOn62?BJg7(xiyx7M?ggkrZE^5w@*{=iKiYFV=YD9orLfDH`&|rFI7id@gE5Vvu z<2we={L)S!S_2P@!%4JK1eiX;P~#s;+s4w(~RY!D-kK<4C0YlMgvfRyl8)t-i=}@xDfkz8jcs>iye8xtv3DP(m$eX*?ZpUX#&!q zhQ$Mv2DZ)^L_TiNwV$5a`CMp{qKNjN3yH*?DHqzr(GTZ?zB^bukuVL6L>y};4cLK^ z=tRBdp#s(r^&JczB4-CgU6Q08&vLpkyeP#6_5iS5SWsE*L}lf%R|WAfX}CIp;xsnx z%U(VAH7kcU?K{6@3`85O?1ZJ@a@r^z%%$q*sp{`3dVdtU9xQa7i1@CjK-T*;_8ZDs zR+z#fFBG1jIjDS_;AhlF2qqDA>Hh7!e>(7@J5% zonou-VqM!PWz3}t_UdjtOcstMQp$>PKTytGFgESZUi}k@KF-b6RG(sc?hwu*39l{< zOMM4gs6%;SsYzr_CUg%){{J!z@Z#?&m*>M2@ZuS`_spa>X>8KFQ%{831T6oPWNcJ(RL9!#p6VfH08H7U3gbvkWEo=dka-03u_ z#pyIAbQjEN0y-eYglYlV31qi^*Bp@2P`iO_VeAtsXw6qw>6&1}9dhZKH z!wRm80@*^?aVpB|kJ~Chw#Y9CvVY^ktLg&SaUui4R(VLits;OWw^10(rHCK;o-(jh z-1b?+70?Cxs@H1Ru8qS|%ldCuVnCod4vnA3-F6XV$WQ^>P4nvzdEzTA`f*Wo8cieI3Oq;kVzzsx?xjKjWHEpgWF zT;rz?>xsh+H4p94`?v~EjXC&V0%&?fJ~-gv zWdz1+CR7Yo_8q-y%ErjSK*mk5GbeQhFgd4zXdyWKxFJ3XXVgY{$Xt3h^9fF*JRF-o z!CpOmV_pY{*1_Wwa5!7|=ZJBA_UdsUnhy?7#+S@Jhyg)54o98VpI?%V1}DNW>B(r5 z2v7&DUKjvQxI=khh^KRicZ|$m@QRfs$Veh9GNJcAF#fZ1bHwf4l*hFfq&x3=o)SA9 zR$*-X%1$N6?png*%zKwA3CdJ4-?4AJ%45f7y7rjp7L1>F12?nn810fFpOn_Smhdty zS}KEAu(H3+Z~04HD?afXfq!+nD#SQ!G-?sPget8639YYNYpg&1VQ9qF{_V(o$Ft&h z@IVX2^-r@)FaDytYPz$^a*HP^M_zo0FSSLE^|Xq0e>cc5yNfvL*{c$bu6lw*Q_gvS-2AOi50rHB7q;@QytE!Um>o z57W*i3!12Ju@&P1M`5@&E$Hdwr@3ExDYlXjT-zB=7Cjn74SLEn0~J57@#I_a4hqpq`{m<%{R;;=W&ggKegoJ?ETlP+MjbS-H2g5q|h4(N1=8{-Ij z(haP$f=m|_4=gBV0geS6HiP0nVd6PqqQuEGXU*p@K6fHscOt+P!F1M8Wq{bPq=`U# z+BiaV0aQC>#p8@iMmye76lg)B0Js2sO@XbX4V)o(+@Jh(q~&jF<=@=A%HQ}|Unaca zt+P;J3p+Cw^!+nVUf?@{HerI|LWS(U! ziNJk9y%p2U>8*VQsVwN zX=`hH7T5OVk@rlP9K+1r%O&s0b2VG20JEQ*5jf#~V4=bh_Ql8RR2J~J1MEv@nG)s8 zO%izYoNxzOZ7dX+SdMej5q7Wb&5b`69vLh=$^>*f_yjm7|7C~y{$`Kk$5FZD-LxQK zz*&mX##QnB(&>~MZ9y=*;O-+ST;Mu zMhnB;9k{xm03yYdjn*ag1~AQ>*=T-vZ!3$;T*@ulxQA_vFz*g{L&slfEJ*Zd=8B6B9xXwVZ~cif8N zdp^+e_ImK6c-UjjCNjtvJNI}e+{6LiWe@K%T_YYb_bV~-6Na16f=ZcYGWh?6Lhu@D z(1SO1T?x4JM6RAk2k8C{s~*+-&<{ZQrJn4bQL!5z9rt6{Y6IOVxPBt#8XJA!7c9lu zOd>k_nPwN*XdXDKi}fkiuON{XR{>e zU?M?Us2o%PSDqD-a1q zl8hqBE``+vtVjK{oG@{nFp=PN$xyl?Izgq6nL3_cfG<3TO=Qu6wofyBV_-lx_|*3l z;PV{Fj%U{Hz{{lt4ew%mY5)h~aC}6{|3Yq=4&+u;$abI(WHUVTT*3d8i$Tii)58AC z_&-n+d-%Fhxg9J_3wwCNT`&6=U8wlY_+NNF4UoIDI%PXib84bSl4G#DgZy92F|db; zIKV{m$V7YhQ{zY04xBW#Lm8IOcle9Q9OzM4TOi|-J0praBcyJ4@1cjwX)+wN7!I8g zd5>yhTh1k6AcvQGPw{c<0CfWy$+$LV?K!q52$gw3Yt3?B zBgYmaIZmH8HuCe_QfHa>gnJG!<GBnO}Cm#fTm}fSDj%jQK?aFni~b_yfm{dV@7DY7ss8 z!1t2vWU$@%k|sI^_ar(0hpBMapd&ZwpTU%N_~@(M90OU7 zfdlLW81l%c!7x$N*VUmu_g~)imUDN22Vl^|UL9NaOaUIGZ{wJ^q8x)t(X)47VLo2c z*;k|5V>xW`17WQf<;?bj=mQ94>!g<|=^Vz@yFwdb2=MA?p@IV{;eY>8=9O#&@ z@tUYn;TXs>C^sg!co*lnBw1NMmn@t|7M`fF#lZiIw_`catzr81Fpzzm#?^Q29)EM6 zSqrM@Kz&y-?l<&MR*DsU^-2o;wEH~RaaMN4tdMbMeyp6)!k+0w+|Lj7Oa{)T17|g{ z|8hDJvJ2;RraUWq<|^%Bm3idA>u~QZ;A{qPRvY_etm)iutcCs3iKy*Fm@S;onw~;| z{g|Ybcx zlALSSFlBp~axR%akIX+&V>40nn=LKWv2g#WeNn{0qWKQ-iqW?P=&W0?bmwm#+-j^H zY<=KR?PCNAJ!tLjAK_{$Z=(&Ez4t)vDVnr6_+)ZNmV6I;sk|@rYR_MMgT4As(jO^3 zaeN${bN;=$oA#QysFmurVsBjw-(D;|goHe|=zfb;UeWVwl&wyus)?$KeQhL3X%EKqE0od))R7WP0VBBK)_ve3UD z2u{YmxW0C{&TM3t^9d%ff_ub$edmAZ8rT`VA&m)UZ)YuKR+|t0R zYGGA75viRBfrWm}h5mTpRz8PKdB4rmTj&p6Kex6)%q`QVNFdG*Adhi*GApjqm#GnGw{NiBUyT}&yhr&@}4izM`_ zqcsyucBAWGh>jOuE^Y5T2u>VV2fgWR0Of@B8RC3Rr43TL2b5Cfv$4an=7?|=CAW?d zF?eG#ZkSnnfj#g)&>4QLphoXX;Bs2zCpC5t zCqiPOUwi5r7^_F5=rNbl6`n-zf@1~Y*msm)oLZ092%~`-50%uY&xOq;R{zp|wLF&h zM3emV>3=8>nmZ$~%vuTj@+18E8VSZ80J9_!7fq!6h9%j}Ib88FwzF?Wo@KvwJ!W>> zMQR(TR{cNjQXODxpflB9{#3VJsmgOqHL<$JTO&yT+8*ZIS#~Vb9n`4b>nsBo&ZPtY zh0`dRg#c-esW#Tnm=x>?>(;{hP4pUM|Dp>4zZt(^Ny^tu0PO%1$R+P|o3n}o#M1zA z4J?lqmZy^u*U8wi0M%H4{$`J@9|o~7T!1!R#0-A9S$ zN27D8%&LCPJhJ8ls9~IOSOlk=90I0M<-B%92IGn2FSTgn?4Ar%5B7eIuH>! zSNp-_szbJ6d5~%;I2?jX|6%3?w(8NUHZAH>92Fawll?GVZ~>~d08Ie0(|~LZthN?b zyOWW2F8n$#M+Hpd0CQ@Ctn95ybplZy*=-&Zv74hJ`zvCb12QL2yTe)*QGFmd$v(^v z?`TEQjoF8F0o6pDFOl*a`i!hAMC$~T=5s5chV-l1PeyYxfNX8<%Khsq92I$viW96u z9~95G;pA*wX)G>NR{-2F>VsZkm;a684`TFt-zRMD=`DZZN1N}=id8+a@l_5DRO2j) z8nlb%=in8i!Y8xxTuZGW<}PV4t9Y1|X8TLMo-#dqY@s!_P||E&=0~qgiK}aot7{sf zK!%&)dUmDsr?;0a(tS6db~5%XK=)M%fqwjsfnfr5+Dpbo3wsX?os6fq&0(PH#yh{f zH~P#Vg*g~$4#pN%*4n(l_1yT&k>j>+M=j93Bjc|(euZFcGOm{yHn8};o?!|+mczTe zrv%WZe?wzGOKv?w>0SvWfuq3|N-Y0IjN=4~>zol~jri@ZahvnYi(_lpxaa~@A9$RM z1DE>4MBoSzFvHHW5C0E5!M&*=c++&&hRW&&rjwzv08K@-EQT$CKo7(KDIFkbVo_RH z6d2i_Ik|Z_74S^L$*}{aC>$=udr~VM*n#mlIa(zj-qXINzQ^MqI!59Vn&m@Uv0UBQ z_O)nKC_~c5vb3fG;0_6?N+f$nd@sYkIXlLve}O1 zc!4e$50=K5gFU)D=!y~aZ`fDfYnGeQ$tdY$Xe~7C{VC67ZaYAnKuK}Dc5}SIgl#CI z!vwg{_AM{`VQc;mY2czX-jG1ip-ul^D2F$EPq}&>4^P2;B2uoh-x>fH{|9m_NCQ|w zJnY3LgtHm?T3G!~#+^5CFB_PLJ z3==SXhGUDZu<6S{$}*rkz)~DQ*}Z1)gVb_s$T}({ZTY|S&hn6bRLC75q{QlwL)5?Y zm6ce+y*U1*w~KGqbh8;3h?E2Dw^vseIxOm`(+`+oBKVN>$YGGD0}LnNE{x%U46u3D zQ~bm1*!8XBW0uZ$fV-V~`wC6&fpp=R7WQeUUOFIpLD9vglRfR3iwOLO;b5ce&+Xf~ z$4hmiRpcypc1set`a=T8(3C6nqF3e=e6EkQ`0h0w6$$(&sMEbAdbDT#>(E0oXUCc} zR9=fg%=PvEr^EH~-d)b}l}5sL-%E8@_@dwq8^ww~s2izhC0~#8+0~V&A}zl8x9Hwm zJ>cVy_h-1@R)@&?z_0rw*V!B@d!LFH#I87Eu#Y{f$lr}5fGZ9bqcm5W4+fy_*p`;= zy)x4^mr-)+S%p-zTM~Zn{`x`pn}!ZJLj5cJ> z#$5;ETl`1|!fp?BOQh~8>fZ~wJ^FX~F(kSe3VwbE%1y-dSb>cABlOERu+;0(;^9)5 z8~(7+HR15&ZDrc*;b2H1PgXNtM}?fMOX*?b$0B+r6j6DPqQ8T5^Op5JwL{Nh^$(gs zR|YW{Bb(mt5LeQ}V$M;dQc=LmCdT(YC!I%(3+{!hpvP}TEx6>P$us!Q#(2?CUPe*P zY(t)JV8|wkKD2IS8vAk(#je3eGmI~NQGATtk~+@m*)8azY1%%lFXKLfp{?PXZ61NC_Gyn9`gj`3q*7zGQ?33f{ z*2enex&DUNUH7$HJv%qiE6#Z>Lr$G#0^eNzJ=rnK6z$nQsoaf$+k#_PxqR!nDQx9`{c!SIJNL`i4=c`Hsg)2DKI#cg+$9Z{sfQ+xQ5UOTLYpfT zLr{?(Xf$5TyexDVIEtD~HD8gLolFI{S(u$f)G?Miy)sylSJX^14v?nvBK@zyaZb`b z2J#r$p67BHNB^%vq)0oHS2}*z9qVo;l-_Go?7yLB`aJ=4$aF=J#1L~{LJoQ?F&+Jt z4!A5a&3a~JFdIEH@)%uzG;f(A+K&Lecosga;dtpBPADIeGy_7M1Y~V7I8jePzjruX@ke-|R^$@e+ zpDFYZLPJNN;t+AB!V;=&uR*1&64G z3aQx-PEjQ#R&KBL_Cwr|A9>3}F@Ml1MT37D0AZz$uggpZde6Kr)8D4cVL0lL2&p*% zWds@KEmPhmR`xKfaw*QDHB2I7*)nt4(qMpfaCs@;pX}S0wrrWQ-0BcD=I`qDS}!|V zZ1=3<(JX(m^=rn}&xH@cz{j|X9Fd%j;F*oELyqiVI1?gdFo*aU&d3p|Uo-o>3{~Wa zEGC=~;ju_*^k+p8DN*2kn^KpXj0RY+0T$k$yhg|K3v7J~e_#S(!|@xlPumnNh0w{mzaiucQ=_F21YLr}$!^dT%!=S`K4u?cdzb#EJZ*mua3 zk1!bZz+JMbIdwfa71I|gwcP=TB=}~&5aw4#Su2t*`HJst4z5QW900ALxn_(aXD`=a zC<$l2Rn3aP*PGh*0o6gBeY^;g35F;?XJUo}vmW=CoqGt%yJ4_z9qDh8!FpdjTU@<8)qBum?RLX7EMYne$jt2=^uDFCD^6I$A1?~XR=|(R{bp- z=j(1OLt9a6=I`fYKgE|$Yz>$copD#{$p;s9b)`S*GpE1!2S4C&(m5b|-tZ;)7&!WK ze!0A~UZd!2Xi89W!^JB)7lM*8{`}oxj}T_JbgV`Bq}4l$m#JAqgSnoO1lqFT9)%xW zPQBf8JHeg5o59O4^#3W1G3)`nk#B8#&mi$Ty5)Hp-u^#jF-Ep5`2^GvQ@AuHq-XsZ z)pA$2b^DIm|VLTrR-j5f?3v{pW zGS*5Ik1pqFL!^*e2{Jp&z$qRo zuZOcAnNR|O*zshAd>0inJzN9+*?S>pO00Z87gi^j$YDTzNZdVeehlKA&@1XvLp4oA zStG?0WY$+bgGi|-ozGdOre436WEX!XesaEI>jKQQEumK&eJi0?P00zV)nm_F#$&3= zTc&NQv(q_nW^(JSaF+hEY%<-j8fVyZ6BH@jWuEiCzL9W$N32Bv>L9=I*<`FDKvW5n zdk5TiW$8oQ{7VuNjeQ}ykjF)ndm!Pq+U@r*XX?KX7ZPv3-+p}ktP6Cz{|Xl&S@jHQ zL$IlinXc~@uqku0Dj@Iyl-k**KnoQRLK}&YczP@~AQHB$A}V)X3>Dx*3lq}qe1{rq zC?|&+-@A&qs3TX?mKT%he1u5}=U7676gpIdq~Ft|1;N>}0#Ds*z@`Y;u-<;7NcyJ; zl1};K^&z3wtQ6|HtSL}tw4q!W@IF+SbfKr|0OWmocZJx?i#TlB%O|k(fN4OmIiO>C0ZF&k zZtuICS@E95E8shYd_nEAao2;06rVSMEcNt>h_}<*2M@mBPM8wT3wH++0+LGIkYBB9 zT##SwYP^x=)-`TObDNrDmg*tIXk;bz8jl_uTjU8HES6d-KRD$^yO@yZ>CToR^ow+R z6Z!?5?@>+ddJP}~MbJHv)MBUs#Hk3X11T$p9$1|=T?IFEdmY!S1vxPGi?ztj?#@w{bO)S^P_Ygr6{T;S7FS8;oYJoWG>_@nMZ+FvBvT+{+n-+3n_ z;$jSGOK=y>E)Rv2hd!+fc8U6L{NV)cDQWR3>5AY28NLn~m9DF0U;;%*37%Gj&l{+N zK7QBWjy#;$dw!e11hU;ue6UQlD1Y{}ZZ>*2Ia+b)L6=utVq}K))E@DvJr%)G@Rdt& zAFH^;r5)g1du3JJLa(0+;A<%4TnqQLM|Us^5_)AYg+v!6 zAq%B3W$&cIjtGPu=_p^j3N2rQM)Q@an{L=gtrlC61xYnjOMM7AfrX)3N|0CyEK5j9 z;bc+aBk&m;ga|hzf1HUmNLY8NqP&PA>ZQ$L&I4+bDCyI!;cpR&DsE+Ar^=jz2WKPr zFdlpYVFTb-D)N%Tc@YO8iF_dOnT=1Z1v9m*`^KrVun}pDx;2aEbD?^X)sfv8&@@S# zz>$KK=*|@BV!%hff5)ky7L62u@CXk>J|VF-5X@tiA*6(Vx`@AEK-~XT2P=xYeijJ> z4V*p~O1$HoLT(C@)cF`W)U-%kVq|FGAU$)JQ(u&7UzGcxIbs*2WMq2#j`s*sOWp!Y zBj77O63;GQIb6O{3KqmQq@1Am*CwdrfkPICT=jbJT&4J$bgh>_tyh^h@}=CTbDu{) z9*gtsyHTUkcjNK*gqmGw*%B-L9yPa5VW&QUUyoU$rg>H+dREmOL!SB+W`BTU!@Uox zF5b5<$|PtP_%4rUZJd|CecRb>7#02JRK1G-%<`qI674{ucpwq{#2Qd~Cj{_!lnWuC zvvcdYP*zu5CO;;PdUHoddGys)(}V$! zrx{dGU@{zV&t6Uolb3ql$gN~Qseghh2+SMmrC|sAOd~A?xcw^F9LeW#waS=cuxK7i z%>xPq*5xbtR4V77R^bz^+u3&j4G2in)}nYm&4=>pZ4o(T}ok!%N2n35r793WSP; z(&NZ>Ta&ZMb{i8HL|yhYp8#u4XY95iVcttCn<1@2)^Y5%{AAPJ^b~xD zyEpvpFE;arE!~ac6_}Pd@k`&%JTP(=-drR_`6BJ*aUw-X{HxFXwCO;hs!APoK~k(8 zIAbl1k=Ge(+6z{i)7+uH@z*KDU}Ej6&e&miLXd5Gb%@?4!rRBv#<%toz7=1&N4=I( z${qX%$f;N=3!JSSrSqPxTtlB`UCi03nDxlDB7eo8tqD<4t!B{+e|9eC;%XfA(n#^5 z4S`^CdQv+fG5p|(7DGrm?ctqO$9+@E&&I4;Pd`WKU)%?&EIO|PsVtV-_+HZDH6AO8 zfP^qXTE~NC2wXMg^bBc2_#4A3oiC|NRUY>ZKgtcZtliN`yc1) zNN$(K>@_W<{$=B?dn4P%ccoEz-Q`l`h35~E)!sz0n9Ro7?%-mnX%(;MD5MClz#ROI zPjo`Yl2AxB^>w0S=D1hp_)r@4QYQU@pvykfX9?rB+Fxbgob#YQ5ONV!s#bf~7P+Io zhI*-LR2H>iNMF4;e{yW>QR}Q0|8ob#2z#1&ny`Ju6~hBjI90mH%zLsj5sZw(s> zii3%bbLM>1Mw?yPt0Mlb>x~(l@cIHOps3`#X*KBA)zUbo#sEW%1M*<~&t*xKu7XAh zA#r;5Mc)z2X%QCvC)ixE=v8dk`*`DE-Hl3Kgn_9qpTKyyM`pTLX8KS+C~)Nk z0Tx<=W$ar?`gjrA*hT(uJk=o1v1yL#lig)D65d&-IA`$&#BC~%f|}-XgC$17k!^3@ zfkAeBm;CrH4>0Liv_QQZl8H}j^hTaKas7}WsiOxlfG8J(8Y%^m#`bfNL3!|affu1~ z+OBfG&MIFU6)r43l8(#@*LpQeu#oy0Lg?plMx~9C7Gggcn=RwPmcFfC+pFtPLp$L9 zAd#c%(IwN6uXp1DFT>JwY-5-FoctS5oS2ihcd*jD6KVTrpG--)o_!lz>(0DGp8{NT zp(RTaJYz#?gP;;D^YHQsMQ|kMHm+!4vLfGRa_i5ooeplJX-ab=u<=-Z-8rC*Qh2e{9M*AuGvLqX(RX}i-4~<4=F9c-p#QhU$SGtC>QU@9lz*_nJUN!WkZc7u&T(RFz#Zjlg zVGmxVwLvE}eDs83?aEmfA=4_VeQ~;Qwm_C1T<8M~3EW?73d{<|E$4URN|13&dwFM>D!FpbxmnKeJM!?{Q>YOU$EB>HCp zOV&SOYxM8hZmS|rDRnWaw2W#g-2EhhrC=Ig!kERE$CYXo1z5F=^(@M*MXI2!KeKKX zVB>U8EjA4o>J?9FL!yf(L9L7gI>rZ1wwBo&IkLQIU`kG3wv^~*l~@^B%dA&zzJn<` z$NKLw8X1BW3j9h0I}1;s>kt$LovBYA)DNy7@b{L(gxazGriv!$9%MHS%a6wUy`(nr zJ2ST))GfD7_wa6o1_WWnLi$O_hT@;NKB9V(Z4b&zc@I_qe z=Z0J2=obl`DF03G*9`R{PHJ4~5{IeooR$A%<)G7?B5JXJZ6E!Im9f*@OIsr3N*RIb|`A=Mf1y~=v4juojww=_3{-Y-P4m1+S6()T9re9IS z`lc=CLmE@V2b-&w-+XxAI9q6}R~R8N@E-Fn7*v~{LsnU9cz4r zw?q5hM?EQ=AMvlV0U4<&&2VV!3kfsvjxC@%8!Vhn5d^Og);;GNIUYRY#6RU00(!HiKil1~=TcG(q77 z^YTf1J_jzO7MNL>ue@~d(3B$TNk4qITZ(DH5sCmj~V-y7mcg z1PQe@If*=|?y>AkAOK!Wf?5qtCl-#syt?(bVu6^;k{N zR>j$gurI#U9(jDbskm5{RqUcHGmZ53-5@T4tsuI(z6?d|p48hJ1~BRx#q_&F*qz1myUxA|PPzeIbavGLc8 z%g^OA1jR=xv(mxqnWSr7-~~8QfzgbNbYovp-}ZAAV9HG6`QZiyyoG#*usBF%e8~#! zh1Gw6q5#9kC;GPN^n2gO4lwY_lYqyOlqFhqqkR<5?}&}}CgXD0g&x0>zrrR6J#bR3k+4wIiHoP+4%Q{~>HXY=Q+ zUeAQ7joM|ThyK;}^6TMcv(IY469e6^ZXGYP4}Wz>GJ~u0*>&ecN98gUgI?6AJg?0@ z!<`_Uj|F`C55LM9CHD2zr|U?>aXNW{1KLSb--n^QMmjlqq~pwwJ%Ci#-oFePv!@=S^HUO)zBND1+uX z=qSsIF!ZaqJJUHPk%054}F>6|MJh4ID=cgWKO`E<+jM(9$rhyUA zqQ@_wVl-l45;DK`Mp%zfi_edhCTUBt_R=hsjB}(&=hL8Cu{dpZl+{^C4iDq{0=S!l z54d7pPlGOW!FM&)Fgrrar_caXra=z?;|}{28e$L{bj1Z$1b+;Syqi?>E~0KdqA)R^ zac!e{_1*~|W|Wmj42}`cGFphTQa2_)oLghfM_IvRaPo1iU7Tj`wES2ZQideUht|Yv zY}BvBTEUV}NU{C^qq6gBzOO{``FLw$JhbTdi4n3s-Z~f$ZTgoBzMGq&^K)qtSxE1U ze9A{GBP=cA36f;f1qHX*6ToI25@8&mHaS2-cQR&)5dx68+!l(36e|W?`(w-yX6*IJ z7G@~;WPcc)R@n4bmm)b4IORx~FsUq=yAzTS!x9P8$B^S$P!0!BGluUbJ(OhW&;Uha zxGag228C~WGsfq_;*o~D3|kIsUDEi79LZIZB|}@^ZG1$YQoRsk zHZ7taIg*&aBFJb?i@+gAQWc=Fx5n1bf4j~J#w4qHSaPmpOuvt-nMNSQF>Ph^!5ruQAx8B!Ksa{`hT%t!$8|RZXhTxQsmUn4)-=3lJl?aR0QoaJKT1$w<%Yw} z0pXhiA9<3%`!872ECr1vq)A7#=mcVfppTjsCRK}GOpH+QQPWlNZ@8Z-BH$VFU5d!j zYqdNL$+7M7P2xFFf8zl%TZ5j4RLfBK9HrkArJo}&{(9)63^#6J56x21xTN=NQSaG8 zO$~0l@p&z z_;?|Sb+$F_mRtNSw}@0^QO4O39Za~kqiL?NY3?0=4OxGU`y$|zUo6?q& z$PxCzYhiF&^h#p9OXIXMk)!K_*TIBp(+7#r?EG;eG(KNlkg==POGD*Hdj=weVW8&N zMVrMqOkB$-i8s)qcs7+Ge9E)+ucLm!9#*%P^G$1^+Tp_!xjd%> z$JJ`nECc7=h&D!1^Ph-sTBEDY+ml0AzVerVHm zwGMR)E@%8uhV)$u6+yGU*B|{ivMM=0NQg0z)=-7q+-ba}ftl8He7!QIhD#9O}nlm^SU7fV*Gx>rTq3koFr?RN} zV8lp;ZTJATACsd=mm%6z;TMn5G(6yUEdikj_CFCsj#2CSLnJIw;REAgF4^c9tR)GE znM4ue=X@qvM9wasr-tWjFTUKvS(jem=xis7c884GX5Kb=kn3xde#lqIZ2TVwB8Sf> zMn{FM^S8%0Qbmc!>E^LpF0##c|6crB`QwGhGwf-HBhMnOA&}|6%S7~?PHJLy`tTD8 zkIt(K2_PB!TqSBMS!e4gUVi}B^hqTTGG z-R`ZHq^y?ct^|m!1RRiekvIOQ16P~_zXyvEi(W@}9s6=n@65fm=9IN&-IXY@l_=+? z%VvwKLDNJVT#Ig)yI7dJ^HizQjdXOMv)P2SSw%r$r%vG5nM%!v<=sh%UM06q(1wJK z>!nFAq)^JVAvxoES<cn`%| zG%3|aan(j|dGQ;c-~RX(28Peo(>>MG@kn%9fUtmPcr+FnlBw_^YPvIOx*D0=`_(}L zr(N~}CoBLBwvrORG4Ph{FwM;Px*{Ub;D2$U>+nKXqz6O*%tSxc2)|}Y@f)3Qe@ul< zXq8+l@E#Wb?z`U*;Tr~q4;@pT z9aG`ENsqQm1r2{Z!E>FD@hFYr~#OJyN{sM0*$2lgoM;&w8o3 z$>9&2O6mI~28N1<%H3@=-|}J>C}stue67UJ%v0zTNU7c((8vp6NnT({mc|BN*R$N(o z#pZuVQ})`tholO5ZDt@hBX4xwVe@-XmA#}!slq^_{vX;c3FP&U6~uTwZ2uYJ!Z+K9cn5lSlxZ_R zapNTN(JW>MmP36t2qk=%)P4)!F>LhaE|U68s8vAuoq)2JD}>^d$-cw`hDi~DA0h%{ ziDJ}5F}Wm^c59lrqIIgMeX3}Y9X}{Mv@4`x&Ev4<-?UY3U*-8M!Sf?EzU!($&*H8} zpTv7UiErQWXp2RhxxzLbvWGA~@|URd_edoE2~qSJ03`tn$&G_?F$!t1263?lxiR5! zG2zHlkRMkC{wWjhDHDI{s%q^k3euud@hc;i))I#$)ji`zu4}O9JL%nt7X$@NsPUk5 z>7N<@BXwtBF0~HKLFu#@1?wZC6EPCV7J(Zr0&hkWO_EUx;EyXFxNg0EZ6`?SUwQi2 z@qO@}Q#k7>+>Rv=4g8xO_&3%!<8~aj);Me(H>7*J2zhE;KtfvFGBkeT$j$|<^(`U( zZ#oK{Ucqq<1J+XsJHl)|oi){|MW;_?BwK?Vf9O!uBD8PE5u6q8|>E z0<`o3yj>v7e6y?Y<1)>irR=Bz=8E|db>h8 z^UxHqEqh8AOG;F!*vD~|;kcq6BIUSkx=h3g_ti4zMc0CVjs%y)4*d1_lJjj2Ix0C) zEeLg9B~H2hgfuH zEV=>N;~RX7E5MJf1cA3Xu3nc8yXL;UY+7Akwl8Kzcm11lMPtF60`yo%i0zY*JL-+; zjTM|6V#Gn8iOs;V&A>aGLrI%MyJJttY(AhrNlsL1*}kk>n@BMHi|(78cyX_Dzy3c- z4@>t&IiQ*UkE-i{YGMi3QZy9ly#;B~q^q>hq!&f8fOMrQ(m@g+Akur0Dv(e_;3^=X zBGLm$iv$z}1OlN2BtkHeKxl9A-gnM>=X~einSW+yH=8Mc+gUSpk1ivweW~Y7E)~g# zoS)g4@e)aUNdXHgGt&FL6r9(Gt=GRw;HK;n;k&wPxP2r1Jg77pi4NQ9jil%nZDAAl zHm@H{i5*PcdsE7VqT?EF6}$=H7^yof$q1wMO&En(4; zG0^kBLPWrIwSSX_wep4&dF8t{R{*T{Cam=)d`V;(Ph{zD5w6%d3s6*xFxF8ckzL}? zgCy$3TSX?al?ye558+gbq0iBur+bwa#mN*-w#F_%b+5*Fg z5gaBi)=3nH0iO0toajk)nWKF6qkOZ~I`IiqHi0j_3}C){Id#u&`d8;2AaOO9F$%T9WR0@@<}5S@eJf@dLD;#q9hAW}&g6Qqfo`cmh;izOJw>n&9W^o_TFh4c#G&8Bw|R_+JVq7LMm6!3&2ho> zDoxRsp02VFY2W4W?5>n%0JYt&lx94k)eN9_FvtEI3|BHn>?uZ!6KP0~ zG?auVGQbnpqT@&reP&=DvCI_rV>^0lW3m^n`)1?2JUB2@$nQtH-PdGuD@kmeh*kO7 zV>g=4k2kq+_<`T+$_YLEU`Gv9p$0aRm+qG+oKOJc#%@4*H^|K!aYD(26V6&iV~Lx} zXronDxM`{Nt;OKxo6MQJ|epFS2gB&Dr%bn&-cxDRBO(o*_C zLcJiN5s2Gar8^f$X(|_|>~?PTjk&tPs+B%z!y9)y?*rI|_Y>j$sxAUVRqs*v(HTzx5A)@W%EH zoUkEU1*e~y>fxtjVlDPByAfU4Uuc@@0ai$O$!CdRm#|LiN3!=K$2d!0oGyJKrDe{n zWp26i^!);jU$SV~X+3?*gHsB-H1>;Jeg>8gk{g;%D^yAC8#_!X{ovHoXSTQSsSa2u zdZfSrLd1Mej|09rAazLLrEb;n;Pip|h_R=Lv7DnI=8l{@e`UkNT;7X``RK}b3#C3o z5PN2lw?gf_L(RN{O;^kHt`_&rm+{W}maBgDYp373gX`j9Z}TTc6adr)I}AQ>_`PY) ztm$j{`y21?Z~27VKIOcA=EoKBYRyvn`u0 zTT1@gPXz!)Zoc<2-bw8@I*g$mnnc@9e{Po|Ar#ON@7?QP#M}GdKKS&CDAbTL@5vKY ze0!U*0VUlo2c&j=@AUgOGj)Cb2T0*s?&d{p%8l0C-lo)FdF99>62zmm{7;GAD~;$o z{qt>1bwRhOZ(gnS)~6s^nRJ3f<%FS6xQfEel((`5+YM>`?}=}{lbX6(;CNNT)-;W5 zz&SgY{4YhzN`46Dnw~6mbqTZKU=0@@^253ES%~kGImsHF+fI^1C&?x+ZG%jSZ1_3G zaIWM?Yc2qLQBu26QeV2v#=6Yhqn&6oO~oUOIiV2F>CDn@QvP4#QjWjmpgQM}I_I)b z@~$Fh3F8R`u-7TQ+bO-+X135~))$t&V0A*f!?MjpB@IL+vmtT@;Jm?z$Bd6L=YJ!d zo;u2N%qhie7W`LCA)H)h8)$o)6NXXjIeSGs;ul=);c)FKsw0e^hT`l>W^~%#Q z_MAyZkbj(110O4v!E$-7g?_73szUVq7#r6(8`oOm&`eyc`dm&6Ge}#3Yy6ONEh>2} ziZP^Xxh5b3Fj92UUwR}S?nK+6$kCx_z*0Qye8}D0y)HYWxt_-%vBh0Y6s-DvEiff4 z&`HydtkHgHpHse-r#KMNOm;r8)o!-si`M;0qb7J<=K{_L#b?(0H;Aayr9 zBY$l75}}-TWSeqi`(L`_v+U00>Mb7D%@1Tasz=CVeLp@{J?#q{upktEsYGce z@V8puoUL9@1pYXUJYD+~UHkLFuLV}^)TX<#aigD?bw39nJu7@X#@?yI5~U0kO3dfQ z06NrBf^!~Sb{-8-^0FE5s9932T~eJ0EZVhEot-P1a1r>~V6{m(ONlt&nR~V~*Xrko zv!RaXLmd;e6rb(u^d2IH4iUI0jQe~<0(`585P=C$_Xw)@)UZ{9@oDrH6(u*E1E{%E zR=MKfvhYYihDQ#@YY?wCgjZW86_w}-j3Nn+IALS-$y}R8u2U_!QG}jzFKinEx=xx` z?!;+Q;==89B}21U6IzR{ zc1As>v$59NIV>Ij1~$$^erm(cJr%H z*ot`H*j%F!%;ig_&U^{;uG|{Shb3MPXYwry^LE3QAKu5E8}LiT{F5%+rttBqP;1~m z56ZxAHb3}vdhlxnyqyr<&f$0C<=>6(+xezV>c8bjg$a3G+1HCF$@WFsYiMx&P;Hp} z)b8xCbNhW`Lz4n2+!wv!>r3M_JpF_AN8oltOR(0I`4mU#i`bGniG6de!l9pzw>8G} zwQ?pyvnE5`{Y^j-YFbU|m9ZTHBI_HWW0M<$*f*???}xm|oHr2dk~r*P?Hnn!(pWnT zbysYQML3y88j0*CX?=;_Dm%tzQ;N0L>cZSvYhtnCrr73<1)a9hzsqvb%{6_sEwiX8 zgQzKv!)m(2YKeV*?J*lI3=b=$MP&QyEaaO@X$J zQdm~%<7GIG70b6d*zvWe<7;*pyA~8w9*hW3w!~&@ZnLiTY5(4|0fpVfGo$vz?=R0) zu?8)T+Q!9}yqDO|*Pd!=KSuv5IRq?DTiL%7r31RiI+V(-*5e~!d3sj(Tprxp3F^_d82bwan#t4gbRwKx zAMV^#Y;T(TtDy%eg#{{wtvGKkI&Thl%=UN8@`yg-)19g(TeqztAA8hyF>l?p{rN%h z=ZF7gWppxIKd@b0Ya`}@4?aB}H6S~(4(q;+U27#Tcf0^&Eq@M0nClRdHivXyfp_ly zaYx=}Q!DH+#t}@?+HGfgr@uT4^Nbh^0^UtD0t$52M*x5H`bp)BI7B3v8<;h(i3VN50MyDy)W}DCX&~T6e~IvoGWHERy0Zmm>lCFD?kP4=;5gUSMhYFy z@kt?bd~Az$gdQ&|c9t-NMS*vCcijE&o!sU4K={}|co!$@+Xk$ETQ=+?JrU` z3{y8O!B|r;mJj}#4gOkb|ByPhHOV(`E85x6NqDy2E8q5~GEmlQ!_;k{zY9AmJ2s%S z41Y_jZI~j@1iIuV7WIS{put?HSI;wT({YcXQ(rOT1(UMdTlBFGW>|-FTMEm<@&Oq< zK^Z(615B{YPW@kZ2l1`l_*VA04^R9Y2TMF@u71dZ&z-)AyRv$bIdYY`)|z>uIzCc~ z3BYv3-LeFQe-+6iNBw9;qiDr4J-()a%I*tZfnhkH&>h?S+`GW3b&T28Ovpt|N7BMoD~reeAzTEv$tk*ue~x#D+?nE`D7;wJv$UYwC#n32_$ z7KU1+Vwgc4Isaaue-E`Mcz?N+OuO}h?+Zw_Y>0axKA2Vo7=ScaUuK1gGkL4_hsBe0 z`UZ7h(eA%yn)bS_KO-A;PS{(!KmNqhesEm_I@6KWVRw4xK2K9i>l3fqtd7s8cP{e* zd)}7;7xs}`@R2h*mMuHxZpv)z*8Ow^n|guhy!`#kfz9amFOh$Hl|Y$^(BS?S9U(z* zP&<=uLX~cML!;YyAchbs?AoxTzoW(aM(E+W2ocZ}%cU$z69~#2bdp<>J?kDlacaNv z%

gDK$Yl*zx@*bJyu$^AAteJvjG~ddmK*{=pR8ZX;-MQc&MVFv-Q|q~P!?&BcnC z-FIiklFpnINC+nBMV?CcJ~`tfRX^kfO~{Lw_AW@b;>#Gc2wPdzS@%uolUe_Bx`{MF zPhxh3&kWL>QMFaoXI0M9Nuh)CkFrOj1U>{~P7Xxr*U1?jXG9{dh7c~TP5G!+ze&)H ze^<-|(jNZ)5v7^LKW;loEOL2vG%85d_W7;p*ozOix&yDnsl7iRzA8vYU)tt*Z7_3} z%cTc!BKf#*vbKx+xbU)i(oL>l?+$b{D^f`t==2 zwnk}~j2>PrYSeH~lWjW~JdA-QAxYP$+^i5f!|4`?QA4!MetzQG zAGWH@%SNKUGVr%zRBuC=IxI<`@g6YOB(YS9svGI~$sB$VqXrs|HztlXCRVtyZ5N4J z9H|){spTGcB^`LlZ1J5fhqJ64J{9w=!EXQc`l?+bahBCZ zT9|N4AO-oDLGRafa*bF}PWjpmLjc=fS<5+CjE@Db91Elzsl^?saUXgy9D3~<;7U>p zfmnd6o+0mkm2h}oG5sPfSZ;kWhq7i`V_;Iv2nw4u3+dtr>B?S7w`i56pHxWxi35BAenC>b{L50j&r1$%ZfO247m0B7dbKzvVGJ?P!1Z7H&Zy zr*VSMt)#=PR_RlX(x^SD zCM|nEy+2GVVJqaqe&aw*{6Ldv#M!H!k=D4f0-gLY@Br~q=9ZE$8lBOfsgocYaiENI z9hk7&vC3%l3OWeFm8A2p+h$}NW~}InEa{3^9;ulespV^KtE~171VyI@MyDH_3L2UU zre<7B$herVbH$CoAvkh)>C@q*{0OhK2(QS0y=y;I!qwf@N74e-)BCNpO)wr8qJF4s zzHDr7(=lmqzp&+(xxKk#7x~6**L7eqR;1EaHGkhHZQti00?;Z2kIglp#X%P+qx_W7 zWx&zG)$XgpAreF@5)`C>D;rP&B4@^y3J0~Xb9tZRf`J~=vbfvuuzHrAzl2**EKKTD ziRo0~fV}H7U_zana%w z(V!IY;;mJWm%C|KJu;`ck&U(O$GZLdTQ~QFuWf6V3?r&!FTSm9FSr<=aG3}Ghzb5k zjylCnow~K^_i`+#deIiS*sR5a+~e-(swLbjL>cPlbz-^U9ksh3t9Q}XRY+B1JrBA0 zRM}3xn|sby+Z~0&l=~@L{kL{Bt;U0khIJEVJGF04k zkZ?}q68rCTLmON06(`sl1m~(gA+}vE@|4YY<68(If_!_swCLiGN0(`$-RDQo?mzZy z^7jJV=0y{+Y5=zNFbmO$A?*ulgxq2sbB!rk^=CTAYJ@%H5aL*%b3|>Lq}Lk;J0Ef6 zHAT{U)`>m~FDhzRQj3*_o!{T^oN`g;n*V*abERlE-;1b#>1%<+`onf?aAly2SO zD*XJujptN>>N8S60x1B{`~@Oq)z-JrWAjBFcY&Y^be}ZDkj?u%JW+tk`d>kESJ;{8 zEh{RY8d=E`&kS-No1O$h9?ElDUvLJSSD~fy3N7WNq7}3C3Uc%c29cI9(Yn6ZcV&as zrGlQ=>|hEC@5y=`M}@VmZNd)+G{`Rv?4r?18V8CDK6Xsy`w6=gzUiA6x*5?=7}N3y7h>mdA>?4MjleBoA7Qi&?H^RS{lY z$o`rS@XK%KcL8(S%!+?}Y|)_&HBgEgSVdm4@J5_a0P6#JYXf=FfHeKpCUR9Oa@E0d z%2E>`B7Dc;+Fo>;I|<}Jm&Yb&*x{jc)Sn4!uY|^I)d7{61v>ce0ejh9iF)Q?2g`J7 zXN*8T%d~Y{jJ?0%PKa-rX_wd`g@rt??(UB{Gg^~=5>UlI4Qh&+ewMz)2eOcM-bv;k$H8sC)Zoq^bL#O5I?@qlH; z`=q3a%{Svmq+&$+>eL^Vd1+zq>fmkBQJh{$s-jk+q849iG;3+JBK1I+df>R@kH#^U zr0VJ=>gpAQE#s%gRrsQJg^!4>gwkTSmQRi$vfyt(>WeY|o$m-6EBHezBGh}J26P;BG!sG@T!xAo6ebe+HM za?bJoG2MT0!i7R!t^FcjBetYowlEi9dsrpQPcw)O4P%}7K39x;R}s!iq}Po@-!5(2 zooDTsq*v^qu*#CLj2#s0z7*eLVcXF!rQ=_u61-$vcIOrx6M-c;g^YI{O+$aUHAHQ& zOzMWd#T_5F?&4FAj*;nXS}XUh&RD(Y4Q9mnxjtsbfL%YKp3$jsAZQD(KzC@HZJ`#f zcjBvQUveVg-4m#0(ZWO2*Hd2^Ff^{CoCs-Jk~e{=iKYoQ#kF!NhjAi~&#cy?g4JC& z&qKmMt6)^Hwd%=OCi=tA;4jJy%^R2=dJ8R}@LWHA)VmN4M&QA_cofNkh6otNtibnCp=( z^ays*bF=UdBzTu~bO^4MxF53l6BW$jS}z8fq+flG3RZAkc1HAeK*B_Dt%}N%JctdN zU>#hmuJR-wLg-YmA+D7}S)CVAd@7g=*D9;5&I6v13?5*@oOgZUS7bP+8m5M8)l_a_ z2TxoMZs9~Y&`JEk2>(R3&M;wqojma}ljm)z#95xgHYT=*#jS0OeDvzhpa#^h(dCctCkM1bf>#<)FBWfxuqbIe{Xae+{}U-Xy86Aw5G zU6?QpPxd;92Q-Cx3>eXvy=LOU>B24sj7v=R{(V+T|LlA`UbOq*CR9;N@N3S;`grZC zcY!+A%pJ~_o29&)rQbc`@J-#0cc6+O^h!LQsoU`ew4NS)I}ZO(x8rSS{TcMPIM5~E zji0Dk?Uqm$Tu4;1`I&i>o@{kNfTT#wWA$86#(f1z8v7nia+AHw03 z1mzkt<=VfO$)D9$nANVEVZ{83$v*0cZ>yC$j9@;Du%rV1F3R`Pc)Viwpw1LZXDTP+ zO?<=~DT*yK#rD5acpSd7d)6Ad$(A-7t1uf|2V!6gKln};57LS9IeA>GP@E=BAy*vU z$n_dGn7mt;$bd17fz=QpXA2V$adH{l9iaI(o{}7<%9JKF<6JteyCx z`vppk-ZPV!79+sS<|$QY1AW*oW*ok@drS+||%E?F><9G04#%Ol8 z+d-Xa(Ux)e=qIpNqU)K7@G4?EQ=u&*=2Z+Vov2TG)Nu#u3_@?j;s12EJ43Oj&_eO} ztKIE)p;%hO5Dm1X+qgYJWfwkh|+;n2A!M2_=a1WldM>%KhB z_1?gG>U=or@*3leqCG~f3+IhKNcaOG5lhf6cc5h~qb}E=ifm|B+%zNl8gBZu)j5b| zH{=?0Y~!;j>MPw#X~;i(TFj?60||e-=LkLDorJju z)=h+MH-GNMT-M`3+;-hzv}Q@$on9T^_?(LL1xLOAuP|C4I;J*?iNl{$2L2t!?h;u@ z;uB3th!>5-;W~u+b*~y26PUef#uMuGH|@oQX?_BGPlSL9@yq}lwl0q!w^ek!r-MQ9 z#ANUF)2{L{+j1i0>4H6QG16W*O%%z|wQu0VDbXbqFqMP*<87JP!lzEJFY%5ID42=1 zJkj;T&7tU&K0hS~GOsQ1VwE6kUnul>1KFH{PGM+u1S|O@f zL2=|h4B+U%FCH^sEMs7`#P+lN+eJ!?XI;2Of;hZ(Pudt0Ye^N2&~CS$$#lXr!?~1O zxWMR#EvcE_+Me%bJaj*Zka~U<$9pj=YsYy>D}Ql$WE$PLbZ-Op*wwRT2?rb@i{9wb z$$I=Wqe2*d<2#8Em)~ajv&N~W@^SKL7qeEhLu8sS^xBUCd(78QoB9rs;lAG5zT47o zan|1Rj?e`i?^LCF78gf{14du+?tcZTtYZnRW4zHECExl5W(c@&FVXS)4O+Mva^lY4bVhlH}iOB^

*bS)@{ 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%0A}9!} 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%0AhN8 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ΝQE@`2VAaFzh!13 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%0Aw!7BiJ*qC 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≪I^$}gQV>RJV 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

  • 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 { - return papi.webViews.getWebView( + return papi.webViews.openWebView( paratextRegistrationWebViewType, - { type: 'float', position: 'center', floatSize: { width: 540, height: 415 } }, + { type: 'float', position: 'center', floatSize: { width: 540, height: 448 } }, { existingId: '?' }, ); } @@ -57,10 +57,11 @@ export async function activate(context: ExecutionActivationContext) { 'paratextRegistration.showParatextRegistration', showParatextRegistration, ); - const showParatextRegistrationWebViewProviderPromise = papi.webViewProviders.register( - paratextRegistrationWebViewType, - paratextRegistrationWebViewProvider, - ); + const showParatextRegistrationWebViewProviderPromise = + papi.webViewProviders.registerWebViewProvider( + paratextRegistrationWebViewType, + paratextRegistrationWebViewProvider, + ); // No need to wait for this; it will do its thing and handle its own errors showParatextRegistrationIfNoRegistrationData(); diff --git a/extensions/src/paratext-registration/src/paratext-registration.web-view.tsx b/extensions/src/paratext-registration/src/paratext-registration.web-view.tsx index d95b04a933..1e7facc5fc 100644 --- a/extensions/src/paratext-registration/src/paratext-registration.web-view.tsx +++ b/extensions/src/paratext-registration/src/paratext-registration.web-view.tsx @@ -1,21 +1,30 @@ import { WebViewProps } from '@papi/core'; import papi, { logger } from '@papi/frontend'; import { useLocalizedStrings } from '@papi/frontend/react'; -import { AlertCircle, CircleCheck } from 'lucide-react'; +import { AlertCircle, ChevronDown, CircleCheck } from 'lucide-react'; +import { InternetSettings, InternetUse, ServerType } from 'paratext-registration'; import { Alert, AlertDescription, AlertTitle, Button, + Card, + CardContent, + CardHeader, cn, Input, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, Spinner, usePromise, } from 'platform-bible-react'; -import { getErrorMessage, LocalizeKey } from 'platform-bible-utils'; -import { PropsWithChildren, useEffect, useMemo, useState } from 'react'; +import { deepEqual, getErrorMessage, LocalizeKey, wait } from 'platform-bible-utils'; +import { DetailedHTMLProps, HTMLAttributes, useEffect, useMemo, useState } from 'react'; -type GenericComponentProps = PropsWithChildren<{ className?: string }>; +type GenericComponentProps = DetailedHTMLProps, HTMLDivElement>; /** Representation of whether the user has saved changes */ enum SaveState { @@ -28,26 +37,52 @@ const REGISTRATION_CODE_LENGTH_WITH_DASHES = 34; const REGISTRATION_CODE_REGEX_STRING = '^(?:[a-zA-Z0-9]{6}-[a-zA-Z0-9]{6}-[a-zA-Z0-9]{6}-[a-zA-Z0-9]{6}-[a-zA-Z0-9]{6}|\\*{6}-\\*{6}-\\*{6}-\\*{6}-\\*{6})$'; const EMAIL_REGEX_STRING = '^.+@.+\\..+$'; +/** + * Time in milliseconds to wait before restarting the application after changing Paratext + * registration information + */ +const REGISTRATION_CHANGE_RESTART_DELAY_MS = 5 * 1000; + +const SERVER_TYPE_OPTIONS: ServerType[] = ['Production', 'QualityAssurance', 'Development', 'Test']; +const INTERNET_USE_OPTIONS: InternetUse[] = ['Enabled', 'VpnRequired', 'Disabled', 'ProxyOnly']; +// For some reason, these aren't an enum in C#. So just following the existing conventions. Maybe +// there can be other values, but let's just keep it to these for now. +// InternetAccess.httpProxyMode, InternetAccess.socksProxyMode +const PROXY_MODE_OPTIONS = ['Http', 'Socks']; + +// #region helper components /** Just a div with some margins to give some space around parts of the web view */ -function Section({ children, className }: GenericComponentProps) { - return
    {children}
    ; +function Section({ children, className, title, ...props }: GenericComponentProps) { + return ( + // Making a wrapper component and passing all props down + // eslint-disable-next-line react/jsx-props-no-spreading +
    + {children} +
    + ); } /** Two-column grid layout div */ -function Grid({ children, className }: GenericComponentProps) { +function Grid({ children, className, title, ...props }: GenericComponentProps) { return ( -
    *:nth-child(odd)]:tw-justify-self-end', + 'tw-grid tw-grid-cols-[1fr_2fr] max-[300px]:tw-grid-cols-1 tw-gap-2 tw-items-center [&>*:nth-child(odd)]:min-[300px]:tw-justify-self-end', className, )} + title={title} + {...props} > {children} -
    + ); } +// #endregion + +// #region RegistrationData functions + async function getRegistrationData() { return papi.commands.sendCommand('paratextRegistration.getParatextRegistrationData'); } @@ -66,16 +101,73 @@ async function saveRegistrationInformation( }); } +// #endregion + +// #region InternetSettings functions + +async function getInternetSettings() { + return papi.commands.sendCommand('paratextRegistration.getParatextDataInternetSettings'); +} + +async function saveInternetSettings(internetSettings: InternetSettings) { + return papi.commands.sendCommand( + 'paratextRegistration.setParatextDataInternetSettings', + internetSettings, + ); +} + +// #endregion + +// #region other functions + +function scrollToRef(ref: HTMLElement | null) { + ref?.scrollIntoView({ + block: 'nearest', + inline: 'nearest', + }); +} + +// #endregion + +// #region localized strings + +function getLocalizeKeyForInternetUse(option: InternetUse): LocalizeKey { + return `%paratextRegistration_description_internetUse_option_${option}%`; +} + +function getLocalizeKeyForServerType(option: ServerType): LocalizeKey { + return `%paratextRegistration_label_serverType_option_${option}%`; +} + +function getLocalizeKeyForProxyMode(option: string): LocalizeKey { + return `%paratextRegistration_label_proxyMode_option_${option}%`; +} + const LOCALIZED_STRING_KEYS: LocalizeKey[] = [ '%general_error_title%', '%paratextRegistration_alert_updatedRegistration%', '%paratextRegistration_alert_updatedRegistration_description%', '%paratextRegistration_button_saveAndRestart%', - '%paratextRegistration_label_registrationName%', - '%paratextRegistration_label_registrationCode%', + '%paratextRegistration_description_internetUse_disclaimer%', + ...INTERNET_USE_OPTIONS.map(getLocalizeKeyForInternetUse), '%paratextRegistration_label_emailAddress%', + '%paratextRegistration_label_proxyHost%', + '%paratextRegistration_label_proxyMode%', + ...PROXY_MODE_OPTIONS.map(getLocalizeKeyForProxyMode), + '%paratextRegistration_label_proxyPassword%', + '%paratextRegistration_label_proxyPort%', + '%paratextRegistration_label_proxyUsername%', + '%paratextRegistration_label_registrationCode%', + '%paratextRegistration_label_registrationName%', + '%paratextRegistration_label_selectedServer%', + ...SERVER_TYPE_OPTIONS.map(getLocalizeKeyForServerType), + '%paratextRegistration_section_internetSettings%', + '%paratextRegistration_section_internetSettings_tooltip%', + '%paratextRegistration_section_proxySettings%', ]; +// #endregion + globalThis.webViewComponent = function ParatextRegistration({ useWebViewState }: WebViewProps) { const [isMounted, setIsMounted] = useState(false); useEffect(() => { @@ -87,6 +179,8 @@ globalThis.webViewComponent = function ParatextRegistration({ useWebViewState }: const [localizedStrings] = useLocalizedStrings(LOCALIZED_STRING_KEYS); + // #region RegistrationData + const [name, setName] = useWebViewState('name', ''); const [registrationCode, setRegistrationCode] = useWebViewState('registrationCode', ''); const [email, setEmail] = useWebViewState('email', ''); @@ -108,84 +202,287 @@ globalThis.webViewComponent = function ParatextRegistration({ useWebViewState }: setSupporter(currentRegistrationData.supporterName); }, [currentRegistrationData, setName, setRegistrationCode, setEmail, setSupporter]); - // How much progress the form has made in saving registration data + // #endregion + + // #region InternetSettings + + const [isInternetSettingsOpen, setIsInternetSettingsOpen] = useWebViewState( + 'isInternetSettingsOpen', + false, + ); + const [internetSettings, setInternetSettings] = useWebViewState( + 'internetSettings', + { + permittedInternetUse: 'VpnRequired', + selectedServer: 'Production', + proxyPort: 0, + }, + ); + + const [currentInternetSettings, isLoadingCurrentInternetSettings] = usePromise( + getInternetSettings, + internetSettings, + ); + + // Set the form to show the current internet settings when we receive it + useEffect(() => { + setInternetSettings(currentInternetSettings); + }, [currentInternetSettings, setInternetSettings]); + + // #endregion + + // How much progress the form has made in saving registration data and internet settings const [saveState, setSaveState] = useState(SaveState.HasNotSaved); const [saveError, setSaveError] = useState(''); + const hasUnsavedRegistrationDataChanges = + currentRegistrationData.name !== name || + currentRegistrationData.code !== registrationCode || + currentRegistrationData.email !== email || + currentRegistrationData.supporterName !== supporter; + const hasUnsavedInternetSettingsChanges = !deepEqual(currentInternetSettings, internetSettings); + // whether any form fields have changed + const hasUnsavedChanges = hasUnsavedRegistrationDataChanges || hasUnsavedInternetSettingsChanges; + const saveAndRestart = async () => { setSaveState(SaveState.IsSaving); setSaveError(''); - try { - await saveRegistrationInformation(name, registrationCode, email, supporter); - setSaveState(SaveState.HasSaved); - } catch (e) { - logger.warn(`Failed to save Paratext Registration information! ${e}`); - if (isMounted) { - setSaveError(getErrorMessage(e)); - setSaveState(SaveState.HasNotSaved); - } + if (!hasUnsavedChanges) return; + + const savePromises = []; + let internetSettingsIndex = -1; + if (hasUnsavedInternetSettingsChanges) { + savePromises.push(saveInternetSettings(internetSettings)); + internetSettingsIndex = 0; + } + if (hasUnsavedRegistrationDataChanges) + savePromises.push(saveRegistrationInformation(name, registrationCode, email, supporter)); + + const results = await Promise.allSettled(savePromises); + // Filtering out the successful results, so all that's left is rejected + // eslint-disable-next-line no-type-assertion/no-type-assertion + const failedResults = results.filter((result, i) => { + if (result.status !== 'rejected') return false; + logger.warn( + `Failed to save ${i === internetSettingsIndex ? 'Paratext Internet Settings' : 'Paratext Registration information'}! ${result.reason}`, + ); + return true; + }) as PromiseRejectedResult[]; + + if (failedResults.length === 0) { + // Queue up the restart + (async () => { + try { + await wait(REGISTRATION_CHANGE_RESTART_DELAY_MS); + await papi.commands.sendCommand('platform.restart'); + } catch (e) { + logger.warn( + `Failed to restart after saving Paratext registration information and internet settings! The user will need to restart manually`, + ); + } + })(); + + if (isMounted) setSaveState(SaveState.HasSaved); + } else if (isMounted) { + setSaveError(failedResults.map((result) => getErrorMessage(result.reason)).join('\n\n')); + setSaveState(SaveState.HasNotSaved); } }; // Whether you should be able to type into the form const isFormDisabled = isLoadingCurrentRegistrationData || + isLoadingCurrentInternetSettings || saveState === SaveState.IsSaving || saveState === SaveState.HasSaved; - // whether any form fields have changed - const hasUnsavedChanges = - currentRegistrationData.name !== name || - currentRegistrationData.code !== registrationCode || - currentRegistrationData.email !== email || - currentRegistrationData.supporterName !== supporter; - // whether the code and email seem valid according to a quick check + // whether various fields seem valid according to a quick check const isCodeValid = !!registrationCode.match(REGISTRATION_CODE_REGEX_STRING); const isEmailValid = !!email.match(EMAIL_REGEX_STRING); + const isProxyHostValid = + internetSettings.permittedInternetUse !== 'ProxyOnly' || !!internetSettings.proxyHost; + + const isContentValid = isCodeValid && isEmailValid && isProxyHostValid; return (
    -
    - - {localizedStrings['%paratextRegistration_label_registrationName%']} - setName(e.target.value)} - /> - {localizedStrings['%paratextRegistration_label_registrationCode%']} - setRegistrationCode(e.target.value)} - /> - {localizedStrings['%paratextRegistration_label_emailAddress%']} - setEmail(e.target.value)} - /> - -
    + + {localizedStrings['%paratextRegistration_label_registrationName%']} + setName(e.target.value)} /> + {localizedStrings['%paratextRegistration_label_registrationCode%']} + setRegistrationCode(e.target.value)} + /> + {localizedStrings['%paratextRegistration_label_emailAddress%']} + setEmail(e.target.value)} + /> + {/* UX said to remove supporter info until we are using it in P10S. Leaving here for uncommenting when the time is right */} {/*
    Please specify who provides Paratext support to you:
    -
    - + Supporter name setSupporter(e.target.value)} /> - -
    */} + */}
    -
    +
    + + {isInternetSettingsOpen && ( + <> +
    + {localizedStrings['%paratextRegistration_description_internetUse_disclaimer%']} +
    +
    + +
    + {internetSettings.permittedInternetUse === 'ProxyOnly' && ( + + + {localizedStrings['%paratextRegistration_section_proxySettings%']} + + + + {localizedStrings['%paratextRegistration_label_proxyMode%']} + + {localizedStrings['%paratextRegistration_label_proxyHost%']} + + setInternetSettings({ ...internetSettings, proxyHost: e.target.value }) + } + /> + {localizedStrings['%paratextRegistration_label_proxyPort%']} + + setInternetSettings({ + ...internetSettings, + proxyPort: e.target.value.length > 0 ? parseInt(e.target.value, 10) : 0, + }) + } + /> + {localizedStrings['%paratextRegistration_label_proxyUsername%']} + + setInternetSettings({ ...internetSettings, proxyUsername: e.target.value }) + } + /> + {localizedStrings['%paratextRegistration_label_proxyPassword%']} + + setInternetSettings({ ...internetSettings, proxyPassword: e.target.value }) + } + /> + + + + )} + + {localizedStrings['%paratextRegistration_label_selectedServer%']} + + + + )} {saveState === SaveState.HasSaved && (
    - + {localizedStrings['%paratextRegistration_alert_updatedRegistration%']} @@ -198,7 +495,7 @@ globalThis.webViewComponent = function ParatextRegistration({ useWebViewState }: )} {saveError && (
    - + {localizedStrings['%general_error_title%']} {saveError} @@ -209,7 +506,7 @@ globalThis.webViewComponent = function ParatextRegistration({ useWebViewState }: -
    +
    ); }; diff --git a/extensions/src/paratext-registration/src/types/paratext-registration.d.ts b/extensions/src/paratext-registration/src/types/paratext-registration.d.ts index 8a3d713e4b..c4d0d932c9 100644 --- a/extensions/src/paratext-registration/src/types/paratext-registration.d.ts +++ b/extensions/src/paratext-registration/src/types/paratext-registration.d.ts @@ -14,10 +14,46 @@ declare module 'paratext-registration' { /** Name of the user's supporter if any */ supporterName: string; }; + + /** + * Set of servers to which to connect in `ParatextData.dll` + * + * Equivalent to C# `ServerType` + */ + export type ServerType = 'Production' | 'QualityAssurance' | 'Development' | 'Test'; + /** + * How restricted or open the internet connection should be in `ParatextData.dll` + * + * Equivalent to C# `InternetUse` + */ + export type InternetUse = 'Enabled' | 'VpnRequired' | 'Disabled' | 'ProxyOnly'; + + /** + * Internet settings as used in `ParatextData.dll` + * + * Equivalent to C# `InternetAccess.InternetSettingsMemento` + * + * Note these settings only apply to operations that ParatextData.dll performs, not everything in + * the whole application. + */ + export type InternetSettings = { + selectedServer: ServerType; + permittedInternetUse: InternetUse; + proxyPort: number; + proxyHost?: string; + proxyUsername?: string; + proxyPassword?: string; + proxyMode?: string; + overrideDBLServer?: string; + overrideDBLApiServer?: string; + overrideGbcServer?: string; + dblEmail?: string; + dblPassword?: string; + }; } declare module 'papi-shared-types' { - import type { RegistrationData } from 'paratext-registration'; + import type { RegistrationData, InternetSettings } from 'paratext-registration'; export interface CommandHandlers { /** @@ -37,7 +73,9 @@ declare module 'papi-shared-types' { 'paratextRegistration.getParatextRegistrationData': () => Promise; /** * Sets information about user's current Paratext Registry user information in - * `ParatextData.dll` and restarts the application. + * `ParatextData.dll` + * + * Note: The application must be restarted after running this to properly reflect changes. * * @returns If successfully changed registration data * @throws If did not successfully change registration data @@ -45,6 +83,30 @@ declare module 'papi-shared-types' { 'paratextRegistration.setParatextRegistrationData': ( newRegistrationData: RegistrationData, ) => Promise; + /** + * Gets information about user's current ParatextData.dll internet settings + * + * Note: These settings only apply to operations that ParatextData.dll performs, not everything + * in the whole application. + * + * Note that this does not return the passwords in internet settings as they are secure + * information. Instead, it returns `********` in their place. + */ + 'paratextRegistration.getParatextDataInternetSettings': () => Promise; + /** + * Sets information about user's current ParatextData.dll internet settings + * + * Note: These settings only apply to operations that ParatextData.dll performs, not everything + * in the whole application. + * + * Note: The application must be restarted after running this to properly reflect changes. + * + * @returns If successfully changed ParatextData.dll internet settings + * @throws If did not successfully change ParatextData.dll internet settings + */ + 'paratextRegistration.setParatextDataInternetSettings': ( + newRegistrationData: InternetSettings, + ) => Promise; /** * Gets the validity status of the user's Paratext registration * diff --git a/lib/platform-bible-utils/dist/index.cjs b/lib/platform-bible-utils/dist/index.cjs index 62b36d0d65..4c824a353f 100644 --- a/lib/platform-bible-utils/dist/index.cjs +++ b/lib/platform-bible-utils/dist/index.cjs @@ -1,6 +1,6 @@ -"use strict";var lu=Object.defineProperty;var fu=(t,e,r)=>e in t?lu(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var E=(t,e,r)=>fu(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const pu=require("async-mutex"),At=require("jsonpath-plus");class hu{constructor(e,r=1e4){E(this,"variableName");E(this,"promiseToValue");E(this,"resolver");E(this,"rejecter");this.variableName=e,this.promiseToValue=new Promise((u,n)=>{this.resolver=u,this.rejecter=n}),r>0&&setTimeout(()=>{this.rejecter&&(this.rejecter(`Timeout reached when waiting for ${this.variableName} to settle`),this.complete())},r),Object.seal(this)}get promise(){return this.promiseToValue}get hasSettled(){return Object.isFrozen(this)}resolveToValue(e,r=!1){if(this.resolver)console.debug(`${this.variableName} is being resolved now`),this.resolver(e),this.complete();else{if(r)throw Error(`${this.variableName} was already settled`);console.debug(`Ignoring subsequent resolution of ${this.variableName}`)}}rejectWithReason(e,r=!1){if(this.rejecter)console.debug(`${this.variableName} is being rejected now`),this.rejecter(e),this.complete();else{if(r)throw Error(`${this.variableName} was already settled`);console.debug(`Ignoring subsequent rejection of ${this.variableName}`)}}complete(){this.resolver=void 0,this.rejecter=void 0,Object.freeze(this)}}class du{constructor(e,r){E(this,"collator");this.collator=new Intl.Collator(e,r)}compare(e,r){return this.collator.compare(e,r)}resolvedOptions(){return this.collator.resolvedOptions()}}class Yt{constructor(e,r){E(this,"dateTimeFormatter");this.dateTimeFormatter=new Intl.DateTimeFormat(e,r)}format(e){return this.dateTimeFormatter.format(e)}formatRange(e,r){return this.dateTimeFormatter.formatRange(e,r)}formatRangeToParts(e,r){return this.dateTimeFormatter.formatRangeToParts(e,r)}formatToParts(e){return this.dateTimeFormatter.formatToParts(e)}resolvedOptions(){return this.dateTimeFormatter.resolvedOptions()}}class Zt{constructor(){E(this,"subscribe",this.event);E(this,"subscriptions");E(this,"lazyEvent");E(this,"isDisposed",!1);E(this,"dispose",()=>this.disposeFn());E(this,"emit",e=>{this.emitFn(e)})}get event(){return this.assertNotDisposed(),this.lazyEvent||(this.lazyEvent=e=>{if(!e||typeof e!="function")throw new Error("Event handler callback must be a function!");return this.subscriptions||(this.subscriptions=[]),this.subscriptions.push(e),()=>{if(!this.subscriptions)return!1;const r=this.subscriptions.indexOf(e);return r<0?!1:(this.subscriptions.splice(r,1),!0)}}),this.lazyEvent}emitFn(e){this.assertNotDisposed(),[...this.subscriptions??[]].forEach(u=>u(e))}assertNotDisposed(){if(this.isDisposed)throw new Error("Emitter is disposed")}disposeFn(){return this.assertNotDisposed(),this.isDisposed=!0,this.subscriptions=void 0,this.lazyEvent=void 0,Promise.resolve(!0)}}function mu(){return"00-0-4-1-000".replace(/[^-]/g,t=>((Math.random()+~~t)*65536>>t).toString(16).padStart(4,"0"))}function Qt(t){return typeof t=="string"||t instanceof String}function ce(t){return JSON.parse(JSON.stringify(t))}function gu(t,e=300){if(Qt(t))throw new Error("Tried to debounce a string! Could be XSS");let r;return(...u)=>{clearTimeout(r),r=setTimeout(()=>t(...u),e)}}function Du(t,e,r){const u=new Map;return t.forEach(n=>{const i=e(n),o=u.get(i),a=r?r(n,i):n;o?o.push(a):u.set(i,[a])}),u}function bu(t){return typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"}function vu(t){if(bu(t))return t;try{return new Error(JSON.stringify(t))}catch{return new Error(String(t))}}function Eu(t){return vu(t).message}function er(t){return new Promise(e=>setTimeout(e,t))}function Au(t,e){const r=er(e).then(()=>{});return Promise.any([r,t()])}function yu(t,e="obj"){const r=new Set;Object.getOwnPropertyNames(t).forEach(n=>{try{typeof t[n]=="function"&&r.add(n)}catch{}});let u=Object.getPrototypeOf(t);for(;u&&Object.getPrototypeOf(u);)Object.getOwnPropertyNames(u).forEach(n=>{try{typeof t[n]=="function"&&r.add(n)}catch{}}),u=Object.getPrototypeOf(u);return r}function Nu(t,e={}){return new Proxy(e,{get(r,u){return u in r?r[u]:async(...n)=>(await t())[u](...n)}})}class tr{constructor(e,r){E(this,"baseDocument");E(this,"contributions",new Map);E(this,"latestOutput");E(this,"options");E(this,"onDidRebuildEmitter",new Zt);E(this,"onDidRebuild",this.onDidRebuildEmitter.subscribe);this.baseDocument=e,this.options=r,this.updateBaseDocument(e)}updateBaseDocument(e){return this.validateBaseDocument(e),this.baseDocument=this.options.copyDocuments?ce(e):e,this.baseDocument=this.transformBaseDocumentAfterValidation(this.baseDocument),this.rebuild()}addOrUpdateContribution(e,r){this.validateContribution(e,r);const u=this.contributions.get(e);let n=this.options.copyDocuments&&r?ce(r):r;n=this.transformContributionAfterValidation(e,n),this.contributions.set(e,n);try{return this.rebuild()}catch(i){throw u?this.contributions.set(e,u):this.contributions.delete(e),new Error(`Error when setting the document named ${e}: ${i}`)}}deleteContribution(e){const r=this.contributions.get(e);if(!r)throw new Error(`${e} does not exist`);this.contributions.delete(e);try{return this.rebuild()}catch(u){throw this.contributions.set(e,r),new Error(`Error when deleting the document named ${e}: ${u}`)}}deleteAllContributions(){if(this.contributions.size<=0)return this.latestOutput;const e=[...this.contributions.entries()];e.forEach(([r])=>this.contributions.delete(r));try{return this.rebuild()}catch(r){throw e.forEach(([u,n])=>this.contributions.set(u,n)),new Error(`Error when deleting all contributions: ${r}`)}}rebuild(){if(this.contributions.size===0){let r=ce(this.baseDocument);return r=this.transformFinalOutputBeforeValidation(r),this.validateOutput(r),this.latestOutput=r,this.onDidRebuildEmitter.emit(void 0),this.latestOutput}let e=this.baseDocument;return this.contributions.forEach(r=>{e=Cu(e,r,this.options.ignoreDuplicateProperties),this.validateOutput(e)}),e=this.transformFinalOutputBeforeValidation(e),this.validateOutput(e),this.latestOutput=e,this.onDidRebuildEmitter.emit(void 0),this.latestOutput}transformBaseDocumentAfterValidation(e){return e}transformContributionAfterValidation(e,r){return r}validateBaseDocument(e){}validateContribution(e,r){}validateOutput(e){}transformFinalOutputBeforeValidation(e){return e}}function yt(...t){let e=!0;return t.forEach(r=>{(!r||typeof r!="object"||Array.isArray(r))&&(e=!1)}),e}function Nt(...t){let e=!0;return t.forEach(r=>{(!r||typeof r!="object"||!Array.isArray(r))&&(e=!1)}),e}function Cu(t,e,r){const u=ce(t);return e?rr(u,ce(e),r):u}function rr(t,e,r){if(!e)return t;if(yt(t,e)){const u=t,n=e;Object.keys(n).forEach(i=>{if(Object.hasOwn(u,i)){if(yt(u[i],n[i]))u[i]=rr(u[i],n[i],r);else if(Nt(u[i],n[i]))u[i]=u[i].concat(n[i]);else if(!r)throw new Error(`Cannot merge objects: key "${i}" already exists in the target object`)}else u[i]=n[i]})}else Nt(t,e)&&t.push(...e);return t}class ur extends pu.Mutex{}class wu{constructor(){E(this,"mutexesByID",new Map)}get(e){let r=this.mutexesByID.get(e);return r||(r=new ur,this.mutexesByID.set(e,r),r)}}class Su extends tr{constructor(e,r){super(e,r)}get output(){return this.latestOutput}}class nr{constructor(e,r){E(this,"numberFormatter");this.numberFormatter=new Intl.NumberFormat(e,r)}format(e){return this.numberFormatter.format(e)}formatRange(e,r){return this.numberFormatter.formatRange(e,r)}formatRangeToParts(e,r){return this.numberFormatter.formatRangeToParts(e,r)}formatToParts(e){return this.numberFormatter.formatToParts(e)}resolvedOptions(){return this.numberFormatter.resolvedOptions()}}class Bu{constructor(e="Anonymous"){E(this,"unsubscribers",new Set);this.name=e}add(...e){e.forEach(r=>{"dispose"in r?this.unsubscribers.add(r.dispose):this.unsubscribers.add(r)})}async runAllUnsubscribers(){const e=[...this.unsubscribers].map(u=>u()),r=await Promise.all(e);return this.unsubscribers.clear(),r.every((u,n)=>(u||console.error(`UnsubscriberAsyncList ${this.name}: Unsubscriber at index ${n} failed!`),u))}}var Tu=Object.defineProperty,Ou=(t,e,r)=>e in t?Tu(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,d=(t,e,r)=>Ou(t,typeof e!="symbol"?e+"":e,r);const te=["GEN","EXO","LEV","NUM","DEU","JOS","JDG","RUT","1SA","2SA","1KI","2KI","1CH","2CH","EZR","NEH","EST","JOB","PSA","PRO","ECC","SNG","ISA","JER","LAM","EZK","DAN","HOS","JOL","AMO","OBA","JON","MIC","NAM","HAB","ZEP","HAG","ZEC","MAL","MAT","MRK","LUK","JHN","ACT","ROM","1CO","2CO","GAL","EPH","PHP","COL","1TH","2TH","1TI","2TI","TIT","PHM","HEB","JAS","1PE","2PE","1JN","2JN","3JN","JUD","REV","TOB","JDT","ESG","WIS","SIR","BAR","LJE","S3Y","SUS","BEL","1MA","2MA","3MA","4MA","1ES","2ES","MAN","PS2","ODA","PSS","JSA","JDB","TBS","SST","DNT","BLT","XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","3ES","EZA","5EZ","6EZ","INT","CNC","GLO","TDX","NDX","DAG","PS3","2BA","LBA","JUB","ENO","1MQ","2MQ","3MQ","REP","4BA","LAO"],et=["XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","INT","CNC","GLO","TDX","NDX"],ir=["Genesis","Exodus","Leviticus","Numbers","Deuteronomy","Joshua","Judges","Ruth","1 Samuel","2 Samuel","1 Kings","2 Kings","1 Chronicles","2 Chronicles","Ezra","Nehemiah","Esther (Hebrew)","Job","Psalms","Proverbs","Ecclesiastes","Song of Songs","Isaiah","Jeremiah","Lamentations","Ezekiel","Daniel (Hebrew)","Hosea","Joel","Amos","Obadiah","Jonah","Micah","Nahum","Habakkuk","Zephaniah","Haggai","Zechariah","Malachi","Matthew","Mark","Luke","John","Acts","Romans","1 Corinthians","2 Corinthians","Galatians","Ephesians","Philippians","Colossians","1 Thessalonians","2 Thessalonians","1 Timothy","2 Timothy","Titus","Philemon","Hebrews","James","1 Peter","2 Peter","1 John","2 John","3 John","Jude","Revelation","Tobit","Judith","Esther Greek","Wisdom of Solomon","Sirach (Ecclesiasticus)","Baruch","Letter of Jeremiah","Song of 3 Young Men","Susanna","Bel and the Dragon","1 Maccabees","2 Maccabees","3 Maccabees","4 Maccabees","1 Esdras (Greek)","2 Esdras (Latin)","Prayer of Manasseh","Psalm 151","Odes","Psalms of Solomon","Joshua A. *obsolete*","Judges B. *obsolete*","Tobit S. *obsolete*","Susanna Th. *obsolete*","Daniel Th. *obsolete*","Bel Th. *obsolete*","Extra A","Extra B","Extra C","Extra D","Extra E","Extra F","Extra G","Front Matter","Back Matter","Other Matter","3 Ezra *obsolete*","Apocalypse of Ezra","5 Ezra (Latin Prologue)","6 Ezra (Latin Epilogue)","Introduction","Concordance ","Glossary ","Topical Index","Names Index","Daniel Greek","Psalms 152-155","2 Baruch (Apocalypse)","Letter of Baruch","Jubilees","Enoch","1 Meqabyan","2 Meqabyan","3 Meqabyan","Reproof (Proverbs 25-31)","4 Baruch (Rest of Baruch)","Laodiceans"],Ct=ju();function de(t,e=!0){return e&&(t=t.toUpperCase()),t in Ct?Ct[t]:0}function tt(t){return de(t)>0}function xu(t){const e=typeof t=="string"?de(t):t;return e>=40&&e<=66}function Iu(t){return(typeof t=="string"?de(t):t)<=39}function or(t){return t<=66}function Fu(t){const e=typeof t=="string"?de(t):t;return cr(e)&&!or(e)}function*Ru(){for(let t=1;t<=te.length;t++)yield t}const ku=1,ar=te.length;function qu(){return["XXA","XXB","XXC","XXD","XXE","XXF","XXG"]}function rt(t,e="***"){const r=t-1;return r<0||r>=te.length?e:te[r]}function sr(t){return t<=0||t>ar?"******":ir[t-1]}function Mu(t){return sr(de(t))}function cr(t){const e=typeof t=="number"?rt(t):t;return tt(e)&&!et.includes(e)}function $u(t){const e=typeof t=="number"?rt(t):t;return tt(e)&&et.includes(e)}function Pu(t){return ir[t-1].includes("*obsolete*")}function ju(){const t={};for(let e=0;e(t[t.Unknown=0]="Unknown",t[t.Original=1]="Original",t[t.Septuagint=2]="Septuagint",t[t.Vulgate=3]="Vulgate",t[t.English=4]="English",t[t.RussianProtestant=5]="RussianProtestant",t[t.RussianOrthodox=6]="RussianOrthodox",t))(L||{});const M=class{constructor(e){if(d(this,"name"),d(this,"fullPath"),d(this,"isPresent"),d(this,"hasVerseSegments"),d(this,"isCustomized"),d(this,"baseVersification"),d(this,"scriptureBooks"),d(this,"_type"),e==null)throw new Error("Argument undefined");typeof e=="string"?(this.name=e,this._type=L[e]):(this._type=e,this.name=L[e])}get type(){return this._type}equals(e){return!e.type||!this.type?!1:e.type===this.type}};d(M,"Original",new M(L.Original)),d(M,"Septuagint",new M(L.Septuagint)),d(M,"Vulgate",new M(L.Vulgate)),d(M,"English",new M(L.English)),d(M,"RussianProtestant",new M(L.RussianProtestant)),d(M,"RussianOrthodox",new M(L.RussianOrthodox));let Q=M;function wt(t,e){const r=e[0];for(let u=1;u(t[t.Valid=0]="Valid",t[t.UnknownVersification=1]="UnknownVersification",t[t.OutOfRange=2]="OutOfRange",t[t.VerseOutOfOrder=3]="VerseOutOfOrder",t[t.VerseRepeated=4]="VerseRepeated",t))(lr||{});const I=class m{constructor(e,r,u,n){if(d(this,"firstChapter"),d(this,"lastChapter"),d(this,"lastVerse"),d(this,"hasSegmentsDefined"),d(this,"text"),d(this,"BBBCCCVVVS"),d(this,"longHashCode"),d(this,"versification"),d(this,"rtlMark","‏"),d(this,"_bookNum",0),d(this,"_chapterNum",0),d(this,"_verseNum",0),d(this,"_verse"),u==null&&n==null)if(e!=null&&typeof e=="string"){const i=e,o=r!=null&&r instanceof Q?r:void 0;this.setEmpty(o),this.parse(i)}else if(e!=null&&typeof e=="number"){const i=r!=null&&r instanceof Q?r:void 0;this.setEmpty(i),this._verseNum=e%m.chapterDigitShifter,this._chapterNum=Math.floor(e%m.bookDigitShifter/m.chapterDigitShifter),this._bookNum=Math.floor(e/m.bookDigitShifter)}else if(r==null)if(e!=null&&e instanceof m){const i=e;this._bookNum=i.bookNum,this._chapterNum=i.chapterNum,this._verseNum=i.verseNum,this._verse=i.verse,this.versification=i.versification}else{if(e==null)return;const i=e instanceof Q?e:m.defaultVersification;this.setEmpty(i)}else throw new Error("VerseRef constructor not supported.");else if(e!=null&&r!=null&&u!=null)if(typeof e=="string"&&typeof r=="string"&&typeof u=="string")this.setEmpty(n),this.updateInternal(e,r,u);else if(typeof e=="number"&&typeof r=="number"&&typeof u=="number")this._bookNum=e,this._chapterNum=r,this._verseNum=u,this.versification=n??m.defaultVersification;else throw new Error("VerseRef constructor not supported.");else throw new Error("VerseRef constructor not supported.")}static isVerseParseable(e){return e.length>0&&"0123456789".includes(e[0])&&!e.endsWith(this.verseRangeSeparator)&&!e.endsWith(this.verseSequenceIndicator)}static tryParse(e){let r;try{return r=new m(e),{success:!0,verseRef:r}}catch(u){if(u instanceof De)return r=new m,{success:!1,verseRef:r};throw u}}static getBBBCCCVVV(e,r,u){return e%m.bcvMaxValue*m.bookDigitShifter+(r>=0?r%m.bcvMaxValue*m.chapterDigitShifter:0)+(u>=0?u%m.bcvMaxValue:0)}static fromJSON(e){const{book:r,chapterNum:u,verseNum:n,verse:i,versificationStr:o}=e,a=i||n.toString();let s;return o&&(s=new Q(o)),r?new m(r,u.toString(),a,s):new m}static tryGetVerseNum(e){let r;if(!e)return r=-1,{success:!0,vNum:r};r=0;let u;for(let n=0;n"9")return n===0&&(r=-1),{success:!1,vNum:r};if(r=r*10+ +u-0,r>m.bcvMaxValue)return r=-1,{success:!1,vNum:r}}return{success:!0,vNum:r}}get isDefault(){return this.bookNum===0&&this.chapterNum===0&&this.verseNum===0&&this.versification==null}get hasMultiple(){return this._verse!=null&&(this._verse.includes(m.verseRangeSeparator)||this._verse.includes(m.verseSequenceIndicator))}get book(){return _.bookNumberToId(this.bookNum,"")}set book(e){this.bookNum=_.bookIdToNumber(e)}get chapter(){return this.isDefault||this._chapterNum<0?"":this._chapterNum.toString()}set chapter(e){const r=+e;this._chapterNum=Number.isInteger(r)?r:-1}get verse(){return this._verse!=null?this._verse:this.isDefault||this._verseNum<0?"":this._verseNum.toString()}set verse(e){const{success:r,vNum:u}=m.tryGetVerseNum(e);this._verse=r?void 0:e.replace(this.rtlMark,""),this._verseNum=u,!(this._verseNum>=0)&&({vNum:this._verseNum}=m.tryGetVerseNum(this._verse))}get bookNum(){return this._bookNum}set bookNum(e){if(e<=0||e>_.lastBook)throw new De("BookNum must be greater than zero and less than or equal to last book");this._bookNum=e}get chapterNum(){return this._chapterNum}set chapterNum(e){this.chapterNum=e}get verseNum(){return this._verseNum}set verseNum(e){this._verseNum=e}get versificationStr(){var e;return(e=this.versification)==null?void 0:e.name}set versificationStr(e){this.versification=this.versification!=null?new Q(e):void 0}get valid(){return this.validStatus===0}get validStatus(){return this.validateVerse(m.verseRangeSeparators,m.verseSequenceIndicators)}get BBBCCC(){return m.getBBBCCCVVV(this._bookNum,this._chapterNum,0)}get BBBCCCVVV(){return m.getBBBCCCVVV(this._bookNum,this._chapterNum,this._verseNum)}get isExcluded(){return!1}parse(e){if(e=e.replace(this.rtlMark,""),e.includes("/")){const i=e.split("/");if(e=i[0],i.length>1)try{const o=+i[1].trim();this.versification=new Q(L[o])}catch{throw new De("Invalid reference : "+e)}}const r=e.trim().split(" ");if(r.length!==2)throw new De("Invalid reference : "+e);const u=r[1].split(":"),n=+u[0];if(u.length!==2||_.bookIdToNumber(r[0])===0||!Number.isInteger(n)||n<0||!m.isVerseParseable(u[1]))throw new De("Invalid reference : "+e);this.updateInternal(r[0],u[0],u[1])}simplify(){this._verse=void 0}clone(){return new m(this)}toString(){const e=this.book;return e===""?"":`${e} ${this.chapter}:${this.verse}`}toJSON(){let e=this.verse;(e===""||e===this.verseNum.toString())&&(e=void 0);const r={book:this.book,chapterNum:this.chapterNum,verseNum:this.verseNum,verse:e,versificationStr:this.versificationStr};return e||delete r.verse,r}equals(e){return e instanceof m?e._bookNum===this._bookNum&&e._chapterNum===this._chapterNum&&e._verseNum===this._verseNum&&e.verse===this.verse&&(e.versification==null&&this.versification==null||e.versification!=null&&this.versification!=null&&e.versification.equals(this.versification)):!1}allVerses(e=!1,r=m.verseRangeSeparators,u=m.verseSequenceIndicators){if(this._verse==null||this.chapterNum<=0)return[this.clone()];const n=[],i=wt(this._verse,u);for(const o of i.map(a=>wt(a,r))){const a=this.clone();a.verse=o[0];const s=a.verseNum;if(n.push(a),o.length>1){const l=this.clone();if(l.verse=o[1],!e)for(let c=s+1;co)return 3;if(u===o)return 4;u=o}return 0}get internalValid(){return this.versification==null?1:this._bookNum<=0||this._bookNum>_.lastBook?2:(_.isCanonical(this._bookNum),0)}setEmpty(e=m.defaultVersification){this._bookNum=0,this._chapterNum=-1,this._verse=void 0,this.versification=e}updateInternal(e,r,u){this.bookNum=_.bookIdToNumber(e),this.chapter=r,this.verse=u}};d(I,"defaultVersification",Q.English),d(I,"verseRangeSeparator","-"),d(I,"verseSequenceIndicator",","),d(I,"verseRangeSeparators",[I.verseRangeSeparator]),d(I,"verseSequenceIndicators",[I.verseSequenceIndicator]),d(I,"chapterDigitShifter",1e3),d(I,"bookDigitShifter",I.chapterDigitShifter*I.chapterDigitShifter),d(I,"bcvMaxValue",I.chapterDigitShifter-1),d(I,"ValidStatusType",lr);let fr=I;class De extends Error{}var St=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ue={},_u=()=>{const t="\\ud800-\\udfff",o="\\u0300-\\u036f"+"\\ufe20-\\ufe2f"+"\\u20d0-\\u20ff"+"\\u1ab0-\\u1aff"+"\\u1dc0-\\u1dff",a="\\ufe0e\\ufe0f",s="\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83C\\uDF93",l=`[${t}]`,c=`[${o}]`,p="\\ud83c[\\udffb-\\udfff]",f=`(?:${c}|${p})`,h=`[^${t}]`,g="(?:\\uD83C[\\uDDE6-\\uDDFF]){2}",b="[\\ud800-\\udbff][\\udc00-\\udfff]",v="\\u200d",y="(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40(?:\\udc65|\\udc73|\\udc77)\\udb40(?:\\udc6e|\\udc63|\\udc6c)\\udb40(?:\\udc67|\\udc74|\\udc73)\\udb40\\udc7f)",Z=`[${s}]`,A=`${f}?`,O=`[${a}]?`,ge=`(?:${v}(?:${[h,g,b].join("|")})${O+A})*`,xe=O+A+ge,Ie=`(?:${[`${h}${c}?`,c,g,b,l,Z].join("|")})`;return new RegExp(`${y}|${p}(?=${p})|${Ie+xe}`,"g")},Lu=St&&St.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ue,"__esModule",{value:!0});var je=Lu(_u);function He(t){if(typeof t!="string")throw new Error("A string is expected as input");return t.match(je.default())||[]}var Vu=ue.toArray=He;function ut(t){if(typeof t!="string")throw new Error("Input must be a string");var e=t.match(je.default());return e===null?0:e.length}var Uu=ue.length=ut;function pr(t,e,r){if(e===void 0&&(e=0),typeof t!="string")throw new Error("Input must be a string");(typeof e!="number"||e<0)&&(e=0),typeof r=="number"&&r<0&&(r=0);var u=t.match(je.default());return u?u.slice(e,r).join(""):""}var zu=ue.substring=pr;function Gu(t,e,r){if(e===void 0&&(e=0),typeof t!="string")throw new Error("Input must be a string");var u=ut(t);if(typeof e!="number"&&(e=parseInt(e,10)),e>=u)return"";e<0&&(e+=u);var n;typeof r>"u"?n=u:(typeof r!="number"&&(r=parseInt(r,10)),n=r>=0?r+e:e);var i=t.match(je.default());return i?i.slice(e,n).join(""):""}var Ju=ue.substr=Gu;function Hu(t,e,r,u){if(e===void 0&&(e=16),r===void 0&&(r="#"),u===void 0&&(u="right"),typeof t!="string"||typeof e!="number")throw new Error("Invalid arguments specified");if(["left","right"].indexOf(u)===-1)throw new Error("Pad position should be either left or right");typeof r!="string"&&(r=String(r));var n=ut(t);if(n>e)return pr(t,0,e);if(n=u.length)return e===""?u.length:-1;if(e==="")return r;var n=He(e),i=!1,o;for(o=r;ow(t)||e<-w(t)))return _e(t,e,1)}function ee(t,e){return e<0||e>w(t)-1?"":_e(t,e,1)}function Yu(t,e){if(!(e<0||e>w(t)-1))return _e(t,e,1).codePointAt(0)}function dr(t,e,r=w(t)){const u=gr(t,e);return!(u===-1||u+w(e)!==r)}function Zu(t,e,r){if(e<0)return-1;if(r){if(ee(t,e)==="}"&&ee(t,e-1)==="\\")return e;const i=le(t,"\\}",e);return i>=0?i+1:i}let u=e;const n=w(t);for(;u=n?-1:u}function Qu(t,e){let r=t,u=0;for(;u=0){const i=P(r,u+1,n),o=i in e?`${e[i]}`:i;r=`${P(r,0,u)}${o}${P(r,n+1)}`,u=n+w(o)-w(i)-2}}else r=`${P(r,0,u-1)}${P(r,u)}`,u-=1;break;case"}":ee(r,u-1)!=="\\"||(r=`${P(r,0,u-1)}${P(r,u)}`,u-=1);break}u+=1}return r}function mr(t,e,r=0){const u=P(t,r);return le(u,e)!==-1}function le(t,e,r=0){return Ku(t,e,r)}function gr(t,e,r){let u=r===void 0?w(t):r;u<0?u=0:u>=w(t)&&(u=w(t)-1);for(let n=u;n>=0;n--)if(_e(t,n,w(e))===e)return n;return-1}function w(t){return Uu(t)}function en(t,e){const r=e.toUpperCase();return r==="NONE"?t:t.normalize(r)}function tn(t,e,r){return t.localeCompare(e,"en",r)}function rn(t,e,r=" "){return e<=w(t)?t:hr(t,e,r,"right")}function un(t,e,r=" "){return e<=w(t)?t:hr(t,e,r,"left")}function Bt(t,e){return e>t?t:e<-t?0:e<0?e+t:e}function nn(t,e,r){const u=w(t);if(e>u||r&&(e>r&&!(e>=0&&e-u)||r<-u))return"";const n=Bt(u,e),i=r?Bt(u,r):void 0;return P(t,n,i)}function Xe(t,e,r){const u=[];if(r!==void 0&&r<=0)return[t];if(e==="")return Dr(t).slice(0,r);let n=e;(typeof e=="string"||e instanceof RegExp&&!mr(e.flags,"g"))&&(n=new RegExp(e,"g"));const i=t.match(n);let o=0;if(!i)return[t];for(let a=0;a<(r?r-1:i.length);a++){const s=le(t,i[a],o),l=w(i[a]);if(u.push(P(t,o,s)),o=s+l,r!==void 0&&u.length===r)break}return u.push(P(t,o)),u}function it(t,e,r=0){return le(t,e,r)===r}function _e(t,e=0,r=w(t)-e){return Ju(t,e,r)}function P(t,e,r=w(t)){return zu(t,e,r)}function Dr(t){return Vu(t)}function on(t){return it(t,"%")&&dr(t,"%")}function an(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function sn(t){return t?nt(t).map(u=>Array.isArray(u)?u.map(n=>new RegExp(n)):new RegExp(u)):[]}function cn(t){return t?nt(t).map(u=>new RegExp(u)):[]}const br=[{shortName:"ERR",fullNames:["ERROR"],chapters:-1},{shortName:"GEN",fullNames:["Genesis"],chapters:50},{shortName:"EXO",fullNames:["Exodus"],chapters:40},{shortName:"LEV",fullNames:["Leviticus"],chapters:27},{shortName:"NUM",fullNames:["Numbers"],chapters:36},{shortName:"DEU",fullNames:["Deuteronomy"],chapters:34},{shortName:"JOS",fullNames:["Joshua"],chapters:24},{shortName:"JDG",fullNames:["Judges"],chapters:21},{shortName:"RUT",fullNames:["Ruth"],chapters:4},{shortName:"1SA",fullNames:["1 Samuel"],chapters:31},{shortName:"2SA",fullNames:["2 Samuel"],chapters:24},{shortName:"1KI",fullNames:["1 Kings"],chapters:22},{shortName:"2KI",fullNames:["2 Kings"],chapters:25},{shortName:"1CH",fullNames:["1 Chronicles"],chapters:29},{shortName:"2CH",fullNames:["2 Chronicles"],chapters:36},{shortName:"EZR",fullNames:["Ezra"],chapters:10},{shortName:"NEH",fullNames:["Nehemiah"],chapters:13},{shortName:"EST",fullNames:["Esther"],chapters:10},{shortName:"JOB",fullNames:["Job"],chapters:42},{shortName:"PSA",fullNames:["Psalm","Psalms"],chapters:150},{shortName:"PRO",fullNames:["Proverbs"],chapters:31},{shortName:"ECC",fullNames:["Ecclesiastes"],chapters:12},{shortName:"SNG",fullNames:["Song of Solomon","Song of Songs"],chapters:8},{shortName:"ISA",fullNames:["Isaiah"],chapters:66},{shortName:"JER",fullNames:["Jeremiah"],chapters:52},{shortName:"LAM",fullNames:["Lamentations"],chapters:5},{shortName:"EZK",fullNames:["Ezekiel"],chapters:48},{shortName:"DAN",fullNames:["Daniel"],chapters:12},{shortName:"HOS",fullNames:["Hosea"],chapters:14},{shortName:"JOL",fullNames:["Joel"],chapters:3},{shortName:"AMO",fullNames:["Amos"],chapters:9},{shortName:"OBA",fullNames:["Obadiah"],chapters:1},{shortName:"JON",fullNames:["Jonah"],chapters:4},{shortName:"MIC",fullNames:["Micah"],chapters:7},{shortName:"NAM",fullNames:["Nahum"],chapters:3},{shortName:"HAB",fullNames:["Habakkuk"],chapters:3},{shortName:"ZEP",fullNames:["Zephaniah"],chapters:3},{shortName:"HAG",fullNames:["Haggai"],chapters:2},{shortName:"ZEC",fullNames:["Zechariah"],chapters:14},{shortName:"MAL",fullNames:["Malachi"],chapters:4},{shortName:"MAT",fullNames:["Matthew"],chapters:28},{shortName:"MRK",fullNames:["Mark"],chapters:16},{shortName:"LUK",fullNames:["Luke"],chapters:24},{shortName:"JHN",fullNames:["John"],chapters:21},{shortName:"ACT",fullNames:["Acts"],chapters:28},{shortName:"ROM",fullNames:["Romans"],chapters:16},{shortName:"1CO",fullNames:["1 Corinthians"],chapters:16},{shortName:"2CO",fullNames:["2 Corinthians"],chapters:13},{shortName:"GAL",fullNames:["Galatians"],chapters:6},{shortName:"EPH",fullNames:["Ephesians"],chapters:6},{shortName:"PHP",fullNames:["Philippians"],chapters:4},{shortName:"COL",fullNames:["Colossians"],chapters:4},{shortName:"1TH",fullNames:["1 Thessalonians"],chapters:5},{shortName:"2TH",fullNames:["2 Thessalonians"],chapters:3},{shortName:"1TI",fullNames:["1 Timothy"],chapters:6},{shortName:"2TI",fullNames:["2 Timothy"],chapters:4},{shortName:"TIT",fullNames:["Titus"],chapters:3},{shortName:"PHM",fullNames:["Philemon"],chapters:1},{shortName:"HEB",fullNames:["Hebrews"],chapters:13},{shortName:"JAS",fullNames:["James"],chapters:5},{shortName:"1PE",fullNames:["1 Peter"],chapters:5},{shortName:"2PE",fullNames:["2 Peter"],chapters:3},{shortName:"1JN",fullNames:["1 John"],chapters:5},{shortName:"2JN",fullNames:["2 John"],chapters:1},{shortName:"3JN",fullNames:["3 John"],chapters:1},{shortName:"JUD",fullNames:["Jude"],chapters:1},{shortName:"REV",fullNames:["Revelation"],chapters:22}],vr=1,Er=br.length-1,Ar=1,yr=1,ln={bookNum:1,chapterNum:1,verseNum:1},Nr=t=>{var e;return((e=br[t])==null?void 0:e.chapters)??-1},fn=(t,e)=>({bookNum:Math.max(vr,Math.min(t.bookNum+e,Er)),chapterNum:1,verseNum:1}),pn=(t,e)=>({...t,chapterNum:Math.min(Math.max(Ar,t.chapterNum+e),Nr(t.bookNum)),verseNum:1}),hn=(t,e)=>({...t,verseNum:Math.max(yr,t.verseNum+e)});async function dn(t,e,r){const u=_.bookNumberToId(t);if(!it(Intl.getCanonicalLocales(e)[0],"zh"))return r({localizeKey:`LocalizedId.${u}`,languagesToSearch:[e]});const n=await r({localizeKey:`Book.${u}`,languagesToSearch:[e]}),i=Xe(n,"-");return Xe(i[0],"ÿ08")[0].trim()}function Ke(t){return new fr(t.bookNum,t.chapterNum,t.verseNum).BBBCCCVVV}function mn(t,e){return Ke(t)-Ke(e)}function Cr(t){return`%scrollGroup_${t}%`}function gn(t){return t.map(e=>Cr(e))}function Dn(t,e,r,u){let n;switch(e??"id"){case"English":n=_.bookNumberToEnglishName(t.bookNum);break;case"id":n=_.bookNumberToId(t.bookNum);break;default:n=e??"";break}return`${n}${u??" "}${t.chapterNum}${r??":"}${t.verseNum}`}const bn=t=>(...e)=>t.map(u=>u(...e)).every(u=>u),vn=t=>async(...e)=>{const r=t.map(async u=>u(...e));return(await Promise.all(r)).every(u=>u)},ye="chapter",Ne="verse";var En=Object.getOwnPropertyNames,An=Object.getOwnPropertySymbols,yn=Object.prototype.hasOwnProperty;function Tt(t,e){return function(u,n,i){return t(u,n,i)&&e(u,n,i)}}function Fe(t){return function(r,u,n){if(!r||!u||typeof r!="object"||typeof u!="object")return t(r,u,n);var i=n.cache,o=i.get(r),a=i.get(u);if(o&&a)return o===u&&a===r;i.set(r,u),i.set(u,r);var s=t(r,u,n);return i.delete(r),i.delete(u),s}}function Ot(t){return En(t).concat(An(t))}var wr=Object.hasOwn||function(t,e){return yn.call(t,e)};function me(t,e){return t||e?t===e:t===e||t!==t&&e!==e}var Sr="_owner",xt=Object.getOwnPropertyDescriptor,It=Object.keys;function Nn(t,e,r){var u=t.length;if(e.length!==u)return!1;for(;u-- >0;)if(!r.equals(t[u],e[u],u,u,t,e,r))return!1;return!0}function Cn(t,e){return me(t.getTime(),e.getTime())}function Ft(t,e,r){if(t.size!==e.size)return!1;for(var u={},n=t.entries(),i=0,o,a;(o=n.next())&&!o.done;){for(var s=e.entries(),l=!1,c=0;(a=s.next())&&!a.done;){var p=o.value,f=p[0],h=p[1],g=a.value,b=g[0],v=g[1];!l&&!u[c]&&(l=r.equals(f,b,i,c,t,e,r)&&r.equals(h,v,f,b,t,e,r))&&(u[c]=!0),c++}if(!l)return!1;i++}return!0}function wn(t,e,r){var u=It(t),n=u.length;if(It(e).length!==n)return!1;for(var i;n-- >0;)if(i=u[n],i===Sr&&(t.$$typeof||e.$$typeof)&&t.$$typeof!==e.$$typeof||!wr(e,i)||!r.equals(t[i],e[i],i,i,t,e,r))return!1;return!0}function be(t,e,r){var u=Ot(t),n=u.length;if(Ot(e).length!==n)return!1;for(var i,o,a;n-- >0;)if(i=u[n],i===Sr&&(t.$$typeof||e.$$typeof)&&t.$$typeof!==e.$$typeof||!wr(e,i)||!r.equals(t[i],e[i],i,i,t,e,r)||(o=xt(t,i),a=xt(e,i),(o||a)&&(!o||!a||o.configurable!==a.configurable||o.enumerable!==a.enumerable||o.writable!==a.writable)))return!1;return!0}function Sn(t,e){return me(t.valueOf(),e.valueOf())}function Bn(t,e){return t.source===e.source&&t.flags===e.flags}function Rt(t,e,r){if(t.size!==e.size)return!1;for(var u={},n=t.values(),i,o;(i=n.next())&&!i.done;){for(var a=e.values(),s=!1,l=0;(o=a.next())&&!o.done;)!s&&!u[l]&&(s=r.equals(i.value,o.value,i.value,o.value,t,e,r))&&(u[l]=!0),l++;if(!s)return!1}return!0}function Tn(t,e){var r=t.length;if(e.length!==r)return!1;for(;r-- >0;)if(t[r]!==e[r])return!1;return!0}var On="[object Arguments]",xn="[object Boolean]",In="[object Date]",Fn="[object Map]",Rn="[object Number]",kn="[object Object]",qn="[object RegExp]",Mn="[object Set]",$n="[object String]",Pn=Array.isArray,kt=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,qt=Object.assign,jn=Object.prototype.toString.call.bind(Object.prototype.toString);function _n(t){var e=t.areArraysEqual,r=t.areDatesEqual,u=t.areMapsEqual,n=t.areObjectsEqual,i=t.arePrimitiveWrappersEqual,o=t.areRegExpsEqual,a=t.areSetsEqual,s=t.areTypedArraysEqual;return function(c,p,f){if(c===p)return!0;if(c==null||p==null||typeof c!="object"||typeof p!="object")return c!==c&&p!==p;var h=c.constructor;if(h!==p.constructor)return!1;if(h===Object)return n(c,p,f);if(Pn(c))return e(c,p,f);if(kt!=null&&kt(c))return s(c,p,f);if(h===Date)return r(c,p,f);if(h===RegExp)return o(c,p,f);if(h===Map)return u(c,p,f);if(h===Set)return a(c,p,f);var g=jn(c);return g===In?r(c,p,f):g===qn?o(c,p,f):g===Fn?u(c,p,f):g===Mn?a(c,p,f):g===kn?typeof c.then!="function"&&typeof p.then!="function"&&n(c,p,f):g===On?n(c,p,f):g===xn||g===Rn||g===$n?i(c,p,f):!1}}function Ln(t){var e=t.circular,r=t.createCustomConfig,u=t.strict,n={areArraysEqual:u?be:Nn,areDatesEqual:Cn,areMapsEqual:u?Tt(Ft,be):Ft,areObjectsEqual:u?be:wn,arePrimitiveWrappersEqual:Sn,areRegExpsEqual:Bn,areSetsEqual:u?Tt(Rt,be):Rt,areTypedArraysEqual:u?be:Tn};if(r&&(n=qt({},n,r(n))),e){var i=Fe(n.areArraysEqual),o=Fe(n.areMapsEqual),a=Fe(n.areObjectsEqual),s=Fe(n.areSetsEqual);n=qt({},n,{areArraysEqual:i,areMapsEqual:o,areObjectsEqual:a,areSetsEqual:s})}return n}function Vn(t){return function(e,r,u,n,i,o,a){return t(e,r,a)}}function Un(t){var e=t.circular,r=t.comparator,u=t.createState,n=t.equals,i=t.strict;if(u)return function(s,l){var c=u(),p=c.cache,f=p===void 0?e?new WeakMap:void 0:p,h=c.meta;return r(s,l,{cache:f,equals:n,meta:h,strict:i})};if(e)return function(s,l){return r(s,l,{cache:new WeakMap,equals:n,meta:void 0,strict:i})};var o={cache:void 0,equals:n,meta:void 0,strict:i};return function(s,l){return r(s,l,o)}}var zn=W();W({strict:!0});W({circular:!0});W({circular:!0,strict:!0});W({createInternalComparator:function(){return me}});W({strict:!0,createInternalComparator:function(){return me}});W({circular:!0,createInternalComparator:function(){return me}});W({circular:!0,createInternalComparator:function(){return me},strict:!0});function W(t){t===void 0&&(t={});var e=t.circular,r=e===void 0?!1:e,u=t.createInternalComparator,n=t.createState,i=t.strict,o=i===void 0?!1:i,a=Ln(t),s=_n(a),l=u?u(s):Vn(s);return Un({circular:r,comparator:s,createState:n,equals:l,strict:o})}function Br(t,e){return zn(t,e)}function Tr(t,e){if(typeof t!=typeof e)return!1;if(!t&&!e)return!0;if(Array.isArray(t)){const i=e,o=t;return i.length===0?!0:i.every(a=>o.includes(a))}if(typeof t!="object")return Br(t,e);const r=e,u=t;let n=!0;return Object.keys(r).forEach(i=>{n&&(Object.hasOwn(u,i)&&Tr(u[i],r[i])||(n=!1))}),n}function We(t,e,r){return JSON.stringify(t,(n,i)=>{let o=i;return e&&(o=e(n,o)),o===void 0&&(o=null),o},r)}function Or(t,e){function r(n){return Object.keys(n).forEach(i=>{n[i]===null?n[i]=void 0:typeof n[i]=="object"&&(n[i]=r(n[i]))}),n}const u=JSON.parse(t,e);if(u!==null)return typeof u=="object"?r(u):u}function Gn(t){try{const e=We(t);return e===We(Or(e))}catch{return!1}}const Jn=t=>t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/");function Hn(){return typeof navigator<"u"&&navigator.languages?navigator.languages[0]:new Yt().resolvedOptions().locale}function Xn(t,e=2){if(t===0)return"0 Bytes";const r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],u=Math.floor(Math.log(t)/Math.log(1024)),n=r[u];return`${new nr("en",{style:"decimal",maximumFractionDigits:e,minimumFractionDigits:0}).format(t/1024**u)} ${n}`}const ot={projectSettingsContribution:{description:"The data an extension provides to inform Platform.Bible of the project settings it provides",anyOf:[{$ref:"#/$defs/projectSettingsGroup"},{type:"array",items:{$ref:"#/$defs/projectSettingsGroup"}}]},projectSettingsGroup:{description:"Group of related settings definitions",type:"object",properties:{label:{description:"localizeKey that displays in the project settings dialog as the group name",$ref:"#/$defs/localizeKey"},description:{description:"localizeKey that displays in the project settings dialog to describe the group",$ref:"#/$defs/localizeKey"},properties:{$ref:"#/$defs/projectSettingProperties"}},required:["label","properties"]},projectSettingProperties:{description:"Object whose keys are setting IDs and whose values are settings objects",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{$ref:"#/$defs/projectSetting"}},additionalProperties:!1},projectSetting:{description:"A description of an extension's setting entry",anyOf:[{$ref:"#/$defs/extensionControlledProjectSetting"}]},extensionControlledProjectSetting:{description:"Setting definition that is validated by the extension.",allOf:[{$ref:"#/$defs/projectSettingBase"},{$ref:"#/$defs/modifierExtensionControlled"}]},projectSettingBase:{description:"Base information needed to describe a project setting entry",allOf:[{$ref:"#/$defs/settingBase"},{$ref:"#/$defs/modifierProject"}]},modifierProject:{description:"Modifies setting type to be project setting",type:"object",properties:{includeProjectInterfaces:{description:"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should be included.\n\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to pass):\n\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition\n\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\n\nDefaults to all {@link ProjectInterfaces}, so all projects that do not match `excludeProjectInterfaces` will be included\n\n@example\n\n```typescript\nincludeProjectInterfaces: ['one', ['two', 'three']];\n```\n\nThis filter condition will succeed on projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\n\n- Include `one`\n- Include both `two` and `three`.",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}}]},excludeProjectInterfaces:{description:"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should absolutely not be included even if they match with `includeProjectInterfaces`.\n\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to exclude the project):\n\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition and exclude the project\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition and exclude the project\n\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\n\nDefaults to no {@link ProjectInterfaces}, so all projects that match `includeProjectInterfaces` will be included\n\n@example\n\n```typescript\nexcludeProjectInterfaces: ['one', ['two', 'three']];\n```\n\nThis filter condition will succeed and exclude projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\n\n- Include `one`\n- Include both `two` and `three`.",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}}]},includePdpFactoryIds:{description:"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should be included.\n\nDefaults to all Project Data Provider Factory Ids, so all projects that do not match `excludePdpFactoryIds` will be included",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{type:"string"}}]},excludePdpFactoryIds:{description:"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should absolutely not be included even if they match with `includeProjectInterfaces`.\n\nDefaults to none, so all projects that match `includePdpFactoryIds` will be included",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{type:"string"}}]}}},settingsContribution:{description:"The data an extension provides to inform Platform.Bible of the settings it provides",anyOf:[{$ref:"#/$defs/settingsGroup"},{type:"array",items:{$ref:"#/$defs/settingsGroup"}}]},settingsGroup:{description:"Group of related settings definitions",type:"object",properties:{label:{description:"localizeKey that displays in the settings dialog as the group name",$ref:"#/$defs/localizeKey"},description:{description:"localizeKey that displays in the settings dialog to describe the group",$ref:"#/$defs/localizeKey"},properties:{$ref:"#/$defs/settingProperties"}},required:["label","properties"]},settingProperties:{description:"Object whose keys are setting IDs and whose values are settings objects",type:"object",patternProperties:{"^[\\w-]+\\.[\\w-]+$":{$ref:"#/$defs/setting"}},additionalProperties:!1},setting:{description:"A description of an extension's setting entry",anyOf:[{$ref:"#/$defs/extensionControlledSetting"}]},extensionControlledSetting:{description:"Setting definition that is validated by the extension.",allOf:[{$ref:"#/$defs/settingBase"},{$ref:"#/$defs/modifierExtensionControlled"}]},settingBase:{description:"Base information needed to describe a setting entry",allOf:[{$ref:"#/$defs/stateBase"},{type:"object",properties:{label:{description:"localizeKey that displays in the settings dialog as the setting name",$ref:"#/$defs/localizeKey"},description:{description:"localizeKey that displays in the settings dialog to describe the setting",$ref:"#/$defs/localizeKey"}},required:["label"]}]},projectStateContribution:{description:"The data an extension provides to inform Platform.Bible of the project state it provides",$ref:"#/$defs/userStateProperties"},userStateContribution:{description:"The data an extension provides to inform Platform.Bible of the user state it provides",$ref:"#/$defs/userStateProperties"},userStateProperties:{description:"Object whose keys are state IDs and whose values are state objects",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{$ref:"#/$defs/userState"}},additionalProperties:!1},userState:{description:"A description of an extension's user state entry",anyOf:[{$ref:"#/$defs/extensionControlledState"}]},extensionControlledState:{description:"State definition that is validated by the extension.",allOf:[{$ref:"#/$defs/stateBase"},{$ref:"#/$defs/modifierExtensionControlled"}]},modifierExtensionControlled:{description:'Modifies state/setting type to be extension-controlled. "Extension-controlled" means the extension provides the component and the validator for the state/setting, so the state/setting is controlled by the extension.',not:{anyOf:[{type:"object",required:["platformType"]},{type:"object",required:["type"]}]}},stateBase:{description:"Base information needed to describe a state entry",type:"object",properties:{default:{description:"default value for the state/setting",type:"any"},derivesFrom:{description:"a state/setting ID whose value to set to this state/setting's starting value the first time this state/setting is loaded",$ref:"#/$defs/id"}},required:["default"]},localizeKey:{description:"Identifier for a string that will be localized based on the user's UI language",type:"string",pattern:"^%[\\w\\-\\.]+%$",tsType:"LocalizeKey"},id:{description:"",type:"string",pattern:"^[\\w\\-]+\\.[\\w\\-]+$",tsType:"Id"}};function at(t){t&&Object.values(t).forEach(e=>{if(e.type){if("tsType"in e&&delete e.tsType,e.type==="any"){delete e.type;return}e.type==="object"&&at(e.properties)}})}at(ot);const xr={$schema:"https://json-schema.org/draft/2020-12/schema",title:"Project Settings Contribution",description:"The data an extension provides to inform Platform.Bible of the project settings it provides",anyOf:[{$ref:"#/$defs/projectSettingsGroup"},{type:"array",items:{$ref:"#/$defs/projectSettingsGroup"}}],$defs:ot};Object.freeze(xr);const Ir={$schema:"https://json-schema.org/draft/2020-12/schema",title:"Settings Contribution",description:"The data an extension provides to inform Platform.Bible of the settings it provides",anyOf:[{$ref:"#/$defs/settingsGroup"},{type:"array",items:{$ref:"#/$defs/settingsGroup"}}],$defs:ot};Object.freeze(Ir);const Fr={languageStrings:{description:"Map whose keys are localized string keys and whose values provide information about how to localize strings for the localized string key",type:"object",patternProperties:{"^%[\\w\\-\\.]+%$":{$ref:"#/$defs/localizedStringValue"}},additionalProperties:!1},localizedStringValue:{description:"Localized string value associated with this key",type:"string"},stringsMetadata:{description:"Map whose keys are localized string keys and whose values provide additional non-locale-specific information about the localized string key",type:"object",patternProperties:{"^%[\\w\\-\\.]+%$":{$ref:"#/$defs/stringMetadata"}},additionalProperties:!1},stringMetadata:{description:"Additional non-locale-specific information about a localized string key",type:"object",properties:{fallbackKey:{description:"Localized string key from which to get this value if one does not exist in the specified language. If a new key/value pair needs to be made to replace an existing one, this could help smooth over the transition if the meanings are close enough.\nYou can use Paratext 9 Localized String Keys here. Be sure to escape any % signs with a backslash `\\`.",type:"string",pattern:"^%[\\w\\-\\.;&,' (){}#:/\\\\?%⋮|[\\]“”‘’!~* +=•`…​↑↓]+%$",tsType:"LocalizeKey"},notes:{description:"Additional information provided by developers in English to help the translator to know how to translate this localized string accurately",type:"string"}}},localizeKey:{description:"Identifier for a string that will be localized based on the user's UI language",type:"string",pattern:"^%[\\w\\-\\.]+%$",tsType:"LocalizeKey"}};at(Fr);const Rr={$schema:"https://json-schema.org/draft/2020-12/schema",title:"Localized String Data Contribution",description:"The data an extension provides to inform Platform.Bible of the localized strings it provides.",type:"object",properties:{metadata:{$ref:"#/$defs/stringsMetadata"},localizedStrings:{type:"object",additionalProperties:{$ref:"#/$defs/languageStrings"}}},$defs:Fr};Object.freeze(Rr);const kr={title:"Platform.Bible menus",type:"object",properties:{mainMenu:{description:"Top level menu for the application",$ref:"#/$defs/multiColumnMenu"},defaultWebViewTopMenu:{description:"Default top menu for web views that don't specify their own",$ref:"#/$defs/multiColumnMenu"},defaultWebViewContextMenu:{description:"Default context menu for web views that don't specify their own",$ref:"#/$defs/singleColumnMenu"},webViewMenus:{description:"Menus that apply per web view in the application",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{$ref:"#/$defs/menusForOneWebView"}},additionalProperties:!1}},required:["mainMenu","defaultWebViewTopMenu","defaultWebViewContextMenu","webViewMenus"],additionalProperties:!1,$defs:{localizeKey:{description:"Identifier for a string that will be localized in a menu based on the user's UI language",type:"string",pattern:"^%[\\w\\-\\.]+%$"},referencedItem:{description:"Name of some UI element (i.e., tab, column, group, menu item) or some PAPI object (i.e., command)",type:"string",pattern:"^[\\w\\-]+\\.[\\w\\-]+$"},columnsWithHeaders:{description:"Group of columns that can be combined with other columns to form a multi-column menu",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{description:"Single column with a header string",type:"object",properties:{label:{description:"Header text for this this column in the UI",$ref:"#/$defs/localizeKey"},localizeNotes:{description:"Additional information provided by developers to help people who perform localization",type:"string"},order:{description:"Relative order of this column compared to other columns (sorted ascending)",type:"number"},isExtensible:{description:"Defines whether contributions are allowed to add menu groups to this column",type:"boolean"}},required:["label","order"],additionalProperties:!1}},properties:{isExtensible:{description:"Defines whether contributions are allowed to add columns to this multi-column menu",type:"boolean"}}},menuGroups:{description:"Group of menu items that can be combined with other groups to form a single menu/submenu. Groups are separated using a line within the menu/submenu.",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{description:"Single group that contains menu items",type:"object",oneOf:[{properties:{column:{description:"Column where this group belongs, not required for single column menus",$ref:"#/$defs/referencedItem"},order:{description:"Relative order of this group compared to other groups in the same column or submenu (sorted ascending)",type:"number"},isExtensible:{description:"Defines whether contributions are allowed to add menu items to this menu group",type:"boolean"}},required:["order"],additionalProperties:!1},{properties:{menuItem:{description:"Menu item that anchors the submenu where this group belongs",$ref:"#/$defs/referencedItem"},order:{description:"Relative order of this group compared to other groups in the same column or submenu (sorted ascending)",type:"number"},isExtensible:{description:"Defines whether contributions are allowed to add menu items to this menu group",type:"boolean"}},required:["menuItem","order"],additionalProperties:!1}]}},additionalProperties:!1},menuItem:{description:"Single item in a menu that can be clicked on to take an action or can be the parent of a submenu",type:"object",oneOf:[{properties:{id:{description:"ID for this menu item that holds a submenu",$ref:"#/$defs/referencedItem"}},required:["id"]},{properties:{command:{description:"Name of the PAPI command to run when this menu item is selected.",$ref:"#/$defs/referencedItem"},iconPathBefore:{description:"Uri path to the icon to display before the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`",type:"string"},iconPathAfter:{description:"Uri path to the icon to display after the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`",type:"string"}},required:["command"]}],properties:{label:{description:"Key that represents the text of this menu item to display",$ref:"#/$defs/localizeKey"},tooltip:{description:"Key that represents the text to display if a mouse pointer hovers over the menu item",$ref:"#/$defs/localizeKey"},searchTerms:{description:"Key that represents additional words the platform should reference when users are searching for menu items",$ref:"#/$defs/localizeKey"},localizeNotes:{description:"Additional information provided by developers to help people who perform localization",type:"string"},group:{description:"Group to which this menu item belongs",$ref:"#/$defs/referencedItem"},order:{description:"Relative order of this menu item compared to other menu items in the same group (sorted ascending)",type:"number"}},required:["label","group","order"],unevaluatedProperties:!1},groupsAndItems:{description:"Core schema for a column",type:"object",properties:{groups:{description:"Groups that belong in this menu",$ref:"#/$defs/menuGroups"},items:{description:"List of menu items that belong in this menu",type:"array",items:{$ref:"#/$defs/menuItem"},uniqueItems:!0}},required:["groups","items"]},singleColumnMenu:{description:"Menu that contains a column without a header",type:"object",allOf:[{$ref:"#/$defs/groupsAndItems"}],unevaluatedProperties:!1},multiColumnMenu:{description:"Menu that can contain multiple columns with headers",type:"object",allOf:[{$ref:"#/$defs/groupsAndItems"},{properties:{columns:{description:"Columns that belong in this menu",$ref:"#/$defs/columnsWithHeaders"}},required:["columns"]}],unevaluatedProperties:!1},menusForOneWebView:{description:"Set of menus that are associated with a single tab",type:"object",properties:{includeDefaults:{description:"Indicates whether the platform default menus should be included for this webview",type:"boolean"},topMenu:{description:"Menu that opens when you click on the top left corner of a tab",$ref:"#/$defs/multiColumnMenu"},contextMenu:{description:"Menu that opens when you right click on the main body/area of a tab",$ref:"#/$defs/singleColumnMenu"}},additionalProperties:!1}}};Object.freeze(kr);var Y={},X={};function Kn(t,e,r){if(r===void 0&&(r=Array.prototype),t&&typeof r.find=="function")return r.find.call(t,e);for(var u=0;u=0&&t=0){for(var n=e.length-1;u0},lookupPrefix:function(t){for(var e=this;e;){var r=e._nsMap;if(r){for(var u in r)if(Object.prototype.hasOwnProperty.call(r,u)&&r[u]===t)return u}e=e.nodeType==fe?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(t){for(var e=this;e;){var r=e._nsMap;if(r&&Object.prototype.hasOwnProperty.call(r,t))return r[t];e=e.nodeType==fe?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(t){var e=this.lookupPrefix(t);return e==null}};function Hr(t){return t=="<"&&"<"||t==">"&&">"||t=="&"&&"&"||t=='"'&&"""||"&#"+t.charCodeAt()+";"}Be(k,D);Be(k,D.prototype);function we(t,e){if(e(t))return!0;if(t=t.firstChild)do if(we(t,e))return!0;while(t=t.nextSibling)}function Te(){this.ownerDocument=this}function ui(t,e,r){t&&t._inc++;var u=r.namespaceURI;u===Ce.XMLNS&&(e._nsMap[r.prefix?r.localName:""]=r.value)}function Xr(t,e,r,u){t&&t._inc++;var n=r.namespaceURI;n===Ce.XMLNS&&delete e._nsMap[r.prefix?r.localName:""]}function lt(t,e,r){if(t&&t._inc){t._inc++;var u=e.childNodes;if(r)u[u.length++]=r;else{for(var n=e.firstChild,i=0;n;)u[i++]=n,n=n.nextSibling;u.length=i,delete u[u.length]}}}function Kr(t,e){var r=e.previousSibling,u=e.nextSibling;return r?r.nextSibling=u:t.firstChild=u,u?u.previousSibling=r:t.lastChild=r,e.parentNode=null,e.previousSibling=null,e.nextSibling=null,lt(t.ownerDocument,t),e}function ni(t){return t&&(t.nodeType===D.DOCUMENT_NODE||t.nodeType===D.DOCUMENT_FRAGMENT_NODE||t.nodeType===D.ELEMENT_NODE)}function ii(t){return t&&(U(t)||ft(t)||H(t)||t.nodeType===D.DOCUMENT_FRAGMENT_NODE||t.nodeType===D.COMMENT_NODE||t.nodeType===D.PROCESSING_INSTRUCTION_NODE)}function H(t){return t&&t.nodeType===D.DOCUMENT_TYPE_NODE}function U(t){return t&&t.nodeType===D.ELEMENT_NODE}function ft(t){return t&&t.nodeType===D.TEXT_NODE}function _t(t,e){var r=t.childNodes||[];if(V(r,U)||H(e))return!1;var u=V(r,H);return!(e&&u&&r.indexOf(u)>r.indexOf(e))}function Lt(t,e){var r=t.childNodes||[];function u(i){return U(i)&&i!==e}if(V(r,u))return!1;var n=V(r,H);return!(e&&n&&r.indexOf(n)>r.indexOf(e))}function oi(t,e,r){if(!ni(t))throw new C(F,"Unexpected parent node type "+t.nodeType);if(r&&r.parentNode!==t)throw new C(zr,"child not in parent");if(!ii(e)||H(e)&&t.nodeType!==D.DOCUMENT_NODE)throw new C(F,"Unexpected node type "+e.nodeType+" for parent node type "+t.nodeType)}function ai(t,e,r){var u=t.childNodes||[],n=e.childNodes||[];if(e.nodeType===D.DOCUMENT_FRAGMENT_NODE){var i=n.filter(U);if(i.length>1||V(n,ft))throw new C(F,"More than one element or text in fragment");if(i.length===1&&!_t(t,r))throw new C(F,"Element in fragment can not be inserted before doctype")}if(U(e)&&!_t(t,r))throw new C(F,"Only one element can be added and only after doctype");if(H(e)){if(V(u,H))throw new C(F,"Only one doctype is allowed");var o=V(u,U);if(r&&u.indexOf(o)1||V(n,ft))throw new C(F,"More than one element or text in fragment");if(i.length===1&&!Lt(t,r))throw new C(F,"Element in fragment can not be inserted before doctype")}if(U(e)&&!Lt(t,r))throw new C(F,"Only one element can be added and only after doctype");if(H(e)){if(V(u,function(s){return H(s)&&s!==r}))throw new C(F,"Only one doctype is allowed");var o=V(u,U);if(r&&u.indexOf(o)0&&we(r.documentElement,function(n){if(n!==r&&n.nodeType===j){var i=n.getAttribute("class");if(i){var o=t===i;if(!o){var a=Mt(i);o=e.every(ei(a))}o&&u.push(n)}}}),u})},createElement:function(t){var e=new re;e.ownerDocument=this,e.nodeName=t,e.tagName=t,e.localName=t,e.childNodes=new G;var r=e.attributes=new Me;return r._ownerElement=e,e},createDocumentFragment:function(){var t=new Ve;return t.ownerDocument=this,t.childNodes=new G,t},createTextNode:function(t){var e=new pt;return e.ownerDocument=this,e.appendData(t),e},createComment:function(t){var e=new ht;return e.ownerDocument=this,e.appendData(t),e},createCDATASection:function(t){var e=new dt;return e.ownerDocument=this,e.appendData(t),e},createProcessingInstruction:function(t,e){var r=new gt;return r.ownerDocument=this,r.tagName=r.nodeName=r.target=t,r.nodeValue=r.data=e,r},createAttribute:function(t){var e=new Pe;return e.ownerDocument=this,e.name=t,e.nodeName=t,e.localName=t,e.specified=!0,e},createEntityReference:function(t){var e=new mt;return e.ownerDocument=this,e.nodeName=t,e},createElementNS:function(t,e){var r=new re,u=e.split(":"),n=r.attributes=new Me;return r.childNodes=new G,r.ownerDocument=this,r.nodeName=e,r.tagName=e,r.namespaceURI=t,u.length==2?(r.prefix=u[0],r.localName=u[1]):r.localName=e,n._ownerElement=r,r},createAttributeNS:function(t,e){var r=new Pe,u=e.split(":");return r.ownerDocument=this,r.nodeName=e,r.name=e,r.namespaceURI=t,r.specified=!0,u.length==2?(r.prefix=u[0],r.localName=u[1]):r.localName=e,r}};R(Te,D);function re(){this._nsMap={}}re.prototype={nodeType:j,hasAttribute:function(t){return this.getAttributeNode(t)!=null},getAttribute:function(t){var e=this.getAttributeNode(t);return e&&e.value||""},getAttributeNode:function(t){return this.attributes.getNamedItem(t)},setAttribute:function(t,e){var r=this.ownerDocument.createAttribute(t);r.value=r.nodeValue=""+e,this.setAttributeNode(r)},removeAttribute:function(t){var e=this.getAttributeNode(t);e&&this.removeAttributeNode(e)},appendChild:function(t){return t.nodeType===J?this.insertBefore(t,null):si(this,t)},setAttributeNode:function(t){return this.attributes.setNamedItem(t)},setAttributeNodeNS:function(t){return this.attributes.setNamedItemNS(t)},removeAttributeNode:function(t){return this.attributes.removeNamedItem(t.nodeName)},removeAttributeNS:function(t,e){var r=this.getAttributeNodeNS(t,e);r&&this.removeAttributeNode(r)},hasAttributeNS:function(t,e){return this.getAttributeNodeNS(t,e)!=null},getAttributeNS:function(t,e){var r=this.getAttributeNodeNS(t,e);return r&&r.value||""},setAttributeNS:function(t,e,r){var u=this.ownerDocument.createAttributeNS(t,e);u.value=u.nodeValue=""+r,this.setAttributeNode(u)},getAttributeNodeNS:function(t,e){return this.attributes.getNamedItemNS(t,e)},getElementsByTagName:function(t){return new pe(this,function(e){var r=[];return we(e,function(u){u!==e&&u.nodeType==j&&(t==="*"||u.tagName==t)&&r.push(u)}),r})},getElementsByTagNameNS:function(t,e){return new pe(this,function(r){var u=[];return we(r,function(n){n!==r&&n.nodeType===j&&(t==="*"||n.namespaceURI===t)&&(e==="*"||n.localName==e)&&u.push(n)}),u})}};Te.prototype.getElementsByTagName=re.prototype.getElementsByTagName;Te.prototype.getElementsByTagNameNS=re.prototype.getElementsByTagNameNS;R(re,D);function Pe(){}Pe.prototype.nodeType=fe;R(Pe,D);function Oe(){}Oe.prototype={data:"",substringData:function(t,e){return this.data.substring(t,t+e)},appendData:function(t){t=this.data+t,this.nodeValue=this.data=t,this.length=t.length},insertData:function(t,e){this.replaceData(t,0,e)},appendChild:function(t){throw new Error(S[F])},deleteData:function(t,e){this.replaceData(t,e,"")},replaceData:function(t,e,r){var u=this.data.substring(0,t),n=this.data.substring(t+e);r=u+r+n,this.nodeValue=this.data=r,this.length=r.length}};R(Oe,D);function pt(){}pt.prototype={nodeName:"#text",nodeType:qe,splitText:function(t){var e=this.data,r=e.substring(t);e=e.substring(0,t),this.data=this.nodeValue=e,this.length=e.length;var u=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(u,this.nextSibling),u}};R(pt,Oe);function ht(){}ht.prototype={nodeName:"#comment",nodeType:Lr};R(ht,Oe);function dt(){}dt.prototype={nodeName:"#cdata-section",nodeType:Pr};R(dt,Oe);function Le(){}Le.prototype.nodeType=Ur;R(Le,D);function Yr(){}Yr.prototype.nodeType=ri;R(Yr,D);function Zr(){}Zr.prototype.nodeType=ti;R(Zr,D);function mt(){}mt.prototype.nodeType=jr;R(mt,D);function Ve(){}Ve.prototype.nodeName="#document-fragment";Ve.prototype.nodeType=J;R(Ve,D);function gt(){}gt.prototype.nodeType=_r;R(gt,D);function Qr(){}Qr.prototype.serializeToString=function(t,e,r){return eu.call(t,e,r)};D.prototype.toString=eu;function eu(t,e){var r=[],u=this.nodeType==9&&this.documentElement||this,n=u.prefix,i=u.namespaceURI;if(i&&n==null){var n=u.lookupPrefix(i);if(n==null)var o=[{namespace:i,prefix:null}]}return se(this,r,t,e,o),r.join("")}function Vt(t,e,r){var u=t.prefix||"",n=t.namespaceURI;if(!n||u==="xml"&&n===Ce.XML||n===Ce.XMLNS)return!1;for(var i=r.length;i--;){var o=r[i];if(o.prefix===u)return o.namespace!==n}return!0}function Je(t,e,r){t.push(" ",e,'="',r.replace(/[<>&"\t\n\r]/g,Hr),'"')}function se(t,e,r,u,n){if(n||(n=[]),u)if(t=u(t),t){if(typeof t=="string"){e.push(t);return}}else return;switch(t.nodeType){case j:var i=t.attributes,o=i.length,y=t.firstChild,a=t.tagName;r=Ce.isHTML(t.namespaceURI)||r;var s=a;if(!r&&!t.prefix&&t.namespaceURI){for(var l,c=0;c=0;p--){var f=n[p];if(f.prefix===""&&f.namespace===t.namespaceURI){l=f.namespace;break}}if(l!==t.namespaceURI)for(var p=n.length-1;p>=0;p--){var f=n[p];if(f.namespace===t.namespaceURI){f.prefix&&(s=f.prefix+":"+a);break}}}e.push("<",s);for(var h=0;h"),r&&/^script$/i.test(a))for(;y;)y.data?e.push(y.data):se(y,e,r,u,n.slice()),y=y.nextSibling;else for(;y;)se(y,e,r,u,n.slice()),y=y.nextSibling;e.push("")}else e.push("/>");return;case Vr:case J:for(var y=t.firstChild;y;)se(y,e,r,u,n.slice()),y=y.nextSibling;return;case fe:return Je(e,t.name,t.value);case qe:return e.push(t.data.replace(/[<&>]/g,Hr));case Pr:return e.push("");case Lr:return e.push("");case Ur:var Z=t.publicId,A=t.systemId;if(e.push("");else if(A&&A!=".")e.push(" SYSTEM ",A,">");else{var O=t.internalSubset;O&&e.push(" [",O,"]"),e.push(">")}return;case _r:return e.push("");case jr:return e.push("&",t.nodeName,";");default:e.push("??",t.nodeName)}}function tu(t,e,r){var u;switch(e.nodeType){case j:u=e.cloneNode(!1),u.ownerDocument=t;case J:break;case fe:r=!0;break}if(u||(u=e.cloneNode(!1)),u.ownerDocument=t,u.parentNode=null,r)for(var n=e.firstChild;n;)u.appendChild(tu(t,n,r)),n=n.nextSibling;return u}function Ye(t,e,r){var u=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var i=e[n];typeof i!="object"&&i!=u[n]&&(u[n]=i)}switch(e.childNodes&&(u.childNodes=new G),u.ownerDocument=t,u.nodeType){case j:var o=e.attributes,a=u.attributes=new Me,s=o.length;a._ownerElement=u;for(var l=0;l",lt:"<",quot:'"'}),t.HTML_ENTITIES=e({Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",AMP:"&",amp:"&",And:"⩓",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",ap:"≈",apacir:"⩯",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",Barwed:"⌆",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",Because:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxDL:"╗",boxDl:"╖",boxdL:"╕",boxdl:"┐",boxDR:"╔",boxDr:"╓",boxdR:"╒",boxdr:"┌",boxH:"═",boxh:"─",boxHD:"╦",boxHd:"╤",boxhD:"╥",boxhd:"┬",boxHU:"╩",boxHu:"╧",boxhU:"╨",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxUL:"╝",boxUl:"╜",boxuL:"╛",boxul:"┘",boxUR:"╚",boxUr:"╙",boxuR:"╘",boxur:"└",boxV:"║",boxv:"│",boxVH:"╬",boxVh:"╫",boxvH:"╪",boxvh:"┼",boxVL:"╣",boxVl:"╢",boxvL:"╡",boxvl:"┤",boxVR:"╠",boxVr:"╟",boxvR:"╞",boxvr:"├",bprime:"‵",Breve:"˘",breve:"˘",brvbar:"¦",Bscr:"ℬ",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",Cap:"⋒",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",CenterDot:"·",centerdot:"·",Cfr:"ℭ",cfr:"𝔠",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",Colon:"∷",colon:":",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",Conint:"∯",conint:"∮",ContourIntegral:"∮",Copf:"ℂ",copf:"𝕔",coprod:"∐",Coproduct:"∐",COPY:"©",copy:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",Cross:"⨯",cross:"✗",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",Cup:"⋓",cup:"∪",cupbrcap:"⩈",CupCap:"≍",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",Dagger:"‡",dagger:"†",daleth:"ℸ",Darr:"↡",dArr:"⇓",darr:"↓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",DD:"ⅅ",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",Diamond:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",Downarrow:"⇓",downarrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",ecir:"≖",Ecirc:"Ê",ecirc:"ê",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",eDot:"≑",edot:"ė",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",Escr:"ℰ",escr:"ℯ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",ExponentialE:"ⅇ",exponentiale:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",ForAll:"∀",forall:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",Fscr:"ℱ",fscr:"𝒻",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",gE:"≧",ge:"≥",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",Gg:"⋙",gg:"≫",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gnE:"≩",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",Gt:"≫",GT:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",Lt:"≪",LT:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:` -`,nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:" ",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}),t.entityMap=t.HTML_ENTITIES})(uu);var Dt={},Se=X.NAMESPACE,Ze=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,Ut=new RegExp("[\\-\\.0-9"+Ze.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),zt=new RegExp("^"+Ze.source+Ut.source+"*(?::"+Ze.source+Ut.source+"*)?$"),ve=0,K=1,ne=2,Ee=3,ie=4,oe=5,Ae=6,Re=7;function he(t,e){this.message=t,this.locator=e,Error.captureStackTrace&&Error.captureStackTrace(this,he)}he.prototype=new Error;he.prototype.name=he.name;function nu(){}nu.prototype={parse:function(t,e,r){var u=this.domBuilder;u.startDocument(),iu(e,e={}),ci(t,e,r,u,this.errorHandler),u.endDocument()}};function ci(t,e,r,u,n){function i(N){if(N>65535){N-=65536;var $=55296+(N>>10),cu=56320+(N&1023);return String.fromCharCode($,cu)}else return String.fromCharCode(N)}function o(N){var $=N.slice(1,-1);return Object.hasOwnProperty.call(r,$)?r[$]:$.charAt(0)==="#"?i(parseInt($.substr(1).replace("x","0x"))):(n.error("entity not found:"+N),N)}function a(N){if(N>b){var $=t.substring(b,N).replace(/&#?\w+;/g,o);f&&s(b),u.characters($,0,N-b),b=N}}function s(N,$){for(;N>=c&&($=p.exec(t));)l=$.index,c=l+$[0].length,f.lineNumber++;f.columnNumber=N-l+1}for(var l=0,c=0,p=/.*(?:\r\n?|\n)|.*$/g,f=u.locator,h=[{currentNSMap:e}],g={},b=0;;){try{var v=t.indexOf("<",b);if(v<0){if(!t.substr(b).match(/^\s*$/)){var y=u.doc,Z=y.createTextNode(t.substr(b));y.appendChild(Z),u.currentElement=Z}return}switch(v>b&&a(v),t.charAt(v+1)){case"/":var x=t.indexOf(">",v+3),A=t.substring(v+2,x).replace(/[ \t\n\r]+$/g,""),O=h.pop();x<0?(A=t.substring(v+2).replace(/[\s<].*/,""),n.error("end tag name: "+A+" is not complete:"+O.tagName),x=v+1+A.length):A.match(/\sb?b=x:a(Math.max(v,b)+1)}}function Gt(t,e){return e.lineNumber=t.lineNumber,e.columnNumber=t.columnNumber,e}function li(t,e,r,u,n,i){function o(f,h,g){r.attributeNames.hasOwnProperty(f)&&i.fatalError("Attribute "+f+" redefined"),r.addValue(f,h.replace(/[\t\n\r]/g," ").replace(/&#?\w+;/g,n),g)}for(var a,s,l=++e,c=ve;;){var p=t.charAt(l);switch(p){case"=":if(c===K)a=t.slice(e,l),c=Ee;else if(c===ne)c=Ee;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(c===Ee||c===K)if(c===K&&(i.warning('attribute value must after "="'),a=t.slice(e,l)),e=l+1,l=t.indexOf(p,e),l>0)s=t.slice(e,l),o(a,s,e-1),c=oe;else throw new Error("attribute value no end '"+p+"' match");else if(c==ie)s=t.slice(e,l),o(a,s,e),i.warning('attribute "'+a+'" missed start quot('+p+")!!"),e=l+1,c=oe;else throw new Error('attribute value must after "="');break;case"/":switch(c){case ve:r.setTagName(t.slice(e,l));case oe:case Ae:case Re:c=Re,r.closed=!0;case ie:case K:break;case ne:r.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return i.error("unexpected end of input"),c==ve&&r.setTagName(t.slice(e,l)),l;case">":switch(c){case ve:r.setTagName(t.slice(e,l));case oe:case Ae:case Re:break;case ie:case K:s=t.slice(e,l),s.slice(-1)==="/"&&(r.closed=!0,s=s.slice(0,-1));case ne:c===ne&&(s=a),c==ie?(i.warning('attribute "'+s+'" missed quot(")!'),o(a,s,e)):((!Se.isHTML(u[""])||!s.match(/^(?:disabled|checked|selected)$/i))&&i.warning('attribute "'+s+'" missed value!! "'+s+'" instead!!'),o(s,s,e));break;case Ee:throw new Error("attribute value missed!!")}return l;case"€":p=" ";default:if(p<=" ")switch(c){case ve:r.setTagName(t.slice(e,l)),c=Ae;break;case K:a=t.slice(e,l),c=ne;break;case ie:var s=t.slice(e,l);i.warning('attribute "'+s+'" missed quot(")!!'),o(a,s,e);case oe:c=Ae;break}else switch(c){case ne:r.tagName,(!Se.isHTML(u[""])||!a.match(/^(?:disabled|checked|selected)$/i))&&i.warning('attribute "'+a+'" missed value!! "'+a+'" instead2!!'),o(a,a,e),e=l,c=K;break;case oe:i.warning('attribute space is required"'+a+'"!!');case Ae:c=K,e=l;break;case Ee:c=ie,e=l;break;case Re:throw new Error("elements closed character '/' and '>' must be connected to")}}l++}}function Jt(t,e,r){for(var u=t.tagName,n=null,p=t.length;p--;){var i=t[p],o=i.qName,a=i.value,f=o.indexOf(":");if(f>0)var s=i.prefix=o.slice(0,f),l=o.slice(f+1),c=s==="xmlns"&&l;else l=o,s=null,c=o==="xmlns"&&"";i.localName=l,c!==!1&&(n==null&&(n={},iu(r,r={})),r[c]=n[c]=a,i.uri=Se.XMLNS,e.startPrefixMapping(c,a))}for(var p=t.length;p--;){i=t[p];var s=i.prefix;s&&(s==="xml"&&(i.uri=Se.XML),s!=="xmlns"&&(i.uri=r[s||""]))}var f=u.indexOf(":");f>0?(s=t.prefix=u.slice(0,f),l=t.localName=u.slice(f+1)):(s=null,l=t.localName=u);var h=t.uri=r[s||""];if(e.startElement(h,l,u,t),t.closed){if(e.endElement(h,l,u),n)for(s in n)Object.prototype.hasOwnProperty.call(n,s)&&e.endPrefixMapping(s)}else return t.currentNSMap=r,t.localNSMap=n,!0}function fi(t,e,r,u,n){if(/^(?:script|textarea)$/i.test(r)){var i=t.indexOf("",e),o=t.substring(e+1,i);if(/[&<]/.test(o))return/^script$/i.test(r)?(n.characters(o,0,o.length),i):(o=o.replace(/&#?\w+;/g,u),n.characters(o,0,o.length),i)}return e+1}function pi(t,e,r,u){var n=u[r];return n==null&&(n=t.lastIndexOf(""),n",e+4);return i>e?(r.comment(t,e+4,i-e-4),i+3):(u.error("Unclosed comment"),-1)}else return-1;default:if(t.substr(e+3,6)=="CDATA["){var i=t.indexOf("]]>",e+9);return r.startCDATA(),r.characters(t,e+9,i-e-9),r.endCDATA(),i+3}var o=mi(t,e),a=o.length;if(a>1&&/!doctype/i.test(o[0][0])){var s=o[1][0],l=!1,c=!1;a>3&&(/^public$/i.test(o[2][0])?(l=o[3][0],c=a>4&&o[4][0]):/^system$/i.test(o[2][0])&&(c=o[3][0]));var p=o[a-1];return r.startDTD(s,l,c),r.endDTD(),p.index+p[0].length}}return-1}function di(t,e,r){var u=t.indexOf("?>",e);if(u){var n=t.substring(e,u).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);return n?(n[0].length,r.processingInstruction(n[1],n[2]),u+2):-1}return-1}function ou(){this.attributeNames={}}ou.prototype={setTagName:function(t){if(!zt.test(t))throw new Error("invalid tagName:"+t);this.tagName=t},addValue:function(t,e,r){if(!zt.test(t))throw new Error("invalid attribute:"+t);this.attributeNames[t]=this.length,this[this.length++]={qName:t,value:e,offset:r}},length:0,getLocalName:function(t){return this[t].localName},getLocator:function(t){return this[t].locator},getQName:function(t){return this[t].qName},getURI:function(t){return this[t].uri},getValue:function(t){return this[t].value}};function mi(t,e){var r,u=[],n=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(n.lastIndex=e,n.exec(t);r=n.exec(t);)if(u.push(r),r[1])return u}Dt.XMLReader=nu;Dt.ParseError=he;var gi=X,Di=Y,Ht=uu,au=Dt,bi=Di.DOMImplementation,Xt=gi.NAMESPACE,vi=au.ParseError,Ei=au.XMLReader;function Ai(t){return t.replace(/\r[\n\u0085]/g,` +"use strict";var fu=Object.defineProperty;var pu=(t,e,r)=>e in t?fu(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var E=(t,e,r)=>pu(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const hu=require("async-mutex"),yt=require("jsonpath-plus");class du{constructor(e,r=1e4){E(this,"variableName");E(this,"promiseToValue");E(this,"resolver");E(this,"rejecter");this.variableName=e,this.promiseToValue=new Promise((u,n)=>{this.resolver=u,this.rejecter=n}),r>0&&setTimeout(()=>{this.rejecter&&(this.rejecter(`Timeout reached when waiting for ${this.variableName} to settle`),this.complete())},r),Object.seal(this)}get promise(){return this.promiseToValue}get hasSettled(){return Object.isFrozen(this)}resolveToValue(e,r=!1){if(this.resolver)console.debug(`${this.variableName} is being resolved now`),this.resolver(e),this.complete();else{if(r)throw Error(`${this.variableName} was already settled`);console.debug(`Ignoring subsequent resolution of ${this.variableName}`)}}rejectWithReason(e,r=!1){if(this.rejecter)console.debug(`${this.variableName} is being rejected now`),this.rejecter(e),this.complete();else{if(r)throw Error(`${this.variableName} was already settled`);console.debug(`Ignoring subsequent rejection of ${this.variableName}`)}}complete(){this.resolver=void 0,this.rejecter=void 0,Object.freeze(this)}}class mu{constructor(e,r){E(this,"collator");this.collator=new Intl.Collator(e,r)}compare(e,r){return this.collator.compare(e,r)}resolvedOptions(){return this.collator.resolvedOptions()}}class Zt{constructor(e,r){E(this,"dateTimeFormatter");this.dateTimeFormatter=new Intl.DateTimeFormat(e,r)}format(e){return this.dateTimeFormatter.format(e)}formatRange(e,r){return this.dateTimeFormatter.formatRange(e,r)}formatRangeToParts(e,r){return this.dateTimeFormatter.formatRangeToParts(e,r)}formatToParts(e){return this.dateTimeFormatter.formatToParts(e)}resolvedOptions(){return this.dateTimeFormatter.resolvedOptions()}}class Qt{constructor(){E(this,"subscribe",this.event);E(this,"subscriptions");E(this,"lazyEvent");E(this,"isDisposed",!1);E(this,"dispose",()=>this.disposeFn());E(this,"emit",e=>{this.emitFn(e)})}get event(){return this.assertNotDisposed(),this.lazyEvent||(this.lazyEvent=e=>{if(!e||typeof e!="function")throw new Error("Event handler callback must be a function!");return this.subscriptions||(this.subscriptions=[]),this.subscriptions.push(e),()=>{if(!this.subscriptions)return!1;const r=this.subscriptions.indexOf(e);return r<0?!1:(this.subscriptions.splice(r,1),!0)}}),this.lazyEvent}emitFn(e){this.assertNotDisposed(),[...this.subscriptions??[]].forEach(u=>u(e))}assertNotDisposed(){if(this.isDisposed)throw new Error("Emitter is disposed")}disposeFn(){return this.assertNotDisposed(),this.isDisposed=!0,this.subscriptions=void 0,this.lazyEvent=void 0,Promise.resolve(!0)}}function gu(){return"00-0-4-1-000".replace(/[^-]/g,t=>((Math.random()+~~t)*65536>>t).toString(16).padStart(4,"0"))}function Ce(t){return typeof t=="string"||t instanceof String}function ce(t){return JSON.parse(JSON.stringify(t))}function Du(t,e=300){if(Ce(t))throw new Error("Tried to debounce a string! Could be XSS");let r;return(...u)=>{clearTimeout(r),r=setTimeout(()=>t(...u),e)}}function bu(t,e,r){const u=new Map;return t.forEach(n=>{const i=e(n),o=u.get(i),a=r?r(n,i):n;o?o.push(a):u.set(i,[a])}),u}function vu(t){return typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"}function Eu(t){if(vu(t))return t;try{return new Error(JSON.stringify(t))}catch{return new Error(String(t))}}function Au(t){return Eu(t).message}function er(t){return new Promise(e=>setTimeout(e,t))}function yu(t,e){const r=er(e).then(()=>{});return Promise.any([r,t()])}function Nu(t,e="obj"){const r=new Set;Object.getOwnPropertyNames(t).forEach(n=>{try{typeof t[n]=="function"&&r.add(n)}catch{}});let u=Object.getPrototypeOf(t);for(;u&&Object.getPrototypeOf(u);)Object.getOwnPropertyNames(u).forEach(n=>{try{typeof t[n]=="function"&&r.add(n)}catch{}}),u=Object.getPrototypeOf(u);return r}function Cu(t,e={}){return new Proxy(e,{get(r,u){return u in r?r[u]:async(...n)=>(await t())[u](...n)}})}class tr{constructor(e,r){E(this,"baseDocument");E(this,"contributions",new Map);E(this,"latestOutput");E(this,"options");E(this,"onDidRebuildEmitter",new Qt);E(this,"onDidRebuild",this.onDidRebuildEmitter.subscribe);this.baseDocument=e,this.options=r,this.updateBaseDocument(e)}updateBaseDocument(e){return this.validateBaseDocument(e),this.baseDocument=this.options.copyDocuments?ce(e):e,this.baseDocument=this.transformBaseDocumentAfterValidation(this.baseDocument),this.rebuild()}addOrUpdateContribution(e,r){this.validateContribution(e,r);const u=this.contributions.get(e);let n=this.options.copyDocuments&&r?ce(r):r;n=this.transformContributionAfterValidation(e,n),this.contributions.set(e,n);try{return this.rebuild()}catch(i){throw u?this.contributions.set(e,u):this.contributions.delete(e),new Error(`Error when setting the document named ${e}: ${i}`)}}deleteContribution(e){const r=this.contributions.get(e);if(!r)throw new Error(`${e} does not exist`);this.contributions.delete(e);try{return this.rebuild()}catch(u){throw this.contributions.set(e,r),new Error(`Error when deleting the document named ${e}: ${u}`)}}deleteAllContributions(){if(this.contributions.size<=0)return this.latestOutput;const e=[...this.contributions.entries()];e.forEach(([r])=>this.contributions.delete(r));try{return this.rebuild()}catch(r){throw e.forEach(([u,n])=>this.contributions.set(u,n)),new Error(`Error when deleting all contributions: ${r}`)}}rebuild(){if(this.contributions.size===0){let r=ce(this.baseDocument);return r=this.transformFinalOutputBeforeValidation(r),this.validateOutput(r),this.latestOutput=r,this.onDidRebuildEmitter.emit(void 0),this.latestOutput}let e=this.baseDocument;return this.contributions.forEach(r=>{e=wu(e,r,this.options.ignoreDuplicateProperties),this.validateOutput(e)}),e=this.transformFinalOutputBeforeValidation(e),this.validateOutput(e),this.latestOutput=e,this.onDidRebuildEmitter.emit(void 0),this.latestOutput}transformBaseDocumentAfterValidation(e){return e}transformContributionAfterValidation(e,r){return r}validateBaseDocument(e){}validateContribution(e,r){}validateOutput(e){}transformFinalOutputBeforeValidation(e){return e}}function Nt(...t){let e=!0;return t.forEach(r=>{(!r||typeof r!="object"||Array.isArray(r))&&(e=!1)}),e}function Ct(...t){let e=!0;return t.forEach(r=>{(!r||typeof r!="object"||!Array.isArray(r))&&(e=!1)}),e}function wu(t,e,r){const u=ce(t);return e?rr(u,ce(e),r):u}function rr(t,e,r){if(!e)return t;if(Nt(t,e)){const u=t,n=e;Object.keys(n).forEach(i=>{if(Object.hasOwn(u,i)){if(Nt(u[i],n[i]))u[i]=rr(u[i],n[i],r);else if(Ct(u[i],n[i]))u[i]=u[i].concat(n[i]);else if(!r)throw new Error(`Cannot merge objects: key "${i}" already exists in the target object`)}else u[i]=n[i]})}else Ct(t,e)&&t.push(...e);return t}class ur extends hu.Mutex{}class Su{constructor(){E(this,"mutexesByID",new Map)}get(e){let r=this.mutexesByID.get(e);return r||(r=new ur,this.mutexesByID.set(e,r),r)}}class Bu extends tr{constructor(e,r){super(e,r)}get output(){return this.latestOutput}}class nr{constructor(e,r){E(this,"numberFormatter");this.numberFormatter=new Intl.NumberFormat(e,r)}format(e){return this.numberFormatter.format(e)}formatRange(e,r){return this.numberFormatter.formatRange(e,r)}formatRangeToParts(e,r){return this.numberFormatter.formatRangeToParts(e,r)}formatToParts(e){return this.numberFormatter.formatToParts(e)}resolvedOptions(){return this.numberFormatter.resolvedOptions()}}class Tu{constructor(e="Anonymous"){E(this,"unsubscribers",new Set);this.name=e}add(...e){e.forEach(r=>{"dispose"in r?this.unsubscribers.add(r.dispose):this.unsubscribers.add(r)})}async runAllUnsubscribers(){const e=[...this.unsubscribers].map(u=>u()),r=await Promise.all(e);return this.unsubscribers.clear(),r.every((u,n)=>(u||console.error(`UnsubscriberAsyncList ${this.name}: Unsubscriber at index ${n} failed!`),u))}}var Ou=Object.defineProperty,xu=(t,e,r)=>e in t?Ou(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,d=(t,e,r)=>xu(t,typeof e!="symbol"?e+"":e,r);const te=["GEN","EXO","LEV","NUM","DEU","JOS","JDG","RUT","1SA","2SA","1KI","2KI","1CH","2CH","EZR","NEH","EST","JOB","PSA","PRO","ECC","SNG","ISA","JER","LAM","EZK","DAN","HOS","JOL","AMO","OBA","JON","MIC","NAM","HAB","ZEP","HAG","ZEC","MAL","MAT","MRK","LUK","JHN","ACT","ROM","1CO","2CO","GAL","EPH","PHP","COL","1TH","2TH","1TI","2TI","TIT","PHM","HEB","JAS","1PE","2PE","1JN","2JN","3JN","JUD","REV","TOB","JDT","ESG","WIS","SIR","BAR","LJE","S3Y","SUS","BEL","1MA","2MA","3MA","4MA","1ES","2ES","MAN","PS2","ODA","PSS","JSA","JDB","TBS","SST","DNT","BLT","XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","3ES","EZA","5EZ","6EZ","INT","CNC","GLO","TDX","NDX","DAG","PS3","2BA","LBA","JUB","ENO","1MQ","2MQ","3MQ","REP","4BA","LAO"],tt=["XXA","XXB","XXC","XXD","XXE","XXF","XXG","FRT","BAK","OTH","INT","CNC","GLO","TDX","NDX"],ir=["Genesis","Exodus","Leviticus","Numbers","Deuteronomy","Joshua","Judges","Ruth","1 Samuel","2 Samuel","1 Kings","2 Kings","1 Chronicles","2 Chronicles","Ezra","Nehemiah","Esther (Hebrew)","Job","Psalms","Proverbs","Ecclesiastes","Song of Songs","Isaiah","Jeremiah","Lamentations","Ezekiel","Daniel (Hebrew)","Hosea","Joel","Amos","Obadiah","Jonah","Micah","Nahum","Habakkuk","Zephaniah","Haggai","Zechariah","Malachi","Matthew","Mark","Luke","John","Acts","Romans","1 Corinthians","2 Corinthians","Galatians","Ephesians","Philippians","Colossians","1 Thessalonians","2 Thessalonians","1 Timothy","2 Timothy","Titus","Philemon","Hebrews","James","1 Peter","2 Peter","1 John","2 John","3 John","Jude","Revelation","Tobit","Judith","Esther Greek","Wisdom of Solomon","Sirach (Ecclesiasticus)","Baruch","Letter of Jeremiah","Song of 3 Young Men","Susanna","Bel and the Dragon","1 Maccabees","2 Maccabees","3 Maccabees","4 Maccabees","1 Esdras (Greek)","2 Esdras (Latin)","Prayer of Manasseh","Psalm 151","Odes","Psalms of Solomon","Joshua A. *obsolete*","Judges B. *obsolete*","Tobit S. *obsolete*","Susanna Th. *obsolete*","Daniel Th. *obsolete*","Bel Th. *obsolete*","Extra A","Extra B","Extra C","Extra D","Extra E","Extra F","Extra G","Front Matter","Back Matter","Other Matter","3 Ezra *obsolete*","Apocalypse of Ezra","5 Ezra (Latin Prologue)","6 Ezra (Latin Epilogue)","Introduction","Concordance ","Glossary ","Topical Index","Names Index","Daniel Greek","Psalms 152-155","2 Baruch (Apocalypse)","Letter of Baruch","Jubilees","Enoch","1 Meqabyan","2 Meqabyan","3 Meqabyan","Reproof (Proverbs 25-31)","4 Baruch (Rest of Baruch)","Laodiceans"],wt=_u();function de(t,e=!0){return e&&(t=t.toUpperCase()),t in wt?wt[t]:0}function rt(t){return de(t)>0}function Iu(t){const e=typeof t=="string"?de(t):t;return e>=40&&e<=66}function Fu(t){return(typeof t=="string"?de(t):t)<=39}function or(t){return t<=66}function Ru(t){const e=typeof t=="string"?de(t):t;return cr(e)&&!or(e)}function*ku(){for(let t=1;t<=te.length;t++)yield t}const qu=1,ar=te.length;function Mu(){return["XXA","XXB","XXC","XXD","XXE","XXF","XXG"]}function ut(t,e="***"){const r=t-1;return r<0||r>=te.length?e:te[r]}function sr(t){return t<=0||t>ar?"******":ir[t-1]}function $u(t){return sr(de(t))}function cr(t){const e=typeof t=="number"?ut(t):t;return rt(e)&&!tt.includes(e)}function Pu(t){const e=typeof t=="number"?ut(t):t;return rt(e)&&tt.includes(e)}function ju(t){return ir[t-1].includes("*obsolete*")}function _u(){const t={};for(let e=0;e(t[t.Unknown=0]="Unknown",t[t.Original=1]="Original",t[t.Septuagint=2]="Septuagint",t[t.Vulgate=3]="Vulgate",t[t.English=4]="English",t[t.RussianProtestant=5]="RussianProtestant",t[t.RussianOrthodox=6]="RussianOrthodox",t))(_||{});const M=class{constructor(e){if(d(this,"name"),d(this,"fullPath"),d(this,"isPresent"),d(this,"hasVerseSegments"),d(this,"isCustomized"),d(this,"baseVersification"),d(this,"scriptureBooks"),d(this,"_type"),e==null)throw new Error("Argument undefined");typeof e=="string"?(this.name=e,this._type=_[e]):(this._type=e,this.name=_[e])}get type(){return this._type}equals(e){return!e.type||!this.type?!1:e.type===this.type}};d(M,"Original",new M(_.Original)),d(M,"Septuagint",new M(_.Septuagint)),d(M,"Vulgate",new M(_.Vulgate)),d(M,"English",new M(_.English)),d(M,"RussianProtestant",new M(_.RussianProtestant)),d(M,"RussianOrthodox",new M(_.RussianOrthodox));let Q=M;function St(t,e){const r=e[0];for(let u=1;u(t[t.Valid=0]="Valid",t[t.UnknownVersification=1]="UnknownVersification",t[t.OutOfRange=2]="OutOfRange",t[t.VerseOutOfOrder=3]="VerseOutOfOrder",t[t.VerseRepeated=4]="VerseRepeated",t))(lr||{});const I=class m{constructor(e,r,u,n){if(d(this,"firstChapter"),d(this,"lastChapter"),d(this,"lastVerse"),d(this,"hasSegmentsDefined"),d(this,"text"),d(this,"BBBCCCVVVS"),d(this,"longHashCode"),d(this,"versification"),d(this,"rtlMark","‏"),d(this,"_bookNum",0),d(this,"_chapterNum",0),d(this,"_verseNum",0),d(this,"_verse"),u==null&&n==null)if(e!=null&&typeof e=="string"){const i=e,o=r!=null&&r instanceof Q?r:void 0;this.setEmpty(o),this.parse(i)}else if(e!=null&&typeof e=="number"){const i=r!=null&&r instanceof Q?r:void 0;this.setEmpty(i),this._verseNum=e%m.chapterDigitShifter,this._chapterNum=Math.floor(e%m.bookDigitShifter/m.chapterDigitShifter),this._bookNum=Math.floor(e/m.bookDigitShifter)}else if(r==null)if(e!=null&&e instanceof m){const i=e;this._bookNum=i.bookNum,this._chapterNum=i.chapterNum,this._verseNum=i.verseNum,this._verse=i.verse,this.versification=i.versification}else{if(e==null)return;const i=e instanceof Q?e:m.defaultVersification;this.setEmpty(i)}else throw new Error("VerseRef constructor not supported.");else if(e!=null&&r!=null&&u!=null)if(typeof e=="string"&&typeof r=="string"&&typeof u=="string")this.setEmpty(n),this.updateInternal(e,r,u);else if(typeof e=="number"&&typeof r=="number"&&typeof u=="number")this._bookNum=e,this._chapterNum=r,this._verseNum=u,this.versification=n??m.defaultVersification;else throw new Error("VerseRef constructor not supported.");else throw new Error("VerseRef constructor not supported.")}static isVerseParseable(e){return e.length>0&&"0123456789".includes(e[0])&&!e.endsWith(this.verseRangeSeparator)&&!e.endsWith(this.verseSequenceIndicator)}static tryParse(e){let r;try{return r=new m(e),{success:!0,verseRef:r}}catch(u){if(u instanceof De)return r=new m,{success:!1,verseRef:r};throw u}}static getBBBCCCVVV(e,r,u){return e%m.bcvMaxValue*m.bookDigitShifter+(r>=0?r%m.bcvMaxValue*m.chapterDigitShifter:0)+(u>=0?u%m.bcvMaxValue:0)}static fromJSON(e){const{book:r,chapterNum:u,verseNum:n,verse:i,versificationStr:o}=e,a=i||n.toString();let s;return o&&(s=new Q(o)),r?new m(r,u.toString(),a,s):new m}static tryGetVerseNum(e){let r;if(!e)return r=-1,{success:!0,vNum:r};r=0;let u;for(let n=0;n"9")return n===0&&(r=-1),{success:!1,vNum:r};if(r=r*10+ +u-0,r>m.bcvMaxValue)return r=-1,{success:!1,vNum:r}}return{success:!0,vNum:r}}get isDefault(){return this.bookNum===0&&this.chapterNum===0&&this.verseNum===0&&this.versification==null}get hasMultiple(){return this._verse!=null&&(this._verse.includes(m.verseRangeSeparator)||this._verse.includes(m.verseSequenceIndicator))}get book(){return j.bookNumberToId(this.bookNum,"")}set book(e){this.bookNum=j.bookIdToNumber(e)}get chapter(){return this.isDefault||this._chapterNum<0?"":this._chapterNum.toString()}set chapter(e){const r=+e;this._chapterNum=Number.isInteger(r)?r:-1}get verse(){return this._verse!=null?this._verse:this.isDefault||this._verseNum<0?"":this._verseNum.toString()}set verse(e){const{success:r,vNum:u}=m.tryGetVerseNum(e);this._verse=r?void 0:e.replace(this.rtlMark,""),this._verseNum=u,!(this._verseNum>=0)&&({vNum:this._verseNum}=m.tryGetVerseNum(this._verse))}get bookNum(){return this._bookNum}set bookNum(e){if(e<=0||e>j.lastBook)throw new De("BookNum must be greater than zero and less than or equal to last book");this._bookNum=e}get chapterNum(){return this._chapterNum}set chapterNum(e){this.chapterNum=e}get verseNum(){return this._verseNum}set verseNum(e){this._verseNum=e}get versificationStr(){var e;return(e=this.versification)==null?void 0:e.name}set versificationStr(e){this.versification=this.versification!=null?new Q(e):void 0}get valid(){return this.validStatus===0}get validStatus(){return this.validateVerse(m.verseRangeSeparators,m.verseSequenceIndicators)}get BBBCCC(){return m.getBBBCCCVVV(this._bookNum,this._chapterNum,0)}get BBBCCCVVV(){return m.getBBBCCCVVV(this._bookNum,this._chapterNum,this._verseNum)}get isExcluded(){return!1}parse(e){if(e=e.replace(this.rtlMark,""),e.includes("/")){const i=e.split("/");if(e=i[0],i.length>1)try{const o=+i[1].trim();this.versification=new Q(_[o])}catch{throw new De("Invalid reference : "+e)}}const r=e.trim().split(" ");if(r.length!==2)throw new De("Invalid reference : "+e);const u=r[1].split(":"),n=+u[0];if(u.length!==2||j.bookIdToNumber(r[0])===0||!Number.isInteger(n)||n<0||!m.isVerseParseable(u[1]))throw new De("Invalid reference : "+e);this.updateInternal(r[0],u[0],u[1])}simplify(){this._verse=void 0}clone(){return new m(this)}toString(){const e=this.book;return e===""?"":`${e} ${this.chapter}:${this.verse}`}toJSON(){let e=this.verse;(e===""||e===this.verseNum.toString())&&(e=void 0);const r={book:this.book,chapterNum:this.chapterNum,verseNum:this.verseNum,verse:e,versificationStr:this.versificationStr};return e||delete r.verse,r}equals(e){return e instanceof m?e._bookNum===this._bookNum&&e._chapterNum===this._chapterNum&&e._verseNum===this._verseNum&&e.verse===this.verse&&(e.versification==null&&this.versification==null||e.versification!=null&&this.versification!=null&&e.versification.equals(this.versification)):!1}allVerses(e=!1,r=m.verseRangeSeparators,u=m.verseSequenceIndicators){if(this._verse==null||this.chapterNum<=0)return[this.clone()];const n=[],i=St(this._verse,u);for(const o of i.map(a=>St(a,r))){const a=this.clone();a.verse=o[0];const s=a.verseNum;if(n.push(a),o.length>1){const l=this.clone();if(l.verse=o[1],!e)for(let c=s+1;co)return 3;if(u===o)return 4;u=o}return 0}get internalValid(){return this.versification==null?1:this._bookNum<=0||this._bookNum>j.lastBook?2:(j.isCanonical(this._bookNum),0)}setEmpty(e=m.defaultVersification){this._bookNum=0,this._chapterNum=-1,this._verse=void 0,this.versification=e}updateInternal(e,r,u){this.bookNum=j.bookIdToNumber(e),this.chapter=r,this.verse=u}};d(I,"defaultVersification",Q.English),d(I,"verseRangeSeparator","-"),d(I,"verseSequenceIndicator",","),d(I,"verseRangeSeparators",[I.verseRangeSeparator]),d(I,"verseSequenceIndicators",[I.verseSequenceIndicator]),d(I,"chapterDigitShifter",1e3),d(I,"bookDigitShifter",I.chapterDigitShifter*I.chapterDigitShifter),d(I,"bcvMaxValue",I.chapterDigitShifter-1),d(I,"ValidStatusType",lr);let fr=I;class De extends Error{}var Bt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ue={},Lu=()=>{const t="\\ud800-\\udfff",o="\\u0300-\\u036f"+"\\ufe20-\\ufe2f"+"\\u20d0-\\u20ff"+"\\u1ab0-\\u1aff"+"\\u1dc0-\\u1dff",a="\\ufe0e\\ufe0f",s="\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83C\\uDF93",l=`[${t}]`,c=`[${o}]`,f="\\ud83c[\\udffb-\\udfff]",p=`(?:${c}|${f})`,h=`[^${t}]`,g="(?:\\uD83C[\\uDDE6-\\uDDFF]){2}",b="[\\ud800-\\udbff][\\udc00-\\udfff]",v="\\u200d",y="(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40(?:\\udc65|\\udc73|\\udc77)\\udb40(?:\\udc6e|\\udc63|\\udc6c)\\udb40(?:\\udc67|\\udc74|\\udc73)\\udb40\\udc7f)",Z=`[${s}]`,A=`${p}?`,O=`[${a}]?`,ge=`(?:${v}(?:${[h,g,b].join("|")})${O+A})*`,Ie=O+A+ge,Fe=`(?:${[`${h}${c}?`,c,g,b,l,Z].join("|")})`;return new RegExp(`${y}|${f}(?=${f})|${Fe+Ie}`,"g")},Vu=Bt&&Bt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ue,"__esModule",{value:!0});var _e=Vu(Lu);function Xe(t){if(typeof t!="string")throw new Error("A string is expected as input");return t.match(_e.default())||[]}var Uu=ue.toArray=Xe;function nt(t){if(typeof t!="string")throw new Error("Input must be a string");var e=t.match(_e.default());return e===null?0:e.length}var zu=ue.length=nt;function pr(t,e,r){if(e===void 0&&(e=0),typeof t!="string")throw new Error("Input must be a string");(typeof e!="number"||e<0)&&(e=0),typeof r=="number"&&r<0&&(r=0);var u=t.match(_e.default());return u?u.slice(e,r).join(""):""}var Gu=ue.substring=pr;function Ju(t,e,r){if(e===void 0&&(e=0),typeof t!="string")throw new Error("Input must be a string");var u=nt(t);if(typeof e!="number"&&(e=parseInt(e,10)),e>=u)return"";e<0&&(e+=u);var n;typeof r>"u"?n=u:(typeof r!="number"&&(r=parseInt(r,10)),n=r>=0?r+e:e);var i=t.match(_e.default());return i?i.slice(e,n).join(""):""}var Hu=ue.substr=Ju;function Xu(t,e,r,u){if(e===void 0&&(e=16),r===void 0&&(r="#"),u===void 0&&(u="right"),typeof t!="string"||typeof e!="number")throw new Error("Invalid arguments specified");if(["left","right"].indexOf(u)===-1)throw new Error("Pad position should be either left or right");typeof r!="string"&&(r=String(r));var n=nt(t);if(n>e)return pr(t,0,e);if(n=u.length)return e===""?u.length:-1;if(e==="")return r;var n=Xe(e),i=!1,o;for(o=r;ow(t)||e<-w(t)))return Le(t,e,1)}function ee(t,e){return e<0||e>w(t)-1?"":Le(t,e,1)}function Zu(t,e){if(!(e<0||e>w(t)-1))return Le(t,e,1).codePointAt(0)}function dr(t,e,r=w(t)){const u=Dr(t,e);return!(u===-1||u+w(e)!==r)}function Qu(t,e,r){if(e<0)return-1;if(r){if(ee(t,e)==="}"&&ee(t,e-1)==="\\")return e;const i=le(t,"\\}",e);return i>=0?i+1:i}let u=e;const n=w(t);for(;u=n?-1:u}function mr(t,e){const r=[];let u=0,n=0;function i(a,s,l){const c=K(t,n,s),f=r.length>0&&Ce(r[r.length-1])?`${r.pop()}${c}`:c;Ce(a)?r.push(`${f}${a}`):(f&&r.push(f),r.push(a)),n=s+l}const o=w(t);for(;u=0){const s=K(t,u+1,a),l=s in e?e[s]:s;i(l,u,a+1-u),u=a,n=a+1}}else i("{",u-1,2);break;case"}":ee(t,u-1)!=="\\"||i("}",u-1,2);break}u+=1}if(n0&&Ce(r[r.length-1])?`${r.pop()}${a}`:a)}return r}function en(t,e){return mr(t,e).map(r=>`${r}`).join("")}function gr(t,e,r=0){const u=K(t,r);return le(u,e)!==-1}function le(t,e,r=0){return Wu(t,e,r)}function Dr(t,e,r){let u=r===void 0?w(t):r;u<0?u=0:u>=w(t)&&(u=w(t)-1);for(let n=u;n>=0;n--)if(Le(t,n,w(e))===e)return n;return-1}function w(t){return zu(t)}function tn(t,e){const r=e.toUpperCase();return r==="NONE"?t:t.normalize(r)}function rn(t,e,r){return t.localeCompare(e,"en",r)}function un(t,e,r=" "){return e<=w(t)?t:hr(t,e,r,"right")}function nn(t,e,r=" "){return e<=w(t)?t:hr(t,e,r,"left")}function Tt(t,e){return e>t?t:e<-t?0:e<0?e+t:e}function on(t,e,r){const u=w(t);if(e>u||r&&(e>r&&!(e>=0&&e-u)||r<-u))return"";const n=Tt(u,e),i=r?Tt(u,r):void 0;return K(t,n,i)}function Ke(t,e,r){const u=[];if(r!==void 0&&r<=0)return[t];if(e==="")return br(t).slice(0,r);let n=e;(typeof e=="string"||e instanceof RegExp&&!gr(e.flags,"g"))&&(n=new RegExp(e,"g"));const i=t.match(n);let o=0;if(!i)return[t];for(let a=0;a<(r?r-1:i.length);a++){const s=le(t,i[a],o),l=w(i[a]);if(u.push(K(t,o,s)),o=s+l,r!==void 0&&u.length===r)break}return u.push(K(t,o)),u}function ot(t,e,r=0){return le(t,e,r)===r}function Le(t,e=0,r=w(t)-e){return Hu(t,e,r)}function K(t,e,r=w(t)){return Gu(t,e,r)}function br(t){return Uu(t)}function an(t){return ot(t,"%")&&dr(t,"%")}function sn(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function cn(t){return t?it(t).map(u=>Array.isArray(u)?u.map(n=>new RegExp(n)):new RegExp(u)):[]}function ln(t){return t?it(t).map(u=>new RegExp(u)):[]}const vr=[{shortName:"ERR",fullNames:["ERROR"],chapters:-1},{shortName:"GEN",fullNames:["Genesis"],chapters:50},{shortName:"EXO",fullNames:["Exodus"],chapters:40},{shortName:"LEV",fullNames:["Leviticus"],chapters:27},{shortName:"NUM",fullNames:["Numbers"],chapters:36},{shortName:"DEU",fullNames:["Deuteronomy"],chapters:34},{shortName:"JOS",fullNames:["Joshua"],chapters:24},{shortName:"JDG",fullNames:["Judges"],chapters:21},{shortName:"RUT",fullNames:["Ruth"],chapters:4},{shortName:"1SA",fullNames:["1 Samuel"],chapters:31},{shortName:"2SA",fullNames:["2 Samuel"],chapters:24},{shortName:"1KI",fullNames:["1 Kings"],chapters:22},{shortName:"2KI",fullNames:["2 Kings"],chapters:25},{shortName:"1CH",fullNames:["1 Chronicles"],chapters:29},{shortName:"2CH",fullNames:["2 Chronicles"],chapters:36},{shortName:"EZR",fullNames:["Ezra"],chapters:10},{shortName:"NEH",fullNames:["Nehemiah"],chapters:13},{shortName:"EST",fullNames:["Esther"],chapters:10},{shortName:"JOB",fullNames:["Job"],chapters:42},{shortName:"PSA",fullNames:["Psalm","Psalms"],chapters:150},{shortName:"PRO",fullNames:["Proverbs"],chapters:31},{shortName:"ECC",fullNames:["Ecclesiastes"],chapters:12},{shortName:"SNG",fullNames:["Song of Solomon","Song of Songs"],chapters:8},{shortName:"ISA",fullNames:["Isaiah"],chapters:66},{shortName:"JER",fullNames:["Jeremiah"],chapters:52},{shortName:"LAM",fullNames:["Lamentations"],chapters:5},{shortName:"EZK",fullNames:["Ezekiel"],chapters:48},{shortName:"DAN",fullNames:["Daniel"],chapters:12},{shortName:"HOS",fullNames:["Hosea"],chapters:14},{shortName:"JOL",fullNames:["Joel"],chapters:3},{shortName:"AMO",fullNames:["Amos"],chapters:9},{shortName:"OBA",fullNames:["Obadiah"],chapters:1},{shortName:"JON",fullNames:["Jonah"],chapters:4},{shortName:"MIC",fullNames:["Micah"],chapters:7},{shortName:"NAM",fullNames:["Nahum"],chapters:3},{shortName:"HAB",fullNames:["Habakkuk"],chapters:3},{shortName:"ZEP",fullNames:["Zephaniah"],chapters:3},{shortName:"HAG",fullNames:["Haggai"],chapters:2},{shortName:"ZEC",fullNames:["Zechariah"],chapters:14},{shortName:"MAL",fullNames:["Malachi"],chapters:4},{shortName:"MAT",fullNames:["Matthew"],chapters:28},{shortName:"MRK",fullNames:["Mark"],chapters:16},{shortName:"LUK",fullNames:["Luke"],chapters:24},{shortName:"JHN",fullNames:["John"],chapters:21},{shortName:"ACT",fullNames:["Acts"],chapters:28},{shortName:"ROM",fullNames:["Romans"],chapters:16},{shortName:"1CO",fullNames:["1 Corinthians"],chapters:16},{shortName:"2CO",fullNames:["2 Corinthians"],chapters:13},{shortName:"GAL",fullNames:["Galatians"],chapters:6},{shortName:"EPH",fullNames:["Ephesians"],chapters:6},{shortName:"PHP",fullNames:["Philippians"],chapters:4},{shortName:"COL",fullNames:["Colossians"],chapters:4},{shortName:"1TH",fullNames:["1 Thessalonians"],chapters:5},{shortName:"2TH",fullNames:["2 Thessalonians"],chapters:3},{shortName:"1TI",fullNames:["1 Timothy"],chapters:6},{shortName:"2TI",fullNames:["2 Timothy"],chapters:4},{shortName:"TIT",fullNames:["Titus"],chapters:3},{shortName:"PHM",fullNames:["Philemon"],chapters:1},{shortName:"HEB",fullNames:["Hebrews"],chapters:13},{shortName:"JAS",fullNames:["James"],chapters:5},{shortName:"1PE",fullNames:["1 Peter"],chapters:5},{shortName:"2PE",fullNames:["2 Peter"],chapters:3},{shortName:"1JN",fullNames:["1 John"],chapters:5},{shortName:"2JN",fullNames:["2 John"],chapters:1},{shortName:"3JN",fullNames:["3 John"],chapters:1},{shortName:"JUD",fullNames:["Jude"],chapters:1},{shortName:"REV",fullNames:["Revelation"],chapters:22}],Er=1,Ar=vr.length-1,yr=1,Nr=1,fn={bookNum:1,chapterNum:1,verseNum:1},Cr=t=>{var e;return((e=vr[t])==null?void 0:e.chapters)??-1},pn=(t,e)=>({bookNum:Math.max(Er,Math.min(t.bookNum+e,Ar)),chapterNum:1,verseNum:1}),hn=(t,e)=>({...t,chapterNum:Math.min(Math.max(yr,t.chapterNum+e),Cr(t.bookNum)),verseNum:1}),dn=(t,e)=>({...t,verseNum:Math.max(Nr,t.verseNum+e)});async function mn(t,e,r){const u=j.bookNumberToId(t);if(!ot(Intl.getCanonicalLocales(e)[0],"zh"))return r({localizeKey:`LocalizedId.${u}`,languagesToSearch:[e]});const n=await r({localizeKey:`Book.${u}`,languagesToSearch:[e]}),i=Ke(n,"-");return Ke(i[0],"ÿ08")[0].trim()}function We(t){return new fr(t.bookNum,t.chapterNum,t.verseNum).BBBCCCVVV}function gn(t,e){return We(t)-We(e)}function wr(t){return`%scrollGroup_${t}%`}function Dn(t){return t.map(e=>wr(e))}function bn(t,e,r,u){let n;switch(e??"id"){case"English":n=j.bookNumberToEnglishName(t.bookNum);break;case"id":n=j.bookNumberToId(t.bookNum);break;default:n=e??"";break}return`${n}${u??" "}${t.chapterNum}${r??":"}${t.verseNum}`}const vn=t=>(...e)=>t.map(u=>u(...e)).every(u=>u),En=t=>async(...e)=>{const r=t.map(async u=>u(...e));return(await Promise.all(r)).every(u=>u)},ye="chapter",Ne="verse";var An=Object.getOwnPropertyNames,yn=Object.getOwnPropertySymbols,Nn=Object.prototype.hasOwnProperty;function Ot(t,e){return function(u,n,i){return t(u,n,i)&&e(u,n,i)}}function Re(t){return function(r,u,n){if(!r||!u||typeof r!="object"||typeof u!="object")return t(r,u,n);var i=n.cache,o=i.get(r),a=i.get(u);if(o&&a)return o===u&&a===r;i.set(r,u),i.set(u,r);var s=t(r,u,n);return i.delete(r),i.delete(u),s}}function xt(t){return An(t).concat(yn(t))}var Sr=Object.hasOwn||function(t,e){return Nn.call(t,e)};function me(t,e){return t||e?t===e:t===e||t!==t&&e!==e}var Br="_owner",It=Object.getOwnPropertyDescriptor,Ft=Object.keys;function Cn(t,e,r){var u=t.length;if(e.length!==u)return!1;for(;u-- >0;)if(!r.equals(t[u],e[u],u,u,t,e,r))return!1;return!0}function wn(t,e){return me(t.getTime(),e.getTime())}function Rt(t,e,r){if(t.size!==e.size)return!1;for(var u={},n=t.entries(),i=0,o,a;(o=n.next())&&!o.done;){for(var s=e.entries(),l=!1,c=0;(a=s.next())&&!a.done;){var f=o.value,p=f[0],h=f[1],g=a.value,b=g[0],v=g[1];!l&&!u[c]&&(l=r.equals(p,b,i,c,t,e,r)&&r.equals(h,v,p,b,t,e,r))&&(u[c]=!0),c++}if(!l)return!1;i++}return!0}function Sn(t,e,r){var u=Ft(t),n=u.length;if(Ft(e).length!==n)return!1;for(var i;n-- >0;)if(i=u[n],i===Br&&(t.$$typeof||e.$$typeof)&&t.$$typeof!==e.$$typeof||!Sr(e,i)||!r.equals(t[i],e[i],i,i,t,e,r))return!1;return!0}function be(t,e,r){var u=xt(t),n=u.length;if(xt(e).length!==n)return!1;for(var i,o,a;n-- >0;)if(i=u[n],i===Br&&(t.$$typeof||e.$$typeof)&&t.$$typeof!==e.$$typeof||!Sr(e,i)||!r.equals(t[i],e[i],i,i,t,e,r)||(o=It(t,i),a=It(e,i),(o||a)&&(!o||!a||o.configurable!==a.configurable||o.enumerable!==a.enumerable||o.writable!==a.writable)))return!1;return!0}function Bn(t,e){return me(t.valueOf(),e.valueOf())}function Tn(t,e){return t.source===e.source&&t.flags===e.flags}function kt(t,e,r){if(t.size!==e.size)return!1;for(var u={},n=t.values(),i,o;(i=n.next())&&!i.done;){for(var a=e.values(),s=!1,l=0;(o=a.next())&&!o.done;)!s&&!u[l]&&(s=r.equals(i.value,o.value,i.value,o.value,t,e,r))&&(u[l]=!0),l++;if(!s)return!1}return!0}function On(t,e){var r=t.length;if(e.length!==r)return!1;for(;r-- >0;)if(t[r]!==e[r])return!1;return!0}var xn="[object Arguments]",In="[object Boolean]",Fn="[object Date]",Rn="[object Map]",kn="[object Number]",qn="[object Object]",Mn="[object RegExp]",$n="[object Set]",Pn="[object String]",jn=Array.isArray,qt=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,Mt=Object.assign,_n=Object.prototype.toString.call.bind(Object.prototype.toString);function Ln(t){var e=t.areArraysEqual,r=t.areDatesEqual,u=t.areMapsEqual,n=t.areObjectsEqual,i=t.arePrimitiveWrappersEqual,o=t.areRegExpsEqual,a=t.areSetsEqual,s=t.areTypedArraysEqual;return function(c,f,p){if(c===f)return!0;if(c==null||f==null||typeof c!="object"||typeof f!="object")return c!==c&&f!==f;var h=c.constructor;if(h!==f.constructor)return!1;if(h===Object)return n(c,f,p);if(jn(c))return e(c,f,p);if(qt!=null&&qt(c))return s(c,f,p);if(h===Date)return r(c,f,p);if(h===RegExp)return o(c,f,p);if(h===Map)return u(c,f,p);if(h===Set)return a(c,f,p);var g=_n(c);return g===Fn?r(c,f,p):g===Mn?o(c,f,p):g===Rn?u(c,f,p):g===$n?a(c,f,p):g===qn?typeof c.then!="function"&&typeof f.then!="function"&&n(c,f,p):g===xn?n(c,f,p):g===In||g===kn||g===Pn?i(c,f,p):!1}}function Vn(t){var e=t.circular,r=t.createCustomConfig,u=t.strict,n={areArraysEqual:u?be:Cn,areDatesEqual:wn,areMapsEqual:u?Ot(Rt,be):Rt,areObjectsEqual:u?be:Sn,arePrimitiveWrappersEqual:Bn,areRegExpsEqual:Tn,areSetsEqual:u?Ot(kt,be):kt,areTypedArraysEqual:u?be:On};if(r&&(n=Mt({},n,r(n))),e){var i=Re(n.areArraysEqual),o=Re(n.areMapsEqual),a=Re(n.areObjectsEqual),s=Re(n.areSetsEqual);n=Mt({},n,{areArraysEqual:i,areMapsEqual:o,areObjectsEqual:a,areSetsEqual:s})}return n}function Un(t){return function(e,r,u,n,i,o,a){return t(e,r,a)}}function zn(t){var e=t.circular,r=t.comparator,u=t.createState,n=t.equals,i=t.strict;if(u)return function(s,l){var c=u(),f=c.cache,p=f===void 0?e?new WeakMap:void 0:f,h=c.meta;return r(s,l,{cache:p,equals:n,meta:h,strict:i})};if(e)return function(s,l){return r(s,l,{cache:new WeakMap,equals:n,meta:void 0,strict:i})};var o={cache:void 0,equals:n,meta:void 0,strict:i};return function(s,l){return r(s,l,o)}}var Gn=W();W({strict:!0});W({circular:!0});W({circular:!0,strict:!0});W({createInternalComparator:function(){return me}});W({strict:!0,createInternalComparator:function(){return me}});W({circular:!0,createInternalComparator:function(){return me}});W({circular:!0,createInternalComparator:function(){return me},strict:!0});function W(t){t===void 0&&(t={});var e=t.circular,r=e===void 0?!1:e,u=t.createInternalComparator,n=t.createState,i=t.strict,o=i===void 0?!1:i,a=Vn(t),s=Ln(a),l=u?u(s):Un(s);return zn({circular:r,comparator:s,createState:n,equals:l,strict:o})}function Tr(t,e){return Gn(t,e)}function Or(t,e){if(typeof t!=typeof e)return!1;if(!t&&!e)return!0;if(Array.isArray(t)){const i=e,o=t;return i.length===0?!0:i.every(a=>o.includes(a))}if(typeof t!="object")return Tr(t,e);const r=e,u=t;let n=!0;return Object.keys(r).forEach(i=>{n&&(Object.hasOwn(u,i)&&Or(u[i],r[i])||(n=!1))}),n}function Ye(t,e,r){return JSON.stringify(t,(n,i)=>{let o=i;return e&&(o=e(n,o)),o===void 0&&(o=null),o},r)}function xr(t,e){function r(n){return Object.keys(n).forEach(i=>{n[i]===null?n[i]=void 0:typeof n[i]=="object"&&(n[i]=r(n[i]))}),n}const u=JSON.parse(t,e);if(u!==null)return typeof u=="object"?r(u):u}function Jn(t){try{const e=Ye(t);return e===Ye(xr(e))}catch{return!1}}const Hn=t=>t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/");function Xn(){return typeof navigator<"u"&&navigator.languages?navigator.languages[0]:new Zt().resolvedOptions().locale}function Kn(t,e=2){if(t===0)return"0 Bytes";const r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],u=Math.floor(Math.log(t)/Math.log(1024)),n=r[u];return`${new nr("en",{style:"decimal",maximumFractionDigits:e,minimumFractionDigits:0}).format(t/1024**u)} ${n}`}const at={projectSettingsContribution:{description:"The data an extension provides to inform Platform.Bible of the project settings it provides",anyOf:[{$ref:"#/$defs/projectSettingsGroup"},{type:"array",items:{$ref:"#/$defs/projectSettingsGroup"}}]},projectSettingsGroup:{description:"Group of related settings definitions",type:"object",properties:{label:{description:"localizeKey that displays in the project settings dialog as the group name",$ref:"#/$defs/localizeKey"},description:{description:"localizeKey that displays in the project settings dialog to describe the group",$ref:"#/$defs/localizeKey"},properties:{$ref:"#/$defs/projectSettingProperties"}},required:["label","properties"]},projectSettingProperties:{description:"Object whose keys are setting IDs and whose values are settings objects",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{$ref:"#/$defs/projectSetting"}},additionalProperties:!1},projectSetting:{description:"A description of an extension's setting entry",anyOf:[{$ref:"#/$defs/extensionControlledProjectSetting"}]},extensionControlledProjectSetting:{description:"Setting definition that is validated by the extension.",allOf:[{$ref:"#/$defs/projectSettingBase"},{$ref:"#/$defs/modifierExtensionControlled"}]},projectSettingBase:{description:"Base information needed to describe a project setting entry",allOf:[{$ref:"#/$defs/settingBase"},{$ref:"#/$defs/modifierProject"}]},modifierProject:{description:"Modifies setting type to be project setting",type:"object",properties:{includeProjectInterfaces:{description:"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should be included.\n\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to pass):\n\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition\n\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\n\nDefaults to all {@link ProjectInterfaces}, so all projects that do not match `excludeProjectInterfaces` will be included\n\n@example\n\n```typescript\nincludeProjectInterfaces: ['one', ['two', 'three']];\n```\n\nThis filter condition will succeed on projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\n\n- Include `one`\n- Include both `two` and `three`.",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}}]},excludeProjectInterfaces:{description:"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should absolutely not be included even if they match with `includeProjectInterfaces`.\n\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to exclude the project):\n\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition and exclude the project\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition and exclude the project\n\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\n\nDefaults to no {@link ProjectInterfaces}, so all projects that match `includeProjectInterfaces` will be included\n\n@example\n\n```typescript\nexcludeProjectInterfaces: ['one', ['two', 'three']];\n```\n\nThis filter condition will succeed and exclude projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\n\n- Include `one`\n- Include both `two` and `three`.",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{anyOf:[{type:"string"},{type:"array",items:{type:"string"}}]}}]},includePdpFactoryIds:{description:"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should be included.\n\nDefaults to all Project Data Provider Factory Ids, so all projects that do not match `excludePdpFactoryIds` will be included",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{type:"string"}}]},excludePdpFactoryIds:{description:"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should absolutely not be included even if they match with `includeProjectInterfaces`.\n\nDefaults to none, so all projects that match `includePdpFactoryIds` will be included",anyOf:[{type:"null"},{type:"string"},{type:"array",items:{type:"string"}}]}}},settingsContribution:{description:"The data an extension provides to inform Platform.Bible of the settings it provides",anyOf:[{$ref:"#/$defs/settingsGroup"},{type:"array",items:{$ref:"#/$defs/settingsGroup"}}]},settingsGroup:{description:"Group of related settings definitions",type:"object",properties:{label:{description:"localizeKey that displays in the settings dialog as the group name",$ref:"#/$defs/localizeKey"},description:{description:"localizeKey that displays in the settings dialog to describe the group",$ref:"#/$defs/localizeKey"},properties:{$ref:"#/$defs/settingProperties"}},required:["label","properties"]},settingProperties:{description:"Object whose keys are setting IDs and whose values are settings objects",type:"object",patternProperties:{"^[\\w-]+\\.[\\w-]+$":{$ref:"#/$defs/setting"}},additionalProperties:!1},setting:{description:"A description of an extension's setting entry",anyOf:[{$ref:"#/$defs/extensionControlledSetting"}]},extensionControlledSetting:{description:"Setting definition that is validated by the extension.",allOf:[{$ref:"#/$defs/settingBase"},{$ref:"#/$defs/modifierExtensionControlled"}]},settingBase:{description:"Base information needed to describe a setting entry",allOf:[{$ref:"#/$defs/stateBase"},{type:"object",properties:{label:{description:"localizeKey that displays in the settings dialog as the setting name",$ref:"#/$defs/localizeKey"},description:{description:"localizeKey that displays in the settings dialog to describe the setting",$ref:"#/$defs/localizeKey"}},required:["label"]}]},projectStateContribution:{description:"The data an extension provides to inform Platform.Bible of the project state it provides",$ref:"#/$defs/userStateProperties"},userStateContribution:{description:"The data an extension provides to inform Platform.Bible of the user state it provides",$ref:"#/$defs/userStateProperties"},userStateProperties:{description:"Object whose keys are state IDs and whose values are state objects",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{$ref:"#/$defs/userState"}},additionalProperties:!1},userState:{description:"A description of an extension's user state entry",anyOf:[{$ref:"#/$defs/extensionControlledState"}]},extensionControlledState:{description:"State definition that is validated by the extension.",allOf:[{$ref:"#/$defs/stateBase"},{$ref:"#/$defs/modifierExtensionControlled"}]},modifierExtensionControlled:{description:'Modifies state/setting type to be extension-controlled. "Extension-controlled" means the extension provides the component and the validator for the state/setting, so the state/setting is controlled by the extension.',not:{anyOf:[{type:"object",required:["platformType"]},{type:"object",required:["type"]}]}},stateBase:{description:"Base information needed to describe a state entry",type:"object",properties:{default:{description:"default value for the state/setting",type:"any"},derivesFrom:{description:"a state/setting ID whose value to set to this state/setting's starting value the first time this state/setting is loaded",$ref:"#/$defs/id"}},required:["default"]},localizeKey:{description:"Identifier for a string that will be localized based on the user's UI language",type:"string",pattern:"^%[\\w\\-\\.]+%$",tsType:"LocalizeKey"},id:{description:"",type:"string",pattern:"^[\\w\\-]+\\.[\\w\\-]+$",tsType:"Id"}};function st(t){t&&Object.values(t).forEach(e=>{if(e.type){if("tsType"in e&&delete e.tsType,e.type==="any"){delete e.type;return}e.type==="object"&&st(e.properties)}})}st(at);const Ir={$schema:"https://json-schema.org/draft/2020-12/schema",title:"Project Settings Contribution",description:"The data an extension provides to inform Platform.Bible of the project settings it provides",anyOf:[{$ref:"#/$defs/projectSettingsGroup"},{type:"array",items:{$ref:"#/$defs/projectSettingsGroup"}}],$defs:at};Object.freeze(Ir);const Fr={$schema:"https://json-schema.org/draft/2020-12/schema",title:"Settings Contribution",description:"The data an extension provides to inform Platform.Bible of the settings it provides",anyOf:[{$ref:"#/$defs/settingsGroup"},{type:"array",items:{$ref:"#/$defs/settingsGroup"}}],$defs:at};Object.freeze(Fr);const Rr={languageStrings:{description:"Map whose keys are localized string keys and whose values provide information about how to localize strings for the localized string key",type:"object",patternProperties:{"^%[\\w\\-\\.]+%$":{$ref:"#/$defs/localizedStringValue"}},additionalProperties:!1},localizedStringValue:{description:"Localized string value associated with this key",type:"string"},stringsMetadata:{description:"Map whose keys are localized string keys and whose values provide additional non-locale-specific information about the localized string key",type:"object",patternProperties:{"^%[\\w\\-\\.]+%$":{$ref:"#/$defs/stringMetadata"}},additionalProperties:!1},stringMetadata:{description:"Additional non-locale-specific information about a localized string key",type:"object",properties:{fallbackKey:{description:"Localized string key from which to get this value if one does not exist in the specified language. If a new key/value pair needs to be made to replace an existing one, this could help smooth over the transition if the meanings are close enough.\nYou can use Paratext 9 Localized String Keys here. Be sure to escape any % signs with a backslash `\\`.",type:"string",pattern:"^%[\\w\\-\\.;&,' (){}#:/\\\\?%⋮|[\\]“”‘’!~* +=•`…​↑↓]+%$",tsType:"LocalizeKey"},notes:{description:"Additional information provided by developers in English to help the translator to know how to translate this localized string accurately",type:"string"}}},localizeKey:{description:"Identifier for a string that will be localized based on the user's UI language",type:"string",pattern:"^%[\\w\\-\\.]+%$",tsType:"LocalizeKey"}};st(Rr);const kr={$schema:"https://json-schema.org/draft/2020-12/schema",title:"Localized String Data Contribution",description:"The data an extension provides to inform Platform.Bible of the localized strings it provides.",type:"object",properties:{metadata:{$ref:"#/$defs/stringsMetadata"},localizedStrings:{type:"object",additionalProperties:{$ref:"#/$defs/languageStrings"}}},$defs:Rr};Object.freeze(kr);const qr={title:"Platform.Bible menus",type:"object",properties:{mainMenu:{description:"Top level menu for the application",$ref:"#/$defs/multiColumnMenu"},defaultWebViewTopMenu:{description:"Default top menu for web views that don't specify their own",$ref:"#/$defs/multiColumnMenu"},defaultWebViewContextMenu:{description:"Default context menu for web views that don't specify their own",$ref:"#/$defs/singleColumnMenu"},webViewMenus:{description:"Menus that apply per web view in the application",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{$ref:"#/$defs/menusForOneWebView"}},additionalProperties:!1}},required:["mainMenu","defaultWebViewTopMenu","defaultWebViewContextMenu","webViewMenus"],additionalProperties:!1,$defs:{localizeKey:{description:"Identifier for a string that will be localized in a menu based on the user's UI language",type:"string",pattern:"^%[\\w\\-\\.]+%$"},referencedItem:{description:"Name of some UI element (i.e., tab, column, group, menu item) or some PAPI object (i.e., command)",type:"string",pattern:"^[\\w\\-]+\\.[\\w\\-]+$"},columnsWithHeaders:{description:"Group of columns that can be combined with other columns to form a multi-column menu",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{description:"Single column with a header string",type:"object",properties:{label:{description:"Header text for this this column in the UI",$ref:"#/$defs/localizeKey"},localizeNotes:{description:"Additional information provided by developers to help people who perform localization",type:"string"},order:{description:"Relative order of this column compared to other columns (sorted ascending)",type:"number"},isExtensible:{description:"Defines whether contributions are allowed to add menu groups to this column",type:"boolean"}},required:["label","order"],additionalProperties:!1}},properties:{isExtensible:{description:"Defines whether contributions are allowed to add columns to this multi-column menu",type:"boolean"}}},menuGroups:{description:"Group of menu items that can be combined with other groups to form a single menu/submenu. Groups are separated using a line within the menu/submenu.",type:"object",patternProperties:{"^[\\w\\-]+\\.[\\w\\-]+$":{description:"Single group that contains menu items",type:"object",oneOf:[{properties:{column:{description:"Column where this group belongs, not required for single column menus",$ref:"#/$defs/referencedItem"},order:{description:"Relative order of this group compared to other groups in the same column or submenu (sorted ascending)",type:"number"},isExtensible:{description:"Defines whether contributions are allowed to add menu items to this menu group",type:"boolean"}},required:["order"],additionalProperties:!1},{properties:{menuItem:{description:"Menu item that anchors the submenu where this group belongs",$ref:"#/$defs/referencedItem"},order:{description:"Relative order of this group compared to other groups in the same column or submenu (sorted ascending)",type:"number"},isExtensible:{description:"Defines whether contributions are allowed to add menu items to this menu group",type:"boolean"}},required:["menuItem","order"],additionalProperties:!1}]}},additionalProperties:!1},menuItem:{description:"Single item in a menu that can be clicked on to take an action or can be the parent of a submenu",type:"object",oneOf:[{properties:{id:{description:"ID for this menu item that holds a submenu",$ref:"#/$defs/referencedItem"}},required:["id"]},{properties:{command:{description:"Name of the PAPI command to run when this menu item is selected.",$ref:"#/$defs/referencedItem"},iconPathBefore:{description:"Uri path to the icon to display before the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`",type:"string"},iconPathAfter:{description:"Uri path to the icon to display after the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`",type:"string"}},required:["command"]}],properties:{label:{description:"Key that represents the text of this menu item to display",$ref:"#/$defs/localizeKey"},tooltip:{description:"Key that represents the text to display if a mouse pointer hovers over the menu item",$ref:"#/$defs/localizeKey"},searchTerms:{description:"Key that represents additional words the platform should reference when users are searching for menu items",$ref:"#/$defs/localizeKey"},localizeNotes:{description:"Additional information provided by developers to help people who perform localization",type:"string"},group:{description:"Group to which this menu item belongs",$ref:"#/$defs/referencedItem"},order:{description:"Relative order of this menu item compared to other menu items in the same group (sorted ascending)",type:"number"}},required:["label","group","order"],unevaluatedProperties:!1},groupsAndItems:{description:"Core schema for a column",type:"object",properties:{groups:{description:"Groups that belong in this menu",$ref:"#/$defs/menuGroups"},items:{description:"List of menu items that belong in this menu",type:"array",items:{$ref:"#/$defs/menuItem"},uniqueItems:!0}},required:["groups","items"]},singleColumnMenu:{description:"Menu that contains a column without a header",type:"object",allOf:[{$ref:"#/$defs/groupsAndItems"}],unevaluatedProperties:!1},multiColumnMenu:{description:"Menu that can contain multiple columns with headers",type:"object",allOf:[{$ref:"#/$defs/groupsAndItems"},{properties:{columns:{description:"Columns that belong in this menu",$ref:"#/$defs/columnsWithHeaders"}},required:["columns"]}],unevaluatedProperties:!1},menusForOneWebView:{description:"Set of menus that are associated with a single tab",type:"object",properties:{includeDefaults:{description:"Indicates whether the platform default menus should be included for this webview",type:"boolean"},topMenu:{description:"Menu that opens when you click on the top left corner of a tab",$ref:"#/$defs/multiColumnMenu"},contextMenu:{description:"Menu that opens when you right click on the main body/area of a tab",$ref:"#/$defs/singleColumnMenu"}},additionalProperties:!1}}};Object.freeze(qr);var Y={},H={};function Wn(t,e,r){if(r===void 0&&(r=Array.prototype),t&&typeof r.find=="function")return r.find.call(t,e);for(var u=0;u=0&&t=0){for(var n=e.length-1;u0},lookupPrefix:function(t){for(var e=this;e;){var r=e._nsMap;if(r){for(var u in r)if(Object.prototype.hasOwnProperty.call(r,u)&&r[u]===t)return u}e=e.nodeType==fe?e.ownerDocument:e.parentNode}return null},lookupNamespaceURI:function(t){for(var e=this;e;){var r=e._nsMap;if(r&&Object.prototype.hasOwnProperty.call(r,t))return r[t];e=e.nodeType==fe?e.ownerDocument:e.parentNode}return null},isDefaultNamespace:function(t){var e=this.lookupPrefix(t);return e==null}};function Xr(t){return t=="<"&&"<"||t==">"&&">"||t=="&"&&"&"||t=='"'&&"""||"&#"+t.charCodeAt()+";"}Te(k,D);Te(k,D.prototype);function Se(t,e){if(e(t))return!0;if(t=t.firstChild)do if(Se(t,e))return!0;while(t=t.nextSibling)}function Oe(){this.ownerDocument=this}function ni(t,e,r){t&&t._inc++;var u=r.namespaceURI;u===we.XMLNS&&(e._nsMap[r.prefix?r.localName:""]=r.value)}function Kr(t,e,r,u){t&&t._inc++;var n=r.namespaceURI;n===we.XMLNS&&delete e._nsMap[r.prefix?r.localName:""]}function ft(t,e,r){if(t&&t._inc){t._inc++;var u=e.childNodes;if(r)u[u.length++]=r;else{for(var n=e.firstChild,i=0;n;)u[i++]=n,n=n.nextSibling;u.length=i,delete u[u.length]}}}function Wr(t,e){var r=e.previousSibling,u=e.nextSibling;return r?r.nextSibling=u:t.firstChild=u,u?u.previousSibling=r:t.lastChild=r,e.parentNode=null,e.previousSibling=null,e.nextSibling=null,ft(t.ownerDocument,t),e}function ii(t){return t&&(t.nodeType===D.DOCUMENT_NODE||t.nodeType===D.DOCUMENT_FRAGMENT_NODE||t.nodeType===D.ELEMENT_NODE)}function oi(t){return t&&(V(t)||pt(t)||J(t)||t.nodeType===D.DOCUMENT_FRAGMENT_NODE||t.nodeType===D.COMMENT_NODE||t.nodeType===D.PROCESSING_INSTRUCTION_NODE)}function J(t){return t&&t.nodeType===D.DOCUMENT_TYPE_NODE}function V(t){return t&&t.nodeType===D.ELEMENT_NODE}function pt(t){return t&&t.nodeType===D.TEXT_NODE}function Lt(t,e){var r=t.childNodes||[];if(L(r,V)||J(e))return!1;var u=L(r,J);return!(e&&u&&r.indexOf(u)>r.indexOf(e))}function Vt(t,e){var r=t.childNodes||[];function u(i){return V(i)&&i!==e}if(L(r,u))return!1;var n=L(r,J);return!(e&&n&&r.indexOf(n)>r.indexOf(e))}function ai(t,e,r){if(!ii(t))throw new C(F,"Unexpected parent node type "+t.nodeType);if(r&&r.parentNode!==t)throw new C(Gr,"child not in parent");if(!oi(e)||J(e)&&t.nodeType!==D.DOCUMENT_NODE)throw new C(F,"Unexpected node type "+e.nodeType+" for parent node type "+t.nodeType)}function si(t,e,r){var u=t.childNodes||[],n=e.childNodes||[];if(e.nodeType===D.DOCUMENT_FRAGMENT_NODE){var i=n.filter(V);if(i.length>1||L(n,pt))throw new C(F,"More than one element or text in fragment");if(i.length===1&&!Lt(t,r))throw new C(F,"Element in fragment can not be inserted before doctype")}if(V(e)&&!Lt(t,r))throw new C(F,"Only one element can be added and only after doctype");if(J(e)){if(L(u,J))throw new C(F,"Only one doctype is allowed");var o=L(u,V);if(r&&u.indexOf(o)1||L(n,pt))throw new C(F,"More than one element or text in fragment");if(i.length===1&&!Vt(t,r))throw new C(F,"Element in fragment can not be inserted before doctype")}if(V(e)&&!Vt(t,r))throw new C(F,"Only one element can be added and only after doctype");if(J(e)){if(L(u,function(s){return J(s)&&s!==r}))throw new C(F,"Only one doctype is allowed");var o=L(u,V);if(r&&u.indexOf(o)0&&Se(r.documentElement,function(n){if(n!==r&&n.nodeType===P){var i=n.getAttribute("class");if(i){var o=t===i;if(!o){var a=$t(i);o=e.every(ti(a))}o&&u.push(n)}}}),u})},createElement:function(t){var e=new re;e.ownerDocument=this,e.nodeName=t,e.tagName=t,e.localName=t,e.childNodes=new z;var r=e.attributes=new $e;return r._ownerElement=e,e},createDocumentFragment:function(){var t=new Ue;return t.ownerDocument=this,t.childNodes=new z,t},createTextNode:function(t){var e=new ht;return e.ownerDocument=this,e.appendData(t),e},createComment:function(t){var e=new dt;return e.ownerDocument=this,e.appendData(t),e},createCDATASection:function(t){var e=new mt;return e.ownerDocument=this,e.appendData(t),e},createProcessingInstruction:function(t,e){var r=new Dt;return r.ownerDocument=this,r.tagName=r.nodeName=r.target=t,r.nodeValue=r.data=e,r},createAttribute:function(t){var e=new je;return e.ownerDocument=this,e.name=t,e.nodeName=t,e.localName=t,e.specified=!0,e},createEntityReference:function(t){var e=new gt;return e.ownerDocument=this,e.nodeName=t,e},createElementNS:function(t,e){var r=new re,u=e.split(":"),n=r.attributes=new $e;return r.childNodes=new z,r.ownerDocument=this,r.nodeName=e,r.tagName=e,r.namespaceURI=t,u.length==2?(r.prefix=u[0],r.localName=u[1]):r.localName=e,n._ownerElement=r,r},createAttributeNS:function(t,e){var r=new je,u=e.split(":");return r.ownerDocument=this,r.nodeName=e,r.name=e,r.namespaceURI=t,r.specified=!0,u.length==2?(r.prefix=u[0],r.localName=u[1]):r.localName=e,r}};R(Oe,D);function re(){this._nsMap={}}re.prototype={nodeType:P,hasAttribute:function(t){return this.getAttributeNode(t)!=null},getAttribute:function(t){var e=this.getAttributeNode(t);return e&&e.value||""},getAttributeNode:function(t){return this.attributes.getNamedItem(t)},setAttribute:function(t,e){var r=this.ownerDocument.createAttribute(t);r.value=r.nodeValue=""+e,this.setAttributeNode(r)},removeAttribute:function(t){var e=this.getAttributeNode(t);e&&this.removeAttributeNode(e)},appendChild:function(t){return t.nodeType===G?this.insertBefore(t,null):ci(this,t)},setAttributeNode:function(t){return this.attributes.setNamedItem(t)},setAttributeNodeNS:function(t){return this.attributes.setNamedItemNS(t)},removeAttributeNode:function(t){return this.attributes.removeNamedItem(t.nodeName)},removeAttributeNS:function(t,e){var r=this.getAttributeNodeNS(t,e);r&&this.removeAttributeNode(r)},hasAttributeNS:function(t,e){return this.getAttributeNodeNS(t,e)!=null},getAttributeNS:function(t,e){var r=this.getAttributeNodeNS(t,e);return r&&r.value||""},setAttributeNS:function(t,e,r){var u=this.ownerDocument.createAttributeNS(t,e);u.value=u.nodeValue=""+r,this.setAttributeNode(u)},getAttributeNodeNS:function(t,e){return this.attributes.getNamedItemNS(t,e)},getElementsByTagName:function(t){return new pe(this,function(e){var r=[];return Se(e,function(u){u!==e&&u.nodeType==P&&(t==="*"||u.tagName==t)&&r.push(u)}),r})},getElementsByTagNameNS:function(t,e){return new pe(this,function(r){var u=[];return Se(r,function(n){n!==r&&n.nodeType===P&&(t==="*"||n.namespaceURI===t)&&(e==="*"||n.localName==e)&&u.push(n)}),u})}};Oe.prototype.getElementsByTagName=re.prototype.getElementsByTagName;Oe.prototype.getElementsByTagNameNS=re.prototype.getElementsByTagNameNS;R(re,D);function je(){}je.prototype.nodeType=fe;R(je,D);function xe(){}xe.prototype={data:"",substringData:function(t,e){return this.data.substring(t,t+e)},appendData:function(t){t=this.data+t,this.nodeValue=this.data=t,this.length=t.length},insertData:function(t,e){this.replaceData(t,0,e)},appendChild:function(t){throw new Error(S[F])},deleteData:function(t,e){this.replaceData(t,e,"")},replaceData:function(t,e,r){var u=this.data.substring(0,t),n=this.data.substring(t+e);r=u+r+n,this.nodeValue=this.data=r,this.length=r.length}};R(xe,D);function ht(){}ht.prototype={nodeName:"#text",nodeType:Me,splitText:function(t){var e=this.data,r=e.substring(t);e=e.substring(0,t),this.data=this.nodeValue=e,this.length=e.length;var u=this.ownerDocument.createTextNode(r);return this.parentNode&&this.parentNode.insertBefore(u,this.nextSibling),u}};R(ht,xe);function dt(){}dt.prototype={nodeName:"#comment",nodeType:Vr};R(dt,xe);function mt(){}mt.prototype={nodeName:"#cdata-section",nodeType:jr};R(mt,xe);function Ve(){}Ve.prototype.nodeType=zr;R(Ve,D);function Zr(){}Zr.prototype.nodeType=ui;R(Zr,D);function Qr(){}Qr.prototype.nodeType=ri;R(Qr,D);function gt(){}gt.prototype.nodeType=_r;R(gt,D);function Ue(){}Ue.prototype.nodeName="#document-fragment";Ue.prototype.nodeType=G;R(Ue,D);function Dt(){}Dt.prototype.nodeType=Lr;R(Dt,D);function eu(){}eu.prototype.serializeToString=function(t,e,r){return tu.call(t,e,r)};D.prototype.toString=tu;function tu(t,e){var r=[],u=this.nodeType==9&&this.documentElement||this,n=u.prefix,i=u.namespaceURI;if(i&&n==null){var n=u.lookupPrefix(i);if(n==null)var o=[{namespace:i,prefix:null}]}return se(this,r,t,e,o),r.join("")}function Ut(t,e,r){var u=t.prefix||"",n=t.namespaceURI;if(!n||u==="xml"&&n===we.XML||n===we.XMLNS)return!1;for(var i=r.length;i--;){var o=r[i];if(o.prefix===u)return o.namespace!==n}return!0}function He(t,e,r){t.push(" ",e,'="',r.replace(/[<>&"\t\n\r]/g,Xr),'"')}function se(t,e,r,u,n){if(n||(n=[]),u)if(t=u(t),t){if(typeof t=="string"){e.push(t);return}}else return;switch(t.nodeType){case P:var i=t.attributes,o=i.length,y=t.firstChild,a=t.tagName;r=we.isHTML(t.namespaceURI)||r;var s=a;if(!r&&!t.prefix&&t.namespaceURI){for(var l,c=0;c=0;f--){var p=n[f];if(p.prefix===""&&p.namespace===t.namespaceURI){l=p.namespace;break}}if(l!==t.namespaceURI)for(var f=n.length-1;f>=0;f--){var p=n[f];if(p.namespace===t.namespaceURI){p.prefix&&(s=p.prefix+":"+a);break}}}e.push("<",s);for(var h=0;h"),r&&/^script$/i.test(a))for(;y;)y.data?e.push(y.data):se(y,e,r,u,n.slice()),y=y.nextSibling;else for(;y;)se(y,e,r,u,n.slice()),y=y.nextSibling;e.push("")}else e.push("/>");return;case Ur:case G:for(var y=t.firstChild;y;)se(y,e,r,u,n.slice()),y=y.nextSibling;return;case fe:return He(e,t.name,t.value);case Me:return e.push(t.data.replace(/[<&>]/g,Xr));case jr:return e.push("");case Vr:return e.push("");case zr:var Z=t.publicId,A=t.systemId;if(e.push("");else if(A&&A!=".")e.push(" SYSTEM ",A,">");else{var O=t.internalSubset;O&&e.push(" [",O,"]"),e.push(">")}return;case Lr:return e.push("");case _r:return e.push("&",t.nodeName,";");default:e.push("??",t.nodeName)}}function ru(t,e,r){var u;switch(e.nodeType){case P:u=e.cloneNode(!1),u.ownerDocument=t;case G:break;case fe:r=!0;break}if(u||(u=e.cloneNode(!1)),u.ownerDocument=t,u.parentNode=null,r)for(var n=e.firstChild;n;)u.appendChild(ru(t,n,r)),n=n.nextSibling;return u}function Ze(t,e,r){var u=new e.constructor;for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var i=e[n];typeof i!="object"&&i!=u[n]&&(u[n]=i)}switch(e.childNodes&&(u.childNodes=new z),u.ownerDocument=t,u.nodeType){case P:var o=e.attributes,a=u.attributes=new $e,s=o.length;a._ownerElement=u;for(var l=0;l",lt:"<",quot:'"'}),t.HTML_ENTITIES=e({Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",AMP:"&",amp:"&",And:"⩓",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",ap:"≈",apacir:"⩯",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",Barwed:"⌆",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",Because:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxDL:"╗",boxDl:"╖",boxdL:"╕",boxdl:"┐",boxDR:"╔",boxDr:"╓",boxdR:"╒",boxdr:"┌",boxH:"═",boxh:"─",boxHD:"╦",boxHd:"╤",boxhD:"╥",boxhd:"┬",boxHU:"╩",boxHu:"╧",boxhU:"╨",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxUL:"╝",boxUl:"╜",boxuL:"╛",boxul:"┘",boxUR:"╚",boxUr:"╙",boxuR:"╘",boxur:"└",boxV:"║",boxv:"│",boxVH:"╬",boxVh:"╫",boxvH:"╪",boxvh:"┼",boxVL:"╣",boxVl:"╢",boxvL:"╡",boxvl:"┤",boxVR:"╠",boxVr:"╟",boxvR:"╞",boxvr:"├",bprime:"‵",Breve:"˘",breve:"˘",brvbar:"¦",Bscr:"ℬ",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",Cap:"⋒",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",CenterDot:"·",centerdot:"·",Cfr:"ℭ",cfr:"𝔠",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",Colon:"∷",colon:":",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",Conint:"∯",conint:"∮",ContourIntegral:"∮",Copf:"ℂ",copf:"𝕔",coprod:"∐",Coproduct:"∐",COPY:"©",copy:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",Cross:"⨯",cross:"✗",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",Cup:"⋓",cup:"∪",cupbrcap:"⩈",CupCap:"≍",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",Dagger:"‡",dagger:"†",daleth:"ℸ",Darr:"↡",dArr:"⇓",darr:"↓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",DD:"ⅅ",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",Diamond:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",Downarrow:"⇓",downarrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",ecir:"≖",Ecirc:"Ê",ecirc:"ê",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",eDot:"≑",edot:"ė",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",Escr:"ℰ",escr:"ℯ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",ExponentialE:"ⅇ",exponentiale:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",ForAll:"∀",forall:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",Fscr:"ℱ",fscr:"𝒻",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",gE:"≧",ge:"≥",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",Gg:"⋙",gg:"≫",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gnE:"≩",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",Gt:"≫",GT:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",Lt:"≪",LT:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:` +`,nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:" ",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}),t.entityMap=t.HTML_ENTITIES})(nu);var bt={},Be=H.NAMESPACE,Qe=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,zt=new RegExp("[\\-\\.0-9"+Qe.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),Gt=new RegExp("^"+Qe.source+zt.source+"*(?::"+Qe.source+zt.source+"*)?$"),ve=0,X=1,ne=2,Ee=3,ie=4,oe=5,Ae=6,ke=7;function he(t,e){this.message=t,this.locator=e,Error.captureStackTrace&&Error.captureStackTrace(this,he)}he.prototype=new Error;he.prototype.name=he.name;function iu(){}iu.prototype={parse:function(t,e,r){var u=this.domBuilder;u.startDocument(),ou(e,e={}),li(t,e,r,u,this.errorHandler),u.endDocument()}};function li(t,e,r,u,n){function i(N){if(N>65535){N-=65536;var $=55296+(N>>10),lu=56320+(N&1023);return String.fromCharCode($,lu)}else return String.fromCharCode(N)}function o(N){var $=N.slice(1,-1);return Object.hasOwnProperty.call(r,$)?r[$]:$.charAt(0)==="#"?i(parseInt($.substr(1).replace("x","0x"))):(n.error("entity not found:"+N),N)}function a(N){if(N>b){var $=t.substring(b,N).replace(/&#?\w+;/g,o);p&&s(b),u.characters($,0,N-b),b=N}}function s(N,$){for(;N>=c&&($=f.exec(t));)l=$.index,c=l+$[0].length,p.lineNumber++;p.columnNumber=N-l+1}for(var l=0,c=0,f=/.*(?:\r\n?|\n)|.*$/g,p=u.locator,h=[{currentNSMap:e}],g={},b=0;;){try{var v=t.indexOf("<",b);if(v<0){if(!t.substr(b).match(/^\s*$/)){var y=u.doc,Z=y.createTextNode(t.substr(b));y.appendChild(Z),u.currentElement=Z}return}switch(v>b&&a(v),t.charAt(v+1)){case"/":var x=t.indexOf(">",v+3),A=t.substring(v+2,x).replace(/[ \t\n\r]+$/g,""),O=h.pop();x<0?(A=t.substring(v+2).replace(/[\s<].*/,""),n.error("end tag name: "+A+" is not complete:"+O.tagName),x=v+1+A.length):A.match(/\sb?b=x:a(Math.max(v,b)+1)}}function Jt(t,e){return e.lineNumber=t.lineNumber,e.columnNumber=t.columnNumber,e}function fi(t,e,r,u,n,i){function o(p,h,g){r.attributeNames.hasOwnProperty(p)&&i.fatalError("Attribute "+p+" redefined"),r.addValue(p,h.replace(/[\t\n\r]/g," ").replace(/&#?\w+;/g,n),g)}for(var a,s,l=++e,c=ve;;){var f=t.charAt(l);switch(f){case"=":if(c===X)a=t.slice(e,l),c=Ee;else if(c===ne)c=Ee;else throw new Error("attribute equal must after attrName");break;case"'":case'"':if(c===Ee||c===X)if(c===X&&(i.warning('attribute value must after "="'),a=t.slice(e,l)),e=l+1,l=t.indexOf(f,e),l>0)s=t.slice(e,l),o(a,s,e-1),c=oe;else throw new Error("attribute value no end '"+f+"' match");else if(c==ie)s=t.slice(e,l),o(a,s,e),i.warning('attribute "'+a+'" missed start quot('+f+")!!"),e=l+1,c=oe;else throw new Error('attribute value must after "="');break;case"/":switch(c){case ve:r.setTagName(t.slice(e,l));case oe:case Ae:case ke:c=ke,r.closed=!0;case ie:case X:break;case ne:r.closed=!0;break;default:throw new Error("attribute invalid close char('/')")}break;case"":return i.error("unexpected end of input"),c==ve&&r.setTagName(t.slice(e,l)),l;case">":switch(c){case ve:r.setTagName(t.slice(e,l));case oe:case Ae:case ke:break;case ie:case X:s=t.slice(e,l),s.slice(-1)==="/"&&(r.closed=!0,s=s.slice(0,-1));case ne:c===ne&&(s=a),c==ie?(i.warning('attribute "'+s+'" missed quot(")!'),o(a,s,e)):((!Be.isHTML(u[""])||!s.match(/^(?:disabled|checked|selected)$/i))&&i.warning('attribute "'+s+'" missed value!! "'+s+'" instead!!'),o(s,s,e));break;case Ee:throw new Error("attribute value missed!!")}return l;case"€":f=" ";default:if(f<=" ")switch(c){case ve:r.setTagName(t.slice(e,l)),c=Ae;break;case X:a=t.slice(e,l),c=ne;break;case ie:var s=t.slice(e,l);i.warning('attribute "'+s+'" missed quot(")!!'),o(a,s,e);case oe:c=Ae;break}else switch(c){case ne:r.tagName,(!Be.isHTML(u[""])||!a.match(/^(?:disabled|checked|selected)$/i))&&i.warning('attribute "'+a+'" missed value!! "'+a+'" instead2!!'),o(a,a,e),e=l,c=X;break;case oe:i.warning('attribute space is required"'+a+'"!!');case Ae:c=X,e=l;break;case Ee:c=ie,e=l;break;case ke:throw new Error("elements closed character '/' and '>' must be connected to")}}l++}}function Ht(t,e,r){for(var u=t.tagName,n=null,f=t.length;f--;){var i=t[f],o=i.qName,a=i.value,p=o.indexOf(":");if(p>0)var s=i.prefix=o.slice(0,p),l=o.slice(p+1),c=s==="xmlns"&&l;else l=o,s=null,c=o==="xmlns"&&"";i.localName=l,c!==!1&&(n==null&&(n={},ou(r,r={})),r[c]=n[c]=a,i.uri=Be.XMLNS,e.startPrefixMapping(c,a))}for(var f=t.length;f--;){i=t[f];var s=i.prefix;s&&(s==="xml"&&(i.uri=Be.XML),s!=="xmlns"&&(i.uri=r[s||""]))}var p=u.indexOf(":");p>0?(s=t.prefix=u.slice(0,p),l=t.localName=u.slice(p+1)):(s=null,l=t.localName=u);var h=t.uri=r[s||""];if(e.startElement(h,l,u,t),t.closed){if(e.endElement(h,l,u),n)for(s in n)Object.prototype.hasOwnProperty.call(n,s)&&e.endPrefixMapping(s)}else return t.currentNSMap=r,t.localNSMap=n,!0}function pi(t,e,r,u,n){if(/^(?:script|textarea)$/i.test(r)){var i=t.indexOf("",e),o=t.substring(e+1,i);if(/[&<]/.test(o))return/^script$/i.test(r)?(n.characters(o,0,o.length),i):(o=o.replace(/&#?\w+;/g,u),n.characters(o,0,o.length),i)}return e+1}function hi(t,e,r,u){var n=u[r];return n==null&&(n=t.lastIndexOf(""),n",e+4);return i>e?(r.comment(t,e+4,i-e-4),i+3):(u.error("Unclosed comment"),-1)}else return-1;default:if(t.substr(e+3,6)=="CDATA["){var i=t.indexOf("]]>",e+9);return r.startCDATA(),r.characters(t,e+9,i-e-9),r.endCDATA(),i+3}var o=gi(t,e),a=o.length;if(a>1&&/!doctype/i.test(o[0][0])){var s=o[1][0],l=!1,c=!1;a>3&&(/^public$/i.test(o[2][0])?(l=o[3][0],c=a>4&&o[4][0]):/^system$/i.test(o[2][0])&&(c=o[3][0]));var f=o[a-1];return r.startDTD(s,l,c),r.endDTD(),f.index+f[0].length}}return-1}function mi(t,e,r){var u=t.indexOf("?>",e);if(u){var n=t.substring(e,u).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);return n?(n[0].length,r.processingInstruction(n[1],n[2]),u+2):-1}return-1}function au(){this.attributeNames={}}au.prototype={setTagName:function(t){if(!Gt.test(t))throw new Error("invalid tagName:"+t);this.tagName=t},addValue:function(t,e,r){if(!Gt.test(t))throw new Error("invalid attribute:"+t);this.attributeNames[t]=this.length,this[this.length++]={qName:t,value:e,offset:r}},length:0,getLocalName:function(t){return this[t].localName},getLocator:function(t){return this[t].locator},getQName:function(t){return this[t].qName},getURI:function(t){return this[t].uri},getValue:function(t){return this[t].value}};function gi(t,e){var r,u=[],n=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;for(n.lastIndex=e,n.exec(t);r=n.exec(t);)if(u.push(r),r[1])return u}bt.XMLReader=iu;bt.ParseError=he;var Di=H,bi=Y,Xt=nu,su=bt,vi=bi.DOMImplementation,Kt=Di.NAMESPACE,Ei=su.ParseError,Ai=su.XMLReader;function yi(t){return t.replace(/\r[\n\u0085]/g,` `).replace(/[\r\u0085\u2028]/g,` -`)}function yi(t){this.options=t||{locator:{}}}yi.prototype.parseFromString=function(t,e){var r=this.options,u=new Ei,n=r.domBuilder||new Ue,i=r.errorHandler,o=r.locator,a=r.xmlns||{},s=/\/x?html?$/.test(e),l=s?Ht.HTML_ENTITIES:Ht.XML_ENTITIES;o&&n.setDocumentLocator(o),u.errorHandler=Ni(i,n,o),u.domBuilder=r.domBuilder||n,s&&(a[""]=Xt.HTML),a.xml=a.xml||Xt.XML;var c=r.normalizeLineEndings||Ai;return t&&typeof t=="string"?u.parse(c(t),a,l):u.errorHandler.error("invalid doc source"),n.doc};function Ni(t,e,r){if(!t){if(e instanceof Ue)return e;t=e}var u={},n=t instanceof Function;r=r||{};function i(o){var a=t[o];!a&&n&&(a=t.length==2?function(s){t(o,s)}:t),u[o]=a&&function(s){a("[xmldom "+o+"] "+s+Qe(r))}||function(){}}return i("warning"),i("error"),i("fatalError"),u}function Ue(){this.cdata=!1}function ae(t,e){e.lineNumber=t.lineNumber,e.columnNumber=t.columnNumber}Ue.prototype={startDocument:function(){this.doc=new bi().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(t,e,r,u){var n=this.doc,i=n.createElementNS(t,r||e),o=u.length;ke(this,i),this.currentElement=i,this.locator&&ae(this.locator,i);for(var a=0;a=e+r||e?new java.lang.String(t,e,r)+"":t}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(t){Ue.prototype[t]=function(){return null}});function ke(t,e){t.currentElement?t.currentElement.appendChild(e):t.doc.appendChild(e)}const Wt="USJ",z=["figure","note","sidebar","table"];Object.freeze(z);class B{constructor(e){E(this,"usj");E(this,"parentMapInternal");this.usj=e}usjChanged(){this.parentMapInternal=void 0}findSingleValue(e){const r=At.JSONPath({path:e,json:this.usj,wrap:!0});if(r===void 0||r.length===0)return;if(!Array.isArray(r[0]))return r[0];const u=At.JSONPath({path:e,json:this.usj,wrap:!1});return u.length===1&&Array.isArray(u[0])?u[0]:u}findParent(e){return this.findSingleValue(`${e}^`)}findBookId(){return this.findSingleValue('$.content[?(@.type=="book" && @.marker=="id")].code')}findChapterNode(e){const r=`$..content[?(@.type=="chapter" && @.number=="${e}")]`;return this.findSingleValue(r)}static createParentMapInternal(e,r,u){var n;u.set(e,r),e.content&&u.set(e.content,e),(n=e.content)==null||n.forEach(i=>{typeof i=="object"&&B.createParentMapInternal(i,e,u)})}createUsjParentMap(){const e=new Map;return this.usj.content&&e.set(this.usj.content,this.usj),this.usj.content.forEach(r=>{typeof r=="object"&&B.createParentMapInternal(r,this.usj,e)}),e}get parentMap(){return this.parentMapInternal?this.parentMapInternal:(this.parentMapInternal=this.createUsjParentMap(),this.parentMapInternal)}createWorkingStack(e){const r=[],{parentMap:u}=this;let n=e,i=u.get(n);for(;i!==void 0;){if(!i.content)throw new Error("Invalid parentMap: all parents should have content");if(!i.content.find((o,a)=>{if(o!==n)return!1;if(!i)throw new Error('undefined "tempParent" should not be possible');return r.unshift({parent:i,index:a}),!0}))throw new Error(`Unable to find correct parent node of ${JSON.stringify(n)}`);if(i.type===Wt)break;n=i,i=u.get(i)}return r}static convertWorkingStackToJsonPath(e){let r="$";return e.forEach(u=>{r=`${r}.content[${u.index}]`}),r}convertJsonPathToWorkingStack(e){const r=[],u=e.match(/content\[(\d+)\]/g);if(!u)throw new Error(`Malformed or unexpected jsonPath: ${e}`);let n=this.usj;return u.forEach((i,o)=>{const a=/(\d+)/.exec(i);if(!a)throw new Error(`Malformed or unexpected jsonPath: ${e}`);const s=parseInt(a[0],10);if(r.push({parent:n,index:s}),o+1=0;n--){const i=e.content[n];if(typeof i=="object"&&!u.includes(i.type))return i.content?this.findRightMostDescendantMarkerObject(i,e,u):{node:i,parent:e}}return{node:e,parent:r}}static findNextMatchingNodeUsingWorkingStack(e,r,u,n){var o;let i=e;for(;i!==void 0;){const a=typeof i=="object"&&u.includes(i.type);if(!a&&n(i,r))return i;if(!a&&typeof i=="object"&&(((o=i.content)==null?void 0:o.length)??0)>0)r.push({parent:i,index:0}),[i]=i.content;else for(i=void 0;r.length>0;){const s=r.pop();if(s&&s.index+1=0&&typeof r.content[i]!="object";)i-=1;if(i<0){if(r.type===Wt)return u.chapterNum===void 0&&(u.chapterNum=1,u.verseNum=0,u.startingContentNode=void 0),u;const s=r,l=this.parentMap.get(s);if(!l)throw new Error(`No parent found for ${JSON.stringify(r)}`);return this.findVerseRefForNode(s,l,u)}const o=r.content[i],a=B.findRightMostDescendantMarkerObject(o,r,z);return this.findVerseRefForNode(a.node,a.parent,u)}nodeToVerseRefAndOffset(e,r,u){if(typeof r=="string"&&u===void 0)throw new Error('If "node" is a string, then "nodeParent" cannot be undefined');let n;if(u===void 0?n=this.parentMap.get(r):n=Array.isArray(u)?this.parentMap.get(u):u,n===void 0)throw new Error(`Cannot find parent for ${JSON.stringify(u)}`);const i=this.findVerseRefForNode(r,n);if(!i)return;if(!i.chapterNum)throw new Error(`Could not determine chapter number for ${JSON.stringify(r)}`);const o=new fr(e,i.chapterNum.toString(),i.verseNum?i.verseNum.toString():"0");let a=0;return i.startingContentNode!==void 0&&this.findNextMatchingNode(i.startingContentNode,[],(s,l)=>{var c,p;return s===r?!0:l.find(f=>z.includes(f.parent.type))?!1:typeof s=="string"?(a+=s.length,!1):s.type===ye&&s.number!==((c=i.chapterNum)==null?void 0:c.toString())||s.type===Ne&&s.number!==((p=i.verseNum)==null?void 0:p.toString())?(a=0,!0):!1}),{verseRef:o,offset:a}}jsonPathToVerseRefAndOffset(e,r){const u=r??this.findBookId();if(!u)throw new Error("Not able to determine the book ID");const n=this.findSingleValue(e);if(!n)throw new Error(`No result found for JSONPath query: ${e}`);const i=this.findParent(e);if(!i)throw new Error(`Could not determine parent for ${e}`);const o=this.nodeToVerseRefAndOffset(u,n,i);if(!o)throw new Error(`Could not determine VerseRef that corresponds to ${e}`);return o}verseRefToUsjContentLocation(e,r=0){if(r<0)throw new Error("offset must be >= 0");const u=this.findBookId()??e.book;if(!u)throw new Error("Not able to determine the book ID");if(u!==e.book)throw new Error(`Book IDs don't match: USJ=${u}, VerseRef=${e.book}`);const n=this.findChapterNode(e.chapterNum);if(n===void 0)throw new Error(`Could not find ${u} chapter ${e.chapterNum}`);let i=!1,o="";const a=e.verse,s=this.findNextMatchingNode(n,z,(f,h)=>f===n?e.verseNum===0?(o=B.convertWorkingStackToJsonPath(h),!0):!1:typeof f!="object"?!1:f.type===ye?(i=!0,!0):f.type===Ne&&f.number!==void 0&&f.number===a?(o=B.convertWorkingStackToJsonPath(h),!0):!1);if(i||s===void 0||typeof s=="string")throw new Error(`Verse ${a} not found in ${u} ${e.chapterNum}`);if(r===0)return{node:s,offset:0,jsonPath:o};let l=0,c=0,p;return this.findNextMatchingNode(s,z,(f,h)=>{if(f===s)return!1;if(typeof f=="string"){if(l+=f.length,l>r)return o=B.convertWorkingStackToJsonPath(h),c=r-l+f.length,p=f,!0}else if(f.type===ye||f.type===Ne)return!0;return!1}),{node:p??s,offset:c,jsonPath:o}}findNextLocationOfMatchingText(e,r,u=1e3){let n="",i=0,o=0,a=0;if(B.findNextMatchingNodeUsingWorkingStack(e.node,this.convertJsonPathToWorkingStack(e.jsonPath),z,p=>{if(typeof p!="string")return!1;i+=p.length,n=`${n}${p}`;const f=n.indexOf(r);return f<0?(o+=n.length,n.length>r.length&&(n=n.substring(n.length-r.length)),o-=n.length,i>u):(a=o+f,!0)}),a<=0)return;i=0;let s=0,l=[];const c=B.findNextMatchingNodeUsingWorkingStack(e.node,this.convertJsonPathToWorkingStack(e.jsonPath),z,(p,f)=>typeof p!="string"||(i+=p.length,i{if(typeof o!="string")return!1;if(n>=o.length)return n-=o.length,!1;let a=o;if(n>0&&(a=a.substring(n),n=0),i+a.lengthi===r.node&&(typeof i=="object"||r.jsonPath===B.convertWorkingStackToJsonPath(o))?!0:typeof i!="string"?!1:(n=`${n}${i}`,n.length>u&&(n=n.substring(0,u)),n.length>=u)),n}static removeContentNodesFromArray(e,r){let u=0;for(let n=e.length-1;n>=0;n--){const i=e[n];r(i)?(e.splice(n,1),u+=1):typeof i!="string"&&i.content&&(u+=this.removeContentNodesFromArray(i.content,r))}return u}removeContentNodes(e){const r=B.removeContentNodesFromArray(this.usj.content,e);return this.usjChanged(),r}}exports.AsyncVariable=hu;exports.CHAPTER_TYPE=ye;exports.Collator=du;exports.DateTimeFormat=Yt;exports.DocumentCombiner=tr;exports.FIRST_SCR_BOOK_NUM=vr;exports.FIRST_SCR_CHAPTER_NUM=Ar;exports.FIRST_SCR_VERSE_NUM=yr;exports.LAST_SCR_BOOK_NUM=Er;exports.Mutex=ur;exports.MutexMap=wu;exports.NonValidatingDocumentCombiner=Su;exports.NumberFormat=nr;exports.PlatformEventEmitter=Zt;exports.UnsubscriberAsyncList=Bu;exports.UsjReaderWriter=B;exports.VERSE_TYPE=Ne;exports.aggregateUnsubscriberAsyncs=vn;exports.aggregateUnsubscribers=bn;exports.at=Wu;exports.charAt=ee;exports.codePointAt=Yu;exports.compareScrRefs=mn;exports.createSyncProxyForAsyncObject=Nu;exports.debounce=gu;exports.deepClone=ce;exports.deepEqual=Br;exports.defaultScrRef=ln;exports.deserialize=Or;exports.endsWith=dr;exports.ensureArray=nt;exports.escapeStringRegexp=an;exports.formatBytes=Xn;exports.formatReplacementString=Qu;exports.formatScrRef=Dn;exports.getAllObjectFunctionNames=yu;exports.getChaptersForBook=Nr;exports.getCurrentLocale=Hn;exports.getErrorMessage=Eu;exports.getLocalizeKeyForScrollGroupId=Cr;exports.getLocalizeKeysForScrollGroupIds=gn;exports.getLocalizedIdFromBookNumber=dn;exports.groupBy=Du;exports.htmlEncode=Jn;exports.includes=mr;exports.indexOf=le;exports.isLocalizeKey=on;exports.isSerializable=Gn;exports.isString=Qt;exports.isSubset=Tr;exports.lastIndexOf=gr;exports.localizedStringsDocumentSchema=Rr;exports.menuDocumentSchema=kr;exports.newGuid=mu;exports.normalize=en;exports.offsetBook=fn;exports.offsetChapter=pn;exports.offsetVerse=hn;exports.ordinalCompare=tn;exports.padEnd=rn;exports.padStart=un;exports.projectSettingsDocumentSchema=xr;exports.scrRefToBBBCCCVVV=Ke;exports.serialize=We;exports.settingsDocumentSchema=Ir;exports.slice=nn;exports.split=Xe;exports.startsWith=it;exports.stringLength=w;exports.substring=P;exports.toArray=Dr;exports.transformAndEnsureRegExpArray=cn;exports.transformAndEnsureRegExpRegExpArray=sn;exports.wait=er;exports.waitForDuration=Au; +`)}function Ni(t){this.options=t||{locator:{}}}Ni.prototype.parseFromString=function(t,e){var r=this.options,u=new Ai,n=r.domBuilder||new ze,i=r.errorHandler,o=r.locator,a=r.xmlns||{},s=/\/x?html?$/.test(e),l=s?Xt.HTML_ENTITIES:Xt.XML_ENTITIES;o&&n.setDocumentLocator(o),u.errorHandler=Ci(i,n,o),u.domBuilder=r.domBuilder||n,s&&(a[""]=Kt.HTML),a.xml=a.xml||Kt.XML;var c=r.normalizeLineEndings||yi;return t&&typeof t=="string"?u.parse(c(t),a,l):u.errorHandler.error("invalid doc source"),n.doc};function Ci(t,e,r){if(!t){if(e instanceof ze)return e;t=e}var u={},n=t instanceof Function;r=r||{};function i(o){var a=t[o];!a&&n&&(a=t.length==2?function(s){t(o,s)}:t),u[o]=a&&function(s){a("[xmldom "+o+"] "+s+et(r))}||function(){}}return i("warning"),i("error"),i("fatalError"),u}function ze(){this.cdata=!1}function ae(t,e){e.lineNumber=t.lineNumber,e.columnNumber=t.columnNumber}ze.prototype={startDocument:function(){this.doc=new vi().createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(t,e,r,u){var n=this.doc,i=n.createElementNS(t,r||e),o=u.length;qe(this,i),this.currentElement=i,this.locator&&ae(this.locator,i);for(var a=0;a=e+r||e?new java.lang.String(t,e,r)+"":t}"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(t){ze.prototype[t]=function(){return null}});function qe(t,e){t.currentElement?t.currentElement.appendChild(e):t.doc.appendChild(e)}const Yt="USJ",U=["figure","note","sidebar","table"];Object.freeze(U);class B{constructor(e){E(this,"usj");E(this,"parentMapInternal");this.usj=e}usjChanged(){this.parentMapInternal=void 0}findSingleValue(e){const r=yt.JSONPath({path:e,json:this.usj,wrap:!0});if(r===void 0||r.length===0)return;if(!Array.isArray(r[0]))return r[0];const u=yt.JSONPath({path:e,json:this.usj,wrap:!1});return u.length===1&&Array.isArray(u[0])?u[0]:u}findParent(e){return this.findSingleValue(`${e}^`)}findBookId(){return this.findSingleValue('$.content[?(@.type=="book" && @.marker=="id")].code')}findChapterNode(e){const r=`$..content[?(@.type=="chapter" && @.number=="${e}")]`;return this.findSingleValue(r)}static createParentMapInternal(e,r,u){var n;u.set(e,r),e.content&&u.set(e.content,e),(n=e.content)==null||n.forEach(i=>{typeof i=="object"&&B.createParentMapInternal(i,e,u)})}createUsjParentMap(){const e=new Map;return this.usj.content&&e.set(this.usj.content,this.usj),this.usj.content.forEach(r=>{typeof r=="object"&&B.createParentMapInternal(r,this.usj,e)}),e}get parentMap(){return this.parentMapInternal?this.parentMapInternal:(this.parentMapInternal=this.createUsjParentMap(),this.parentMapInternal)}createWorkingStack(e){const r=[],{parentMap:u}=this;let n=e,i=u.get(n);for(;i!==void 0;){if(!i.content)throw new Error("Invalid parentMap: all parents should have content");if(!i.content.find((o,a)=>{if(o!==n)return!1;if(!i)throw new Error('undefined "tempParent" should not be possible');return r.unshift({parent:i,index:a}),!0}))throw new Error(`Unable to find correct parent node of ${JSON.stringify(n)}`);if(i.type===Yt)break;n=i,i=u.get(i)}return r}static convertWorkingStackToJsonPath(e){let r="$";return e.forEach(u=>{r=`${r}.content[${u.index}]`}),r}convertJsonPathToWorkingStack(e){const r=[],u=e.match(/content\[(\d+)\]/g);if(!u)throw new Error(`Malformed or unexpected jsonPath: ${e}`);let n=this.usj;return u.forEach((i,o)=>{const a=/(\d+)/.exec(i);if(!a)throw new Error(`Malformed or unexpected jsonPath: ${e}`);const s=parseInt(a[0],10);if(r.push({parent:n,index:s}),o+1=0;n--){const i=e.content[n];if(typeof i=="object"&&!u.includes(i.type))return i.content?this.findRightMostDescendantMarkerObject(i,e,u):{node:i,parent:e}}return{node:e,parent:r}}static findNextMatchingNodeUsingWorkingStack(e,r,u,n){var o;let i=e;for(;i!==void 0;){const a=typeof i=="object"&&u.includes(i.type);if(!a&&n(i,r))return i;if(!a&&typeof i=="object"&&(((o=i.content)==null?void 0:o.length)??0)>0)r.push({parent:i,index:0}),[i]=i.content;else for(i=void 0;r.length>0;){const s=r.pop();if(s&&s.index+1=0&&typeof r.content[i]!="object";)i-=1;if(i<0){if(r.type===Yt)return u.chapterNum===void 0&&(u.chapterNum=1,u.verseNum=0,u.startingContentNode=void 0),u;const s=r,l=this.parentMap.get(s);if(!l)throw new Error(`No parent found for ${JSON.stringify(r)}`);return this.findVerseRefForNode(s,l,u)}const o=r.content[i],a=B.findRightMostDescendantMarkerObject(o,r,U);return this.findVerseRefForNode(a.node,a.parent,u)}nodeToVerseRefAndOffset(e,r,u){if(typeof r=="string"&&u===void 0)throw new Error('If "node" is a string, then "nodeParent" cannot be undefined');let n;if(u===void 0?n=this.parentMap.get(r):n=Array.isArray(u)?this.parentMap.get(u):u,n===void 0)throw new Error(`Cannot find parent for ${JSON.stringify(u)}`);const i=this.findVerseRefForNode(r,n);if(!i)return;if(!i.chapterNum)throw new Error(`Could not determine chapter number for ${JSON.stringify(r)}`);const o=new fr(e,i.chapterNum.toString(),i.verseNum?i.verseNum.toString():"0");let a=0;return i.startingContentNode!==void 0&&this.findNextMatchingNode(i.startingContentNode,[],(s,l)=>{var c,f;return s===r?!0:l.find(p=>U.includes(p.parent.type))?!1:typeof s=="string"?(a+=s.length,!1):s.type===ye&&s.number!==((c=i.chapterNum)==null?void 0:c.toString())||s.type===Ne&&s.number!==((f=i.verseNum)==null?void 0:f.toString())?(a=0,!0):!1}),{verseRef:o,offset:a}}jsonPathToVerseRefAndOffset(e,r){const u=r??this.findBookId();if(!u)throw new Error("Not able to determine the book ID");const n=this.findSingleValue(e);if(!n)throw new Error(`No result found for JSONPath query: ${e}`);const i=this.findParent(e);if(!i)throw new Error(`Could not determine parent for ${e}`);const o=this.nodeToVerseRefAndOffset(u,n,i);if(!o)throw new Error(`Could not determine VerseRef that corresponds to ${e}`);return o}verseRefToUsjContentLocation(e,r=0){if(r<0)throw new Error("offset must be >= 0");const u=this.findBookId()??e.book;if(!u)throw new Error("Not able to determine the book ID");if(u!==e.book)throw new Error(`Book IDs don't match: USJ=${u}, VerseRef=${e.book}`);const n=this.findChapterNode(e.chapterNum);if(n===void 0)throw new Error(`Could not find ${u} chapter ${e.chapterNum}`);let i=!1,o="";const a=e.verse,s=this.findNextMatchingNode(n,U,(p,h)=>p===n?e.verseNum===0?(o=B.convertWorkingStackToJsonPath(h),!0):!1:typeof p!="object"?!1:p.type===ye?(i=!0,!0):p.type===Ne&&p.number!==void 0&&p.number===a?(o=B.convertWorkingStackToJsonPath(h),!0):!1);if(i||s===void 0||typeof s=="string")throw new Error(`Verse ${a} not found in ${u} ${e.chapterNum}`);if(r===0)return{node:s,offset:0,jsonPath:o};let l=0,c=0,f;return this.findNextMatchingNode(s,U,(p,h)=>{if(p===s)return!1;if(typeof p=="string"){if(l+=p.length,l>r)return o=B.convertWorkingStackToJsonPath(h),c=r-l+p.length,f=p,!0}else if(p.type===ye||p.type===Ne)return!0;return!1}),{node:f??s,offset:c,jsonPath:o}}findNextLocationOfMatchingText(e,r,u=1e3){let n="",i=0,o=0,a=0;if(B.findNextMatchingNodeUsingWorkingStack(e.node,this.convertJsonPathToWorkingStack(e.jsonPath),U,f=>{if(typeof f!="string")return!1;i+=f.length,n=`${n}${f}`;const p=n.indexOf(r);return p<0?(o+=n.length,n.length>r.length&&(n=n.substring(n.length-r.length)),o-=n.length,i>u):(a=o+p,!0)}),a<=0)return;i=0;let s=0,l=[];const c=B.findNextMatchingNodeUsingWorkingStack(e.node,this.convertJsonPathToWorkingStack(e.jsonPath),U,(f,p)=>typeof f!="string"||(i+=f.length,i{if(typeof o!="string")return!1;if(n>=o.length)return n-=o.length,!1;let a=o;if(n>0&&(a=a.substring(n),n=0),i+a.lengthi===r.node&&(typeof i=="object"||r.jsonPath===B.convertWorkingStackToJsonPath(o))?!0:typeof i!="string"?!1:(n=`${n}${i}`,n.length>u&&(n=n.substring(0,u)),n.length>=u)),n}static removeContentNodesFromArray(e,r){let u=0;for(let n=e.length-1;n>=0;n--){const i=e[n];r(i)?(e.splice(n,1),u+=1):typeof i!="string"&&i.content&&(u+=this.removeContentNodesFromArray(i.content,r))}return u}removeContentNodes(e){const r=B.removeContentNodesFromArray(this.usj.content,e);return this.usjChanged(),r}}exports.AsyncVariable=du;exports.CHAPTER_TYPE=ye;exports.Collator=mu;exports.DateTimeFormat=Zt;exports.DocumentCombiner=tr;exports.FIRST_SCR_BOOK_NUM=Er;exports.FIRST_SCR_CHAPTER_NUM=yr;exports.FIRST_SCR_VERSE_NUM=Nr;exports.LAST_SCR_BOOK_NUM=Ar;exports.Mutex=ur;exports.MutexMap=Su;exports.NonValidatingDocumentCombiner=Bu;exports.NumberFormat=nr;exports.PlatformEventEmitter=Qt;exports.UnsubscriberAsyncList=Tu;exports.UsjReaderWriter=B;exports.VERSE_TYPE=Ne;exports.aggregateUnsubscriberAsyncs=En;exports.aggregateUnsubscribers=vn;exports.at=Yu;exports.charAt=ee;exports.codePointAt=Zu;exports.compareScrRefs=gn;exports.createSyncProxyForAsyncObject=Cu;exports.debounce=Du;exports.deepClone=ce;exports.deepEqual=Tr;exports.defaultScrRef=fn;exports.deserialize=xr;exports.endsWith=dr;exports.ensureArray=it;exports.escapeStringRegexp=sn;exports.formatBytes=Kn;exports.formatReplacementString=en;exports.formatReplacementStringToArray=mr;exports.formatScrRef=bn;exports.getAllObjectFunctionNames=Nu;exports.getChaptersForBook=Cr;exports.getCurrentLocale=Xn;exports.getErrorMessage=Au;exports.getLocalizeKeyForScrollGroupId=wr;exports.getLocalizeKeysForScrollGroupIds=Dn;exports.getLocalizedIdFromBookNumber=mn;exports.groupBy=bu;exports.htmlEncode=Hn;exports.includes=gr;exports.indexOf=le;exports.isLocalizeKey=an;exports.isSerializable=Jn;exports.isString=Ce;exports.isSubset=Or;exports.lastIndexOf=Dr;exports.localizedStringsDocumentSchema=kr;exports.menuDocumentSchema=qr;exports.newGuid=gu;exports.normalize=tn;exports.offsetBook=pn;exports.offsetChapter=hn;exports.offsetVerse=dn;exports.ordinalCompare=rn;exports.padEnd=un;exports.padStart=nn;exports.projectSettingsDocumentSchema=Ir;exports.scrRefToBBBCCCVVV=We;exports.serialize=Ye;exports.settingsDocumentSchema=Fr;exports.slice=on;exports.split=Ke;exports.startsWith=ot;exports.stringLength=w;exports.substring=K;exports.toArray=br;exports.transformAndEnsureRegExpArray=ln;exports.transformAndEnsureRegExpRegExpArray=cn;exports.wait=er;exports.waitForDuration=yu; //# sourceMappingURL=index.cjs.map diff --git a/lib/platform-bible-utils/dist/index.cjs.map b/lib/platform-bible-utils/dist/index.cjs.map index adf0d397c3..92244419e6 100644 --- a/lib/platform-bible-utils/dist/index.cjs.map +++ b/lib/platform-bible-utils/dist/index.cjs.map @@ -1 +1 @@ -{"version":3,"file":"index.cjs","sources":["../src/async-variable.ts","../src/intl-collator.ts","../src/intl-date-time-format.ts","../src/platform-event-emitter.model.ts","../src/util.ts","../src/document-combiner.ts","../src/mutex.ts","../src/mutex-map.ts","../src/non-validating-document-combiner.ts","../src/intl-number-format.ts","../src/unsubscriber-async-list.ts","../../../node_modules/@sillsdev/scripture/dist/index.es.js","../../../node_modules/char-regex/index.js","../../../node_modules/stringz/dist/index.js","../src/array-util.ts","../src/string-util.ts","../src/scripture-util.ts","../src/unsubscriber.ts","../src/usj-reader-writer.model.ts","../../../node_modules/fast-equals/dist/esm/index.mjs","../src/equality-checking.ts","../src/subset-checking.ts","../src/serialization.ts","../src/intl-util.ts","../src/number-utils.ts","../src/settings.model.ts","../src/localized-strings.model.ts","../src/menus.model.ts","../../../node_modules/@xmldom/xmldom/lib/conventions.js","../../../node_modules/@xmldom/xmldom/lib/dom.js","../../../node_modules/@xmldom/xmldom/lib/entities.js","../../../node_modules/@xmldom/xmldom/lib/sax.js","../../../node_modules/@xmldom/xmldom/lib/dom-parser.js","../../../node_modules/@biblionexus-foundation/scripture-utilities/dist/index.js","../src/usj-reader-writer.ts"],"sourcesContent":["/** This class provides a convenient way for one task to wait on a variable that another task sets. */\nexport default class AsyncVariable {\n private readonly variableName: string;\n private readonly promiseToValue: Promise;\n private resolver: ((value: T) => void) | undefined;\n private rejecter: ((reason: string | undefined) => void) | undefined;\n\n /**\n * Creates an instance of the class\n *\n * @param variableName Name to use when logging about this variable\n * @param rejectIfNotSettledWithinMS Milliseconds to wait before verifying if the promise was\n * settled (resolved or rejected); will reject if it has not settled by that time. Use -1 if you\n * do not want a timeout at all. Defaults to 10000 ms\n */\n constructor(variableName: string, rejectIfNotSettledWithinMS: number = 10000) {\n this.variableName = variableName;\n this.promiseToValue = new Promise((resolve, reject) => {\n this.resolver = resolve;\n this.rejecter = reject;\n });\n if (rejectIfNotSettledWithinMS > 0) {\n setTimeout(() => {\n if (this.rejecter) {\n this.rejecter(`Timeout reached when waiting for ${this.variableName} to settle`);\n this.complete();\n }\n }, rejectIfNotSettledWithinMS);\n }\n Object.seal(this);\n }\n\n /**\n * Get this variable's promise to a value. This always returns the same promise even after the\n * value has been resolved or rejected.\n *\n * @returns The promise for the value to be set\n */\n get promise(): Promise {\n return this.promiseToValue;\n }\n\n /**\n * A simple way to see if this variable's promise was resolved or rejected already\n *\n * @returns Whether the variable was already resolved or rejected\n */\n get hasSettled(): boolean {\n return Object.isFrozen(this);\n }\n\n /**\n * Resolve this variable's promise to the given value\n *\n * @param value This variable's promise will resolve to this value\n * @param throwIfAlreadySettled Determines whether to throw if the variable was already resolved\n * or rejected. Defaults to `false`\n */\n resolveToValue(value: T, throwIfAlreadySettled: boolean = false): void {\n if (this.resolver) {\n console.debug(`${this.variableName} is being resolved now`);\n this.resolver(value);\n this.complete();\n } else {\n if (throwIfAlreadySettled) throw Error(`${this.variableName} was already settled`);\n console.debug(`Ignoring subsequent resolution of ${this.variableName}`);\n }\n }\n\n /**\n * Reject this variable's promise for the value with the given reason\n *\n * @param reason This variable's promise will be rejected with this reason\n * @param throwIfAlreadySettled Determines whether to throw if the variable was already resolved\n * or rejected. Defaults to `false`\n */\n rejectWithReason(reason: string, throwIfAlreadySettled: boolean = false): void {\n if (this.rejecter) {\n console.debug(`${this.variableName} is being rejected now`);\n this.rejecter(reason);\n this.complete();\n } else {\n if (throwIfAlreadySettled) throw Error(`${this.variableName} was already settled`);\n console.debug(`Ignoring subsequent rejection of ${this.variableName}`);\n }\n }\n\n /** Prevent any further updates to this variable */\n private complete(): void {\n this.resolver = undefined;\n this.rejecter = undefined;\n Object.freeze(this);\n }\n}\n","/** Enables language-sensitive string comparison. Wraps Intl.Collator */\nexport default class Collator {\n private collator: Intl.Collator;\n\n constructor(locales?: string | string[], options?: Intl.CollatorOptions) {\n this.collator = new Intl.Collator(locales, options);\n }\n\n /**\n * Compares two strings according to the sort order of this Collator object\n *\n * @param string1 String to compare\n * @param string2 String to compare\n * @returns A number indicating how string1 and string2 compare to each other according to the\n * sort order of this Collator object. Negative value if string1 comes before string2. Positive\n * value if string1 comes after string2. 0 if they are considered equal.\n */\n compare(string1: string, string2: string): number {\n return this.collator.compare(string1, string2);\n }\n\n /**\n * Returns a new object with properties reflecting the locale and collation options computed\n * during initialization of this collator object.\n *\n * @returns ResolvedCollatorOptions object\n */\n resolvedOptions(): Intl.ResolvedCollatorOptions {\n return this.collator.resolvedOptions();\n }\n}\n","/** Enables language-sensitive data and time formatting. Wraps Intl.DateTimeFormat */\nexport default class DateTimeFormat {\n private dateTimeFormatter: Intl.DateTimeFormat;\n\n constructor(locales?: string | string[], options?: Intl.DateTimeFormatOptions) {\n this.dateTimeFormatter = new Intl.DateTimeFormat(locales, options);\n }\n\n /**\n * Formats a date according to the locale and formatting option for this DateTimeFormat object\n *\n * @param date The date to format\n * @returns String representing the given date formatted according to the locale and formatting\n * options of this DateTimeFormat object\n */\n format(date: Date): string {\n return this.dateTimeFormatter.format(date);\n }\n\n /**\n * Formats a date range in the most concise way based on the locales and options provided when\n * instantiating this DateTimeFormat object\n *\n * @param startDate Date object representing start of the date range\n * @param endDate Date object representing the end of the date range\n * @returns String representing the given date range formatted according to the locale and\n * formatting options of this DateTimeFormat object\n */\n formatRange(startDate: Date, endDate: Date): string {\n return this.dateTimeFormatter.formatRange(startDate, endDate);\n }\n\n /**\n * Returns an array of locale-specific tokens representing each part of the formatted date range\n * produced by this DateTimeFormat object\n *\n * @param startDate Date object representing start of the date range\n * @param endDate Date object representing the end of the date range\n * @returns Array of DateTimeRangeFormatPart objects\n */\n formatRangeToParts(startDate: Date, endDate: Date): Intl.DateTimeRangeFormatPart[] {\n return this.dateTimeFormatter.formatRangeToParts(startDate, endDate);\n }\n\n /**\n * Allows locale-aware formatting of strings produced by this DateTimeFormat object\n *\n * @param date The date to format\n * @returns Array of DateTimeFormatPart objects\n */\n formatToParts(date: Date): Intl.DateTimeFormatPart[] {\n return this.dateTimeFormatter.formatToParts(date);\n }\n\n /**\n * Returns a new object with properties reflecting the locale and date and time formatting options\n * computed during initialization of this DateTimeFormat object\n *\n * @returns ResolvedDateTimeFormatOptions object\n */\n resolvedOptions(): Intl.ResolvedDateTimeFormatOptions {\n return this.dateTimeFormatter.resolvedOptions();\n }\n}\n","/** Interfaces, classes, and functions related to events and event emitters */\n\nimport { Dispose } from './disposal.model';\nimport { PlatformEvent, PlatformEventHandler } from './platform-event';\n\n/**\n * Event manager - accepts subscriptions to an event and runs the subscription callbacks when the\n * event is emitted Use eventEmitter.event(callback) to subscribe to the event. Use\n * eventEmitter.emit(event) to run the subscriptions. Generally, this EventEmitter should be\n * private, and its event should be public. That way, the emitter is not publicized, but anyone can\n * subscribe to the event.\n */\nexport default class PlatformEventEmitter implements Dispose {\n /**\n * Subscribes a function to run when this event is emitted.\n *\n * @param callback Function to run with the event when it is emitted\n * @returns Unsubscriber function to run to stop calling the passed-in function when the event is\n * emitted\n * @alias event\n */\n subscribe = this.event;\n\n /** All callback functions that will run when this event is emitted. Lazy loaded */\n private subscriptions?: PlatformEventHandler[];\n /** Event for listeners to subscribe to. Lazy loaded */\n private lazyEvent?: PlatformEvent;\n /** Whether this emitter has been disposed */\n private isDisposed = false;\n\n /**\n * Event for listeners to subscribe to. Subscribes a function to run when this event is emitted.\n * Use like `const unsubscriber = event(callback)`\n *\n * @param callback Function to run with the event when it is emitted\n * @returns Unsubscriber function to run to stop calling the passed-in function when the event is\n * emitted\n */\n get event(): PlatformEvent {\n this.assertNotDisposed();\n\n if (!this.lazyEvent) {\n this.lazyEvent = (callback) => {\n if (!callback || typeof callback !== 'function')\n throw new Error(`Event handler callback must be a function!`);\n\n // Initialize this.subscriptions if it does not exist\n if (!this.subscriptions) this.subscriptions = [];\n\n this.subscriptions.push(callback);\n\n return () => {\n if (!this.subscriptions) return false; // Did not find any subscribed callbacks\n\n const callbackIndex = this.subscriptions.indexOf(callback);\n\n if (callbackIndex < 0) return false; // Did not find this callback in the subscriptions\n\n // Remove the callback\n this.subscriptions.splice(callbackIndex, 1);\n\n return true;\n };\n };\n }\n return this.lazyEvent;\n }\n\n /** Disposes of this event, preparing it to release from memory */\n dispose = () => {\n return this.disposeFn();\n };\n\n /**\n * Runs the subscriptions for the event\n *\n * @param event Event data to provide to subscribed callbacks\n */\n emit = (event: T) => {\n // Do not do anything other than emitFn here. This emit is just binding `this` to emitFn\n this.emitFn(event);\n };\n\n /**\n * Function that runs the subscriptions for the event. Added here so children can override emit\n * and still call the base functionality. See NetworkEventEmitter.emit for example\n */\n protected emitFn(event: T) {\n this.assertNotDisposed();\n\n // Clone the subscriptions array before iterating over the callbacks so the callback index\n // doesn't get messed up if someone subscribes or unsubscribes inside one of the callbacks\n const emitCallbacks = [...(this.subscriptions ?? [])];\n emitCallbacks.forEach((callback) => callback(event));\n }\n\n /** Check to make sure this emitter is not disposed. Throw if it is */\n protected assertNotDisposed() {\n if (this.isDisposed) throw new Error('Emitter is disposed');\n }\n\n /**\n * Disposes of this event, preparing it to release from memory. Added here so children can\n * override emit and still call the base functionality.\n */\n protected disposeFn() {\n this.assertNotDisposed();\n\n this.isDisposed = true;\n this.subscriptions = undefined;\n this.lazyEvent = undefined;\n return Promise.resolve(true);\n }\n}\n","/** Collection of functions, objects, and types that are used as helpers in other services. */\n\n// Thanks to blubberdiblub at https://stackoverflow.com/a/68141099/217579\nexport function newGuid(): string {\n return '00-0-4-1-000'.replace(/[^-]/g, (s) =>\n // @ts-expect-error ts(2363) this works fine\n // eslint-disable-next-line no-bitwise\n (((Math.random() + ~~s) * 0x10000) >> s).toString(16).padStart(4, '0'),\n );\n}\n\n// thanks to DRAX at https://stackoverflow.com/a/9436948\n/**\n * Determine whether the object is a string\n *\n * @param o Object to determine if it is a string\n * @returns True if the object is a string; false otherwise\n */\nexport function isString(o: unknown): o is string {\n return typeof o === 'string' || o instanceof String;\n}\n\n/**\n * If deepClone isn't used when copying properties between objects, you may be left with dangling\n * references between the source and target of property copying operations.\n *\n * @param obj Object to clone\n * @returns Duplicate copy of `obj` without any references back to the original one\n */\nexport function deepClone(obj: T): T {\n // Assert the return type matches what is expected\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n return JSON.parse(JSON.stringify(obj)) as T;\n}\n\n/**\n * Get a function that reduces calls to the function passed in\n *\n * @param fn The function to debounce\n * @param delay How much delay in milliseconds after the most recent call to the debounced function\n * to call the function\n * @returns Function that, when called, only calls the function passed in at maximum every delay ms\n */\n// We don't know the parameter types since this function can be anything\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce void>(fn: T, delay = 300): T {\n if (isString(fn)) throw new Error('Tried to debounce a string! Could be XSS');\n let timeout: ReturnType;\n // Ensure the right return type.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n return ((...args) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn(...args), delay);\n }) as T;\n}\n\n/**\n * Groups each item in the array of items into a map according to the keySelector\n *\n * @param items Array of items to group by\n * @param keySelector Function to run on each item to get the key for the group to which it belongs\n * @param valueSelector Function to run on each item to get the value it should have in the group\n * (like map function). If not provided, uses the item itself\n * @returns Map of keys to groups of values corresponding to each item\n */\nexport function groupBy(items: T[], keySelector: (item: T) => K): Map>;\nexport function groupBy(\n items: T[],\n keySelector: (item: T) => K,\n valueSelector: (item: T, key: K) => V,\n): Map>;\nexport function groupBy(\n items: T[],\n keySelector: (item: T) => K,\n valueSelector?: (item: T, key: K) => V,\n): Map> {\n const map = new Map>();\n items.forEach((item) => {\n const key = keySelector(item);\n const group = map.get(key);\n const value = valueSelector ? valueSelector(item, key) : item;\n if (group) group.push(value);\n else map.set(key, [value]);\n });\n return map;\n}\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\ntype ErrorWithMessage = {\n message: string;\n};\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\nfunction isErrorWithMessage(error: unknown): error is ErrorWithMessage {\n return (\n typeof error === 'object' &&\n // We're potentially dealing with objects we didn't create, so they might contain `null`\n // eslint-disable-next-line no-null/no-null\n error !== null &&\n 'message' in error &&\n // Type assert `error` to check it's `message`.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n typeof (error as Record).message === 'string'\n );\n}\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\n/**\n * Function to get an error from the object (useful for getting an error in a catch block)\n *\n * @param error Error object whose message to get\n * @returns Message of the error - if object has message, returns message. Otherwise tries to\n * stringify\n */\nfunction toErrorWithMessage(maybeError: unknown): ErrorWithMessage {\n if (isErrorWithMessage(maybeError)) return maybeError;\n\n try {\n return new Error(JSON.stringify(maybeError));\n } catch {\n // fallback in case there's an error stringifying the maybeError\n // like with circular references for example.\n return new Error(String(maybeError));\n }\n}\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\n/**\n * Function to get an error message from the object (useful for getting error message in a catch\n * block)\n *\n * @example `try {...} catch (e) { logger.info(getErrorMessage(e)) }`\n *\n * @param error Error object whose message to get\n * @returns Message of the error - if object has message, returns message. Otherwise tries to\n * stringify\n */\nexport function getErrorMessage(error: unknown) {\n return toErrorWithMessage(error).message;\n}\n\n/** Asynchronously waits for the specified number of milliseconds. (wraps setTimeout in a promise) */\nexport function wait(ms: number) {\n // eslint-disable-next-line no-promise-executor-return\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Runs the specified function and will timeout if it takes longer than the specified wait time\n *\n * @param fn The function to run\n * @param maxWaitTimeInMS The maximum amount of time to wait for the function to resolve\n * @returns Promise that resolves to the resolved value of the function or undefined if it ran\n * longer than the specified wait time\n */\nexport function waitForDuration(fn: () => Promise, maxWaitTimeInMS: number) {\n const timeout = wait(maxWaitTimeInMS).then(() => undefined);\n return Promise.any([timeout, fn()]);\n}\n\n/**\n * Get all functions on an object and its prototype chain (so we don't miss any class methods or any\n * object methods). Note that the functions on the final item in the prototype chain (i.e., Object)\n * are skipped to avoid including functions like `__defineGetter__`, `__defineSetter__`, `toString`,\n * etc.\n *\n * @param obj Object whose functions to get\n * @param _objId Optional ID of the object to use for debug logging\n * @returns Array of all function names on an object\n */\n// Note: lodash has something that MIGHT do the same thing as this. Investigate for https://github.com/paranext/paranext-core/issues/134\nexport function getAllObjectFunctionNames(\n obj: { [property: string]: unknown },\n // Leaving it here for debugging\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _objId: string = 'obj',\n): Set {\n const objectFunctionNames = new Set();\n\n // Get all function properties directly defined on the object\n Object.getOwnPropertyNames(obj).forEach((property) => {\n try {\n if (typeof obj[property] === 'function') objectFunctionNames.add(property);\n } catch (error) {\n // Too noisy - only reenable if you need more details\n // console.trace(`Skipping ${property} on ${objId} due to error: ${error}`);\n }\n });\n\n // Walk up the prototype chain and get additional function properties, skipping the functions\n // provided by the final (Object) prototype\n let objectPrototype = Object.getPrototypeOf(obj);\n while (objectPrototype && Object.getPrototypeOf(objectPrototype)) {\n Object.getOwnPropertyNames(objectPrototype).forEach((property) => {\n try {\n if (typeof obj[property] === 'function') objectFunctionNames.add(property);\n } catch (error) {\n // Too noisy - only reenable if you need more details\n // console.trace(`Skipping ${property} on ${objId}'s prototype due to error: ${error}`);\n }\n });\n objectPrototype = Object.getPrototypeOf(objectPrototype);\n }\n\n return objectFunctionNames;\n}\n\n/**\n * Creates a synchronous proxy for an asynchronous object. The proxy allows calling methods on an\n * object that is asynchronously fetched using a provided asynchronous function.\n *\n * @param getObject - A function that returns a promise resolving to the object whose asynchronous\n * methods to call.\n * @param objectToProxy - An optional object that is the object that is proxied. If a property is\n * accessed that does exist on this object, it will be returned. If a property is accessed that\n * does not exist on this object, it will be considered to be an asynchronous method called on the\n * object returned from getObject.\n * @returns A synchronous proxy for the asynchronous object.\n */\nexport function createSyncProxyForAsyncObject(\n getObject: (args?: unknown[]) => Promise,\n objectToProxy: Partial = {},\n): T {\n // objectToProxy will have only the synchronously accessed properties of T on it, and this proxy\n // makes the async methods that do not exist yet available synchronously so we have all of T\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n return new Proxy(objectToProxy as T, {\n get(target, prop) {\n // We don't have any type information for T, so we assume methodName exists on it and will let JavaScript throw if it doesn't exist\n // @ts-expect-error 7053\n if (prop in target) return target[prop];\n return async (...args: unknown[]) => {\n // 7053: We don't have any type information for T, so we assume methodName exists on it and will let JavaScript throw if it doesn't exist\n // 2556: The args here are the parameters for the method specified\n // @ts-expect-error 7053 2556\n return (await getObject())[prop](...args);\n };\n },\n });\n}\n\n/** Within type T, recursively change all properties to be optional */\nexport type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T;\n\n/** Within type T, recursively change properties that were of type A to be of type B */\nexport type ReplaceType = T extends A\n ? B\n : T extends object\n ? { [K in keyof T]: ReplaceType }\n : T;\n\n// Thanks to jcalz at https://stackoverflow.com/a/50375286\n/**\n * Converts a union type to an intersection type (`|` to `&`).\n *\n * Note: this utility type is for use on object types. It may fail on other types.\n *\n * @example\n *\n * ```typescript\n * type TypeOne = { one: string };\n * type TypeTwo = { two: number };\n * type TypeThree = { three: string };\n *\n * type TypeNums = { one: TypeOne; two: TypeTwo; three: TypeThree };\n * const numNames = ['one', 'two'] as const;\n * type TypeNumNames = typeof numNames;\n *\n * // Same as `TypeOne | TypeTwo`\n * // `{ one: string } | { two: number }`\n * type TypeOneTwoUnion = TypeNums[TypeNumNames[number]];\n *\n * // Same as `TypeOne & TypeTwo`\n * // `{ one: string; two: number }`\n * type TypeOneTwoIntersection = UnionToIntersection;\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type UnionToIntersection = (U extends any ? (x: U) => void : never) extends (\n x: infer I,\n) => void\n ? I\n : never;\n","import PlatformEventEmitter from './platform-event-emitter.model';\nimport { deepClone } from './util';\n\ntype JsonObjectLike = { [key: string]: unknown };\ntype JsonArrayLike = unknown[];\n\nexport type JsonDocumentLike = JsonObjectLike | JsonArrayLike;\n\n/**\n * Options for DocumentCombiner objects\n *\n * - `copyDocuments`: If true, this instance will perform a deep copy of all provided documents before\n * composing the output. If false, then changes made to provided documents after they are\n * contributed will be reflected in the next time output is composed.\n * - `ignoreDuplicateProperties`: If true, then duplicate properties are skipped if they are seen in\n * contributed documents. If false, then throw when duplicate properties are seen in contributed\n * documents.\n */\nexport type DocumentCombinerOptions = {\n copyDocuments: boolean;\n ignoreDuplicateProperties: boolean;\n};\n\n/**\n * Base class for any code that wants to compose JSON documents (primarily in the form of JS objects\n * or arrays) together into a single output document.\n */\nexport default class DocumentCombiner {\n protected baseDocument: JsonDocumentLike;\n protected readonly contributions = new Map();\n protected latestOutput: JsonDocumentLike | undefined;\n protected readonly options: DocumentCombinerOptions;\n private readonly onDidRebuildEmitter = new PlatformEventEmitter();\n /** Event that emits to announce that the document has been rebuilt and the output has been updated */\n // Need `onDidRebuildEmitter` to be instantiated before this line\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly onDidRebuild = this.onDidRebuildEmitter.subscribe;\n\n /**\n * Create a DocumentCombiner instance\n *\n * @param baseDocument This is the first document that will be used when composing the output\n * @param options Options used by this object when combining documents\n */\n protected constructor(baseDocument: JsonDocumentLike, options: DocumentCombinerOptions) {\n // Setting baseDocument redundantly because TS doesn't understand that updateBaseDocument does it\n this.baseDocument = baseDocument;\n this.options = options;\n this.updateBaseDocument(baseDocument);\n }\n\n /**\n * Update the starting document for composition process\n *\n * @param baseDocument Base JSON document/JS object that all other documents are added to\n * @returns Recalculated output document given the new starting state and existing other documents\n */\n updateBaseDocument(baseDocument: JsonDocumentLike): JsonDocumentLike | undefined {\n this.validateBaseDocument(baseDocument);\n this.baseDocument = this.options.copyDocuments ? deepClone(baseDocument) : baseDocument;\n this.baseDocument = this.transformBaseDocumentAfterValidation(this.baseDocument);\n return this.rebuild();\n }\n\n /**\n * Add or update one of the contribution documents for the composition process\n *\n * Note: the order in which contribution documents are added can be considered to be indeterminate\n * as it is currently ordered by however `Map.forEach` provides the contributions. The order\n * matters when merging two arrays into one. Also, when `options.ignoreDuplicateProperties` is\n * `true`, the order also matters when adding the same property to an object that is already\n * provided previously. Please let us know if you have trouble because of indeterminate\n * contribution ordering.\n *\n * @param documentName Name of the contributed document to combine\n * @param document Content of the contributed document to combine\n * @returns Recalculated output document given the new or updated contribution and existing other\n * documents\n */\n addOrUpdateContribution(\n documentName: string,\n document: JsonDocumentLike,\n ): JsonDocumentLike | undefined {\n this.validateContribution(documentName, document);\n const previousDocumentVersion = this.contributions.get(documentName);\n let documentToSet = this.options.copyDocuments && !!document ? deepClone(document) : document;\n documentToSet = this.transformContributionAfterValidation(documentName, documentToSet);\n this.contributions.set(documentName, documentToSet);\n try {\n return this.rebuild();\n } catch (error) {\n // If the output isn't valid after adding/updating the contribution, put it back how it was\n if (previousDocumentVersion) this.contributions.set(documentName, previousDocumentVersion);\n else this.contributions.delete(documentName);\n throw new Error(`Error when setting the document named ${documentName}: ${error}`);\n }\n }\n\n /**\n * Delete one of the contribution documents for the composition process\n *\n * @param documentName Name of the contributed document to delete\n * @returns Recalculated output document given the remaining other documents\n */\n deleteContribution(documentName: string): JsonDocumentLike | undefined {\n const document = this.contributions.get(documentName);\n if (!document) throw new Error(`${documentName} does not exist`);\n this.contributions.delete(documentName);\n try {\n return this.rebuild();\n } catch (error) {\n // If the output isn't valid after deleting the contribution, put it back and rethrow\n this.contributions.set(documentName, document);\n throw new Error(`Error when deleting the document named ${documentName}: ${error}`);\n }\n }\n\n /**\n * Delete all present contribution documents for the composition process and return to the base\n * document\n *\n * @returns Recalculated output document consisting only of the base document\n */\n deleteAllContributions(): JsonDocumentLike | undefined {\n if (this.contributions.size <= 0) return this.latestOutput;\n\n // Save out all contributions\n const contributions = [...this.contributions.entries()];\n\n // Delete all contributions\n contributions.forEach(([contributionName]) => this.contributions.delete(contributionName));\n\n // Rebuild with no contributions\n try {\n return this.rebuild();\n } catch (error) {\n // If the output isn't valid after deleting all contributions, put them back and rethrow\n contributions.forEach(([contributionName, document]) =>\n this.contributions.set(contributionName, document),\n );\n throw new Error(`Error when deleting all contributions: ${error}`);\n }\n }\n\n /**\n * Run the document composition process given the starting document and all contributions. Throws\n * if the output document fails to validate properly.\n *\n * @returns Recalculated output document given the starting and contributed documents\n */\n rebuild(): JsonDocumentLike | undefined {\n // The starting document is the output if there are no other contributions\n if (this.contributions.size === 0) {\n let potentialOutput = deepClone(this.baseDocument);\n potentialOutput = this.transformFinalOutputBeforeValidation(potentialOutput);\n this.validateOutput(potentialOutput);\n this.latestOutput = potentialOutput;\n this.onDidRebuildEmitter.emit(undefined);\n return this.latestOutput;\n }\n\n // Compose the output by validating each document one at a time to pinpoint errors better\n let outputIteration = this.baseDocument;\n this.contributions.forEach((contribution: JsonDocumentLike) => {\n outputIteration = mergeObjects(\n outputIteration,\n contribution,\n this.options.ignoreDuplicateProperties,\n );\n this.validateOutput(outputIteration);\n });\n outputIteration = this.transformFinalOutputBeforeValidation(outputIteration);\n this.validateOutput(outputIteration);\n this.latestOutput = outputIteration;\n this.onDidRebuildEmitter.emit(undefined);\n return this.latestOutput;\n }\n\n /**\n * Transform the starting document that is given to the combiner. This transformation occurs after\n * validating the base document and before combining any contributions.\n *\n * WARNING: If you do not create the combiner with option `copyDocuments: true` or clone inside\n * this method, this method will directly modify the `baseDocument` passed in.\n *\n * @param baseDocument Initial input document. Already validated via `validateBaseDocument`\n * @returns Transformed base document\n */\n // We just don't need `this` here. This is basically a no-op function that is available to child\n // classes to override\n // eslint-disable-next-line class-methods-use-this\n protected transformBaseDocumentAfterValidation(baseDocument: JsonDocumentLike): JsonDocumentLike {\n return baseDocument;\n }\n\n /**\n * Transform the contributed document associated with `documentName`. This transformation occurs\n * after validating the contributed document and before combining with other documents.\n *\n * WARNING: If you do not create the combiner with option `copyDocuments: true` or clone inside\n * this method, this method will directly modify the contributed `document` passed in.\n *\n * @param documentName Name of the contributed document to combine\n * @param document Content of the contributed document to combine. Already validated via\n * `validateContribution`\n * @returns Transformed contributed document\n */\n // We just don't need `this` here. This is basically a no-op function that is available to child\n // classes to override\n // eslint-disable-next-line class-methods-use-this\n protected transformContributionAfterValidation(\n // @ts-expect-error this parameter is unused but may be used in child classes\n documentName: string,\n document: JsonDocumentLike,\n ): JsonDocumentLike {\n return document;\n }\n\n /**\n * Throw an error if the provided document is not a valid starting document.\n *\n * @param baseDocument Base JSON document/JS object that all other documents are added to\n */\n // no-op intended to be overridden by child classes. Can't be static\n // @ts-expect-error ts(6133) parameter doesn't need to be used but still needs the right name\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n protected validateBaseDocument(baseDocument: JsonDocumentLike): void {}\n\n /**\n * Throw an error if the provided document is not a valid contribution document.\n *\n * @param documentName Name of the contributed document to combine\n * @param document Content of the contributed document to combine\n */\n // no-op intended to be overridden by child classes. Can't be static\n // @ts-expect-error ts(6133) parameter doesn't need to be used but still needs the right name\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n protected validateContribution(documentName: string, document: JsonDocumentLike): void {}\n\n /**\n * Throw an error if the provided output is not valid.\n *\n * @param output Output document that could potentially be returned to callers\n */\n // no-op intended to be overridden by child classes. Can't be static\n // @ts-expect-error ts(6133) parameter doesn't need to be used but still needs the right name\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n protected validateOutput(output: JsonDocumentLike): void {}\n\n /**\n * Transform the document that is the composition of the base document and all contribution\n * documents. This is the last step that will be run prior to validation via `validateOutput`\n * before `this.latestOutput` is updated to the new output.\n *\n * @param finalOutput Final output document that could potentially be returned to callers. \"Final\"\n * means no further contribution documents will be merged.\n */\n // no-op intended to be overridden by child classes. Can't be static\n // eslint-disable-next-line class-methods-use-this\n protected transformFinalOutputBeforeValidation(finalOutput: JsonDocumentLike): JsonDocumentLike {\n return finalOutput;\n }\n}\n\n// #region Helper functions\n\n/**\n * Determines if the input values are objects but not arrays\n *\n * @param values Objects to check\n * @returns True if all the values are objects but not arrays\n */\nfunction areNonArrayObjects(...values: unknown[]): boolean {\n let allMatch = true;\n values.forEach((value: unknown) => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) allMatch = false;\n });\n return allMatch;\n}\n\n/**\n * Determines if the input values are arrays\n *\n * @param value Objects to check\n * @returns True if the values are arrays\n */\nfunction areArrayObjects(...values: unknown[]): boolean {\n let allMatch = true;\n values.forEach((value: unknown) => {\n if (!value || typeof value !== 'object' || !Array.isArray(value)) allMatch = false;\n });\n return allMatch;\n}\n\n/**\n * Deep clone and recursively merge the properties of one object (copyFrom) into another\n * (startingPoint). Throws if copyFrom would overwrite values already existing in startingPoint.\n *\n * Does not modify the objects passed in.\n *\n * @param startingPoint Object that is the starting point for the return value\n * @param copyFrom Object whose values are copied into the return value\n * @param ignoreDuplicateProperties Whether to ignore object properties that are present in\n * `copyFrom` that are already present in `startingPoint`. If `false`, throws when an object\n * property in `copyFrom` is already present in `startingPoint`\n * @returns Object that is the combination of the two documents\n */\nfunction mergeObjects(\n startingPoint: JsonDocumentLike,\n copyFrom: JsonDocumentLike,\n ignoreDuplicateProperties: boolean,\n): JsonDocumentLike {\n const retVal = deepClone(startingPoint);\n\n if (!copyFrom) return retVal;\n\n return mergeObjectsInternal(retVal, deepClone(copyFrom), ignoreDuplicateProperties);\n}\n\n/**\n * Recursively merge the properties of one object (copyFrom) into another (startingPoint). Throws if\n * copyFrom would overwrite values already existing in startingPoint.\n *\n * WARNING: Modifies the argument objects in some way. Recommended to use `mergeObjects`\n *\n * @param startingPoint Object that is the starting point for the return value\n * @param copyFrom Object whose values are copied into the return value\n * @param ignoreDuplicateProperties Whether to ignore object properties that are present in\n * `copyFrom` that are already present in `startingPoint`. If `false`, throws when an object\n * property in `copyFrom` is already present in `startingPoint`\n * @returns Object that is the combination of the two documents\n */\nfunction mergeObjectsInternal(\n startingPoint: JsonDocumentLike,\n copyFrom: JsonDocumentLike,\n ignoreDuplicateProperties: boolean,\n): JsonDocumentLike {\n if (!copyFrom) return startingPoint;\n\n if (areNonArrayObjects(startingPoint, copyFrom)) {\n // Merge properties since they are both objects\n\n // We know these are objects from the `if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n const startingPointObj = startingPoint as JsonObjectLike;\n const copyFromObj = copyFrom as JsonObjectLike;\n /* eslint-enable no-type-assertion/no-type-assertion */\n Object.keys(copyFromObj).forEach((key: string | number) => {\n if (Object.hasOwn(startingPointObj, key)) {\n if (areNonArrayObjects(startingPointObj[key], copyFromObj[key])) {\n startingPointObj[key] = mergeObjectsInternal(\n // We know these are objects from the `if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n startingPointObj[key] as JsonObjectLike,\n copyFromObj[key] as JsonObjectLike,\n ignoreDuplicateProperties,\n /* eslint-enable no-type-assertion/no-type-assertion */\n );\n } else if (areArrayObjects(startingPointObj[key], copyFromObj[key])) {\n // Concat the arrays since they are both arrays\n\n // We know these are arrays from the `else if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n startingPointObj[key] = (startingPointObj[key] as JsonArrayLike).concat(\n copyFromObj[key] as JsonArrayLike,\n );\n /* eslint-enable no-type-assertion/no-type-assertion */\n } else if (!ignoreDuplicateProperties)\n throw new Error(`Cannot merge objects: key \"${key}\" already exists in the target object`);\n // Note that the first non-object non-array value that gets placed in a property stays.\n // New values do not override existing ones\n } else {\n startingPointObj[key] = copyFromObj[key];\n }\n });\n } else if (areArrayObjects(startingPoint, copyFrom)) {\n // Concat the arrays since they are both arrays\n\n // Push the contents of copyFrom into startingPoint since it is a const and was already deep cloned\n // We know these are objects from the `else if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n (startingPoint as JsonArrayLike).push(...(copyFrom as JsonArrayLike));\n /* eslint-enable no-type-assertion/no-type-assertion */\n }\n\n // Note that nothing happens if `startingPoint` is not an object or an array or if `startingPoint`\n // and `copyFrom` are not both object or both arrays. Should we throw? Should we push `copyFrom`'s\n // values into the array? Other? Maybe one day we can add some options to decide what to do in\n // this situation, but YAGNI for now\n\n return startingPoint;\n}\n\n// #endregion\n","import { Mutex as AsyncMutex } from 'async-mutex';\n\n// Extending Mutex from async-mutex so we can add JSDoc\n\n/**\n * Class that allows calling asynchronous functions multiple times at once while only running one at\n * a time.\n *\n * @example\n *\n * ```typescript\n * const mutex = new Mutex();\n *\n * mutex.runExclusive(async () => {\n * // Do some asynchronous stuff\n * console.log('These run one-at-a-time');\n * });\n *\n * mutex.runExclusive(async () => {\n * // Do some asynchronous stuff\n * console.log('These run one-at-a-time');\n * });\n * ```\n *\n * See [`async-mutex`](https://www.npmjs.com/package/async-mutex) for more information.\n */\nclass Mutex extends AsyncMutex {}\n\nexport default Mutex;\n","import Mutex from './mutex';\n\n/** Map of {@link Mutex}es that automatically (lazily) generates a new {@link Mutex} for any new key */\nclass MutexMap {\n private mutexesByID = new Map();\n\n get(mutexID: string): Mutex {\n let retVal = this.mutexesByID.get(mutexID);\n if (retVal) return retVal;\n\n retVal = new Mutex();\n this.mutexesByID.set(mutexID, retVal);\n return retVal;\n }\n}\n\nexport default MutexMap;\n","import DocumentCombiner, { DocumentCombinerOptions, JsonDocumentLike } from './document-combiner';\n\nexport default class NonValidatingDocumentCombiner extends DocumentCombiner {\n // Making the protected base constructor public\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(baseDocument: JsonDocumentLike, options: DocumentCombinerOptions) {\n super(baseDocument, options);\n }\n\n get output(): JsonDocumentLike | undefined {\n return this.latestOutput;\n }\n}\n","/** Enables language-sensitive number formatting. Wraps Intl.NumberFormat */\nexport default class NumberFormat {\n private numberFormatter: Intl.NumberFormat;\n\n constructor(locales?: string | string[], options?: Intl.NumberFormatOptions) {\n this.numberFormatter = new Intl.NumberFormat(locales, options);\n }\n\n /**\n * Formats a number according to the locale and formatting options of this NumberFormat object\n *\n * @param value Number or BigInt to format\n * @returns String representing the given number formatted according to the locale and formatting\n * options of this NumberFormat object\n */\n format(value: number | bigint): string {\n return this.numberFormatter.format(value);\n }\n\n /**\n * Formats a range of numbers according to the locale and formatting options of this NumberFormat\n * object\n *\n * @param startRange Number or bigint representing the start of the range\n * @param endRange Number or bigint representing the end of the range\n * @returns String representing the given range of numbers formatted according to the locale and\n * formatting options of this NumberFormat object\n */\n formatRange(startRange: number | bigint, endRange: number | bigint): string {\n return this.numberFormatter.formatRange(startRange, endRange);\n }\n\n /**\n * Returns an array of objects containing the locale-specific tokens from which it is possible to\n * build custom strings while preserving the locale-specific parts.\n *\n * @param startRange Number or bigint representing start of the range\n * @param endRange Number or bigint representing end of the range\n * @returns Array of NumberRangeFormatPart objects containing the formatted range of numbers in\n * parts\n */\n formatRangeToParts(\n startRange: number | bigint,\n endRange: number | bigint,\n ): Intl.NumberRangeFormatPart[] {\n return this.numberFormatter.formatRangeToParts(startRange, endRange);\n }\n\n /**\n * Allows locale-aware formatting of strings produced by this NumberFormat object\n *\n * @param value Number or bigint to format\n * @returns Array of NumberFormatPart objects containing the formatted number in parts\n */\n formatToParts(value: number | bigint): Intl.NumberFormatPart[] {\n return this.numberFormatter.formatToParts(value);\n }\n\n /**\n * Returns a new object with properties reflecting the locale and number formatting options\n * computed during initialization of this NumberFormat object\n *\n * @returns ResolvedNumberFormatOptions object\n */\n resolvedOptions(): Intl.ResolvedNumberFormatOptions {\n return this.numberFormatter.resolvedOptions();\n }\n}\n","import { Dispose } from './disposal.model';\nimport { Unsubscriber, UnsubscriberAsync } from './unsubscriber';\n\n/** Simple collection for UnsubscriberAsync objects that also provides an easy way to run them. */\nexport default class UnsubscriberAsyncList {\n readonly unsubscribers = new Set();\n\n constructor(private name = 'Anonymous') {}\n\n /**\n * Add unsubscribers to the list. Note that duplicates are not added twice.\n *\n * @param unsubscribers - Objects that were returned from a registration process.\n */\n add(...unsubscribers: (UnsubscriberAsync | Unsubscriber | Dispose)[]) {\n unsubscribers.forEach((unsubscriber) => {\n if ('dispose' in unsubscriber) this.unsubscribers.add(unsubscriber.dispose);\n else this.unsubscribers.add(unsubscriber);\n });\n }\n\n /**\n * Run all unsubscribers added to this list and then clear the list.\n *\n * @returns `true` if all unsubscribers succeeded, `false` otherwise.\n */\n async runAllUnsubscribers(): Promise {\n const unsubs = [...this.unsubscribers].map((unsubscriber) => unsubscriber());\n const results = await Promise.all(unsubs);\n this.unsubscribers.clear();\n return results.every((unsubscriberSucceeded, index) => {\n if (!unsubscriberSucceeded)\n console.error(`UnsubscriberAsyncList ${this.name}: Unsubscriber at index ${index} failed!`);\n\n return unsubscriberSucceeded;\n });\n }\n}\n","var P = Object.defineProperty;\nvar R = (t, e, s) => e in t ? P(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar n = (t, e, s) => R(t, typeof e != \"symbol\" ? e + \"\" : e, s);\nclass _ {\n constructor() {\n n(this, \"books\");\n n(this, \"firstSelectedBookNum\");\n n(this, \"lastSelectedBookNum\");\n n(this, \"count\");\n n(this, \"selectedBookNumbers\");\n n(this, \"selectedBookIds\");\n }\n}\nconst N = [\n \"GEN\",\n \"EXO\",\n \"LEV\",\n \"NUM\",\n \"DEU\",\n \"JOS\",\n \"JDG\",\n \"RUT\",\n \"1SA\",\n \"2SA\",\n // 10\n \"1KI\",\n \"2KI\",\n \"1CH\",\n \"2CH\",\n \"EZR\",\n \"NEH\",\n \"EST\",\n \"JOB\",\n \"PSA\",\n \"PRO\",\n // 20\n \"ECC\",\n \"SNG\",\n \"ISA\",\n \"JER\",\n \"LAM\",\n \"EZK\",\n \"DAN\",\n \"HOS\",\n \"JOL\",\n \"AMO\",\n // 30\n \"OBA\",\n \"JON\",\n \"MIC\",\n \"NAM\",\n \"HAB\",\n \"ZEP\",\n \"HAG\",\n \"ZEC\",\n \"MAL\",\n \"MAT\",\n // 40\n \"MRK\",\n \"LUK\",\n \"JHN\",\n \"ACT\",\n \"ROM\",\n \"1CO\",\n \"2CO\",\n \"GAL\",\n \"EPH\",\n \"PHP\",\n // 50\n \"COL\",\n \"1TH\",\n \"2TH\",\n \"1TI\",\n \"2TI\",\n \"TIT\",\n \"PHM\",\n \"HEB\",\n \"JAS\",\n \"1PE\",\n // 60\n \"2PE\",\n \"1JN\",\n \"2JN\",\n \"3JN\",\n \"JUD\",\n \"REV\",\n \"TOB\",\n \"JDT\",\n \"ESG\",\n \"WIS\",\n // 70\n \"SIR\",\n \"BAR\",\n \"LJE\",\n \"S3Y\",\n \"SUS\",\n \"BEL\",\n \"1MA\",\n \"2MA\",\n \"3MA\",\n \"4MA\",\n // 80\n \"1ES\",\n \"2ES\",\n \"MAN\",\n \"PS2\",\n \"ODA\",\n \"PSS\",\n \"JSA\",\n // actual variant text for JOS, now in LXA text\n \"JDB\",\n // actual variant text for JDG, now in LXA text\n \"TBS\",\n // actual variant text for TOB, now in LXA text\n \"SST\",\n // actual variant text for SUS, now in LXA text // 90\n \"DNT\",\n // actual variant text for DAN, now in LXA text\n \"BLT\",\n // actual variant text for BEL, now in LXA text\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n // 100\n \"BAK\",\n \"OTH\",\n \"3ES\",\n // Used previously but really should be 2ES\n \"EZA\",\n // Used to be called 4ES, but not actually in any known project\n \"5EZ\",\n // Used to be called 5ES, but not actually in any known project\n \"6EZ\",\n // Used to be called 6ES, but not actually in any known project\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n // 110\n \"NDX\",\n \"DAG\",\n \"PS3\",\n \"2BA\",\n \"LBA\",\n \"JUB\",\n \"ENO\",\n \"1MQ\",\n \"2MQ\",\n \"3MQ\",\n // 120\n \"REP\",\n \"4BA\",\n \"LAO\"\n], B = [\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n \"BAK\",\n \"OTH\",\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n \"NDX\"\n], O = [\n \"Genesis\",\n \"Exodus\",\n \"Leviticus\",\n \"Numbers\",\n \"Deuteronomy\",\n \"Joshua\",\n \"Judges\",\n \"Ruth\",\n \"1 Samuel\",\n \"2 Samuel\",\n \"1 Kings\",\n \"2 Kings\",\n \"1 Chronicles\",\n \"2 Chronicles\",\n \"Ezra\",\n \"Nehemiah\",\n \"Esther (Hebrew)\",\n \"Job\",\n \"Psalms\",\n \"Proverbs\",\n \"Ecclesiastes\",\n \"Song of Songs\",\n \"Isaiah\",\n \"Jeremiah\",\n \"Lamentations\",\n \"Ezekiel\",\n \"Daniel (Hebrew)\",\n \"Hosea\",\n \"Joel\",\n \"Amos\",\n \"Obadiah\",\n \"Jonah\",\n \"Micah\",\n \"Nahum\",\n \"Habakkuk\",\n \"Zephaniah\",\n \"Haggai\",\n \"Zechariah\",\n \"Malachi\",\n \"Matthew\",\n \"Mark\",\n \"Luke\",\n \"John\",\n \"Acts\",\n \"Romans\",\n \"1 Corinthians\",\n \"2 Corinthians\",\n \"Galatians\",\n \"Ephesians\",\n \"Philippians\",\n \"Colossians\",\n \"1 Thessalonians\",\n \"2 Thessalonians\",\n \"1 Timothy\",\n \"2 Timothy\",\n \"Titus\",\n \"Philemon\",\n \"Hebrews\",\n \"James\",\n \"1 Peter\",\n \"2 Peter\",\n \"1 John\",\n \"2 John\",\n \"3 John\",\n \"Jude\",\n \"Revelation\",\n \"Tobit\",\n \"Judith\",\n \"Esther Greek\",\n \"Wisdom of Solomon\",\n \"Sirach (Ecclesiasticus)\",\n \"Baruch\",\n \"Letter of Jeremiah\",\n \"Song of 3 Young Men\",\n \"Susanna\",\n \"Bel and the Dragon\",\n \"1 Maccabees\",\n \"2 Maccabees\",\n \"3 Maccabees\",\n \"4 Maccabees\",\n \"1 Esdras (Greek)\",\n \"2 Esdras (Latin)\",\n \"Prayer of Manasseh\",\n \"Psalm 151\",\n \"Odes\",\n \"Psalms of Solomon\",\n // WARNING, if you change the spelling of the *obsolete* tag be sure to update\n // IsObsolete routine\n \"Joshua A. *obsolete*\",\n \"Judges B. *obsolete*\",\n \"Tobit S. *obsolete*\",\n \"Susanna Th. *obsolete*\",\n \"Daniel Th. *obsolete*\",\n \"Bel Th. *obsolete*\",\n \"Extra A\",\n \"Extra B\",\n \"Extra C\",\n \"Extra D\",\n \"Extra E\",\n \"Extra F\",\n \"Extra G\",\n \"Front Matter\",\n \"Back Matter\",\n \"Other Matter\",\n \"3 Ezra *obsolete*\",\n \"Apocalypse of Ezra\",\n \"5 Ezra (Latin Prologue)\",\n \"6 Ezra (Latin Epilogue)\",\n \"Introduction\",\n \"Concordance \",\n \"Glossary \",\n \"Topical Index\",\n \"Names Index\",\n \"Daniel Greek\",\n \"Psalms 152-155\",\n \"2 Baruch (Apocalypse)\",\n \"Letter of Baruch\",\n \"Jubilees\",\n \"Enoch\",\n \"1 Meqabyan\",\n \"2 Meqabyan\",\n \"3 Meqabyan\",\n \"Reproof (Proverbs 25-31)\",\n \"4 Baruch (Rest of Baruch)\",\n \"Laodiceans\"\n], S = K();\nfunction g(t, e = !0) {\n return e && (t = t.toUpperCase()), t in S ? S[t] : 0;\n}\nfunction k(t) {\n return g(t) > 0;\n}\nfunction x(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return e >= 40 && e <= 66;\n}\nfunction T(t) {\n return (typeof t == \"string\" ? g(t) : t) <= 39;\n}\nfunction X(t) {\n return t <= 66;\n}\nfunction V(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return w(e) && !X(e);\n}\nfunction* L() {\n for (let t = 1; t <= N.length; t++) yield t;\n}\nconst G = 1, A = N.length;\nfunction H() {\n return [\"XXA\", \"XXB\", \"XXC\", \"XXD\", \"XXE\", \"XXF\", \"XXG\"];\n}\nfunction C(t, e = \"***\") {\n const s = t - 1;\n return s < 0 || s >= N.length ? e : N[s];\n}\nfunction I(t) {\n return t <= 0 || t > A ? \"******\" : O[t - 1];\n}\nfunction y(t) {\n return I(g(t));\n}\nfunction w(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && !B.includes(e);\n}\nfunction q(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && B.includes(e);\n}\nfunction U(t) {\n return O[t - 1].includes(\"*obsolete*\");\n}\nfunction K() {\n const t = {};\n for (let e = 0; e < N.length; e++)\n t[N[e]] = e + 1;\n return t;\n}\nconst m = {\n allBookIds: N,\n nonCanonicalIds: B,\n bookIdToNumber: g,\n isBookIdValid: k,\n isBookNT: x,\n isBookOT: T,\n isBookOTNT: X,\n isBookDC: V,\n allBookNumbers: L,\n firstBook: G,\n lastBook: A,\n extraBooks: H,\n bookNumberToId: C,\n bookNumberToEnglishName: I,\n bookIdToEnglishName: y,\n isCanonical: w,\n isExtraMaterial: q,\n isObsolete: U\n};\nvar l = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = \"Unknown\", t[t.Original = 1] = \"Original\", t[t.Septuagint = 2] = \"Septuagint\", t[t.Vulgate = 3] = \"Vulgate\", t[t.English = 4] = \"English\", t[t.RussianProtestant = 5] = \"RussianProtestant\", t[t.RussianOrthodox = 6] = \"RussianOrthodox\", t))(l || {});\nconst h = class h {\n // private versInfo: Versification;\n constructor(e) {\n n(this, \"name\");\n n(this, \"fullPath\");\n n(this, \"isPresent\");\n n(this, \"hasVerseSegments\");\n n(this, \"isCustomized\");\n n(this, \"baseVersification\");\n n(this, \"scriptureBooks\");\n n(this, \"_type\");\n if (e == null)\n throw new Error(\"Argument undefined\");\n typeof e == \"string\" ? (this.name = e, this._type = l[e]) : (this._type = e, this.name = l[e]);\n }\n get type() {\n return this._type;\n }\n equals(e) {\n return !e.type || !this.type ? !1 : e.type === this.type;\n }\n};\nn(h, \"Original\", new h(l.Original)), n(h, \"Septuagint\", new h(l.Septuagint)), n(h, \"Vulgate\", new h(l.Vulgate)), n(h, \"English\", new h(l.English)), n(h, \"RussianProtestant\", new h(l.RussianProtestant)), n(h, \"RussianOrthodox\", new h(l.RussianOrthodox));\nlet c = h;\nfunction E(t, e) {\n const s = e[0];\n for (let r = 1; r < e.length; r++)\n t = t.split(e[r]).join(s);\n return t.split(s);\n}\nvar D = /* @__PURE__ */ ((t) => (t[t.Valid = 0] = \"Valid\", t[t.UnknownVersification = 1] = \"UnknownVersification\", t[t.OutOfRange = 2] = \"OutOfRange\", t[t.VerseOutOfOrder = 3] = \"VerseOutOfOrder\", t[t.VerseRepeated = 4] = \"VerseRepeated\", t))(D || {});\nconst i = class i {\n constructor(e, s, r, a) {\n /** Not yet implemented. */\n n(this, \"firstChapter\");\n /** Not yet implemented. */\n n(this, \"lastChapter\");\n /** Not yet implemented. */\n n(this, \"lastVerse\");\n /** Not yet implemented. */\n n(this, \"hasSegmentsDefined\");\n /** Not yet implemented. */\n n(this, \"text\");\n /** Not yet implemented. */\n n(this, \"BBBCCCVVVS\");\n /** Not yet implemented. */\n n(this, \"longHashCode\");\n /** The versification of the reference. */\n n(this, \"versification\");\n n(this, \"rtlMark\", \"‏\");\n n(this, \"_bookNum\", 0);\n n(this, \"_chapterNum\", 0);\n n(this, \"_verseNum\", 0);\n n(this, \"_verse\");\n if (r == null && a == null)\n if (e != null && typeof e == \"string\") {\n const o = e, u = s != null && s instanceof c ? s : void 0;\n this.setEmpty(u), this.parse(o);\n } else if (e != null && typeof e == \"number\") {\n const o = s != null && s instanceof c ? s : void 0;\n this.setEmpty(o), this._verseNum = e % i.chapterDigitShifter, this._chapterNum = Math.floor(\n e % i.bookDigitShifter / i.chapterDigitShifter\n ), this._bookNum = Math.floor(e / i.bookDigitShifter);\n } else if (s == null)\n if (e != null && e instanceof i) {\n const o = e;\n this._bookNum = o.bookNum, this._chapterNum = o.chapterNum, this._verseNum = o.verseNum, this._verse = o.verse, this.versification = o.versification;\n } else {\n if (e == null) return;\n const o = e instanceof c ? e : i.defaultVersification;\n this.setEmpty(o);\n }\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else if (e != null && s != null && r != null)\n if (typeof e == \"string\" && typeof s == \"string\" && typeof r == \"string\")\n this.setEmpty(a), this.updateInternal(e, s, r);\n else if (typeof e == \"number\" && typeof s == \"number\" && typeof r == \"number\")\n this._bookNum = e, this._chapterNum = s, this._verseNum = r, this.versification = a ?? i.defaultVersification;\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else\n throw new Error(\"VerseRef constructor not supported.\");\n }\n /**\n * Determines if the verse string is in a valid format (does not consider versification).\n */\n static isVerseParseable(e) {\n return e.length > 0 && \"0123456789\".includes(e[0]) && !e.endsWith(this.verseRangeSeparator) && !e.endsWith(this.verseSequenceIndicator);\n }\n /**\n * Tries to parse the specified string into a verse reference.\n * @param str - The string to attempt to parse.\n * @returns success: `true` if the specified string was successfully parsed, `false` otherwise.\n * @returns verseRef: The result of the parse if successful, or empty VerseRef if it failed\n */\n static tryParse(e) {\n let s;\n try {\n return s = new i(e), { success: !0, verseRef: s };\n } catch (r) {\n if (r instanceof v)\n return s = new i(), { success: !1, verseRef: s };\n throw r;\n }\n }\n /**\n * Gets the reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n * @param bookNum - Book number (this is 1-based, not an index).\n * @param chapterNum - Chapter number.\n * @param verseNum - Verse number.\n * @returns The reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n */\n static getBBBCCCVVV(e, s, r) {\n return e % i.bcvMaxValue * i.bookDigitShifter + (s >= 0 ? s % i.bcvMaxValue * i.chapterDigitShifter : 0) + (r >= 0 ? r % i.bcvMaxValue : 0);\n }\n /**\n * Deserializes a serialized VerseRef.\n * @param serializedVerseRef - Serialized VerseRef to create from.\n * @returns the deserialized VerseRef.\n */\n static fromJSON(e) {\n const { book: s, chapterNum: r, verseNum: a, verse: o, versificationStr: u } = e, f = o || a.toString();\n let d;\n return u && (d = new c(u)), s ? new i(s, r.toString(), f, d) : new i();\n }\n /**\n * Parses a verse string and gets the leading numeric portion as a number.\n * @param verseStr - verse string to parse\n * @returns true if the entire string could be parsed as a single, simple verse number (1-999);\n * false if the verse string represented a verse bridge, contained segment letters, or was invalid\n */\n static tryGetVerseNum(e) {\n let s;\n if (!e)\n return s = -1, { success: !0, vNum: s };\n s = 0;\n let r;\n for (let a = 0; a < e.length; a++) {\n if (r = e[a], r < \"0\" || r > \"9\")\n return a === 0 && (s = -1), { success: !1, vNum: s };\n if (s = s * 10 + +r - 0, s > i.bcvMaxValue)\n return s = -1, { success: !1, vNum: s };\n }\n return { success: !0, vNum: s };\n }\n /**\n * Checks to see if a VerseRef hasn't been set - all values are the default.\n */\n get isDefault() {\n return this.bookNum === 0 && this.chapterNum === 0 && this.verseNum === 0 && this.versification == null;\n }\n /**\n * Gets whether the verse contains multiple verses.\n */\n get hasMultiple() {\n return this._verse != null && (this._verse.includes(i.verseRangeSeparator) || this._verse.includes(i.verseSequenceIndicator));\n }\n /**\n * Gets or sets the book of the reference. Book is the 3-letter abbreviation in capital letters,\n * e.g. `'MAT'`.\n */\n get book() {\n return m.bookNumberToId(this.bookNum, \"\");\n }\n set book(e) {\n this.bookNum = m.bookIdToNumber(e);\n }\n /**\n * Gets or sets the chapter of the reference,. e.g. `'3'`.\n */\n get chapter() {\n return this.isDefault || this._chapterNum < 0 ? \"\" : this._chapterNum.toString();\n }\n set chapter(e) {\n const s = +e;\n this._chapterNum = Number.isInteger(s) ? s : -1;\n }\n /**\n * Gets or sets the verse of the reference, including range, segments, and sequences, e.g. `'4'`,\n * or `'4b-5a, 7'`.\n */\n get verse() {\n return this._verse != null ? this._verse : this.isDefault || this._verseNum < 0 ? \"\" : this._verseNum.toString();\n }\n set verse(e) {\n const { success: s, vNum: r } = i.tryGetVerseNum(e);\n this._verse = s ? void 0 : e.replace(this.rtlMark, \"\"), this._verseNum = r, !(this._verseNum >= 0) && ({ vNum: this._verseNum } = i.tryGetVerseNum(this._verse));\n }\n /**\n * Get or set Book based on book number, e.g. `42`.\n */\n get bookNum() {\n return this._bookNum;\n }\n set bookNum(e) {\n if (e <= 0 || e > m.lastBook)\n throw new v(\n \"BookNum must be greater than zero and less than or equal to last book\"\n );\n this._bookNum = e;\n }\n /**\n * Gets or sets the chapter number, e.g. `3`. `-1` if not valid.\n */\n get chapterNum() {\n return this._chapterNum;\n }\n set chapterNum(e) {\n this.chapterNum = e;\n }\n /**\n * Gets or sets verse start number, e.g. `4`. `-1` if not valid.\n */\n get verseNum() {\n return this._verseNum;\n }\n set verseNum(e) {\n this._verseNum = e;\n }\n /**\n * String representing the versification (should ONLY be used for serialization/deserialization).\n *\n * @remarks This is for backwards compatibility when ScrVers was an enumeration.\n */\n get versificationStr() {\n var e;\n return (e = this.versification) == null ? void 0 : e.name;\n }\n set versificationStr(e) {\n this.versification = this.versification != null ? new c(e) : void 0;\n }\n /**\n * Determines if the reference is valid.\n */\n get valid() {\n return this.validStatus === 0;\n }\n /**\n * Get the valid status for this reference.\n */\n get validStatus() {\n return this.validateVerse(i.verseRangeSeparators, i.verseSequenceIndicators);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits and the verse is 0.\n */\n get BBBCCC() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, 0);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits. If verse is not null\n * (i.e., this reference represents a complex reference with verse\n * segments or bridge) this cannot be used for an exact comparison.\n */\n get BBBCCCVVV() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, this._verseNum);\n }\n /**\n * Gets whether the verse is defined as an excluded verse in the versification.\n * Does not handle verse ranges.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get isExcluded() {\n return !1;\n }\n /**\n * Parses the reference in the specified string.\n * Optionally versification can follow reference as in GEN 3:11/4\n * Throw an exception if\n * - invalid book name\n * - chapter number is missing or not a number\n * - verse number is missing or does not start with a number\n * - versification is invalid\n * @param verseStr - string to parse e.g. 'MAT 3:11'\n */\n parse(e) {\n if (e = e.replace(this.rtlMark, \"\"), e.includes(\"/\")) {\n const o = e.split(\"/\");\n if (e = o[0], o.length > 1)\n try {\n const u = +o[1].trim();\n this.versification = new c(l[u]);\n } catch {\n throw new v(\"Invalid reference : \" + e);\n }\n }\n const s = e.trim().split(\" \");\n if (s.length !== 2)\n throw new v(\"Invalid reference : \" + e);\n const r = s[1].split(\":\"), a = +r[0];\n if (r.length !== 2 || m.bookIdToNumber(s[0]) === 0 || !Number.isInteger(a) || a < 0 || !i.isVerseParseable(r[1]))\n throw new v(\"Invalid reference : \" + e);\n this.updateInternal(s[0], r[0], r[1]);\n }\n /**\n * Simplifies this verse ref so that it has no bridging of verses or\n * verse segments like `'1a'`.\n */\n simplify() {\n this._verse = void 0;\n }\n /**\n * Makes a clone of the reference.\n *\n * @returns The cloned VerseRef.\n */\n clone() {\n return new i(this);\n }\n toString() {\n const e = this.book;\n return e === \"\" ? \"\" : `${e} ${this.chapter}:${this.verse}`;\n }\n toJSON() {\n let e = this.verse;\n (e === \"\" || e === this.verseNum.toString()) && (e = void 0);\n const s = {\n book: this.book,\n chapterNum: this.chapterNum,\n verseNum: this.verseNum,\n verse: e,\n versificationStr: this.versificationStr\n };\n return e || delete s.verse, s;\n }\n /**\n * Compares this `VerseRef` with supplied one.\n * @param verseRef - object to compare this one to.\n * @returns `true` if this `VerseRef` is equal to the supplied one, `false` otherwise.\n */\n equals(e) {\n return e instanceof i ? e._bookNum === this._bookNum && e._chapterNum === this._chapterNum && e._verseNum === this._verseNum && e.verse === this.verse && (e.versification == null && this.versification == null || e.versification != null && this.versification != null && e.versification.equals(this.versification)) : !1;\n }\n /**\n * Enumerate all individual verses contained in a VerseRef.\n * Verse ranges are indicated by \"-\" and consecutive verses by \",\"s.\n * Examples:\n * GEN 1:2 returns GEN 1:2\n * GEN 1:1a-3b,5 returns GEN 1:1a, GEN 1:2, GEN 1:3b, GEN 1:5\n * GEN 1:2a-2c returns //! ??????\n *\n * @param specifiedVersesOnly - if set to true return only verses that are\n * explicitly specified only, not verses within a range. Defaults to `false`.\n * @param verseRangeSeparators - Verse range separators.\n * Defaults to `VerseRef.verseRangeSeparators`.\n * @param verseSequenceSeparators - Verse sequence separators.\n * Defaults to `VerseRef.verseSequenceIndicators`.\n * @returns An array of all single verse references in this VerseRef.\n */\n allVerses(e = !1, s = i.verseRangeSeparators, r = i.verseSequenceIndicators) {\n if (this._verse == null || this.chapterNum <= 0)\n return [this.clone()];\n const a = [], o = E(this._verse, r);\n for (const u of o.map((f) => E(f, s))) {\n const f = this.clone();\n f.verse = u[0];\n const d = f.verseNum;\n if (a.push(f), u.length > 1) {\n const b = this.clone();\n if (b.verse = u[1], !e)\n for (let p = d + 1; p < b.verseNum; p++) {\n const J = new i(\n this._bookNum,\n this._chapterNum,\n p,\n this.versification\n );\n this.isExcluded || a.push(J);\n }\n a.push(b);\n }\n }\n return a;\n }\n /**\n * Validates a verse number using the supplied separators rather than the defaults.\n */\n validateVerse(e, s) {\n if (!this.verse)\n return this.internalValid;\n let r = 0;\n for (const a of this.allVerses(!0, e, s)) {\n const o = a.internalValid;\n if (o !== 0)\n return o;\n const u = a.BBBCCCVVV;\n if (r > u)\n return 3;\n if (r === u)\n return 4;\n r = u;\n }\n return 0;\n }\n /**\n * Gets whether a single verse reference is valid.\n */\n get internalValid() {\n return this.versification == null ? 1 : this._bookNum <= 0 || this._bookNum > m.lastBook ? 2 : (m.isCanonical(this._bookNum), 0);\n }\n setEmpty(e = i.defaultVersification) {\n this._bookNum = 0, this._chapterNum = -1, this._verse = void 0, this.versification = e;\n }\n updateInternal(e, s, r) {\n this.bookNum = m.bookIdToNumber(e), this.chapter = s, this.verse = r;\n }\n};\nn(i, \"defaultVersification\", c.English), n(i, \"verseRangeSeparator\", \"-\"), n(i, \"verseSequenceIndicator\", \",\"), n(i, \"verseRangeSeparators\", [i.verseRangeSeparator]), n(i, \"verseSequenceIndicators\", [i.verseSequenceIndicator]), n(i, \"chapterDigitShifter\", 1e3), n(i, \"bookDigitShifter\", i.chapterDigitShifter * i.chapterDigitShifter), n(i, \"bcvMaxValue\", i.chapterDigitShifter - 1), /**\n * The valid status of the VerseRef.\n */\nn(i, \"ValidStatusType\", D);\nlet M = i;\nclass v extends Error {\n}\nexport {\n _ as BookSet,\n m as Canon,\n c as ScrVers,\n l as ScrVersType,\n M as VerseRef,\n v as VerseRefException\n};\n//# sourceMappingURL=index.es.js.map\n","\"use strict\"\r\n\r\n// Based on: https://github.com/lodash/lodash/blob/6018350ac10d5ce6a5b7db625140b82aeab804df/.internal/unicodeSize.js\r\n\r\nmodule.exports = () => {\r\n\t// Used to compose unicode character classes.\r\n\tconst astralRange = \"\\\\ud800-\\\\udfff\"\r\n\tconst comboMarksRange = \"\\\\u0300-\\\\u036f\"\r\n\tconst comboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\"\r\n\tconst comboSymbolsRange = \"\\\\u20d0-\\\\u20ff\"\r\n\tconst comboMarksExtendedRange = \"\\\\u1ab0-\\\\u1aff\"\r\n\tconst comboMarksSupplementRange = \"\\\\u1dc0-\\\\u1dff\"\r\n\tconst comboRange = comboMarksRange + comboHalfMarksRange + comboSymbolsRange + comboMarksExtendedRange + comboMarksSupplementRange\r\n\tconst varRange = \"\\\\ufe0e\\\\ufe0f\"\r\n\tconst familyRange = \"\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFB\\\\u200D\\\\uD83C\\\\uDF93\"\r\n\r\n\t// Used to compose unicode capture groups.\r\n\tconst astral = `[${astralRange}]`\r\n\tconst combo = `[${comboRange}]`\r\n\tconst fitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\"\r\n\tconst modifier = `(?:${combo}|${fitz})`\r\n\tconst nonAstral = `[^${astralRange}]`\r\n\tconst regional = \"(?:\\\\uD83C[\\\\uDDE6-\\\\uDDFF]){2}\"\r\n\tconst surrogatePair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\"\r\n\tconst zwj = \"\\\\u200d\"\r\n\tconst blackFlag = \"(?:\\\\ud83c\\\\udff4\\\\udb40\\\\udc67\\\\udb40\\\\udc62\\\\udb40(?:\\\\udc65|\\\\udc73|\\\\udc77)\\\\udb40(?:\\\\udc6e|\\\\udc63|\\\\udc6c)\\\\udb40(?:\\\\udc67|\\\\udc74|\\\\udc73)\\\\udb40\\\\udc7f)\"\r\n\tconst family = `[${familyRange}]`\r\n\r\n\t// Used to compose unicode regexes.\r\n\tconst optModifier = `${modifier}?`\r\n\tconst optVar = `[${varRange}]?`\r\n\tconst optJoin = `(?:${zwj}(?:${[nonAstral, regional, surrogatePair].join(\"|\")})${optVar + optModifier})*`\r\n\tconst seq = optVar + optModifier + optJoin\r\n\tconst nonAstralCombo = `${nonAstral}${combo}?`\r\n\tconst symbol = `(?:${[nonAstralCombo, combo, regional, surrogatePair, astral, family].join(\"|\")})`\r\n\r\n\t// Used to match [String symbols](https://mathiasbynens.be/notes/javascript-unicode).\r\n\treturn new RegExp(`${blackFlag}|${fitz}(?=${fitz})|${symbol + seq}`, \"g\")\r\n}\r\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-ignore\nvar char_regex_1 = __importDefault(require(\"char-regex\"));\n/**\n * Converts a string to an array of string chars\n * @param {string} str The string to turn into array\n * @returns {string[]}\n */\nfunction toArray(str) {\n if (typeof str !== 'string') {\n throw new Error('A string is expected as input');\n }\n return str.match(char_regex_1.default()) || [];\n}\nexports.toArray = toArray;\n/**\n * Returns the length of a string\n *\n * @export\n * @param {string} str\n * @returns {number}\n */\nfunction length(str) {\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n var match = str.match(char_regex_1.default());\n return match === null ? 0 : match.length;\n}\nexports.length = length;\n/**\n * Returns a substring by providing start and end position\n *\n * @export\n * @param {string} str\n * @param {number} [begin=0] Starting position\n * @param {number} end End position\n * @returns {string}\n */\nfunction substring(str, begin, end) {\n if (begin === void 0) { begin = 0; }\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n // Even though negative numbers work here, theyre not in the spec\n if (typeof begin !== 'number' || begin < 0) {\n begin = 0;\n }\n if (typeof end === 'number' && end < 0) {\n end = 0;\n }\n var match = str.match(char_regex_1.default());\n if (!match)\n return '';\n return match.slice(begin, end).join('');\n}\nexports.substring = substring;\n/**\n * Returns a substring by providing start position and length\n *\n * @export\n * @param {string} str\n * @param {number} [begin=0] Starting position\n * @param {number} len Desired length\n * @returns {string}\n */\nfunction substr(str, begin, len) {\n if (begin === void 0) { begin = 0; }\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n var strLength = length(str);\n // Fix type\n if (typeof begin !== 'number') {\n begin = parseInt(begin, 10);\n }\n // Return zero-length string if got oversize number.\n if (begin >= strLength) {\n return '';\n }\n // Calculating postive version of negative value.\n if (begin < 0) {\n begin += strLength;\n }\n var end;\n if (typeof len === 'undefined') {\n end = strLength;\n }\n else {\n // Fix type\n if (typeof len !== 'number') {\n len = parseInt(len, 10);\n }\n end = len >= 0 ? len + begin : begin;\n }\n var match = str.match(char_regex_1.default());\n if (!match)\n return '';\n return match.slice(begin, end).join('');\n}\nexports.substr = substr;\n/**\n * Enforces a string to be a certain length by\n * adding or removing characters\n *\n * @export\n * @param {string} str\n * @param {number} [limit=16] Limit\n * @param {string} [padString='#'] The Pad String\n * @param {string} [padPosition='right'] The Pad Position\n * @returns {string}\n */\nfunction limit(str, limit, padString, padPosition) {\n if (limit === void 0) { limit = 16; }\n if (padString === void 0) { padString = '#'; }\n if (padPosition === void 0) { padPosition = 'right'; }\n // Input should be a string, limit should be a number\n if (typeof str !== 'string' || typeof limit !== 'number') {\n throw new Error('Invalid arguments specified');\n }\n // Pad position should be either left or right\n if (['left', 'right'].indexOf(padPosition) === -1) {\n throw new Error('Pad position should be either left or right');\n }\n // Pad string can be anything, we convert it to string\n if (typeof padString !== 'string') {\n padString = String(padString);\n }\n // Calculate string length considering astral code points\n var strLength = length(str);\n if (strLength > limit) {\n return substring(str, 0, limit);\n }\n else if (strLength < limit) {\n var padRepeats = padString.repeat(limit - strLength);\n return padPosition === 'left' ? padRepeats + str : str + padRepeats;\n }\n return str;\n}\nexports.limit = limit;\n/**\n * Returns the index of the first occurrence of a given string\n *\n * @export\n * @param {string} str\n * @param {string} [searchStr] the string to search\n * @param {number} [pos] starting position\n * @returns {number}\n */\nfunction indexOf(str, searchStr, pos) {\n if (pos === void 0) { pos = 0; }\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n if (str === '') {\n if (searchStr === '') {\n return 0;\n }\n return -1;\n }\n // fix type\n pos = Number(pos);\n pos = isNaN(pos) ? 0 : pos;\n searchStr = String(searchStr);\n var strArr = toArray(str);\n if (pos >= strArr.length) {\n if (searchStr === '') {\n return strArr.length;\n }\n return -1;\n }\n if (searchStr === '') {\n return pos;\n }\n var searchArr = toArray(searchStr);\n var finded = false;\n var index;\n for (index = pos; index < strArr.length; index += 1) {\n var searchIndex = 0;\n while (searchIndex < searchArr.length &&\n searchArr[searchIndex] === strArr[index + searchIndex]) {\n searchIndex += 1;\n }\n if (searchIndex === searchArr.length &&\n searchArr[searchIndex - 1] === strArr[index + searchIndex - 1]) {\n finded = true;\n break;\n }\n }\n return finded ? index : -1;\n}\nexports.indexOf = indexOf;\n","/**\n * Ensures that the given input is returned as an array.\n *\n * This function takes a value that might be a single item, an array, or `undefined` and returns it\n * as an array:\n *\n * - If the input is `undefined`, an empty array is returned.\n * - If the input is already an array, it is returned as-is.\n * - If the input is a single item, it is wrapped in an array.\n *\n * @typeParam T - The type of the elements in the array.\n * @param maybeArray - The value that may be a single item, an array, or `undefined`.\n * @returns An array containing the input value(s). If the input is `undefined`, an empty array is\n * returned.\n */\nexport default function ensureArray(maybeArray: T | T[] | undefined): T[] {\n if (!maybeArray) return [];\n\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","import { LocalizeKey } from 'menus.model';\nimport {\n indexOf as stringzIndexOf,\n substring as stringzSubstring,\n length as stringzLength,\n toArray as stringzToArray,\n limit as stringzLimit,\n substr as stringzSubstr,\n} from 'stringz';\nimport ensureArray from './array-util';\n\n/**\n * This function mirrors the `at` function from the JavaScript Standard String object. It handles\n * Unicode code points instead of UTF-16 character codes.\n *\n * Finds the Unicode code point at the given index.\n *\n * @param string String to index\n * @param index Position of the character to be returned in range of -length(string) to\n * length(string)\n * @returns New string consisting of the Unicode code point located at the specified offset,\n * undefined if index is out of bounds\n */\nexport function at(string: string, index: number): string | undefined {\n if (index > stringLength(string) || index < -stringLength(string)) return undefined;\n return substr(string, index, 1);\n}\n\n/**\n * This function mirrors the `charAt` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a new string consisting of the single unicode code point at the given index.\n *\n * @param string String to index\n * @param index Position of the string character to be returned, in the range of 0 to\n * length(string)-1\n * @returns New string consisting of the Unicode code point located at the specified offset, empty\n * string if index is out of bounds\n */\nexport function charAt(string: string, index: number): string {\n if (index < 0 || index > stringLength(string) - 1) return '';\n return substr(string, index, 1);\n}\n\n/**\n * This function mirrors the `codePointAt` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a non-negative integer that is the Unicode code point value of the character starting at\n * the given index.\n *\n * @param string String to index\n * @param index Position of the string character to be returned, in the range of 0 to\n * length(string)-1\n * @returns Non-negative integer representing the code point value of the character at the given\n * index, or undefined if there is no element at that position\n */\nexport function codePointAt(string: string, index: number): number | undefined {\n if (index < 0 || index > stringLength(string) - 1) return undefined;\n return substr(string, index, 1).codePointAt(0);\n}\n\n/**\n * This function mirrors the `endsWith` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Determines whether a string ends with the characters of this string.\n *\n * @param string String to search through\n * @param searchString Characters to search for at the end of the string\n * @param endPosition End position where searchString is expected to be found. Default is\n * `length(string)`\n * @returns True if it ends with searchString, false if it does not\n */\nexport function endsWith(\n string: string,\n searchString: string,\n endPosition: number = stringLength(string),\n): boolean {\n const lastIndexOfSearchString = lastIndexOf(string, searchString);\n if (lastIndexOfSearchString === -1) return false;\n if (lastIndexOfSearchString + stringLength(searchString) !== endPosition) return false;\n return true;\n}\n\n/**\n * Get the index of the closest closing curly brace in a string.\n *\n * Note: when escaped, gets the index of the curly brace, not the backslash before it.\n *\n * @param str String to search\n * @param index Index at which to start searching. Inclusive of this index\n * @param escaped Whether to search for an escaped or an unescaped closing curly brace\n * @returns Index of closest closing curly brace or -1 if not found\n */\nfunction indexOfClosestClosingCurlyBrace(str: string, index: number, escaped: boolean) {\n if (index < 0) return -1;\n if (escaped) {\n if (charAt(str, index) === '}' && charAt(str, index - 1) === '\\\\') return index;\n const closeCurlyBraceIndex = indexOf(str, '\\\\}', index);\n return closeCurlyBraceIndex >= 0 ? closeCurlyBraceIndex + 1 : closeCurlyBraceIndex;\n }\n\n let i = index;\n const strLength = stringLength(str);\n while (i < strLength) {\n i = indexOf(str, '}', i);\n\n if (i === -1 || charAt(str, i - 1) !== '\\\\') break;\n\n // Didn't find an un-escaped close brace, so keep looking\n i += 1;\n }\n\n return i >= strLength ? -1 : i;\n}\n\n/**\n * Formats a string, replacing `{replacer key}` with the value in the `replacers` at that replacer\n * key (or multiple replacer values if there are multiple in the string). Will also remove \\ before\n * curly braces if curly braces are escaped with a backslash in order to preserve the curly braces.\n * E.g. 'Hi, this is {name}! I like `\\{curly braces\\}`! would become Hi, this is Jim! I like {curly\n * braces}!\n *\n * If the key in unescaped braces is not found, returns the key without the braces. Empty unescaped\n * curly braces will just return a string without the braces e.g. ('I am {Nemo}', { 'name': 'Jim'})\n * would return 'I am Nemo'.\n *\n * @example\n *\n * ```typescript\n * formatReplacementString(\n * 'Hi, this is {name}! I like \\{curly braces\\}! I have a {carColor} car. My favorite food is {food}.',\n * { name: 'Bill', carColor: 'blue' }\n * );\n *\n * =>\n *\n * 'Hi, this is Bill! I like {curly braces}! I have a blue car. My favorite food is food.'\n * ```\n *\n * @param str String to format\n * @param replacers Object whose keys are replacer keys and whose values are the values with which\n * to replace `{replacer key}`s found in the string to format. Will be coerced to strings using\n * `${replacerValue}`\n * @returns Formatted string\n */\nexport function formatReplacementString(\n str: string,\n replacers: { [key: string | number]: string | unknown } | object,\n): string {\n let updatedStr = str;\n\n let i = 0;\n while (i < stringLength(updatedStr)) {\n switch (charAt(updatedStr, i)) {\n case '{':\n if (charAt(updatedStr, i - 1) !== '\\\\') {\n // This character is an un-escaped open curly brace. Try to match and replace\n const closeCurlyBraceIndex = indexOfClosestClosingCurlyBrace(updatedStr, i, false);\n if (closeCurlyBraceIndex >= 0) {\n // We have matching open and close indices. Try to replace the contents\n const replacerKey = substring(updatedStr, i + 1, closeCurlyBraceIndex);\n // Replace with the replacer string or just remove the curly braces\n const replacerString =\n replacerKey in replacers\n ? // We're getting a value.toString() with any type from an object with any keys\n // here. TypeScript doesn't need to carefully and precisely track the exact type.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n `${replacers[replacerKey as keyof typeof replacers]}`\n : replacerKey;\n\n updatedStr = `${substring(updatedStr, 0, i)}${replacerString}${substring(updatedStr, closeCurlyBraceIndex + 1)}`;\n // Put our index at the closing brace adjusted for the new string length minus two\n // because we are removing the curly braces\n // Ex: \"stuff {and} things\"\n // Replacer for and: n'\n // closeCurlyBraceIndex is 10\n // \"stuff n' things\"\n // i = 10 + 2 - 3 - 2 = 7\n i = closeCurlyBraceIndex + stringLength(replacerString) - stringLength(replacerKey) - 2;\n } else {\n // This is an unexpected un-escaped open curly brace with no matching closing curly\n // brace. Just ignore, I guess\n }\n } else {\n // This character is an escaped open curly brace. Remove the escape\n updatedStr = `${substring(updatedStr, 0, i - 1)}${substring(updatedStr, i)}`;\n // Adjust our index because we removed the escape\n i -= 1;\n }\n break;\n case '}':\n if (charAt(updatedStr, i - 1) !== '\\\\') {\n // This character is an un-escaped closing curly brace with no matching open curly\n // brace. Just ignore, I guess\n } else {\n // This character is an escaped closing curly brace. Remove the escape\n updatedStr = `${substring(updatedStr, 0, i - 1)}${substring(updatedStr, i)}`;\n // Adjust our index because we removed the escape\n i -= 1;\n }\n break;\n default:\n // No need to do anything with other characters at this point\n break;\n }\n\n i += 1;\n }\n\n return updatedStr;\n}\n/**\n * This function mirrors the `includes` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Performs a case-sensitive search to determine if searchString is found in string.\n *\n * @param string String to search through\n * @param searchString String to search for\n * @param position Position within the string to start searching for searchString. Default is `0`\n * @returns True if search string is found, false if it is not\n */\nexport function includes(string: string, searchString: string, position: number = 0): boolean {\n const partialString = substring(string, position);\n const indexOfSearchString = indexOf(partialString, searchString);\n if (indexOfSearchString === -1) return false;\n return true;\n}\n\n/**\n * This function mirrors the `indexOf` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns the index of the first occurrence of a given string.\n *\n * @param string String to search through\n * @param searchString The string to search for\n * @param position Start of searching. Default is `0`\n * @returns Index of the first occurrence of a given string\n */\nexport function indexOf(\n string: string,\n searchString: string,\n position: number | undefined = 0,\n): number {\n return stringzIndexOf(string, searchString, position);\n}\n\n/**\n * This function mirrors the `lastIndexOf` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Searches this string and returns the index of the last occurrence of the specified substring.\n *\n * @param string String to search through\n * @param searchString Substring to search for\n * @param position The index at which to begin searching. If omitted, the search begins at the end\n * of the string. Default is `undefined`\n * @returns Index of the last occurrence of searchString found, or -1 if not found.\n */\nexport function lastIndexOf(string: string, searchString: string, position?: number): number {\n let validatedPosition = position === undefined ? stringLength(string) : position;\n\n if (validatedPosition < 0) {\n validatedPosition = 0;\n } else if (validatedPosition >= stringLength(string)) {\n validatedPosition = stringLength(string) - 1;\n }\n\n for (let index = validatedPosition; index >= 0; index--) {\n if (substr(string, index, stringLength(searchString)) === searchString) {\n return index;\n }\n }\n\n return -1;\n}\n\n/**\n * This function mirrors the `length` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes. Since `length` appears to be a\n * reserved keyword, the function was renamed to `stringLength`\n *\n * Returns the length of a string.\n *\n * @param string String to return the length for\n * @returns Number that is length of the starting string\n */\nexport function stringLength(string: string): number {\n return stringzLength(string);\n}\n\n/**\n * This function mirrors the `normalize` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns the Unicode Normalization Form of this string.\n *\n * @param string The starting string\n * @param form Form specifying the Unicode Normalization Form. Default is `'NFC'`\n * @returns A string containing the Unicode Normalization Form of the given string.\n */\nexport function normalize(string: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD' | 'none'): string {\n const upperCaseForm = form.toUpperCase();\n if (upperCaseForm === 'NONE') {\n return string;\n }\n return string.normalize(upperCaseForm);\n}\n\n/**\n * Compares two strings using an ordinal comparison approach based on the specified collation\n * options. This function uses the built-in `localeCompare` method with the 'en' locale and the\n * provided collation options to compare the strings.\n *\n * @param string1 The first string to compare.\n * @param string2 The second string to compare.\n * @param options Optional. The collation options used for comparison.\n * @returns A number indicating the result of the comparison: - Negative value if string1 precedes\n * string2 in sorting order. - Zero if string1 and string2 are equivalent in sorting order. -\n * Positive value if string1 follows string2 in sorting order.\n */\nexport function ordinalCompare(\n string1: string,\n string2: string,\n options?: Intl.CollatorOptions,\n): number {\n return string1.localeCompare(string2, 'en', options);\n}\n\n/**\n * This function mirrors the `padEnd` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Pads this string with another string (multiple times, if needed) until the resulting string\n * reaches the given length. The padding is applied from the end of this string.\n *\n * @param string String to add padding too\n * @param targetLength The length of the resulting string once the starting string has been padded.\n * If value is less than or equal to length(string), then string is returned as is.\n * @param padString The string to pad the current string with. If padString is too long to stay\n * within targetLength, it will be truncated. Default is `\" \"`\n * @returns String with appropriate padding at the end\n */\n// Note: Limit with padString only works when length(padString) = 1, will be fixed with https://github.com/sallar/stringz/pull/59\nexport function padEnd(string: string, targetLength: number, padString: string = ' '): string {\n if (targetLength <= stringLength(string)) return string;\n return stringzLimit(string, targetLength, padString, 'right');\n}\n\n/**\n * This function mirrors the `padStart` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Pads this string with another string (multiple times, if needed) until the resulting string\n * reaches the given length. The padding is applied from the start of this string.\n *\n * @param string String to add padding too\n * @param targetLength The length of the resulting string once the starting string has been padded.\n * If value is less than or equal to length(string), then string is returned as is.\n * @param padString The string to pad the current string with. If padString is too long to stay\n * within the targetLength, it will be truncated from the end. Default is `\" \"`\n * @returns String with of specified targetLength with padString applied from the start\n */\n// Note: Limit with padString only works when length(padString) = 1, will be fixed with https://github.com/sallar/stringz/pull/59\nexport function padStart(string: string, targetLength: number, padString: string = ' '): string {\n if (targetLength <= stringLength(string)) return string;\n return stringzLimit(string, targetLength, padString, 'left');\n}\n\n// This is a helper function that performs a correction on the slice index to make sure it\n// cannot go out of bounds\nfunction correctSliceIndex(length: number, index: number) {\n if (index > length) return length;\n if (index < -length) return 0;\n if (index < 0) return index + length;\n return index;\n}\n\n/**\n * This function mirrors the `slice` function from the JavaScript Standard String object. It handles\n * Unicode code points instead of UTF-16 character codes.\n *\n * Extracts a section of this string and returns it as a new string, without modifying the original\n * string.\n *\n * @param string The starting string\n * @param indexStart The index of the first character to include in the returned substring.\n * @param indexEnd The index of the first character to exclude from the returned substring.\n * @returns A new string containing the extracted section of the string.\n */\nexport function slice(string: string, indexStart: number, indexEnd?: number): string {\n const length: number = stringLength(string);\n if (\n indexStart > length ||\n (indexEnd &&\n ((indexStart > indexEnd &&\n !(indexStart >= 0 && indexStart < length && indexEnd < 0 && indexEnd > -length)) ||\n indexEnd < -length))\n )\n return '';\n\n const newStart = correctSliceIndex(length, indexStart);\n const newEnd = indexEnd ? correctSliceIndex(length, indexEnd) : undefined;\n\n return substring(string, newStart, newEnd);\n}\n\n/**\n * This function mirrors the `split` function from the JavaScript Standard String object. It handles\n * Unicode code points instead of UTF-16 character codes.\n *\n * Takes a pattern and divides the string into an ordered list of substrings by searching for the\n * pattern, puts these substrings into an array, and returns the array.\n *\n * @param string The string to split\n * @param separator The pattern describing where each split should occur\n * @param splitLimit Limit on the number of substrings to be included in the array. Splits the\n * string at each occurrence of specified separator, but stops when limit entries have been placed\n * in the array.\n * @returns An array of strings, split at each point where separator occurs in the starting string.\n * Returns undefined if separator is not found in string.\n */\nexport function split(string: string, separator: string | RegExp, splitLimit?: number): string[] {\n const result: string[] = [];\n\n if (splitLimit !== undefined && splitLimit <= 0) {\n return [string];\n }\n\n if (separator === '') return toArray(string).slice(0, splitLimit);\n\n let regexSeparator = separator;\n if (\n typeof separator === 'string' ||\n (separator instanceof RegExp && !includes(separator.flags, 'g'))\n ) {\n regexSeparator = new RegExp(separator, 'g');\n }\n\n const matches: RegExpMatchArray | null = string.match(regexSeparator);\n\n let currentIndex = 0;\n\n if (!matches) return [string];\n\n for (let index = 0; index < (splitLimit ? splitLimit - 1 : matches.length); index++) {\n const matchIndex = indexOf(string, matches[index], currentIndex);\n const matchLength = stringLength(matches[index]);\n\n result.push(substring(string, currentIndex, matchIndex));\n currentIndex = matchIndex + matchLength;\n\n if (splitLimit !== undefined && result.length === splitLimit) {\n break;\n }\n }\n\n result.push(substring(string, currentIndex));\n\n return result;\n}\n\n/**\n * This function mirrors the `startsWith` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Determines whether the string begins with the characters of a specified string, returning true or\n * false as appropriate.\n *\n * @param string String to search through\n * @param searchString The characters to be searched for at the start of this string.\n * @param position The start position at which searchString is expected to be found (the index of\n * searchString's first character). Default is `0`\n * @returns True if the given characters are found at the beginning of the string, including when\n * searchString is an empty string; otherwise, false.\n */\nexport function startsWith(string: string, searchString: string, position: number = 0): boolean {\n const indexOfSearchString = indexOf(string, searchString, position);\n if (indexOfSearchString !== position) return false;\n return true;\n}\n\n/**\n * This function mirrors the `substr` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a substring by providing start and length. This function is not exported because it is\n * considered deprecated, however it is still useful as a local helper function.\n *\n * @param string String to be divided\n * @param begin Start position. Default is `Start of string`\n * @param len Length of result. Default is `String length minus start parameter`. Default is `String\n * length minus start parameter`\n * @returns Substring from starting string\n */\nfunction substr(\n string: string,\n begin: number = 0,\n len: number = stringLength(string) - begin,\n): string {\n return stringzSubstr(string, begin, len);\n}\n\n/**\n * This function mirrors the `substring` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a substring by providing start and end position.\n *\n * @param string String to be divided\n * @param begin Start position\n * @param end End position. Default is `End of string`\n * @returns Substring from starting string\n */\nexport function substring(\n string: string,\n begin: number,\n end: number = stringLength(string),\n): string {\n return stringzSubstring(string, begin, end);\n}\n\n/**\n * This function mirrors the `toArray` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Converts a string to an array of string characters.\n *\n * @param string String to convert to array\n * @returns An array of characters from the starting string\n */\nexport function toArray(string: string): string[] {\n return stringzToArray(string);\n}\n\n/** Determine whether the string is a `LocalizeKey` meant to be localized in Platform.Bible. */\nexport function isLocalizeKey(str: string): str is LocalizeKey {\n return startsWith(str, '%') && endsWith(str, '%');\n}\n\n/**\n * Escape RegExp special characters.\n *\n * You can also use this to escape a string that is inserted into the middle of a regex, for\n * example, into a character class.\n *\n * All credit to [`escape-string-regexp`](https://www.npmjs.com/package/escape-string-regexp) - this\n * function is simply copied directly from there to allow a common js export\n *\n * @example\n *\n * import escapeStringRegexp from 'platform-bible-utils';\n *\n * const escapedString = escapeStringRegexp('How much $ for a 🦄?');\n * //=> 'How much \\\\$ for a 🦄\\\\?'\n *\n * new RegExp(escapedString);\n */\nexport function escapeStringRegexp(string: string): string {\n if (typeof string !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\n/**\n * Transforms a string or an array of strings into an array of regular expressions, ensuring that\n * the result is always an array.\n *\n * This function accepts a value that may be a single string, an array of strings, or `undefined`.\n * It then:\n *\n * - Converts each string into a `RegExp` object.\n * - If the input is an array containing nested arrays, it converts each string in the nested arrays\n * into `RegExp` objects.\n * - Ensures that the result is always an array of `RegExp` objects or arrays of `RegExp` objects.\n *\n * @param stringStringMaybeArray - The value to be transformed, which can be a single string, an\n * array of strings or arrays of strings, or `undefined`.\n * @returns An array of `RegExp` objects or arrays of `RegExp` objects. If the input is `undefined`,\n * an empty array is returned.\n */\nexport function transformAndEnsureRegExpRegExpArray(\n stringStringMaybeArray: string | (string | string[])[] | undefined,\n): (RegExp | RegExp[])[] {\n if (!stringStringMaybeArray) return [];\n\n const stringStringArray = ensureArray(stringStringMaybeArray);\n\n const regExpRegExpArray = stringStringArray.map((stringMaybeStringArray: string | string[]) =>\n Array.isArray(stringMaybeStringArray)\n ? stringMaybeStringArray.map((str) => new RegExp(str))\n : new RegExp(stringMaybeStringArray),\n );\n\n return regExpRegExpArray;\n}\n\n/**\n * Transforms a string or an array of strings into an array of regular expressions.\n *\n * This function accepts a value that may be a single string, an array of strings, or `undefined`.\n * It then:\n *\n * - Converts each string into a `RegExp` object.\n * - Ensures that the result is always an array of `RegExp` objects.\n *\n * @param stringMaybeArray - The value to be transformed, which can be a single string, an array of\n * strings, or `undefined`.\n * @returns An array of `RegExp` objects. If the input is `undefined`, an empty array is returned.\n */\nexport function transformAndEnsureRegExpArray(\n stringMaybeArray: string | string[] | undefined,\n): RegExp[] {\n if (!stringMaybeArray) return [];\n\n const stringArray = ensureArray(stringMaybeArray);\n\n const regExpArray = stringArray.map((str: string) => new RegExp(str));\n\n return regExpArray;\n}\n\n/** This is an internal-only export for testing purposes and should not be used in development */\nexport const testingStringUtils = {\n indexOfClosestClosingCurlyBrace,\n};\n","import { Canon, VerseRef } from '@sillsdev/scripture';\nimport { BookInfo, ScriptureReference, ScrollGroupId } from './scripture.model';\nimport { split, startsWith } from './string-util';\nimport { LocalizeKey } from './menus.model';\n\nconst scrBookData: BookInfo[] = [\n { shortName: 'ERR', fullNames: ['ERROR'], chapters: -1 },\n { shortName: 'GEN', fullNames: ['Genesis'], chapters: 50 },\n { shortName: 'EXO', fullNames: ['Exodus'], chapters: 40 },\n { shortName: 'LEV', fullNames: ['Leviticus'], chapters: 27 },\n { shortName: 'NUM', fullNames: ['Numbers'], chapters: 36 },\n { shortName: 'DEU', fullNames: ['Deuteronomy'], chapters: 34 },\n { shortName: 'JOS', fullNames: ['Joshua'], chapters: 24 },\n { shortName: 'JDG', fullNames: ['Judges'], chapters: 21 },\n { shortName: 'RUT', fullNames: ['Ruth'], chapters: 4 },\n { shortName: '1SA', fullNames: ['1 Samuel'], chapters: 31 },\n { shortName: '2SA', fullNames: ['2 Samuel'], chapters: 24 },\n { shortName: '1KI', fullNames: ['1 Kings'], chapters: 22 },\n { shortName: '2KI', fullNames: ['2 Kings'], chapters: 25 },\n { shortName: '1CH', fullNames: ['1 Chronicles'], chapters: 29 },\n { shortName: '2CH', fullNames: ['2 Chronicles'], chapters: 36 },\n { shortName: 'EZR', fullNames: ['Ezra'], chapters: 10 },\n { shortName: 'NEH', fullNames: ['Nehemiah'], chapters: 13 },\n { shortName: 'EST', fullNames: ['Esther'], chapters: 10 },\n { shortName: 'JOB', fullNames: ['Job'], chapters: 42 },\n { shortName: 'PSA', fullNames: ['Psalm', 'Psalms'], chapters: 150 },\n { shortName: 'PRO', fullNames: ['Proverbs'], chapters: 31 },\n { shortName: 'ECC', fullNames: ['Ecclesiastes'], chapters: 12 },\n { shortName: 'SNG', fullNames: ['Song of Solomon', 'Song of Songs'], chapters: 8 },\n { shortName: 'ISA', fullNames: ['Isaiah'], chapters: 66 },\n { shortName: 'JER', fullNames: ['Jeremiah'], chapters: 52 },\n { shortName: 'LAM', fullNames: ['Lamentations'], chapters: 5 },\n { shortName: 'EZK', fullNames: ['Ezekiel'], chapters: 48 },\n { shortName: 'DAN', fullNames: ['Daniel'], chapters: 12 },\n { shortName: 'HOS', fullNames: ['Hosea'], chapters: 14 },\n { shortName: 'JOL', fullNames: ['Joel'], chapters: 3 },\n { shortName: 'AMO', fullNames: ['Amos'], chapters: 9 },\n { shortName: 'OBA', fullNames: ['Obadiah'], chapters: 1 },\n { shortName: 'JON', fullNames: ['Jonah'], chapters: 4 },\n { shortName: 'MIC', fullNames: ['Micah'], chapters: 7 },\n { shortName: 'NAM', fullNames: ['Nahum'], chapters: 3 },\n { shortName: 'HAB', fullNames: ['Habakkuk'], chapters: 3 },\n { shortName: 'ZEP', fullNames: ['Zephaniah'], chapters: 3 },\n { shortName: 'HAG', fullNames: ['Haggai'], chapters: 2 },\n { shortName: 'ZEC', fullNames: ['Zechariah'], chapters: 14 },\n { shortName: 'MAL', fullNames: ['Malachi'], chapters: 4 },\n { shortName: 'MAT', fullNames: ['Matthew'], chapters: 28 },\n { shortName: 'MRK', fullNames: ['Mark'], chapters: 16 },\n { shortName: 'LUK', fullNames: ['Luke'], chapters: 24 },\n { shortName: 'JHN', fullNames: ['John'], chapters: 21 },\n { shortName: 'ACT', fullNames: ['Acts'], chapters: 28 },\n { shortName: 'ROM', fullNames: ['Romans'], chapters: 16 },\n { shortName: '1CO', fullNames: ['1 Corinthians'], chapters: 16 },\n { shortName: '2CO', fullNames: ['2 Corinthians'], chapters: 13 },\n { shortName: 'GAL', fullNames: ['Galatians'], chapters: 6 },\n { shortName: 'EPH', fullNames: ['Ephesians'], chapters: 6 },\n { shortName: 'PHP', fullNames: ['Philippians'], chapters: 4 },\n { shortName: 'COL', fullNames: ['Colossians'], chapters: 4 },\n { shortName: '1TH', fullNames: ['1 Thessalonians'], chapters: 5 },\n { shortName: '2TH', fullNames: ['2 Thessalonians'], chapters: 3 },\n { shortName: '1TI', fullNames: ['1 Timothy'], chapters: 6 },\n { shortName: '2TI', fullNames: ['2 Timothy'], chapters: 4 },\n { shortName: 'TIT', fullNames: ['Titus'], chapters: 3 },\n { shortName: 'PHM', fullNames: ['Philemon'], chapters: 1 },\n { shortName: 'HEB', fullNames: ['Hebrews'], chapters: 13 },\n { shortName: 'JAS', fullNames: ['James'], chapters: 5 },\n { shortName: '1PE', fullNames: ['1 Peter'], chapters: 5 },\n { shortName: '2PE', fullNames: ['2 Peter'], chapters: 3 },\n { shortName: '1JN', fullNames: ['1 John'], chapters: 5 },\n { shortName: '2JN', fullNames: ['2 John'], chapters: 1 },\n { shortName: '3JN', fullNames: ['3 John'], chapters: 1 },\n { shortName: 'JUD', fullNames: ['Jude'], chapters: 1 },\n { shortName: 'REV', fullNames: ['Revelation'], chapters: 22 },\n];\n\nexport const FIRST_SCR_BOOK_NUM = 1;\nexport const LAST_SCR_BOOK_NUM = scrBookData.length - 1;\nexport const FIRST_SCR_CHAPTER_NUM = 1;\nexport const FIRST_SCR_VERSE_NUM = 1;\n\nexport const defaultScrRef: ScriptureReference = {\n bookNum: 1,\n chapterNum: 1,\n verseNum: 1,\n};\n\nexport const getChaptersForBook = (bookNum: number): number => {\n return scrBookData[bookNum]?.chapters ?? -1;\n};\n\nexport const offsetBook = (scrRef: ScriptureReference, offset: number): ScriptureReference => ({\n bookNum: Math.max(FIRST_SCR_BOOK_NUM, Math.min(scrRef.bookNum + offset, LAST_SCR_BOOK_NUM)),\n chapterNum: 1,\n verseNum: 1,\n});\n\nexport const offsetChapter = (scrRef: ScriptureReference, offset: number): ScriptureReference => ({\n ...scrRef,\n chapterNum: Math.min(\n Math.max(FIRST_SCR_CHAPTER_NUM, scrRef.chapterNum + offset),\n getChaptersForBook(scrRef.bookNum),\n ),\n verseNum: 1,\n});\n\nexport const offsetVerse = (scrRef: ScriptureReference, offset: number): ScriptureReference => ({\n ...scrRef,\n verseNum: Math.max(FIRST_SCR_VERSE_NUM, scrRef.verseNum + offset),\n});\n\n/**\n * https://github.com/ubsicap/Paratext/blob/master/ParatextData/SILScriptureExtensions.cs#L72\n *\n * Convert book number to a localized Id (a short description of the book). This should be used\n * whenever a book ID (short code) is shown to the user. It is primarily needed for people who do\n * not read Roman script well and need to have books identified in a alternate script (e.g. Chinese\n * or Russian)\n *\n * @param bookNumber\n * @param localizationLanguage In BCP 47 format\n * @param getLocalizedString Function that provides the localized versions of the book ids and names\n * asynchronously.\n * @returns\n */\nexport async function getLocalizedIdFromBookNumber(\n bookNumber: number,\n localizationLanguage: string,\n getLocalizedString: (item: {\n localizeKey: string;\n languagesToSearch?: string[];\n }) => Promise,\n) {\n const id = Canon.bookNumberToId(bookNumber);\n\n if (!startsWith(Intl.getCanonicalLocales(localizationLanguage)[0], 'zh'))\n return getLocalizedString({\n localizeKey: `LocalizedId.${id}`,\n languagesToSearch: [localizationLanguage],\n });\n\n // For Chinese the normal book name is already fairly short.\n const bookName = await getLocalizedString({\n localizeKey: `Book.${id}`,\n languagesToSearch: [localizationLanguage],\n });\n const parts = split(bookName, '-');\n // some entries had a second name inside ideographic parenthesis\n const parts2 = split(parts[0], '\\xff08');\n const retVal = parts2[0].trim();\n return retVal;\n}\n\n/**\n * Get the Scripture reference as an easily comparable/sortable integer.\n *\n * @param scrRef The Scripture reference.\n * @returns An integer where the first three digits represent the book, the next three represent the\n * chapter and the last three represent the verse.\n */\nexport function scrRefToBBBCCCVVV(scrRef: ScriptureReference): number {\n return new VerseRef(scrRef.bookNum, scrRef.chapterNum, scrRef.verseNum).BBBCCCVVV;\n}\n\n/**\n * Compares two Scripture references canonically.\n *\n * @param scrRef1 The first Scripture reference to compare.\n * @param scrRef2 The second Scripture reference to compare.\n * @returns A number indicating the result of the comparison: - Negative value if scrRef1 precedes\n * scrRef2 in sorting order. - Zero if scrRef1 and scrRef2 are equivalent in sorting order. -\n * Positive value if scrRef1 follows scrRef2 in sorting order.\n */\nexport function compareScrRefs(scrRef1: ScriptureReference, scrRef2: ScriptureReference): number {\n // TODO: consider edge cases for invalid references (current implementation should suffice for\n // all but the most extreme cases)\n return scrRefToBBBCCCVVV(scrRef1) - scrRefToBBBCCCVVV(scrRef2);\n}\n\n/** Get the localized string key for a given scroll group Id (or no scroll group if `undefined`) */\nexport function getLocalizeKeyForScrollGroupId(\n scrollGroupId: ScrollGroupId | undefined | 'undefined',\n): LocalizeKey {\n return `%scrollGroup_${scrollGroupId}%`;\n}\n\n/**\n * Gets a list of localized string keys for provided scroll group Ids. Uses\n * {@link getLocalizeKeyForScrollGroupId} internally\n *\n * @example\n *\n * ```typescript\n * getLocalizeKeysForScrollGroupIds([undefined, 0, 1, 2, 3, 4]);\n * // Gives localized string keys for the provided scroll group ids in an array\n * ```\n *\n * @param scrollGroupIds Scroll group ids to include\n * @returns List of localized string keys for scroll group Ids\n */\nexport function getLocalizeKeysForScrollGroupIds(scrollGroupIds: (ScrollGroupId | undefined)[]) {\n return scrollGroupIds.map((scrollGroupId) => getLocalizeKeyForScrollGroupId(scrollGroupId));\n}\n\n/**\n * Formats a Scripture reference.\n *\n * @param scrRef The Scripture reference to format.\n * @param optionOrLocalizedBookName Either 'id' (the default) to format using the \"standard\" (as\n * defined by SIL/UBS) 3-letter book ID, 'English' to format using the English book name spelled\n * out, or some other string (e.g., a localized book name, vernacular abbreviation, FCBH book id,\n * etc.) to use.\n * @param chapterVerseSeparator The character used to separate the chapter number from the verse\n * number. Default is a colon (:). Note: More than one character is allowed.\n * @param bookChapterSeparator The character used to separate the book from the chapter number.\n * Default is a single space. Note: More than one character is allowed.\n * @returns The formatted reference.\n */\nexport function formatScrRef(\n scrRef: ScriptureReference,\n optionOrLocalizedBookName?: 'id' | 'English' | string,\n chapterVerseSeparator?: string,\n bookChapterSeparator?: string,\n): string {\n let book: string;\n switch (optionOrLocalizedBookName ?? 'id') {\n case 'English':\n book = Canon.bookNumberToEnglishName(scrRef.bookNum);\n break;\n case 'id':\n book = Canon.bookNumberToId(scrRef.bookNum);\n break;\n default:\n // We already dealt with undefined about in the switch, but TS is getting confused.\n book = optionOrLocalizedBookName ?? '';\n break;\n }\n return `${book}${bookChapterSeparator ?? ' '}${scrRef.chapterNum}${chapterVerseSeparator ?? ':'}${scrRef.verseNum}`;\n}\n","/** Function to run to dispose of something. Returns true if successfully unsubscribed */\nexport type Unsubscriber = () => boolean;\n\n/**\n * Returns an Unsubscriber function that combines all the unsubscribers passed in.\n *\n * @param unsubscribers All unsubscribers to aggregate into one unsubscriber\n * @returns Function that unsubscribes from all passed in unsubscribers when run\n */\nexport const aggregateUnsubscribers = (unsubscribers: Unsubscriber[]): Unsubscriber => {\n return (...args) => {\n // Run the unsubscriber for each handler\n const unsubs = unsubscribers.map((unsubscriber) => unsubscriber(...args));\n\n // If all the unsubscribers resolve to truthiness, we succeed\n return unsubs.every((success) => success);\n };\n};\n\n/**\n * Function to run to dispose of something that runs asynchronously. The promise resolves to true if\n * successfully unsubscribed\n */\nexport type UnsubscriberAsync = () => Promise;\n\n/**\n * Returns an UnsubscriberAsync function that combines all the unsubscribers passed in.\n *\n * @param unsubscribers - All unsubscribers to aggregate into one unsubscriber.\n * @returns Function that unsubscribes from all passed in unsubscribers when run\n */\nexport const aggregateUnsubscriberAsyncs = (\n unsubscribers: (UnsubscriberAsync | Unsubscriber)[],\n): UnsubscriberAsync => {\n return async (...args) => {\n // Run the unsubscriber for each handler\n const unsubPromises = unsubscribers.map(async (unsubscriber) => unsubscriber(...args));\n\n // If all the unsubscribers resolve to truthiness, we succeed\n return (await Promise.all(unsubPromises)).every((success) => success);\n };\n};\n","import { type MarkerContent, type MarkerObject } from '@biblionexus-foundation/scripture-utilities';\nimport { VerseRef } from '@sillsdev/scripture';\n\n/** USJ content node type for a chapter */\nexport const CHAPTER_TYPE = 'chapter';\n\n/** USJ content node type for a verse */\nexport const VERSE_TYPE = 'verse';\n\n/** Represents a book, chapter, verse, and offset */\nexport type VerseRefOffset = {\n verseRef: VerseRef;\n offset: number;\n};\n\n/** This could actually have more content clauses at the end, but TS types are limited */\nexport type ContentJsonPath =\n | ''\n | `$`\n | `$.content[${number}]`\n | `$.content[${number}].content[${number}]`\n | `$.content[${number}].content[${number}].content[${number}]`\n | `$.content[${number}].content[${number}].content[${number}].content[${number}]`;\n\n/** Node within a USJ object, an offset within that node, and a JSONPath query to the node */\nexport type UsjContentLocation = {\n node: MarkerContent;\n offset: number;\n jsonPath: ContentJsonPath;\n};\n\n/** Utilities for reading from and writing to `Usj` objects */\nexport interface IUsjReaderWriter {\n /**\n * Return a copy of text following a given starting point\n *\n * @param start Point where text extraction will start\n * @param desiredLength Length of text to extract from this USJ data\n */\n extractText(start: UsjContentLocation, desiredLength: number): string;\n /**\n * Return a copy of text between two points\n *\n * @param start Point where text extraction will start\n * @param end Point where text extraction will end\n * @param maxLength Maximum length of string to return (defaults to 100)\n * @returns Text between the two points, capped at length `maxLength`\n */\n extractTextBetweenPoints(\n start: UsjContentLocation,\n end: UsjContentLocation,\n maxLength: number,\n ): string;\n /**\n * Given a starting point, find the next location in this USJ data that matches the given text\n *\n * @param start Point where the search for `text` will start\n * @param text Text to find\n * @param maxTextLengthToSearch Maximum length of text to search before stopping (default is 1000)\n * @returns Object containing the USJ node where `text` begins (it might be split across nodes),\n * offset within that node that indicates where `text` begins, and a JSONPath string that\n * indicates the location of the of USJ node within `usj`. Note that if the USJ node returned is\n * an object, it is the same object that is within this USJ data. So if you change it, you are\n * changing this USJ data.\n */\n findNextLocationOfMatchingText(\n start: UsjContentLocation,\n text: string,\n maxTextLengthToSearch: number,\n ): UsjContentLocation | undefined;\n /** Find the first value matching the given JSONPath query within this USJ data */\n findSingleValue(jsonPathQuery: string): T | undefined;\n /** Find the parent of the first value matching the given JSONPath query within this USJ data */\n findParent(jsonPathQuery: string): T | undefined;\n /**\n * Convert a JSONPath query into a VerseRef and offset\n *\n * @param jsonPathQuery JSONPath search expression that indicates a node within this USJ data. If\n * the expression matches more than one node, then only the first node found is considered.\n * @param bookId 3 letter ID of the book being searched (must be defined in this USJ data if not\n * provided here)\n * @returns VerseRef and offset that represents the location within this USJ data indicated by\n * `jsonPathQuery`\n */\n jsonPathToVerseRefAndOffset(jsonPathQuery: string, bookId?: string): VerseRefOffset;\n /** Build a JSONPath query that uniquely identifies the given node with this USJ data. */\n nodeToJsonPath(node: MarkerObject): ContentJsonPath;\n /**\n * Determine the VerseRef and offset that correspond to the location of a node somewhere within\n * this USJ data\n *\n * @param bookId ID of the book represented by this USJ data\n * @param node JSON object representing the location of the VerseRef and offset\n * @param nodeParent JSON object that owns the `content` array that includes `node`. If\n * 'undefined' is provided then the `UsjReaderWriter` will attempt to lookup the parent of\n * `node`. The lookup will always fail and throw an error if `node` is a string.\n * @returns VerseRef and offset representing the location of `node`, if one could be found\n */\n nodeToVerseRefAndOffset(\n bookId: string,\n node: MarkerContent,\n nodeParent: MarkerObject | MarkerContent[] | undefined,\n ): { verseRef: VerseRef; offset: number } | undefined;\n /**\n * Remove all nodes from this USJ data that match a given search function.\n *\n * @param searchFunction Function that returns `true` if the given node should be removed\n * @returns Number of nodes removed\n */\n removeContentNodes(searchFunction: (potentiallyMatchingNode: MarkerContent) => boolean): number;\n /**\n * Inform this UsjReaderWriter that the underlying USJ object changed. This is needed to clear\n * caches used when querying.\n */\n usjChanged(): void;\n /**\n * Convert a verse ref + offset into a node + offset within this USJ data and a JSONPath query\n *\n * @param verseRef Indicates the book, chapter, and verse of interest to find\n * @param verseRefOffset Specific location within verse text (defaults to 0)\n * @returns Object containing the USJ node indicated by `verseRef` and `verseRefOffset`, offset\n * within that node that matches the `verseRefOffset`, and a JSONPath string that indicates the\n * location of the of USJ node within this USJ data. Note that if the USJ node returned is an\n * object, it is the same object that is within this USJ data. So if you change it, you are\n * changing this USJ data.\n */\n verseRefToUsjContentLocation(verseRef: VerseRef, verseRefOffset: number): UsjContentLocation;\n}\n","var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n return function isEqual(a, b, state) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n return function isCircular(a, b, state) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n var cache = state.cache;\n var cachedA = cache.get(a);\n var cachedB = cache.get(b);\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n cache.set(a, b);\n cache.set(b, a);\n var result = areItemsEqual(a, b, state);\n cache.delete(a);\n cache.delete(b);\n return result;\n };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nvar hasOwn = Object.hasOwn ||\n (function (object, property) {\n return hasOwnProperty.call(object, property);\n });\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n\nvar OWNER = '_owner';\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.entries();\n var index = 0;\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.entries();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n var _a = aResult.value, aKey = _a[0], aValue = _a[1];\n var _b = bResult.value, bKey = _b[0], bValue = _b[1];\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch =\n state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n state.equals(aValue, bValue, aKey, bKey, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n index++;\n }\n return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n var properties = keys(a);\n var index = properties.length;\n if (keys(b).length !== index) {\n return false;\n }\n var property;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n var properties = getStrictProperties(a);\n var index = properties.length;\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n var property;\n var descriptorA;\n var descriptorB;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property)) {\n return false;\n }\n if (!state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n if ((descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.values();\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.values();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n return true;\n}\n\nvar ARGUMENTS_TAG = '[object Arguments]';\nvar BOOLEAN_TAG = '[object Boolean]';\nvar DATE_TAG = '[object Date]';\nvar MAP_TAG = '[object Map]';\nvar NUMBER_TAG = '[object Number]';\nvar OBJECT_TAG = '[object Object]';\nvar REG_EXP_TAG = '[object RegExp]';\nvar SET_TAG = '[object Set]';\nvar STRING_TAG = '[object String]';\nvar isArray = Array.isArray;\nvar isTypedArray = typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nvar assign = Object.assign;\nvar getTag = Object.prototype.toString.call.bind(Object.prototype.toString);\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(_a) {\n var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, arePrimitiveWrappersEqual = _a.arePrimitiveWrappersEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, areTypedArraysEqual = _a.areTypedArraysEqual;\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a, b, state) {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object') {\n return a !== a && b !== b;\n }\n var constructor = a.constructor;\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n var tag = getTag(a);\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state));\n }\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig(_a) {\n var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;\n var config = {\n areArraysEqual: strict\n ? areObjectsEqualStrict\n : areArraysEqual,\n areDatesEqual: areDatesEqual,\n areMapsEqual: strict\n ? combineComparators(areMapsEqual, areObjectsEqualStrict)\n : areMapsEqual,\n areObjectsEqual: strict\n ? areObjectsEqualStrict\n : areObjectsEqual,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n areRegExpsEqual: areRegExpsEqual,\n areSetsEqual: strict\n ? combineComparators(areSetsEqual, areObjectsEqualStrict)\n : areSetsEqual,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrict\n : areTypedArraysEqual,\n };\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n if (circular) {\n var areArraysEqual$1 = createIsCircular(config.areArraysEqual);\n var areMapsEqual$1 = createIsCircular(config.areMapsEqual);\n var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);\n var areSetsEqual$1 = createIsCircular(config.areSetsEqual);\n config = assign({}, config, {\n areArraysEqual: areArraysEqual$1,\n areMapsEqual: areMapsEqual$1,\n areObjectsEqual: areObjectsEqual$1,\n areSetsEqual: areSetsEqual$1,\n });\n }\n return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n return compare(a, b, state);\n };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual(_a) {\n var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;\n if (createState) {\n return function isEqual(a, b) {\n var _a = createState(), _b = _a.cache, cache = _b === void 0 ? circular ? new WeakMap() : undefined : _b, meta = _a.meta;\n return comparator(a, b, {\n cache: cache,\n equals: equals,\n meta: meta,\n strict: strict,\n });\n };\n }\n if (circular) {\n return function isEqual(a, b) {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals: equals,\n meta: undefined,\n strict: strict,\n });\n };\n }\n var state = {\n cache: undefined,\n equals: equals,\n meta: undefined,\n strict: strict,\n };\n return function isEqual(a, b) {\n return comparator(a, b, state);\n };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nvar deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nvar strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nvar circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nvar shallowEqual = createCustomEqual({\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nvar strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nvar circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options) {\n if (options === void 0) { options = {}; }\n var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;\n var config = createEqualityComparatorConfig(options);\n var comparator = createEqualityComparator(config);\n var equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n return createIsEqual({ circular: circular, comparator: comparator, createState: createState, equals: equals, strict: strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","// There is a circular version https://www.npmjs.com/package/fast-equals#circulardeepequal that I\n// think allows comparing React refs (which have circular references in particular places that this\n// library would ignore). Maybe we can change to that version sometime if needed.\nimport { deepEqual as isEqualDeep } from 'fast-equals';\n\n/**\n * Check that two objects are deeply equal, comparing members of each object and such\n *\n * @param a The first object to compare\n * @param b The second object to compare\n *\n * WARNING: Objects like arrays from different iframes have different constructor function\n * references even if they do the same thing, so this deep equality comparison fails objects that\n * look the same but have different constructors because different constructors could produce\n * false positives in [a few specific\n * situations](https://github.com/planttheidea/fast-equals/blob/a41afc0a240ad5a472e47b53791e9be017f52281/src/comparator.ts#L96).\n * This means that two objects like arrays from different iframes that look the same will fail\n * this check. Please use some other means to check deep equality in those situations.\n *\n * Note: This deep equality check considers `undefined` values on keys of objects NOT to be equal to\n * not specifying the key at all. For example, `{ stuff: 3, things: undefined }` and `{ stuff: 3\n * }` are not considered equal in this case\n *\n * - For more information and examples, see [this\n * CodeSandbox](https://codesandbox.io/s/deepequallibrarycomparison-4g4kk4?file=/src/index.mjs).\n *\n * @returns True if a and b are deeply equal; false otherwise\n */\nexport default function deepEqual(a: unknown, b: unknown) {\n return isEqualDeep(a, b);\n}\n","import deepEqual from './equality-checking';\n\n/**\n * Check if one object is a subset of the other object. \"Subset\" means that all properties of one\n * object are present in the other object, and if they are present that all values of those\n * properties are deeply equal. Sub-objects are also checked to be subsets of the corresponding\n * sub-object in the other object.\n *\n * @example ObjB is a subset of objA given these objects:\n *\n * ```ts\n * objA = { name: 'Alice', age: 30, address: { city: 'Seattle', state: 'Washington' } };\n * objB = { name: 'Alice', address: { city: 'Seattle' } };\n * ```\n *\n * It is important to note that only arrays of primitives (i.e., booleans, numbers, strings) are\n * supported. In particular, objects in arrays will not be checked for deep equality. Also, presence\n * in an array is all this checks, not the number of times that an item appears in an array. `[1,\n * 1]` is a subset of `[1]`.\n *\n * @param objectWithAllProperties Object to be checked if it is a superset of\n * `objectWithPartialProperties`\n * @param objectWithPartialProperties Object to be checked if it is a subset of\n * `objectWithAllProperties`\n * @returns True if `objectWithAllProperties` contains all the properties of\n * `objectWithPartialProperties` and all values of those properties are deeply equal\n */\nexport default function isSubset(\n objectWithAllProperties: unknown,\n objectWithPartialProperties: unknown,\n): boolean {\n if (typeof objectWithAllProperties !== typeof objectWithPartialProperties) return false;\n\n // For this function we're saying that all falsy things of the same type are equal to each other\n if (!objectWithAllProperties && !objectWithPartialProperties) return true;\n\n if (Array.isArray(objectWithAllProperties)) {\n // We know these are arrays from the line above\n /* eslint-disable no-type-assertion/no-type-assertion */\n const partialArray = objectWithPartialProperties as Array;\n const allArray = objectWithAllProperties as Array;\n /* eslint-enable no-type-assertion/no-type-assertion */\n\n if (partialArray.length === 0) return true;\n\n // This only works with arrays of primitives.\n // If someone cares about checking arrays of objects this needs updating.\n return partialArray.every((item) => allArray.includes(item));\n }\n\n if (typeof objectWithAllProperties !== 'object')\n return deepEqual(objectWithAllProperties, objectWithPartialProperties);\n\n // We know these are objects that potentially have properties because of the earlier checks\n /* eslint-disable no-type-assertion/no-type-assertion */\n const partialObj = objectWithPartialProperties as Record;\n const allObj = objectWithAllProperties as Record;\n /* eslint-enable no-type-assertion/no-type-assertion */\n\n let retVal = true;\n Object.keys(partialObj).forEach((key) => {\n if (!retVal) return;\n if (!Object.hasOwn(allObj, key)) retVal = false;\n else if (!isSubset(allObj[key], partialObj[key])) retVal = false;\n });\n return retVal;\n}\n","/**\n * Converts a JavaScript value to a JSON string, changing `undefined` properties in the JavaScript\n * object to `null` properties in the JSON string.\n *\n * WARNING: `null` values will become `undefined` values after passing through {@link serialize} then\n * {@link deserialize}. For example, `{ a: 1, b: undefined, c: null }` will become `{ a: 1, b:\n * undefined, c: undefined }`. If you are passing around user data that needs to retain `null`\n * values, you should wrap them yourself in a string before using this function. Alternatively, you\n * can write your own replacer that will preserve `null` in a way that you can recover later.\n *\n * @param value A JavaScript value, usually an object or array, to be converted.\n * @param replacer A function that transforms the results. Note that all `undefined` values returned\n * by the replacer will be further transformed into `null` in the JSON string.\n * @param space Adds indentation, white space, and line break characters to the return-value JSON\n * text to make it easier to read. See the `space` parameter of `JSON.stringify` for more\n * details.\n */\nexport function serialize(\n value: unknown,\n replacer?: (this: unknown, key: string, value: unknown) => unknown,\n space?: string | number,\n): string {\n const undefinedReplacer = (replacerKey: string, replacerValue: unknown) => {\n let newValue = replacerValue;\n if (replacer) newValue = replacer(replacerKey, newValue);\n // All `undefined` values become `null` on the way from JS objects into JSON strings\n // eslint-disable-next-line no-null/no-null\n if (newValue === undefined) newValue = null;\n return newValue;\n };\n return JSON.stringify(value, undefinedReplacer, space);\n}\n\n/**\n * Converts a JSON string into a value, converting all `null` properties from JSON into `undefined`\n * in the returned JavaScript value/object.\n *\n * WARNING: `null` values will become `undefined` values after passing through {@link serialize} then\n * {@link deserialize}. For example, `{ a: 1, b: undefined, c: null }` will become `{ a: 1, b:\n * undefined, c: undefined }`. If you are passing around user data that needs to retain `null`\n * values, you should wrap them yourself in a string before using this function. Alternatively, you\n * can write your own replacer that will preserve `null` in a way that you can recover later.\n *\n * @param value A valid JSON string.\n * @param reviver A function that transforms the results. This function is called for each member of\n * the object. If a member contains nested objects, the nested objects are transformed before the\n * parent object is. Note that `null` values are converted into `undefined` values after the\n * reviver has run.\n */\nexport function deserialize(\n value: string,\n reviver?: (this: unknown, key: string, value: unknown) => unknown,\n // Need to use `any` instead of `unknown` here to match the signature of JSON.parse\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // Helper function to replace `null` with `undefined` on a per property basis. This can't be done\n // with our own reviver because `JSON.parse` removes `undefined` properties from the return value.\n function replaceNull(obj: Record): Record {\n Object.keys(obj).forEach((key: string | number) => {\n // We only want to replace `null`, not other falsy values\n // eslint-disable-next-line no-null/no-null\n if (obj[key] === null) obj[key] = undefined;\n // If the property is an object, recursively call the helper function on it\n else if (typeof obj[key] === 'object')\n // Since the object came from a string, we know the keys will not be symbols\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n obj[key] = replaceNull(obj[key] as Record);\n });\n return obj;\n }\n\n const parsedObject = JSON.parse(value, reviver);\n // Explicitly convert the value 'null' that isn't stored as a property on an object to 'undefined'\n // eslint-disable-next-line no-null/no-null\n if (parsedObject === null) return undefined;\n if (typeof parsedObject === 'object') return replaceNull(parsedObject);\n return parsedObject;\n}\n\n/**\n * Check to see if the value is serializable without losing information\n *\n * @param value Value to test\n * @returns True if serializable; false otherwise\n *\n * Note: the values `undefined` and `null` are serializable (on their own or in an array), but\n * `null` values get transformed into `undefined` when serializing/deserializing.\n *\n * WARNING: This is inefficient right now as it stringifies, parses, stringifies, and === the value.\n * Please only use this if you need to\n *\n * DISCLAIMER: this does not successfully detect that values are not serializable in some cases:\n *\n * - Losses of removed properties like functions and `Map`s\n * - Class instances (not deserializable into class instances without special code)\n *\n * We intend to improve this in the future if it becomes important to do so. See [`JSON.stringify`\n * documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description)\n * for more information.\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n const serializedValue = serialize(value);\n return serializedValue === serialize(deserialize(serializedValue));\n } catch (e) {\n return false;\n }\n}\n\n/**\n * HTML Encodes the provided string. Thanks to ChatGPT\n *\n * @param str String to HTML encode\n * @returns HTML-encoded string\n */\nexport const htmlEncode = (str: string): string =>\n str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n","import DateTimeFormat from './intl-date-time-format';\n\n/**\n * Retrieves the current locale of the user's environment.\n *\n * @returns A string representing the current locale. If the locale cannot be determined, the\n * function returns an empty string.\n */\nexport default function getCurrentLocale(): string {\n // Use navigator when available\n if (typeof navigator !== 'undefined' && navigator.languages) {\n return navigator.languages[0];\n }\n // For Node.js\n return new DateTimeFormat().resolvedOptions().locale;\n}\n","import NumberFormat from './intl-number-format';\n\n/**\n * Formats a number according to the locale and formatting options of this NumberFormat object\n *\n * @example FormatBytes(1024) => \"1 KB\"\n *\n * @example FormatBytes(1024, 0) => \"1 KB\"\n *\n * @param fileSize Number to format\n * @param decimals Number of decimal places to round to\n * @returns String representing the given number formatted according to the locale and formatting\n * options of this NumberFormat object\n */\nexport default function formatBytes(fileSize: number, decimals: number = 2): string {\n if (fileSize === 0) return '0 Bytes';\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(fileSize) / Math.log(1024));\n const sizeToUse = sizes[i];\n const formattingFileSize = new NumberFormat('en', {\n style: 'decimal',\n maximumFractionDigits: decimals,\n minimumFractionDigits: 0,\n }).format(fileSize / 1024 ** i);\n return `${formattingFileSize} ${sizeToUse}`;\n}\n","//----------------------------------------------------------------------------------------------\n// NOTE: If you change any of the types, make sure the JSON schema at the end of this file gets\n// changed so they align.\n//----------------------------------------------------------------------------------------------\n\nimport { LocalizeKey, ReferencedItem } from 'menus.model';\n\n/** The data an extension provides to inform Platform.Bible of the settings it provides */\nexport type SettingsContribution = SettingsGroup | SettingsGroup[];\n/** A description of an extension's setting entry */\nexport type Setting = ExtensionControlledSetting;\n/** Setting definition that is validated by the extension. */\nexport type ExtensionControlledSetting = SettingBase & ModifierExtensionControlled;\n/** Base information needed to describe a setting entry */\nexport type SettingBase = StateBase & {\n [k: string]: unknown;\n /** LocalizeKey that displays in the settings dialog as the setting name */\n label: LocalizeKey;\n /** LocalizeKey that displays in the settings dialog to describe the setting */\n description?: LocalizeKey;\n};\n/** The data an extension provides to inform Platform.Bible of the project settings it provides */\nexport type ProjectSettingsContribution = ProjectSettingsGroup | ProjectSettingsGroup[];\n/** A description of an extension's setting entry */\nexport type ProjectSetting = ExtensionControlledProjectSetting;\n/** Setting definition that is validated by the extension. */\nexport type ExtensionControlledProjectSetting = ProjectSettingBase & ModifierExtensionControlled;\n/** Base information needed to describe a project setting entry */\nexport type ProjectSettingBase = SettingBase & ModifierProject;\n/** A description of an extension's user state entry */\nexport type UserState = ExtensionControlledState;\n/** State definition that is validated by the extension. */\nexport type ExtensionControlledState = StateBase & ModifierExtensionControlled;\n/** Group of related settings definitions */\nexport interface SettingsGroup {\n [k: string]: unknown;\n /** LocalizeKey that displays in the settings dialog as the group name */\n label: LocalizeKey;\n /** LocalizeKey that displays in the settings dialog to describe the group */\n description?: LocalizeKey;\n properties: SettingProperties;\n}\n/** Object whose keys are setting IDs and whose values are settings objects */\nexport interface SettingProperties {\n [k: ReferencedItem]: Setting;\n}\n/** Base information needed to describe a state entry */\nexport interface StateBase {\n [k: string]: unknown;\n /** Default value for the state/setting */\n default: unknown;\n /**\n * A state/setting ID whose value to set to this state/setting's starting value the first time\n * this state/setting is loaded\n */\n derivesFrom?: ReferencedItem;\n}\n/**\n * Modifies state/setting type to be extension-controlled. \"Extension-controlled\" means the\n * extension provides the component and the validator for the state/setting, so the state/setting is\n * controlled by the extension.\n */\nexport interface ModifierExtensionControlled {\n [k: string]: unknown;\n platformType?: undefined;\n type?: undefined;\n}\n/** Group of related settings definitions */\nexport interface ProjectSettingsGroup {\n [k: string]: unknown;\n /** LocalizeKey that displays in the project settings dialog as the group name */\n label: LocalizeKey;\n /** LocalizeKey that displays in the project settings dialog to describe the group */\n description?: LocalizeKey;\n properties: ProjectSettingProperties;\n}\n/** Object whose keys are setting IDs and whose values are settings objects */\nexport interface ProjectSettingProperties {\n [k: ReferencedItem]: ProjectSetting;\n}\n\n// Note: we removed the index signature on ModifierProject to avoid having it on\n// `ProjectMetadataFilterOptions`. Unfortunately adding \"additionalProperties\": false on the json\n// schema messes up validation. Please remove the index signature again in the future if you\n// regenerate types\nexport interface ModifierProject {\n /**\n * String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s\n * (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if they should be included.\n *\n * If this is one string, it will be matched against `projectInterface`s. If this is an array,\n * each entry is handled based on its type (at least one entry must match for this filter\n * condition to pass):\n *\n * - If the entry is a string, it will be matched against each `projectInterface`. If any match, the\n * project will pass this filter condition\n * - If the entry is an array of strings, each will be matched against each `projectInterface`. If\n * every string matches against at least one `projectInterface`, the project will pass this\n * filter condition\n *\n * In other words, each entry in the first-level array is `OR`'ed together. Each entry in\n * second-level arrays (arrays within the first-level array) are `AND`'ed together.\n *\n * Defaults to all {@link ProjectInterfaces}, so all projects that do not match\n * `excludeProjectInterfaces` will be included\n *\n * @example\n *\n * ```typescript\n * includeProjectInterfaces: ['one', ['two', 'three']];\n * ```\n *\n * This filter condition will succeed on projects whose `projectInterface`s fulfill at least one\n * of the following conditions (At least one entry in the array must match):\n *\n * - Include `one`\n * - Include both `two` and `three`.\n */\n includeProjectInterfaces?: undefined | string | (string | string[])[];\n /**\n * String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s\n * (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if they should absolutely not be included even if they match with\n * `includeProjectInterfaces`.\n *\n * If this is one string, it will be matched against `projectInterface`s. If this is an array,\n * each entry is handled based on its type (at least one entry must match for this filter\n * condition to exclude the project):\n *\n * - If the entry is a string, it will be matched against each `projectInterface`. If any match, the\n * project will pass this filter condition and exclude the project\n * - If the entry is an array of strings, each will be matched against each `projectInterface`. If\n * every string matches against at least one `projectInterface`, the project will pass this\n * filter condition and exclude the project\n *\n * In other words, each entry in the first-level array is `OR`'ed together. Each entry in\n * second-level arrays (arrays within the first-level array) are `AND`'ed together.\n *\n * Defaults to no {@link ProjectInterfaces}, so all projects that match `includeProjectInterfaces`\n * will be included\n *\n * @example\n *\n * ```typescript\n * excludeProjectInterfaces: ['one', ['two', 'three']];\n * ```\n *\n * This filter condition will succeed and exclude projects whose `projectInterface`s fulfill at\n * least one of the following conditions (At least one entry in the array must match):\n *\n * - Include `one`\n * - Include both `two` and `three`.\n */\n excludeProjectInterfaces?: undefined | string | (string | string[])[];\n /**\n * String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory\n * Ids that provided each project's metadata (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if the projects should be included.\n *\n * Defaults to all Project Data Provider Factory Ids, so all projects that do not match\n * `excludePdpFactoryIds` will be included\n */\n includePdpFactoryIds?: undefined | string | string[];\n /**\n * String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory\n * Ids that provided each project's metadata (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if the projects should absolutely not be included even if they match\n * with `includeProjectInterfaces`.\n *\n * Defaults to none, so all projects that match `includePdpFactoryIds` will be included\n */\n excludePdpFactoryIds?: undefined | string | string[];\n}\n\n/** The data an extension provides to inform Platform.Bible of the user state it provides */\nexport interface UserStateContribution {\n [k: ReferencedItem]: UserState;\n}\n/** The data an extension provides to inform Platform.Bible of the project state it provides */\nexport interface ProjectStateContribution {\n [k: ReferencedItem]: UserState;\n}\n\n//----------------------------------------------------------------------------------------------\n// NOTE: If you change the schema below, make sure the TS types above get changed so they align.\n//----------------------------------------------------------------------------------------------\nconst settingsDefs = {\n projectSettingsContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the project settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/projectSettingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/projectSettingsGroup',\n },\n },\n ],\n },\n projectSettingsGroup: {\n description: 'Group of related settings definitions',\n type: 'object',\n properties: {\n label: {\n description: 'localizeKey that displays in the project settings dialog as the group name',\n $ref: '#/$defs/localizeKey',\n },\n description: {\n description:\n 'localizeKey that displays in the project settings dialog to describe the group',\n $ref: '#/$defs/localizeKey',\n },\n properties: {\n $ref: '#/$defs/projectSettingProperties',\n },\n },\n required: ['label', 'properties'],\n },\n projectSettingProperties: {\n description: 'Object whose keys are setting IDs and whose values are settings objects',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n $ref: '#/$defs/projectSetting',\n },\n },\n additionalProperties: false,\n },\n projectSetting: {\n description: \"A description of an extension's setting entry\",\n anyOf: [\n {\n $ref: '#/$defs/extensionControlledProjectSetting',\n },\n ],\n },\n extensionControlledProjectSetting: {\n description: 'Setting definition that is validated by the extension.',\n allOf: [\n {\n $ref: '#/$defs/projectSettingBase',\n },\n {\n $ref: '#/$defs/modifierExtensionControlled',\n },\n ],\n },\n projectSettingBase: {\n description: 'Base information needed to describe a project setting entry',\n allOf: [\n {\n $ref: '#/$defs/settingBase',\n },\n {\n $ref: '#/$defs/modifierProject',\n },\n ],\n },\n modifierProject: {\n description: 'Modifies setting type to be project setting',\n type: 'object',\n properties: {\n includeProjectInterfaces: {\n description:\n \"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should be included.\\n\\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to pass):\\n\\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition\\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition\\n\\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\\n\\nDefaults to all {@link ProjectInterfaces}, so all projects that do not match `excludeProjectInterfaces` will be included\\n\\n@example\\n\\n```typescript\\nincludeProjectInterfaces: ['one', ['two', 'three']];\\n```\\n\\nThis filter condition will succeed on projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\\n\\n- Include `one`\\n- Include both `two` and `three`.\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n },\n ],\n },\n excludeProjectInterfaces: {\n description:\n \"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should absolutely not be included even if they match with `includeProjectInterfaces`.\\n\\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to exclude the project):\\n\\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition and exclude the project\\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition and exclude the project\\n\\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\\n\\nDefaults to no {@link ProjectInterfaces}, so all projects that match `includeProjectInterfaces` will be included\\n\\n@example\\n\\n```typescript\\nexcludeProjectInterfaces: ['one', ['two', 'three']];\\n```\\n\\nThis filter condition will succeed and exclude projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\\n\\n- Include `one`\\n- Include both `two` and `three`.\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n },\n ],\n },\n includePdpFactoryIds: {\n description:\n \"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should be included.\\n\\nDefaults to all Project Data Provider Factory Ids, so all projects that do not match `excludePdpFactoryIds` will be included\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n excludePdpFactoryIds: {\n description:\n \"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should absolutely not be included even if they match with `includeProjectInterfaces`.\\n\\nDefaults to none, so all projects that match `includePdpFactoryIds` will be included\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n },\n },\n settingsContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/settingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/settingsGroup',\n },\n },\n ],\n },\n settingsGroup: {\n description: 'Group of related settings definitions',\n type: 'object',\n properties: {\n label: {\n description: 'localizeKey that displays in the settings dialog as the group name',\n $ref: '#/$defs/localizeKey',\n },\n description: {\n description: 'localizeKey that displays in the settings dialog to describe the group',\n $ref: '#/$defs/localizeKey',\n },\n properties: {\n $ref: '#/$defs/settingProperties',\n },\n },\n required: ['label', 'properties'],\n },\n settingProperties: {\n description: 'Object whose keys are setting IDs and whose values are settings objects',\n type: 'object',\n patternProperties: {\n '^[\\\\w-]+\\\\.[\\\\w-]+$': {\n $ref: '#/$defs/setting',\n },\n },\n additionalProperties: false,\n },\n setting: {\n description: \"A description of an extension's setting entry\",\n anyOf: [\n {\n $ref: '#/$defs/extensionControlledSetting',\n },\n ],\n },\n extensionControlledSetting: {\n description: 'Setting definition that is validated by the extension.',\n allOf: [\n {\n $ref: '#/$defs/settingBase',\n },\n {\n $ref: '#/$defs/modifierExtensionControlled',\n },\n ],\n },\n settingBase: {\n description: 'Base information needed to describe a setting entry',\n allOf: [\n {\n $ref: '#/$defs/stateBase',\n },\n {\n type: 'object',\n properties: {\n label: {\n description: 'localizeKey that displays in the settings dialog as the setting name',\n $ref: '#/$defs/localizeKey',\n },\n description: {\n description: 'localizeKey that displays in the settings dialog to describe the setting',\n $ref: '#/$defs/localizeKey',\n },\n },\n required: ['label'],\n },\n ],\n },\n projectStateContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the project state it provides',\n $ref: '#/$defs/userStateProperties',\n },\n userStateContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the user state it provides',\n $ref: '#/$defs/userStateProperties',\n },\n userStateProperties: {\n description: 'Object whose keys are state IDs and whose values are state objects',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n $ref: '#/$defs/userState',\n },\n },\n additionalProperties: false,\n },\n userState: {\n description: \"A description of an extension's user state entry\",\n anyOf: [\n {\n $ref: '#/$defs/extensionControlledState',\n },\n ],\n },\n extensionControlledState: {\n description: 'State definition that is validated by the extension.',\n allOf: [\n {\n $ref: '#/$defs/stateBase',\n },\n {\n $ref: '#/$defs/modifierExtensionControlled',\n },\n ],\n },\n modifierExtensionControlled: {\n description:\n 'Modifies state/setting type to be extension-controlled. \"Extension-controlled\" means the extension provides the component and the validator for the state/setting, so the state/setting is controlled by the extension.',\n not: {\n anyOf: [\n {\n type: 'object',\n required: ['platformType'],\n },\n {\n type: 'object',\n required: ['type'],\n },\n ],\n },\n },\n stateBase: {\n description: 'Base information needed to describe a state entry',\n type: 'object',\n properties: {\n default: {\n description: 'default value for the state/setting',\n type: 'any',\n },\n derivesFrom: {\n description:\n \"a state/setting ID whose value to set to this state/setting's starting value the first time this state/setting is loaded\",\n $ref: '#/$defs/id',\n },\n },\n required: ['default'],\n },\n localizeKey: {\n description: \"Identifier for a string that will be localized based on the user's UI language\",\n type: 'string',\n pattern: '^%[\\\\w\\\\-\\\\.]+%$',\n tsType: 'LocalizeKey',\n },\n id: {\n description: '',\n type: 'string',\n pattern: '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$',\n tsType: 'Id',\n },\n};\n\n/**\n * Json-schema-to-typescript has some added stuff that isn't actually compatible with JSON schema,\n * so we remove them here\n *\n * @param defs The `$defs` property of a JSON schema (will be modified in place)\n */\n// JSON schema types are weird, so we'll just be careful\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeJsonToTypeScriptTypesStuff(defs: any) {\n if (!defs) return;\n\n // JSON schema types are weird, so we'll just be careful\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Object.values(defs).forEach((def: any) => {\n if (!def.type) return;\n\n if ('tsType' in def) delete def.tsType;\n\n if (def.type === 'any') {\n delete def.type;\n return;\n }\n\n if (def.type === 'object') {\n removeJsonToTypeScriptTypesStuff(def.properties);\n }\n });\n}\n\nremoveJsonToTypeScriptTypesStuff(settingsDefs);\n\n/** JSON schema object that aligns with the ProjectSettingsContribution type */\nexport const projectSettingsDocumentSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'Project Settings Contribution',\n description:\n 'The data an extension provides to inform Platform.Bible of the project settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/projectSettingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/projectSettingsGroup',\n },\n },\n ],\n\n $defs: settingsDefs,\n};\n\nObject.freeze(projectSettingsDocumentSchema);\n\n/** JSON schema object that aligns with the {@link SettingsContribution} type */\nexport const settingsDocumentSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'Settings Contribution',\n description:\n 'The data an extension provides to inform Platform.Bible of the settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/settingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/settingsGroup',\n },\n },\n ],\n\n $defs: settingsDefs,\n};\n\nObject.freeze(settingsDocumentSchema);\n","//----------------------------------------------------------------------------------------------\n// NOTE: If you change any of the types, make sure the JSON schema at the end of this file gets\n// changed so they align.\n//----------------------------------------------------------------------------------------------\n\nimport { LocalizeKey } from 'menus.model';\nimport { removeJsonToTypeScriptTypesStuff } from './settings.model';\n\n/** Localized string value associated with this key */\nexport type LocalizedStringValue = string;\n\n/** The data an extension provides to inform Platform.Bible of the localized strings it provides. */\nexport interface LocalizedStringDataContribution {\n [k: string]: unknown;\n metadata?: StringsMetadata;\n localizedStrings?: {\n [k: string]: LanguageStrings;\n };\n}\n/**\n * Map whose keys are localized string keys and whose values provide additional non-locale-specific\n * information about the localized string key\n */\nexport interface StringsMetadata {\n [k: LocalizeKey]: StringMetadata;\n}\n/** Additional non-locale-specific information about a localized string key */\nexport interface StringMetadata {\n [k: string]: unknown;\n /**\n * Localized string key from which to get this value if one does not exist in the specified\n * language. If a new key/value pair needs to be made to replace an existing one, this could help\n * smooth over the transition if the meanings are close enough\n *\n * You can use Paratext 9 Localized String Keys here. Be sure to escape any % signs with a\n * backslash `\\`.\n */\n fallbackKey?: LocalizeKey;\n /**\n * Additional information provided by developers in English to help the translator to know how to\n * translate this localized string accurately\n */\n notes?: string;\n}\n/**\n * Map whose keys are localized string keys and whose values provide information about how to\n * localize strings for the localized string key\n */\nexport interface LanguageStrings {\n [k: LocalizeKey]: LocalizedStringValue;\n}\n\n//----------------------------------------------------------------------------------------------\n// NOTE: If you change the schema below, make sure the TS types above get changed so they align.\n//----------------------------------------------------------------------------------------------\n\nconst localizedStringsDefs = {\n languageStrings: {\n description:\n 'Map whose keys are localized string keys and whose values provide information about how to localize strings for the localized string key',\n type: 'object',\n patternProperties: {\n '^%[\\\\w\\\\-\\\\.]+%$': {\n $ref: '#/$defs/localizedStringValue',\n },\n },\n additionalProperties: false,\n },\n localizedStringValue: {\n description: 'Localized string value associated with this key',\n type: 'string',\n },\n stringsMetadata: {\n description:\n 'Map whose keys are localized string keys and whose values provide additional non-locale-specific information about the localized string key',\n type: 'object',\n patternProperties: {\n '^%[\\\\w\\\\-\\\\.]+%$': {\n $ref: '#/$defs/stringMetadata',\n },\n },\n additionalProperties: false,\n },\n stringMetadata: {\n description: 'Additional non-locale-specific information about a localized string key',\n type: 'object',\n properties: {\n fallbackKey: {\n description:\n 'Localized string key from which to get this value if one does not exist in the specified language. If a new key/value pair needs to be made to replace an existing one, this could help smooth over the transition if the meanings are close enough.\\nYou can use Paratext 9 Localized String Keys here. Be sure to escape any % signs with a backslash `\\\\`.',\n type: 'string',\n pattern: \"^%[\\\\w\\\\-\\\\.;&,' (){}#:/\\\\\\\\?%⋮|[\\\\]“”‘’!~*\\u00A0+=•`…\\u200B↑↓]+%$\",\n tsType: 'LocalizeKey',\n },\n notes: {\n description:\n 'Additional information provided by developers in English to help the translator to know how to translate this localized string accurately',\n type: 'string',\n },\n },\n },\n localizeKey: {\n description: \"Identifier for a string that will be localized based on the user's UI language\",\n type: 'string',\n pattern: '^%[\\\\w\\\\-\\\\.]+%$',\n tsType: 'LocalizeKey',\n },\n};\n\nremoveJsonToTypeScriptTypesStuff(localizedStringsDefs);\n\n/** JSON schema object that aligns with the LocalizedStringDataContribution type */\nexport const localizedStringsDocumentSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'Localized String Data Contribution',\n description:\n 'The data an extension provides to inform Platform.Bible of the localized strings it provides.',\n type: 'object',\n properties: {\n metadata: {\n $ref: '#/$defs/stringsMetadata',\n },\n localizedStrings: {\n type: 'object',\n additionalProperties: {\n $ref: '#/$defs/languageStrings',\n },\n },\n },\n $defs: localizedStringsDefs,\n};\n\nObject.freeze(localizedStringsDocumentSchema);\n","//----------------------------------------------------------------------------------------------\n// NOTE: If you change any of the types, make sure the JSON schema at the end of this file gets\n// changed so they align.\n//----------------------------------------------------------------------------------------------\n\nimport { ReplaceType } from './util';\n\n/** Identifier for a string that will be localized in a menu based on the user's UI language */\nexport type LocalizeKey = `%${string}%`;\n\n/** Name of some UI element (i.e., tab, column, group, menu item) or some PAPI object (i.e., command) */\nexport type ReferencedItem = `${string}.${string}`;\n\nexport type OrderedItem = {\n /** Relative order of this item compared to other items in the same parent/scope (sorted ascending) */\n order: number;\n};\n\nexport type OrderedExtensibleContainer = OrderedItem & {\n /** Determines whether other items can be added to this after it has been defined */\n isExtensible?: boolean;\n};\n\n/** Group of menu items that belongs in a column */\nexport type MenuGroupDetailsInColumn = OrderedExtensibleContainer & {\n /** ID of column in which this group resides */\n column: ReferencedItem;\n};\n\n/** Group of menu items that belongs in a submenu */\nexport type MenuGroupDetailsInSubMenu = OrderedExtensibleContainer & {\n /** ID of menu item hosting the submenu in which this group resides */\n menuItem: ReferencedItem;\n};\n\n/** Column that includes header text in a menu */\nexport type MenuColumnWithHeader = OrderedExtensibleContainer & {\n /** Key that represents the text of the header text of the column */\n label: LocalizeKey;\n};\n\nexport type MenuItemBase = OrderedItem & {\n /** Menu group to which this menu item belongs */\n group: ReferencedItem;\n /** Key that represents the text of this menu item to display */\n label: LocalizeKey;\n /** Key that represents words the platform should reference when users are searching for menu items */\n searchTerms?: LocalizeKey;\n /** Key that represents the text to display if a mouse pointer hovers over the menu item */\n tooltip?: LocalizeKey;\n /** Additional information provided by developers to help people who perform localization */\n localizeNotes: string;\n};\n\n/** Menu item that hosts a submenu */\nexport type MenuItemContainingSubmenu = MenuItemBase & {\n /** ID for this menu item that holds a submenu */\n id: ReferencedItem;\n};\n\n/** Menu item that runs a command */\nexport type MenuItemContainingCommand = MenuItemBase & {\n /** Name of the PAPI command to run when this menu item is selected. */\n command: ReferencedItem;\n /**\n * Uri path to the icon to display after the menu text. Ex:\n * `papi-extension://helloWorld/assets/icon.png`\n */\n iconPathAfter?: string;\n /**\n * Uri path to the icon to display before the menu text. Ex:\n * `papi-extension://helloWorld/assets/icon.png`\n */\n iconPathBefore?: string;\n};\n\n/**\n * Group of menu items that can be combined with other groups to form a single context menu/submenu.\n * Groups are separated using a line within the menu/submenu.\n */\nexport type GroupsInSingleColumnMenu = {\n /** Named menu group */\n [property: ReferencedItem]: OrderedExtensibleContainer | MenuGroupDetailsInSubMenu;\n};\n\n/**\n * Group of menu items that can be combined with other groups to form a single menu/submenu within a\n * multi-column menu. Groups are separated using a line within the menu/submenu.\n */\nexport type GroupsInMultiColumnMenu = {\n /** Named menu group */\n [property: ReferencedItem]: MenuGroupDetailsInColumn | MenuGroupDetailsInSubMenu;\n};\n\n/** Group of columns that can be combined with other columns to form a multi-column menu */\nexport type ColumnsWithHeaders = {\n /** Named column of a menu */\n [property: ReferencedItem]: MenuColumnWithHeader;\n /** Defines whether columns can be added to this multi-column menu */\n isExtensible?: boolean;\n};\n\n/** Menu that contains a column without a header */\nexport type SingleColumnMenu = {\n /** Groups that belong in this menu */\n groups: GroupsInSingleColumnMenu;\n /** List of menu items that belong in this menu */\n items: (MenuItemContainingCommand | MenuItemContainingSubmenu)[];\n};\n\n/** Menu that contains multiple columns with headers */\nexport type MultiColumnMenu = {\n /** Columns that belong in this menu */\n columns: ColumnsWithHeaders;\n /** Groups that belong in this menu */\n groups: GroupsInMultiColumnMenu;\n /** List of menu items that belong in this menu */\n items: (MenuItemContainingCommand | MenuItemContainingSubmenu)[];\n};\n\n/** Menus for one single web view */\nexport type WebViewMenu = {\n /** Indicates whether the platform default menus should be included for this webview */\n includeDefaults: boolean | undefined;\n /** Menu that opens when you click on the top left corner of a tab */\n topMenu: MultiColumnMenu | undefined;\n /** Menu that opens when you right click on the main body/area of a tab */\n contextMenu: SingleColumnMenu | undefined;\n};\n\n/** Menus for all web views */\nexport type WebViewMenus = {\n /** Named web view */\n [property: ReferencedItem]: WebViewMenu;\n};\n\n/** Platform.Bible menus before they are localized */\nexport type PlatformMenus = {\n /** Top level menu for the application */\n mainMenu: MultiColumnMenu;\n /** Menus that apply per web view in the application */\n webViewMenus: WebViewMenus;\n /** Default context menu for web views that don't specify their own */\n defaultWebViewContextMenu: SingleColumnMenu;\n /** Default top menu for web views that don't specify their own */\n defaultWebViewTopMenu: MultiColumnMenu;\n};\n\n/**\n * Type that converts any menu type before it is localized to what it is after it is localized. This\n * can be applied to any menu type as needed.\n */\nexport type Localized = ReplaceType, ReferencedItem, string>;\n\n//----------------------------------------------------------------------------------------------\n// NOTE: If you change the schema below, make sure the TS types above get changed so they align.\n//----------------------------------------------------------------------------------------------\n/** JSON schema object that aligns with the PlatformMenus type */\nexport const menuDocumentSchema = {\n title: 'Platform.Bible menus',\n type: 'object',\n properties: {\n mainMenu: {\n description: 'Top level menu for the application',\n $ref: '#/$defs/multiColumnMenu',\n },\n defaultWebViewTopMenu: {\n description: \"Default top menu for web views that don't specify their own\",\n $ref: '#/$defs/multiColumnMenu',\n },\n defaultWebViewContextMenu: {\n description: \"Default context menu for web views that don't specify their own\",\n $ref: '#/$defs/singleColumnMenu',\n },\n webViewMenus: {\n description: 'Menus that apply per web view in the application',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n $ref: '#/$defs/menusForOneWebView',\n },\n },\n additionalProperties: false,\n },\n },\n required: ['mainMenu', 'defaultWebViewTopMenu', 'defaultWebViewContextMenu', 'webViewMenus'],\n additionalProperties: false,\n $defs: {\n localizeKey: {\n description:\n \"Identifier for a string that will be localized in a menu based on the user's UI language\",\n type: 'string',\n pattern: '^%[\\\\w\\\\-\\\\.]+%$',\n },\n referencedItem: {\n description:\n 'Name of some UI element (i.e., tab, column, group, menu item) or some PAPI object (i.e., command)',\n type: 'string',\n pattern: '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$',\n },\n columnsWithHeaders: {\n description:\n 'Group of columns that can be combined with other columns to form a multi-column menu',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n description: 'Single column with a header string',\n type: 'object',\n properties: {\n label: {\n description: 'Header text for this this column in the UI',\n $ref: '#/$defs/localizeKey',\n },\n localizeNotes: {\n description:\n 'Additional information provided by developers to help people who perform localization',\n type: 'string',\n },\n order: {\n description:\n 'Relative order of this column compared to other columns (sorted ascending)',\n type: 'number',\n },\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add menu groups to this column',\n type: 'boolean',\n },\n },\n required: ['label', 'order'],\n additionalProperties: false,\n },\n },\n properties: {\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add columns to this multi-column menu',\n type: 'boolean',\n },\n },\n },\n menuGroups: {\n description:\n 'Group of menu items that can be combined with other groups to form a single menu/submenu. Groups are separated using a line within the menu/submenu.',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n description: 'Single group that contains menu items',\n type: 'object',\n oneOf: [\n {\n properties: {\n column: {\n description:\n 'Column where this group belongs, not required for single column menus',\n $ref: '#/$defs/referencedItem',\n },\n order: {\n description:\n 'Relative order of this group compared to other groups in the same column or submenu (sorted ascending)',\n type: 'number',\n },\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add menu items to this menu group',\n type: 'boolean',\n },\n },\n required: ['order'],\n additionalProperties: false,\n },\n {\n properties: {\n menuItem: {\n description: 'Menu item that anchors the submenu where this group belongs',\n $ref: '#/$defs/referencedItem',\n },\n order: {\n description:\n 'Relative order of this group compared to other groups in the same column or submenu (sorted ascending)',\n type: 'number',\n },\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add menu items to this menu group',\n type: 'boolean',\n },\n },\n required: ['menuItem', 'order'],\n additionalProperties: false,\n },\n ],\n },\n },\n additionalProperties: false,\n },\n menuItem: {\n description:\n 'Single item in a menu that can be clicked on to take an action or can be the parent of a submenu',\n type: 'object',\n oneOf: [\n {\n properties: {\n id: {\n description: 'ID for this menu item that holds a submenu',\n $ref: '#/$defs/referencedItem',\n },\n },\n required: ['id'],\n },\n {\n properties: {\n command: {\n description: 'Name of the PAPI command to run when this menu item is selected.',\n $ref: '#/$defs/referencedItem',\n },\n iconPathBefore: {\n description:\n 'Uri path to the icon to display before the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`',\n type: 'string',\n },\n iconPathAfter: {\n description:\n 'Uri path to the icon to display after the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`',\n type: 'string',\n },\n },\n required: ['command'],\n },\n ],\n properties: {\n label: {\n description: 'Key that represents the text of this menu item to display',\n $ref: '#/$defs/localizeKey',\n },\n tooltip: {\n description:\n 'Key that represents the text to display if a mouse pointer hovers over the menu item',\n $ref: '#/$defs/localizeKey',\n },\n searchTerms: {\n description:\n 'Key that represents additional words the platform should reference when users are searching for menu items',\n $ref: '#/$defs/localizeKey',\n },\n localizeNotes: {\n description:\n 'Additional information provided by developers to help people who perform localization',\n type: 'string',\n },\n group: {\n description: 'Group to which this menu item belongs',\n $ref: '#/$defs/referencedItem',\n },\n order: {\n description:\n 'Relative order of this menu item compared to other menu items in the same group (sorted ascending)',\n type: 'number',\n },\n },\n required: ['label', 'group', 'order'],\n unevaluatedProperties: false,\n },\n groupsAndItems: {\n description: 'Core schema for a column',\n type: 'object',\n properties: {\n groups: {\n description: 'Groups that belong in this menu',\n $ref: '#/$defs/menuGroups',\n },\n items: {\n description: 'List of menu items that belong in this menu',\n type: 'array',\n items: { $ref: '#/$defs/menuItem' },\n uniqueItems: true,\n },\n },\n required: ['groups', 'items'],\n },\n singleColumnMenu: {\n description: 'Menu that contains a column without a header',\n type: 'object',\n allOf: [{ $ref: '#/$defs/groupsAndItems' }],\n unevaluatedProperties: false,\n },\n multiColumnMenu: {\n description: 'Menu that can contain multiple columns with headers',\n type: 'object',\n allOf: [\n { $ref: '#/$defs/groupsAndItems' },\n {\n properties: {\n columns: {\n description: 'Columns that belong in this menu',\n $ref: '#/$defs/columnsWithHeaders',\n },\n },\n required: ['columns'],\n },\n ],\n unevaluatedProperties: false,\n },\n menusForOneWebView: {\n description: 'Set of menus that are associated with a single tab',\n type: 'object',\n properties: {\n includeDefaults: {\n description:\n 'Indicates whether the platform default menus should be included for this webview',\n type: 'boolean',\n },\n topMenu: {\n description: 'Menu that opens when you click on the top left corner of a tab',\n $ref: '#/$defs/multiColumnMenu',\n },\n contextMenu: {\n description: 'Menu that opens when you right click on the main body/area of a tab',\n $ref: '#/$defs/singleColumnMenu',\n },\n },\n additionalProperties: false,\n },\n },\n};\n\nObject.freeze(menuDocumentSchema);\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record} current\n * @param {string} element\n * @returns {Record}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long\n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//"); - case br: - var Z = t.publicId, A = t.systemId; - if (e.push(""); + case Er: + var Y = t.publicId, A = t.systemId; + if (e.push(""); else if (A && A != ".") e.push(" SYSTEM ", A, ">"); else { @@ -3746,20 +3760,20 @@ function ae(t, e, r, u, n) { O && e.push(" [", O, "]"), e.push(">"); } return; - case gr: + case Dr: return e.push(""); - case mr: + case gr: return e.push("&", t.nodeName, ";"); default: e.push("??", t.nodeName); } } -function Ir(t, e, r) { +function Fr(t, e, r) { var u; switch (e.nodeType) { - case j: + case P: u = e.cloneNode(!1), u.ownerDocument = t; - case J: + case G: break; case ce: r = !0; @@ -3767,40 +3781,40 @@ function Ir(t, e, r) { } if (u || (u = e.cloneNode(!1)), u.ownerDocument = t, u.parentNode = null, r) for (var n = e.firstChild; n; ) - u.appendChild(Ir(t, n, r)), n = n.nextSibling; + u.appendChild(Fr(t, n, r)), n = n.nextSibling; return u; } -function Xe(t, e, r) { +function Ke(t, e, r) { var u = new e.constructor(); for (var n in e) if (Object.prototype.hasOwnProperty.call(e, n)) { var i = e[n]; typeof i != "object" && i != u[n] && (u[n] = i); } - switch (e.childNodes && (u.childNodes = new G()), u.ownerDocument = t, u.nodeType) { - case j: - var o = e.attributes, a = u.attributes = new $e(), s = o.length; + switch (e.childNodes && (u.childNodes = new z()), u.ownerDocument = t, u.nodeType) { + case P: + var o = e.attributes, a = u.attributes = new Me(), s = o.length; a._ownerElement = u; for (var l = 0; l < s; l++) - u.setAttributeNode(Xe(t, o.item(l), !0)); + u.setAttributeNode(Ke(t, o.item(l), !0)); break; case ce: r = !0; } if (r) for (var c = e.firstChild; c; ) - u.appendChild(Xe(t, c, r)), c = c.nextSibling; + u.appendChild(Ke(t, c, r)), c = c.nextSibling; return u; } -function Fr(t, e, r) { +function kr(t, e, r) { t[e] = r; } try { if (Object.defineProperty) { let t = function(e) { switch (e.nodeType) { - case j: - case J: + case P: + case G: var r = []; for (e = e.firstChild; e; ) e.nodeType !== 7 && e.nodeType !== 8 && r.push(t(e)), e = e.nextSibling; @@ -3811,7 +3825,7 @@ try { }; Object.defineProperty(le.prototype, "length", { get: function() { - return nt(this), this.$$length; + return it(this), this.$$length; } }), Object.defineProperty(D.prototype, "textContent", { get: function() { @@ -3819,8 +3833,8 @@ try { }, set: function(e) { switch (this.nodeType) { - case j: - case J: + case P: + case G: for (; this.firstChild; ) this.removeChild(this.firstChild); (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e)); @@ -3829,22 +3843,22 @@ try { this.data = e, this.value = e, this.nodeValue = e; } } - }), Fr = function(e, r, u) { + }), kr = function(e, r, u) { e["$$" + r] = u; }; } } catch { } -Y.DocumentType = Le; -Y.DOMException = w; -Y.DOMImplementation = yr; -Y.Element = te; -Y.Node = D; -Y.NodeList = G; -Y.XMLSerializer = Or; -var kr = {}; +W.DocumentType = Ve; +W.DOMException = w; +W.DOMImplementation = Nr; +W.Element = te; +W.Node = D; +W.NodeList = z; +W.XMLSerializer = xr; +var Rr = {}; (function(t) { - var e = X.freeze; + var e = H.freeze; t.XML_ENTITIES = e({ amp: "&", apos: "'", @@ -5979,8 +5993,8 @@ var kr = {}; zwj: "‍", zwnj: "‌" }), t.entityMap = t.HTML_ENTITIES; -})(kr); -var pt = {}, we = X.NAMESPACE, Ke = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, Lt = new RegExp("[\\-\\.0-9" + Ke.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"), Vt = new RegExp("^" + Ke.source + Lt.source + "*(?::" + Ke.source + Lt.source + "*)?$"), De = 0, K = 1, ue = 2, ve = 3, ne = 4, ie = 5, be = 6, ke = 7; +})(Rr); +var ht = {}, we = H.NAMESPACE, We = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, Vt = new RegExp("[\\-\\.0-9" + We.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"), Ut = new RegExp("^" + We.source + Vt.source + "*(?::" + We.source + Vt.source + "*)?$"), De = 0, X = 1, ue = 2, ve = 3, ne = 4, ie = 5, be = 6, ke = 7; function fe(t, e) { this.message = t, this.locator = e, Error.captureStackTrace && Error.captureStackTrace(this, fe); } @@ -5991,7 +6005,7 @@ function qr() { qr.prototype = { parse: function(t, e, r) { var u = this.domBuilder; - u.startDocument(), Rr(e, e = {}), Cn( + u.startDocument(), $r(e, e = {}), Bn( t, e, r, @@ -6000,12 +6014,12 @@ qr.prototype = { ), u.endDocument(); } }; -function Cn(t, e, r, u, n) { +function Bn(t, e, r, u, n) { function i(N) { if (N > 65535) { N -= 65536; - var M = 55296 + (N >> 10), jr = 56320 + (N & 1023); - return String.fromCharCode(M, jr); + var M = 55296 + (N >> 10), _r = 56320 + (N & 1023); + return String.fromCharCode(M, _r); } else return String.fromCharCode(N); } @@ -6016,21 +6030,21 @@ function Cn(t, e, r, u, n) { function a(N) { if (N > v) { var M = t.substring(v, N).replace(/&#?\w+;/g, o); - f && s(v), u.characters(M, 0, N - v), v = N; + p && s(v), u.characters(M, 0, N - v), v = N; } } function s(N, M) { - for (; N >= c && (M = p.exec(t)); ) - l = M.index, c = l + M[0].length, f.lineNumber++; - f.columnNumber = N - l + 1; + for (; N >= c && (M = f.exec(t)); ) + l = M.index, c = l + M[0].length, p.lineNumber++; + p.columnNumber = N - l + 1; } - for (var l = 0, c = 0, p = /.*(?:\r\n?|\n)|.*$/g, f = u.locator, h = [{ currentNSMap: e }], g = {}, v = 0; ; ) { + for (var l = 0, c = 0, f = /.*(?:\r\n?|\n)|.*$/g, p = u.locator, h = [{ currentNSMap: e }], g = {}, v = 0; ; ) { try { var b = t.indexOf("<", v); if (b < 0) { if (!t.substr(v).match(/^\s*$/)) { - var y = u.doc, Z = y.createTextNode(t.substr(v)); - y.appendChild(Z), u.currentElement = Z; + var y = u.doc, Y = y.createTextNode(t.substr(v)); + y.appendChild(Y), u.currentElement = Y; } return; } @@ -6038,8 +6052,8 @@ function Cn(t, e, r, u, n) { case "/": var x = t.indexOf(">", b + 3), A = t.substring(b + 2, x).replace(/[ \t\n\r]+$/g, ""), O = h.pop(); x < 0 ? (A = t.substring(b + 2).replace(/[\s<].*/, ""), n.error("end tag name: " + A + " is not complete:" + O.tagName), x = b + 1 + A.length) : A.match(/\s v ? v = x : a(Math.max(b, v) + 1); } } -function Ut(t, e) { +function zt(t, e) { return e.lineNumber = t.lineNumber, e.columnNumber = t.columnNumber, e; } -function Bn(t, e, r, u, n, i) { - function o(f, h, g) { - r.attributeNames.hasOwnProperty(f) && i.fatalError("Attribute " + f + " redefined"), r.addValue( - f, +function Tn(t, e, r, u, n, i) { + function o(p, h, g) { + r.attributeNames.hasOwnProperty(p) && i.fatalError("Attribute " + p + " redefined"), r.addValue( + p, // @see https://www.w3.org/TR/xml/#AVNormalize // since the xmldom sax parser does not "interpret" DTD the following is not implemented: // - recursive replacement of (DTD) entity references @@ -6091,10 +6105,10 @@ function Bn(t, e, r, u, n, i) { ); } for (var a, s, l = ++e, c = De; ; ) { - var p = t.charAt(l); - switch (p) { + var f = t.charAt(l); + switch (f) { case "=": - if (c === K) + if (c === X) a = t.slice(e, l), c = ve; else if (c === ue) c = ve; @@ -6103,13 +6117,13 @@ function Bn(t, e, r, u, n, i) { break; case "'": case '"': - if (c === ve || c === K) - if (c === K && (i.warning('attribute value must after "="'), a = t.slice(e, l)), e = l + 1, l = t.indexOf(p, e), l > 0) + if (c === ve || c === X) + if (c === X && (i.warning('attribute value must after "="'), a = t.slice(e, l)), e = l + 1, l = t.indexOf(f, e), l > 0) s = t.slice(e, l), o(a, s, e - 1), c = ie; else - throw new Error("attribute value no end '" + p + "' match"); + throw new Error("attribute value no end '" + f + "' match"); else if (c == ne) - s = t.slice(e, l), o(a, s, e), i.warning('attribute "' + a + '" missed start quot(' + p + ")!!"), e = l + 1, c = ie; + s = t.slice(e, l), o(a, s, e), i.warning('attribute "' + a + '" missed start quot(' + f + ")!!"), e = l + 1, c = ie; else throw new Error('attribute value must after "="'); break; @@ -6122,7 +6136,7 @@ function Bn(t, e, r, u, n, i) { case ke: c = ke, r.closed = !0; case ne: - case K: + case X: break; case ue: r.closed = !0; @@ -6142,7 +6156,7 @@ function Bn(t, e, r, u, n, i) { case ke: break; case ne: - case K: + case X: s = t.slice(e, l), s.slice(-1) === "/" && (r.closed = !0, s = s.slice(0, -1)); case ue: c === ue && (s = a), c == ne ? (i.warning('attribute "' + s + '" missed quot(")!'), o(a, s, e)) : ((!we.isHTML(u[""]) || !s.match(/^(?:disabled|checked|selected)$/i)) && i.warning('attribute "' + s + '" missed value!! "' + s + '" instead!!'), o(s, s, e)); @@ -6152,14 +6166,14 @@ function Bn(t, e, r, u, n, i) { } return l; case "€": - p = " "; + f = " "; default: - if (p <= " ") + if (f <= " ") switch (c) { case De: r.setTagName(t.slice(e, l)), c = be; break; - case K: + case X: a = t.slice(e, l), c = ue; break; case ne: @@ -6172,12 +6186,12 @@ function Bn(t, e, r, u, n, i) { else switch (c) { case ue: - r.tagName, (!we.isHTML(u[""]) || !a.match(/^(?:disabled|checked|selected)$/i)) && i.warning('attribute "' + a + '" missed value!! "' + a + '" instead2!!'), o(a, a, e), e = l, c = K; + r.tagName, (!we.isHTML(u[""]) || !a.match(/^(?:disabled|checked|selected)$/i)) && i.warning('attribute "' + a + '" missed value!! "' + a + '" instead2!!'), o(a, a, e), e = l, c = X; break; case ie: i.warning('attribute space is required"' + a + '"!!'); case be: - c = K, e = l; + c = X, e = l; break; case ve: c = ne, e = l; @@ -6189,22 +6203,22 @@ function Bn(t, e, r, u, n, i) { l++; } } -function zt(t, e, r) { - for (var u = t.tagName, n = null, p = t.length; p--; ) { - var i = t[p], o = i.qName, a = i.value, f = o.indexOf(":"); - if (f > 0) - var s = i.prefix = o.slice(0, f), l = o.slice(f + 1), c = s === "xmlns" && l; +function Gt(t, e, r) { + for (var u = t.tagName, n = null, f = t.length; f--; ) { + var i = t[f], o = i.qName, a = i.value, p = o.indexOf(":"); + if (p > 0) + var s = i.prefix = o.slice(0, p), l = o.slice(p + 1), c = s === "xmlns" && l; else l = o, s = null, c = o === "xmlns" && ""; - i.localName = l, c !== !1 && (n == null && (n = {}, Rr(r, r = {})), r[c] = n[c] = a, i.uri = we.XMLNS, e.startPrefixMapping(c, a)); + i.localName = l, c !== !1 && (n == null && (n = {}, $r(r, r = {})), r[c] = n[c] = a, i.uri = we.XMLNS, e.startPrefixMapping(c, a)); } - for (var p = t.length; p--; ) { - i = t[p]; + for (var f = t.length; f--; ) { + i = t[f]; var s = i.prefix; s && (s === "xml" && (i.uri = we.XML), s !== "xmlns" && (i.uri = r[s || ""])); } - var f = u.indexOf(":"); - f > 0 ? (s = t.prefix = u.slice(0, f), l = t.localName = u.slice(f + 1)) : (s = null, l = t.localName = u); + var p = u.indexOf(":"); + p > 0 ? (s = t.prefix = u.slice(0, p), l = t.localName = u.slice(p + 1)) : (s = null, l = t.localName = u); var h = t.uri = r[s || ""]; if (e.startElement(h, l, u, t), t.closed) { if (e.endElement(h, l, u), n) @@ -6213,7 +6227,7 @@ function zt(t, e, r) { } else return t.currentNSMap = r, t.localNSMap = n, !0; } -function Tn(t, e, r, u, n) { +function Sn(t, e, r, u, n) { if (/^(?:script|textarea)$/i.test(r)) { var i = t.indexOf("", e), o = t.substring(e + 1, i); if (/[&<]/.test(o)) @@ -6221,15 +6235,15 @@ function Tn(t, e, r, u, n) { } return e + 1; } -function Sn(t, e, r, u) { +function On(t, e, r, u) { var n = u[r]; return n == null && (n = t.lastIndexOf(""), n < e && (n = t.lastIndexOf("", e + 9); return r.startCDATA(), r.characters(t, e + 9, i - e - 9), r.endCDATA(), i + 3; } - var o = In(t, e), a = o.length; + var o = Fn(t, e), a = o.length; if (a > 1 && /!doctype/i.test(o[0][0])) { var s = o[1][0], l = !1, c = !1; a > 3 && (/^public$/i.test(o[2][0]) ? (l = o[3][0], c = a > 4 && o[4][0]) : /^system$/i.test(o[2][0]) && (c = o[3][0])); - var p = o[a - 1]; - return r.startDTD(s, l, c), r.endDTD(), p.index + p[0].length; + var f = o[a - 1]; + return r.startDTD(s, l, c), r.endDTD(), f.index + f[0].length; } } return -1; } -function xn(t, e, r) { +function In(t, e, r) { var u = t.indexOf("?>", e); if (u) { var n = t.substring(e, u).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/); @@ -6261,17 +6275,17 @@ function xn(t, e, r) { } return -1; } -function $r() { +function Mr() { this.attributeNames = {}; } -$r.prototype = { +Mr.prototype = { setTagName: function(t) { - if (!Vt.test(t)) + if (!Ut.test(t)) throw new Error("invalid tagName:" + t); this.tagName = t; }, addValue: function(t, e, r) { - if (!Vt.test(t)) + if (!Ut.test(t)) throw new Error("invalid attribute:" + t); this.attributeNames[t] = this.length, this[this.length++] = { qName: t, value: e, offset: r }; }, @@ -6302,35 +6316,35 @@ $r.prototype = { // getType:function(uri,localName){} // getType:function(i){}, }; -function In(t, e) { +function Fn(t, e) { var r, u = [], n = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g; for (n.lastIndex = e, n.exec(t); r = n.exec(t); ) if (u.push(r), r[1]) return u; } -pt.XMLReader = qr; -pt.ParseError = fe; -var Fn = X, kn = Y, Gt = kr, Mr = pt, qn = kn.DOMImplementation, Jt = Fn.NAMESPACE, Rn = Mr.ParseError, $n = Mr.XMLReader; -function Mn(t) { +ht.XMLReader = qr; +ht.ParseError = fe; +var kn = H, Rn = W, Jt = Rr, Pr = ht, qn = Rn.DOMImplementation, Ht = kn.NAMESPACE, $n = Pr.ParseError, Mn = Pr.XMLReader; +function Pn(t) { return t.replace(/\r[\n\u0085]/g, ` `).replace(/[\r\u0085\u2028]/g, ` `); } -function Pn(t) { +function jn(t) { this.options = t || { locator: {} }; } -Pn.prototype.parseFromString = function(t, e) { - var r = this.options, u = new $n(), n = r.domBuilder || new Ue(), i = r.errorHandler, o = r.locator, a = r.xmlns || {}, s = /\/x?html?$/.test(e), l = s ? Gt.HTML_ENTITIES : Gt.XML_ENTITIES; - o && n.setDocumentLocator(o), u.errorHandler = jn(i, n, o), u.domBuilder = r.domBuilder || n, s && (a[""] = Jt.HTML), a.xml = a.xml || Jt.XML; - var c = r.normalizeLineEndings || Mn; +jn.prototype.parseFromString = function(t, e) { + var r = this.options, u = new Mn(), n = r.domBuilder || new ze(), i = r.errorHandler, o = r.locator, a = r.xmlns || {}, s = /\/x?html?$/.test(e), l = s ? Jt.HTML_ENTITIES : Jt.XML_ENTITIES; + o && n.setDocumentLocator(o), u.errorHandler = _n(i, n, o), u.domBuilder = r.domBuilder || n, s && (a[""] = Ht.HTML), a.xml = a.xml || Ht.XML; + var c = r.normalizeLineEndings || Pn; return t && typeof t == "string" ? u.parse( c(t), a, l ) : u.errorHandler.error("invalid doc source"), n.doc; }; -function jn(t, e, r) { +function _n(t, e, r) { if (!t) { - if (e instanceof Ue) + if (e instanceof ze) return e; t = e; } @@ -6341,25 +6355,25 @@ function jn(t, e, r) { !a && n && (a = t.length == 2 ? function(s) { t(o, s); } : t), u[o] = a && function(s) { - a("[xmldom " + o + "] " + s + We(r)); + a("[xmldom " + o + "] " + s + Ye(r)); } || function() { }; } return i("warning"), i("error"), i("fatalError"), u; } -function Ue() { +function ze() { this.cdata = !1; } function oe(t, e) { e.lineNumber = t.lineNumber, e.columnNumber = t.columnNumber; } -Ue.prototype = { +ze.prototype = { startDocument: function() { this.doc = new qn().createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId); }, startElement: function(t, e, r, u) { var n = this.doc, i = n.createElementNS(t, r || e), o = u.length; - qe(this, i), this.currentElement = i, this.locator && oe(this.locator, i); + Re(this, i), this.currentElement = i, this.locator && oe(this.locator, i); for (var a = 0; a < o; a++) { var t = u.getURI(a), s = u.getValue(a), r = u.getQName(a), l = n.createAttributeNS(t, r); this.locator && oe(u.getLocator(a), l), l.value = l.nodeValue = s, i.setAttributeNode(l); @@ -6375,12 +6389,12 @@ Ue.prototype = { }, processingInstruction: function(t, e) { var r = this.doc.createProcessingInstruction(t, e); - this.locator && oe(this.locator, r), qe(this, r); + this.locator && oe(this.locator, r), Re(this, r); }, ignorableWhitespace: function(t, e, r) { }, characters: function(t, e, r) { - if (t = Ht.apply(this, arguments), t) { + if (t = Xt.apply(this, arguments), t) { if (this.cdata) var u = this.doc.createCDATASection(t); else @@ -6398,9 +6412,9 @@ Ue.prototype = { }, //LexicalHandler comment: function(t, e, r) { - t = Ht.apply(this, arguments); + t = Xt.apply(this, arguments); var u = this.doc.createComment(t); - this.locator && oe(this.locator, u), qe(this, u); + this.locator && oe(this.locator, u), Re(this, u); }, startCDATA: function() { this.cdata = !0; @@ -6412,7 +6426,7 @@ Ue.prototype = { var u = this.doc.implementation; if (u && u.createDocumentType) { var n = u.createDocumentType(t, e, r); - this.locator && oe(this.locator, n), qe(this, n), this.doc.doctype = n; + this.locator && oe(this.locator, n), Re(this, n), this.doc.doctype = n; } }, /** @@ -6420,33 +6434,33 @@ Ue.prototype = { * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html */ warning: function(t) { - console.warn("[xmldom warning] " + t, We(this.locator)); + console.warn("[xmldom warning] " + t, Ye(this.locator)); }, error: function(t) { - console.error("[xmldom error] " + t, We(this.locator)); + console.error("[xmldom error] " + t, Ye(this.locator)); }, fatalError: function(t) { - throw new Rn(t, this.locator); + throw new $n(t, this.locator); } }; -function We(t) { +function Ye(t) { if (t) return ` @` + (t.systemId || "") + "#[line:" + t.lineNumber + ",col:" + t.columnNumber + "]"; } -function Ht(t, e, r) { +function Xt(t, e, r) { return typeof t == "string" ? t.substr(e, r) : t.length >= e + r || e ? new java.lang.String(t, e, r) + "" : t; } "endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, function(t) { - Ue.prototype[t] = function() { + ze.prototype[t] = function() { return null; }; }); -function qe(t, e) { +function Re(t, e) { t.currentElement ? t.currentElement.appendChild(e) : t.doc.appendChild(e); } -const Xt = "USJ", z = ["figure", "note", "sidebar", "table"]; -Object.freeze(z); +const Kt = "USJ", U = ["figure", "note", "sidebar", "table"]; +Object.freeze(U); class T { constructor(e) { E(this, "usj"); @@ -6459,10 +6473,10 @@ class T { } // #region Directly using the JSONPath package to perform JSONPath query -> USJ node findSingleValue(e) { - const r = gt({ path: e, json: this.usj, wrap: !0 }); + const r = Dt({ path: e, json: this.usj, wrap: !0 }); if (r === void 0 || r.length === 0) return; if (!Array.isArray(r[0])) return r[0]; - const u = gt({ path: e, json: this.usj, wrap: !1 }); + const u = Dt({ path: e, json: this.usj, wrap: !1 }); return u.length === 1 && Array.isArray(u[0]) ? u[0] : u; } findParent(e) { @@ -6513,7 +6527,7 @@ class T { }) ) throw new Error(`Unable to find correct parent node of ${JSON.stringify(n)}`); - if (i.type === Xt) break; + if (i.type === Kt) break; n = i, i = u.get(i); } return r; @@ -6633,7 +6647,7 @@ class T { for (; i >= 0 && typeof r.content[i] != "object"; ) i -= 1; if (i < 0) { - if (r.type === Xt) + if (r.type === Kt) return u.chapterNum === void 0 && (u.chapterNum = 1, u.verseNum = 0, u.startingContentNode = void 0), u; const s = r, l = this.parentMap.get(s); if (!l) throw new Error(`No parent found for ${JSON.stringify(r)}`); @@ -6642,7 +6656,7 @@ class T { const o = r.content[i], a = T.findRightMostDescendantMarkerObject( o, r, - z + U ); return this.findVerseRefForNode(a.node, a.parent, u); } @@ -6656,15 +6670,15 @@ class T { if (!i) return; if (!i.chapterNum) throw new Error(`Could not determine chapter number for ${JSON.stringify(r)}`); - const o = new rr( + const o = new ur( e, i.chapterNum.toString(), i.verseNum ? i.verseNum.toString() : "0" ); let a = 0; return i.startingContentNode !== void 0 && this.findNextMatchingNode(i.startingContentNode, [], (s, l) => { - var c, p; - return s === r ? !0 : l.find((f) => z.includes(f.parent.type)) ? !1 : typeof s == "string" ? (a += s.length, !1) : s.type === xe && s.number !== ((c = i.chapterNum) == null ? void 0 : c.toString()) || s.type === Ie && s.number !== ((p = i.verseNum) == null ? void 0 : p.toString()) ? (a = 0, !0) : !1; + var c, f; + return s === r ? !0 : l.find((p) => U.includes(p.parent.type)) ? !1 : typeof s == "string" ? (a += s.length, !1) : s.type === xe && s.number !== ((c = i.chapterNum) == null ? void 0 : c.toString()) || s.type === Ie && s.number !== ((f = i.verseNum) == null ? void 0 : f.toString()) ? (a = 0, !0) : !1; }), { verseRef: o, offset: a }; } // #endregion @@ -6695,25 +6709,25 @@ class T { let i = !1, o = ""; const a = e.verse, s = this.findNextMatchingNode( n, - z, - (f, h) => f === n ? e.verseNum === 0 ? (o = T.convertWorkingStackToJsonPath(h), !0) : !1 : typeof f != "object" ? !1 : f.type === xe ? (i = !0, !0) : f.type === Ie && f.number !== void 0 && f.number === a ? (o = T.convertWorkingStackToJsonPath(h), !0) : !1 + U, + (p, h) => p === n ? e.verseNum === 0 ? (o = T.convertWorkingStackToJsonPath(h), !0) : !1 : typeof p != "object" ? !1 : p.type === xe ? (i = !0, !0) : p.type === Ie && p.number !== void 0 && p.number === a ? (o = T.convertWorkingStackToJsonPath(h), !0) : !1 ); if (i || s === void 0 || typeof s == "string") throw new Error(`Verse ${a} not found in ${u} ${e.chapterNum}`); if (r === 0) return { node: s, offset: 0, jsonPath: o }; - let l = 0, c = 0, p; + let l = 0, c = 0, f; return this.findNextMatchingNode( s, - z, - (f, h) => { - if (f === s) return !1; - if (typeof f == "string") { - if (l += f.length, l > r) - return o = T.convertWorkingStackToJsonPath(h), c = r - l + f.length, p = f, !0; - } else if (f.type === xe || f.type === Ie) return !0; + U, + (p, h) => { + if (p === s) return !1; + if (typeof p == "string") { + if (l += p.length, l > r) + return o = T.convertWorkingStackToJsonPath(h), c = r - l + p.length, f = p, !0; + } else if (p.type === xe || p.type === Ie) return !0; return !1; } - ), { node: p ?? s, offset: c, jsonPath: o }; + ), { node: f ?? s, offset: c, jsonPath: o }; } // #endregion // #region Search for text from a node + JSONPath + offset @@ -6722,12 +6736,12 @@ class T { if (T.findNextMatchingNodeUsingWorkingStack( e.node, this.convertJsonPathToWorkingStack(e.jsonPath), - z, - (p) => { - if (typeof p != "string") return !1; - i += p.length, n = `${n}${p}`; - const f = n.indexOf(r); - return f < 0 ? (o += n.length, n.length > r.length && (n = n.substring(n.length - r.length)), o -= n.length, i > u) : (a = o + f, !0); + U, + (f) => { + if (typeof f != "string") return !1; + i += f.length, n = `${n}${f}`; + const p = n.indexOf(r); + return p < 0 ? (o += n.length, n.length > r.length && (n = n.substring(n.length - r.length)), o -= n.length, i > u) : (a = o + p, !0); } ), a <= 0) return; i = 0; @@ -6735,8 +6749,8 @@ class T { const c = T.findNextMatchingNodeUsingWorkingStack( e.node, this.convertJsonPathToWorkingStack(e.jsonPath), - z, - (p, f) => typeof p != "string" || (i += p.length, i < a + 1) ? !1 : (s = a - i + p.length, l = f, !0) + U, + (f, p) => typeof f != "string" || (i += f.length, i < a + 1) ? !1 : (s = a - i + f.length, l = p, !0) ); if (!c) throw new Error("Internal error: inconsistent search results"); return { @@ -6752,7 +6766,7 @@ class T { return T.findNextMatchingNodeUsingWorkingStack( e.node, this.convertJsonPathToWorkingStack(e.jsonPath), - z, + U, (o) => { if (typeof o != "string") return !1; if (n >= o.length) @@ -6770,7 +6784,7 @@ class T { return T.findNextMatchingNodeUsingWorkingStack( e.node, this.convertJsonPathToWorkingStack(e.jsonPath), - z, + U, (i, o) => i === r.node && (typeof i == "object" || r.jsonPath === T.convertWorkingStackToJsonPath(o)) ? !0 : typeof i != "string" ? !1 : (n = `${n}${i}`, n.length > u && (n = n.substring(0, u)), n.length >= u) ), n; } @@ -6791,80 +6805,81 @@ class T { // #endregion } export { - Un as AsyncVariable, + zn as AsyncVariable, xe as CHAPTER_TYPE, - zn as Collator, - Ur as DateTimeFormat, + Gn as Collator, + zr as DateTimeFormat, Kr as DocumentCombiner, - Bu as FIRST_SCR_BOOK_NUM, - Su as FIRST_SCR_CHAPTER_NUM, - Ou as FIRST_SCR_VERSE_NUM, - Tu as LAST_SCR_BOOK_NUM, + Tu as FIRST_SCR_BOOK_NUM, + Ou as FIRST_SCR_CHAPTER_NUM, + xu as FIRST_SCR_VERSE_NUM, + Su as LAST_SCR_BOOK_NUM, Yr as Mutex, - Zn as MutexMap, - Qn as NonValidatingDocumentCombiner, + Qn as MutexMap, + ei as NonValidatingDocumentCombiner, Zr as NumberFormat, - zr as PlatformEventEmitter, - ei as UnsubscriberAsyncList, + Gr as PlatformEventEmitter, + ti as UnsubscriberAsyncList, T as UsjReaderWriter, Ie as VERSE_TYPE, - Ni as aggregateUnsubscriberAsyncs, - yi as aggregateUnsubscribers, - ri as at, + wi as aggregateUnsubscriberAsyncs, + Ni as aggregateUnsubscribers, + ui as at, se as charAt, - ui as codePointAt, - bi as compareScrRefs, - Yn as createSyncProxyForAsyncObject, - Jn as debounce, + ni as codePointAt, + Ei as compareScrRefs, + Zn as createSyncProxyForAsyncObject, + Hn as debounce, Ee as deepClone, - un as deepEqual, - di as defaultScrRef, - on as deserialize, + nn as deepEqual, + mi as defaultScrRef, + an as deserialize, Au as endsWith, - ir as ensureArray, - fi as escapeStringRegexp, - Ti as formatBytes, - ni as formatReplacementString, - Ai as formatScrRef, - Wn as getAllObjectFunctionNames, - xu as getChaptersForBook, - Bi as getCurrentLocale, - Xn as getErrorMessage, - Iu as getLocalizeKeyForScrollGroupId, - Ei as getLocalizeKeysForScrollGroupIds, - vi as getLocalizedIdFromBookNumber, - Hn as groupBy, - Ci as htmlEncode, - Nu as includes, + or as ensureArray, + pi as escapeStringRegexp, + Si as formatBytes, + ii as formatReplacementString, + Nu as formatReplacementStringToArray, + yi as formatScrRef, + Yn as getAllObjectFunctionNames, + Iu as getChaptersForBook, + Ti as getCurrentLocale, + Kn as getErrorMessage, + Fu as getLocalizeKeyForScrollGroupId, + Ai as getLocalizeKeysForScrollGroupIds, + bi as getLocalizedIdFromBookNumber, + Xn as groupBy, + Bi as htmlEncode, + wu as includes, Ae as indexOf, - li as isLocalizeKey, - wi as isSerializable, - Gr as isString, - nn as isSubset, - wu as lastIndexOf, - cn as localizedStringsDocumentSchema, - ln as menuDocumentSchema, - Gn as newGuid, - ii as normalize, - mi as offsetBook, - gi as offsetChapter, - Di as offsetVerse, - oi as ordinalCompare, - ai as padEnd, - si as padStart, - an as projectSettingsDocumentSchema, - wt as scrRefToBBBCCCVVV, - kt as serialize, - sn as settingsDocumentSchema, - ci as slice, - Nt as split, - or as startsWith, + fi as isLocalizeKey, + Ci as isSerializable, + qe as isString, + on as isSubset, + Cu as lastIndexOf, + ln as localizedStringsDocumentSchema, + fn as menuDocumentSchema, + Jn as newGuid, + oi as normalize, + gi as offsetBook, + Di as offsetChapter, + vi as offsetVerse, + ai as ordinalCompare, + si as padEnd, + ci as padStart, + sn as projectSettingsDocumentSchema, + Ct as scrRefToBBBCCCVVV, + Rt as serialize, + cn as settingsDocumentSchema, + li as slice, + wt as split, + ar as startsWith, C as stringLength, - P as substring, - Cu as toArray, - hi as transformAndEnsureRegExpArray, - pi as transformAndEnsureRegExpRegExpArray, + Q as substring, + Bu as toArray, + di as transformAndEnsureRegExpArray, + hi as transformAndEnsureRegExpRegExpArray, Xr as wait, - Kn as waitForDuration + Wn as waitForDuration }; //# sourceMappingURL=index.js.map diff --git a/lib/platform-bible-utils/dist/index.js.map b/lib/platform-bible-utils/dist/index.js.map index b67c123ce4..568e611f4c 100644 --- a/lib/platform-bible-utils/dist/index.js.map +++ b/lib/platform-bible-utils/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/async-variable.ts","../src/intl-collator.ts","../src/intl-date-time-format.ts","../src/platform-event-emitter.model.ts","../src/util.ts","../src/document-combiner.ts","../src/mutex.ts","../src/mutex-map.ts","../src/non-validating-document-combiner.ts","../src/intl-number-format.ts","../src/unsubscriber-async-list.ts","../../../node_modules/@sillsdev/scripture/dist/index.es.js","../../../node_modules/char-regex/index.js","../../../node_modules/stringz/dist/index.js","../src/array-util.ts","../src/string-util.ts","../src/scripture-util.ts","../src/unsubscriber.ts","../src/usj-reader-writer.model.ts","../../../node_modules/fast-equals/dist/esm/index.mjs","../src/equality-checking.ts","../src/subset-checking.ts","../src/serialization.ts","../src/intl-util.ts","../src/number-utils.ts","../src/settings.model.ts","../src/localized-strings.model.ts","../src/menus.model.ts","../../../node_modules/@xmldom/xmldom/lib/conventions.js","../../../node_modules/@xmldom/xmldom/lib/dom.js","../../../node_modules/@xmldom/xmldom/lib/entities.js","../../../node_modules/@xmldom/xmldom/lib/sax.js","../../../node_modules/@xmldom/xmldom/lib/dom-parser.js","../../../node_modules/@biblionexus-foundation/scripture-utilities/dist/index.js","../src/usj-reader-writer.ts"],"sourcesContent":["/** This class provides a convenient way for one task to wait on a variable that another task sets. */\nexport default class AsyncVariable {\n private readonly variableName: string;\n private readonly promiseToValue: Promise;\n private resolver: ((value: T) => void) | undefined;\n private rejecter: ((reason: string | undefined) => void) | undefined;\n\n /**\n * Creates an instance of the class\n *\n * @param variableName Name to use when logging about this variable\n * @param rejectIfNotSettledWithinMS Milliseconds to wait before verifying if the promise was\n * settled (resolved or rejected); will reject if it has not settled by that time. Use -1 if you\n * do not want a timeout at all. Defaults to 10000 ms\n */\n constructor(variableName: string, rejectIfNotSettledWithinMS: number = 10000) {\n this.variableName = variableName;\n this.promiseToValue = new Promise((resolve, reject) => {\n this.resolver = resolve;\n this.rejecter = reject;\n });\n if (rejectIfNotSettledWithinMS > 0) {\n setTimeout(() => {\n if (this.rejecter) {\n this.rejecter(`Timeout reached when waiting for ${this.variableName} to settle`);\n this.complete();\n }\n }, rejectIfNotSettledWithinMS);\n }\n Object.seal(this);\n }\n\n /**\n * Get this variable's promise to a value. This always returns the same promise even after the\n * value has been resolved or rejected.\n *\n * @returns The promise for the value to be set\n */\n get promise(): Promise {\n return this.promiseToValue;\n }\n\n /**\n * A simple way to see if this variable's promise was resolved or rejected already\n *\n * @returns Whether the variable was already resolved or rejected\n */\n get hasSettled(): boolean {\n return Object.isFrozen(this);\n }\n\n /**\n * Resolve this variable's promise to the given value\n *\n * @param value This variable's promise will resolve to this value\n * @param throwIfAlreadySettled Determines whether to throw if the variable was already resolved\n * or rejected. Defaults to `false`\n */\n resolveToValue(value: T, throwIfAlreadySettled: boolean = false): void {\n if (this.resolver) {\n console.debug(`${this.variableName} is being resolved now`);\n this.resolver(value);\n this.complete();\n } else {\n if (throwIfAlreadySettled) throw Error(`${this.variableName} was already settled`);\n console.debug(`Ignoring subsequent resolution of ${this.variableName}`);\n }\n }\n\n /**\n * Reject this variable's promise for the value with the given reason\n *\n * @param reason This variable's promise will be rejected with this reason\n * @param throwIfAlreadySettled Determines whether to throw if the variable was already resolved\n * or rejected. Defaults to `false`\n */\n rejectWithReason(reason: string, throwIfAlreadySettled: boolean = false): void {\n if (this.rejecter) {\n console.debug(`${this.variableName} is being rejected now`);\n this.rejecter(reason);\n this.complete();\n } else {\n if (throwIfAlreadySettled) throw Error(`${this.variableName} was already settled`);\n console.debug(`Ignoring subsequent rejection of ${this.variableName}`);\n }\n }\n\n /** Prevent any further updates to this variable */\n private complete(): void {\n this.resolver = undefined;\n this.rejecter = undefined;\n Object.freeze(this);\n }\n}\n","/** Enables language-sensitive string comparison. Wraps Intl.Collator */\nexport default class Collator {\n private collator: Intl.Collator;\n\n constructor(locales?: string | string[], options?: Intl.CollatorOptions) {\n this.collator = new Intl.Collator(locales, options);\n }\n\n /**\n * Compares two strings according to the sort order of this Collator object\n *\n * @param string1 String to compare\n * @param string2 String to compare\n * @returns A number indicating how string1 and string2 compare to each other according to the\n * sort order of this Collator object. Negative value if string1 comes before string2. Positive\n * value if string1 comes after string2. 0 if they are considered equal.\n */\n compare(string1: string, string2: string): number {\n return this.collator.compare(string1, string2);\n }\n\n /**\n * Returns a new object with properties reflecting the locale and collation options computed\n * during initialization of this collator object.\n *\n * @returns ResolvedCollatorOptions object\n */\n resolvedOptions(): Intl.ResolvedCollatorOptions {\n return this.collator.resolvedOptions();\n }\n}\n","/** Enables language-sensitive data and time formatting. Wraps Intl.DateTimeFormat */\nexport default class DateTimeFormat {\n private dateTimeFormatter: Intl.DateTimeFormat;\n\n constructor(locales?: string | string[], options?: Intl.DateTimeFormatOptions) {\n this.dateTimeFormatter = new Intl.DateTimeFormat(locales, options);\n }\n\n /**\n * Formats a date according to the locale and formatting option for this DateTimeFormat object\n *\n * @param date The date to format\n * @returns String representing the given date formatted according to the locale and formatting\n * options of this DateTimeFormat object\n */\n format(date: Date): string {\n return this.dateTimeFormatter.format(date);\n }\n\n /**\n * Formats a date range in the most concise way based on the locales and options provided when\n * instantiating this DateTimeFormat object\n *\n * @param startDate Date object representing start of the date range\n * @param endDate Date object representing the end of the date range\n * @returns String representing the given date range formatted according to the locale and\n * formatting options of this DateTimeFormat object\n */\n formatRange(startDate: Date, endDate: Date): string {\n return this.dateTimeFormatter.formatRange(startDate, endDate);\n }\n\n /**\n * Returns an array of locale-specific tokens representing each part of the formatted date range\n * produced by this DateTimeFormat object\n *\n * @param startDate Date object representing start of the date range\n * @param endDate Date object representing the end of the date range\n * @returns Array of DateTimeRangeFormatPart objects\n */\n formatRangeToParts(startDate: Date, endDate: Date): Intl.DateTimeRangeFormatPart[] {\n return this.dateTimeFormatter.formatRangeToParts(startDate, endDate);\n }\n\n /**\n * Allows locale-aware formatting of strings produced by this DateTimeFormat object\n *\n * @param date The date to format\n * @returns Array of DateTimeFormatPart objects\n */\n formatToParts(date: Date): Intl.DateTimeFormatPart[] {\n return this.dateTimeFormatter.formatToParts(date);\n }\n\n /**\n * Returns a new object with properties reflecting the locale and date and time formatting options\n * computed during initialization of this DateTimeFormat object\n *\n * @returns ResolvedDateTimeFormatOptions object\n */\n resolvedOptions(): Intl.ResolvedDateTimeFormatOptions {\n return this.dateTimeFormatter.resolvedOptions();\n }\n}\n","/** Interfaces, classes, and functions related to events and event emitters */\n\nimport { Dispose } from './disposal.model';\nimport { PlatformEvent, PlatformEventHandler } from './platform-event';\n\n/**\n * Event manager - accepts subscriptions to an event and runs the subscription callbacks when the\n * event is emitted Use eventEmitter.event(callback) to subscribe to the event. Use\n * eventEmitter.emit(event) to run the subscriptions. Generally, this EventEmitter should be\n * private, and its event should be public. That way, the emitter is not publicized, but anyone can\n * subscribe to the event.\n */\nexport default class PlatformEventEmitter implements Dispose {\n /**\n * Subscribes a function to run when this event is emitted.\n *\n * @param callback Function to run with the event when it is emitted\n * @returns Unsubscriber function to run to stop calling the passed-in function when the event is\n * emitted\n * @alias event\n */\n subscribe = this.event;\n\n /** All callback functions that will run when this event is emitted. Lazy loaded */\n private subscriptions?: PlatformEventHandler[];\n /** Event for listeners to subscribe to. Lazy loaded */\n private lazyEvent?: PlatformEvent;\n /** Whether this emitter has been disposed */\n private isDisposed = false;\n\n /**\n * Event for listeners to subscribe to. Subscribes a function to run when this event is emitted.\n * Use like `const unsubscriber = event(callback)`\n *\n * @param callback Function to run with the event when it is emitted\n * @returns Unsubscriber function to run to stop calling the passed-in function when the event is\n * emitted\n */\n get event(): PlatformEvent {\n this.assertNotDisposed();\n\n if (!this.lazyEvent) {\n this.lazyEvent = (callback) => {\n if (!callback || typeof callback !== 'function')\n throw new Error(`Event handler callback must be a function!`);\n\n // Initialize this.subscriptions if it does not exist\n if (!this.subscriptions) this.subscriptions = [];\n\n this.subscriptions.push(callback);\n\n return () => {\n if (!this.subscriptions) return false; // Did not find any subscribed callbacks\n\n const callbackIndex = this.subscriptions.indexOf(callback);\n\n if (callbackIndex < 0) return false; // Did not find this callback in the subscriptions\n\n // Remove the callback\n this.subscriptions.splice(callbackIndex, 1);\n\n return true;\n };\n };\n }\n return this.lazyEvent;\n }\n\n /** Disposes of this event, preparing it to release from memory */\n dispose = () => {\n return this.disposeFn();\n };\n\n /**\n * Runs the subscriptions for the event\n *\n * @param event Event data to provide to subscribed callbacks\n */\n emit = (event: T) => {\n // Do not do anything other than emitFn here. This emit is just binding `this` to emitFn\n this.emitFn(event);\n };\n\n /**\n * Function that runs the subscriptions for the event. Added here so children can override emit\n * and still call the base functionality. See NetworkEventEmitter.emit for example\n */\n protected emitFn(event: T) {\n this.assertNotDisposed();\n\n // Clone the subscriptions array before iterating over the callbacks so the callback index\n // doesn't get messed up if someone subscribes or unsubscribes inside one of the callbacks\n const emitCallbacks = [...(this.subscriptions ?? [])];\n emitCallbacks.forEach((callback) => callback(event));\n }\n\n /** Check to make sure this emitter is not disposed. Throw if it is */\n protected assertNotDisposed() {\n if (this.isDisposed) throw new Error('Emitter is disposed');\n }\n\n /**\n * Disposes of this event, preparing it to release from memory. Added here so children can\n * override emit and still call the base functionality.\n */\n protected disposeFn() {\n this.assertNotDisposed();\n\n this.isDisposed = true;\n this.subscriptions = undefined;\n this.lazyEvent = undefined;\n return Promise.resolve(true);\n }\n}\n","/** Collection of functions, objects, and types that are used as helpers in other services. */\n\n// Thanks to blubberdiblub at https://stackoverflow.com/a/68141099/217579\nexport function newGuid(): string {\n return '00-0-4-1-000'.replace(/[^-]/g, (s) =>\n // @ts-expect-error ts(2363) this works fine\n // eslint-disable-next-line no-bitwise\n (((Math.random() + ~~s) * 0x10000) >> s).toString(16).padStart(4, '0'),\n );\n}\n\n// thanks to DRAX at https://stackoverflow.com/a/9436948\n/**\n * Determine whether the object is a string\n *\n * @param o Object to determine if it is a string\n * @returns True if the object is a string; false otherwise\n */\nexport function isString(o: unknown): o is string {\n return typeof o === 'string' || o instanceof String;\n}\n\n/**\n * If deepClone isn't used when copying properties between objects, you may be left with dangling\n * references between the source and target of property copying operations.\n *\n * @param obj Object to clone\n * @returns Duplicate copy of `obj` without any references back to the original one\n */\nexport function deepClone(obj: T): T {\n // Assert the return type matches what is expected\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n return JSON.parse(JSON.stringify(obj)) as T;\n}\n\n/**\n * Get a function that reduces calls to the function passed in\n *\n * @param fn The function to debounce\n * @param delay How much delay in milliseconds after the most recent call to the debounced function\n * to call the function\n * @returns Function that, when called, only calls the function passed in at maximum every delay ms\n */\n// We don't know the parameter types since this function can be anything\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function debounce void>(fn: T, delay = 300): T {\n if (isString(fn)) throw new Error('Tried to debounce a string! Could be XSS');\n let timeout: ReturnType;\n // Ensure the right return type.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n return ((...args) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn(...args), delay);\n }) as T;\n}\n\n/**\n * Groups each item in the array of items into a map according to the keySelector\n *\n * @param items Array of items to group by\n * @param keySelector Function to run on each item to get the key for the group to which it belongs\n * @param valueSelector Function to run on each item to get the value it should have in the group\n * (like map function). If not provided, uses the item itself\n * @returns Map of keys to groups of values corresponding to each item\n */\nexport function groupBy(items: T[], keySelector: (item: T) => K): Map>;\nexport function groupBy(\n items: T[],\n keySelector: (item: T) => K,\n valueSelector: (item: T, key: K) => V,\n): Map>;\nexport function groupBy(\n items: T[],\n keySelector: (item: T) => K,\n valueSelector?: (item: T, key: K) => V,\n): Map> {\n const map = new Map>();\n items.forEach((item) => {\n const key = keySelector(item);\n const group = map.get(key);\n const value = valueSelector ? valueSelector(item, key) : item;\n if (group) group.push(value);\n else map.set(key, [value]);\n });\n return map;\n}\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\ntype ErrorWithMessage = {\n message: string;\n};\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\nfunction isErrorWithMessage(error: unknown): error is ErrorWithMessage {\n return (\n typeof error === 'object' &&\n // We're potentially dealing with objects we didn't create, so they might contain `null`\n // eslint-disable-next-line no-null/no-null\n error !== null &&\n 'message' in error &&\n // Type assert `error` to check it's `message`.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n typeof (error as Record).message === 'string'\n );\n}\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\n/**\n * Function to get an error from the object (useful for getting an error in a catch block)\n *\n * @param error Error object whose message to get\n * @returns Message of the error - if object has message, returns message. Otherwise tries to\n * stringify\n */\nfunction toErrorWithMessage(maybeError: unknown): ErrorWithMessage {\n if (isErrorWithMessage(maybeError)) return maybeError;\n\n try {\n return new Error(JSON.stringify(maybeError));\n } catch {\n // fallback in case there's an error stringifying the maybeError\n // like with circular references for example.\n return new Error(String(maybeError));\n }\n}\n\n// From https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript\n/**\n * Function to get an error message from the object (useful for getting error message in a catch\n * block)\n *\n * @example `try {...} catch (e) { logger.info(getErrorMessage(e)) }`\n *\n * @param error Error object whose message to get\n * @returns Message of the error - if object has message, returns message. Otherwise tries to\n * stringify\n */\nexport function getErrorMessage(error: unknown) {\n return toErrorWithMessage(error).message;\n}\n\n/** Asynchronously waits for the specified number of milliseconds. (wraps setTimeout in a promise) */\nexport function wait(ms: number) {\n // eslint-disable-next-line no-promise-executor-return\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Runs the specified function and will timeout if it takes longer than the specified wait time\n *\n * @param fn The function to run\n * @param maxWaitTimeInMS The maximum amount of time to wait for the function to resolve\n * @returns Promise that resolves to the resolved value of the function or undefined if it ran\n * longer than the specified wait time\n */\nexport function waitForDuration(fn: () => Promise, maxWaitTimeInMS: number) {\n const timeout = wait(maxWaitTimeInMS).then(() => undefined);\n return Promise.any([timeout, fn()]);\n}\n\n/**\n * Get all functions on an object and its prototype chain (so we don't miss any class methods or any\n * object methods). Note that the functions on the final item in the prototype chain (i.e., Object)\n * are skipped to avoid including functions like `__defineGetter__`, `__defineSetter__`, `toString`,\n * etc.\n *\n * @param obj Object whose functions to get\n * @param _objId Optional ID of the object to use for debug logging\n * @returns Array of all function names on an object\n */\n// Note: lodash has something that MIGHT do the same thing as this. Investigate for https://github.com/paranext/paranext-core/issues/134\nexport function getAllObjectFunctionNames(\n obj: { [property: string]: unknown },\n // Leaving it here for debugging\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _objId: string = 'obj',\n): Set {\n const objectFunctionNames = new Set();\n\n // Get all function properties directly defined on the object\n Object.getOwnPropertyNames(obj).forEach((property) => {\n try {\n if (typeof obj[property] === 'function') objectFunctionNames.add(property);\n } catch (error) {\n // Too noisy - only reenable if you need more details\n // console.trace(`Skipping ${property} on ${objId} due to error: ${error}`);\n }\n });\n\n // Walk up the prototype chain and get additional function properties, skipping the functions\n // provided by the final (Object) prototype\n let objectPrototype = Object.getPrototypeOf(obj);\n while (objectPrototype && Object.getPrototypeOf(objectPrototype)) {\n Object.getOwnPropertyNames(objectPrototype).forEach((property) => {\n try {\n if (typeof obj[property] === 'function') objectFunctionNames.add(property);\n } catch (error) {\n // Too noisy - only reenable if you need more details\n // console.trace(`Skipping ${property} on ${objId}'s prototype due to error: ${error}`);\n }\n });\n objectPrototype = Object.getPrototypeOf(objectPrototype);\n }\n\n return objectFunctionNames;\n}\n\n/**\n * Creates a synchronous proxy for an asynchronous object. The proxy allows calling methods on an\n * object that is asynchronously fetched using a provided asynchronous function.\n *\n * @param getObject - A function that returns a promise resolving to the object whose asynchronous\n * methods to call.\n * @param objectToProxy - An optional object that is the object that is proxied. If a property is\n * accessed that does exist on this object, it will be returned. If a property is accessed that\n * does not exist on this object, it will be considered to be an asynchronous method called on the\n * object returned from getObject.\n * @returns A synchronous proxy for the asynchronous object.\n */\nexport function createSyncProxyForAsyncObject(\n getObject: (args?: unknown[]) => Promise,\n objectToProxy: Partial = {},\n): T {\n // objectToProxy will have only the synchronously accessed properties of T on it, and this proxy\n // makes the async methods that do not exist yet available synchronously so we have all of T\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n return new Proxy(objectToProxy as T, {\n get(target, prop) {\n // We don't have any type information for T, so we assume methodName exists on it and will let JavaScript throw if it doesn't exist\n // @ts-expect-error 7053\n if (prop in target) return target[prop];\n return async (...args: unknown[]) => {\n // 7053: We don't have any type information for T, so we assume methodName exists on it and will let JavaScript throw if it doesn't exist\n // 2556: The args here are the parameters for the method specified\n // @ts-expect-error 7053 2556\n return (await getObject())[prop](...args);\n };\n },\n });\n}\n\n/** Within type T, recursively change all properties to be optional */\nexport type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial } : T;\n\n/** Within type T, recursively change properties that were of type A to be of type B */\nexport type ReplaceType = T extends A\n ? B\n : T extends object\n ? { [K in keyof T]: ReplaceType }\n : T;\n\n// Thanks to jcalz at https://stackoverflow.com/a/50375286\n/**\n * Converts a union type to an intersection type (`|` to `&`).\n *\n * Note: this utility type is for use on object types. It may fail on other types.\n *\n * @example\n *\n * ```typescript\n * type TypeOne = { one: string };\n * type TypeTwo = { two: number };\n * type TypeThree = { three: string };\n *\n * type TypeNums = { one: TypeOne; two: TypeTwo; three: TypeThree };\n * const numNames = ['one', 'two'] as const;\n * type TypeNumNames = typeof numNames;\n *\n * // Same as `TypeOne | TypeTwo`\n * // `{ one: string } | { two: number }`\n * type TypeOneTwoUnion = TypeNums[TypeNumNames[number]];\n *\n * // Same as `TypeOne & TypeTwo`\n * // `{ one: string; two: number }`\n * type TypeOneTwoIntersection = UnionToIntersection;\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type UnionToIntersection = (U extends any ? (x: U) => void : never) extends (\n x: infer I,\n) => void\n ? I\n : never;\n","import PlatformEventEmitter from './platform-event-emitter.model';\nimport { deepClone } from './util';\n\ntype JsonObjectLike = { [key: string]: unknown };\ntype JsonArrayLike = unknown[];\n\nexport type JsonDocumentLike = JsonObjectLike | JsonArrayLike;\n\n/**\n * Options for DocumentCombiner objects\n *\n * - `copyDocuments`: If true, this instance will perform a deep copy of all provided documents before\n * composing the output. If false, then changes made to provided documents after they are\n * contributed will be reflected in the next time output is composed.\n * - `ignoreDuplicateProperties`: If true, then duplicate properties are skipped if they are seen in\n * contributed documents. If false, then throw when duplicate properties are seen in contributed\n * documents.\n */\nexport type DocumentCombinerOptions = {\n copyDocuments: boolean;\n ignoreDuplicateProperties: boolean;\n};\n\n/**\n * Base class for any code that wants to compose JSON documents (primarily in the form of JS objects\n * or arrays) together into a single output document.\n */\nexport default class DocumentCombiner {\n protected baseDocument: JsonDocumentLike;\n protected readonly contributions = new Map();\n protected latestOutput: JsonDocumentLike | undefined;\n protected readonly options: DocumentCombinerOptions;\n private readonly onDidRebuildEmitter = new PlatformEventEmitter();\n /** Event that emits to announce that the document has been rebuilt and the output has been updated */\n // Need `onDidRebuildEmitter` to be instantiated before this line\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly onDidRebuild = this.onDidRebuildEmitter.subscribe;\n\n /**\n * Create a DocumentCombiner instance\n *\n * @param baseDocument This is the first document that will be used when composing the output\n * @param options Options used by this object when combining documents\n */\n protected constructor(baseDocument: JsonDocumentLike, options: DocumentCombinerOptions) {\n // Setting baseDocument redundantly because TS doesn't understand that updateBaseDocument does it\n this.baseDocument = baseDocument;\n this.options = options;\n this.updateBaseDocument(baseDocument);\n }\n\n /**\n * Update the starting document for composition process\n *\n * @param baseDocument Base JSON document/JS object that all other documents are added to\n * @returns Recalculated output document given the new starting state and existing other documents\n */\n updateBaseDocument(baseDocument: JsonDocumentLike): JsonDocumentLike | undefined {\n this.validateBaseDocument(baseDocument);\n this.baseDocument = this.options.copyDocuments ? deepClone(baseDocument) : baseDocument;\n this.baseDocument = this.transformBaseDocumentAfterValidation(this.baseDocument);\n return this.rebuild();\n }\n\n /**\n * Add or update one of the contribution documents for the composition process\n *\n * Note: the order in which contribution documents are added can be considered to be indeterminate\n * as it is currently ordered by however `Map.forEach` provides the contributions. The order\n * matters when merging two arrays into one. Also, when `options.ignoreDuplicateProperties` is\n * `true`, the order also matters when adding the same property to an object that is already\n * provided previously. Please let us know if you have trouble because of indeterminate\n * contribution ordering.\n *\n * @param documentName Name of the contributed document to combine\n * @param document Content of the contributed document to combine\n * @returns Recalculated output document given the new or updated contribution and existing other\n * documents\n */\n addOrUpdateContribution(\n documentName: string,\n document: JsonDocumentLike,\n ): JsonDocumentLike | undefined {\n this.validateContribution(documentName, document);\n const previousDocumentVersion = this.contributions.get(documentName);\n let documentToSet = this.options.copyDocuments && !!document ? deepClone(document) : document;\n documentToSet = this.transformContributionAfterValidation(documentName, documentToSet);\n this.contributions.set(documentName, documentToSet);\n try {\n return this.rebuild();\n } catch (error) {\n // If the output isn't valid after adding/updating the contribution, put it back how it was\n if (previousDocumentVersion) this.contributions.set(documentName, previousDocumentVersion);\n else this.contributions.delete(documentName);\n throw new Error(`Error when setting the document named ${documentName}: ${error}`);\n }\n }\n\n /**\n * Delete one of the contribution documents for the composition process\n *\n * @param documentName Name of the contributed document to delete\n * @returns Recalculated output document given the remaining other documents\n */\n deleteContribution(documentName: string): JsonDocumentLike | undefined {\n const document = this.contributions.get(documentName);\n if (!document) throw new Error(`${documentName} does not exist`);\n this.contributions.delete(documentName);\n try {\n return this.rebuild();\n } catch (error) {\n // If the output isn't valid after deleting the contribution, put it back and rethrow\n this.contributions.set(documentName, document);\n throw new Error(`Error when deleting the document named ${documentName}: ${error}`);\n }\n }\n\n /**\n * Delete all present contribution documents for the composition process and return to the base\n * document\n *\n * @returns Recalculated output document consisting only of the base document\n */\n deleteAllContributions(): JsonDocumentLike | undefined {\n if (this.contributions.size <= 0) return this.latestOutput;\n\n // Save out all contributions\n const contributions = [...this.contributions.entries()];\n\n // Delete all contributions\n contributions.forEach(([contributionName]) => this.contributions.delete(contributionName));\n\n // Rebuild with no contributions\n try {\n return this.rebuild();\n } catch (error) {\n // If the output isn't valid after deleting all contributions, put them back and rethrow\n contributions.forEach(([contributionName, document]) =>\n this.contributions.set(contributionName, document),\n );\n throw new Error(`Error when deleting all contributions: ${error}`);\n }\n }\n\n /**\n * Run the document composition process given the starting document and all contributions. Throws\n * if the output document fails to validate properly.\n *\n * @returns Recalculated output document given the starting and contributed documents\n */\n rebuild(): JsonDocumentLike | undefined {\n // The starting document is the output if there are no other contributions\n if (this.contributions.size === 0) {\n let potentialOutput = deepClone(this.baseDocument);\n potentialOutput = this.transformFinalOutputBeforeValidation(potentialOutput);\n this.validateOutput(potentialOutput);\n this.latestOutput = potentialOutput;\n this.onDidRebuildEmitter.emit(undefined);\n return this.latestOutput;\n }\n\n // Compose the output by validating each document one at a time to pinpoint errors better\n let outputIteration = this.baseDocument;\n this.contributions.forEach((contribution: JsonDocumentLike) => {\n outputIteration = mergeObjects(\n outputIteration,\n contribution,\n this.options.ignoreDuplicateProperties,\n );\n this.validateOutput(outputIteration);\n });\n outputIteration = this.transformFinalOutputBeforeValidation(outputIteration);\n this.validateOutput(outputIteration);\n this.latestOutput = outputIteration;\n this.onDidRebuildEmitter.emit(undefined);\n return this.latestOutput;\n }\n\n /**\n * Transform the starting document that is given to the combiner. This transformation occurs after\n * validating the base document and before combining any contributions.\n *\n * WARNING: If you do not create the combiner with option `copyDocuments: true` or clone inside\n * this method, this method will directly modify the `baseDocument` passed in.\n *\n * @param baseDocument Initial input document. Already validated via `validateBaseDocument`\n * @returns Transformed base document\n */\n // We just don't need `this` here. This is basically a no-op function that is available to child\n // classes to override\n // eslint-disable-next-line class-methods-use-this\n protected transformBaseDocumentAfterValidation(baseDocument: JsonDocumentLike): JsonDocumentLike {\n return baseDocument;\n }\n\n /**\n * Transform the contributed document associated with `documentName`. This transformation occurs\n * after validating the contributed document and before combining with other documents.\n *\n * WARNING: If you do not create the combiner with option `copyDocuments: true` or clone inside\n * this method, this method will directly modify the contributed `document` passed in.\n *\n * @param documentName Name of the contributed document to combine\n * @param document Content of the contributed document to combine. Already validated via\n * `validateContribution`\n * @returns Transformed contributed document\n */\n // We just don't need `this` here. This is basically a no-op function that is available to child\n // classes to override\n // eslint-disable-next-line class-methods-use-this\n protected transformContributionAfterValidation(\n // @ts-expect-error this parameter is unused but may be used in child classes\n documentName: string,\n document: JsonDocumentLike,\n ): JsonDocumentLike {\n return document;\n }\n\n /**\n * Throw an error if the provided document is not a valid starting document.\n *\n * @param baseDocument Base JSON document/JS object that all other documents are added to\n */\n // no-op intended to be overridden by child classes. Can't be static\n // @ts-expect-error ts(6133) parameter doesn't need to be used but still needs the right name\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n protected validateBaseDocument(baseDocument: JsonDocumentLike): void {}\n\n /**\n * Throw an error if the provided document is not a valid contribution document.\n *\n * @param documentName Name of the contributed document to combine\n * @param document Content of the contributed document to combine\n */\n // no-op intended to be overridden by child classes. Can't be static\n // @ts-expect-error ts(6133) parameter doesn't need to be used but still needs the right name\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n protected validateContribution(documentName: string, document: JsonDocumentLike): void {}\n\n /**\n * Throw an error if the provided output is not valid.\n *\n * @param output Output document that could potentially be returned to callers\n */\n // no-op intended to be overridden by child classes. Can't be static\n // @ts-expect-error ts(6133) parameter doesn't need to be used but still needs the right name\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n protected validateOutput(output: JsonDocumentLike): void {}\n\n /**\n * Transform the document that is the composition of the base document and all contribution\n * documents. This is the last step that will be run prior to validation via `validateOutput`\n * before `this.latestOutput` is updated to the new output.\n *\n * @param finalOutput Final output document that could potentially be returned to callers. \"Final\"\n * means no further contribution documents will be merged.\n */\n // no-op intended to be overridden by child classes. Can't be static\n // eslint-disable-next-line class-methods-use-this\n protected transformFinalOutputBeforeValidation(finalOutput: JsonDocumentLike): JsonDocumentLike {\n return finalOutput;\n }\n}\n\n// #region Helper functions\n\n/**\n * Determines if the input values are objects but not arrays\n *\n * @param values Objects to check\n * @returns True if all the values are objects but not arrays\n */\nfunction areNonArrayObjects(...values: unknown[]): boolean {\n let allMatch = true;\n values.forEach((value: unknown) => {\n if (!value || typeof value !== 'object' || Array.isArray(value)) allMatch = false;\n });\n return allMatch;\n}\n\n/**\n * Determines if the input values are arrays\n *\n * @param value Objects to check\n * @returns True if the values are arrays\n */\nfunction areArrayObjects(...values: unknown[]): boolean {\n let allMatch = true;\n values.forEach((value: unknown) => {\n if (!value || typeof value !== 'object' || !Array.isArray(value)) allMatch = false;\n });\n return allMatch;\n}\n\n/**\n * Deep clone and recursively merge the properties of one object (copyFrom) into another\n * (startingPoint). Throws if copyFrom would overwrite values already existing in startingPoint.\n *\n * Does not modify the objects passed in.\n *\n * @param startingPoint Object that is the starting point for the return value\n * @param copyFrom Object whose values are copied into the return value\n * @param ignoreDuplicateProperties Whether to ignore object properties that are present in\n * `copyFrom` that are already present in `startingPoint`. If `false`, throws when an object\n * property in `copyFrom` is already present in `startingPoint`\n * @returns Object that is the combination of the two documents\n */\nfunction mergeObjects(\n startingPoint: JsonDocumentLike,\n copyFrom: JsonDocumentLike,\n ignoreDuplicateProperties: boolean,\n): JsonDocumentLike {\n const retVal = deepClone(startingPoint);\n\n if (!copyFrom) return retVal;\n\n return mergeObjectsInternal(retVal, deepClone(copyFrom), ignoreDuplicateProperties);\n}\n\n/**\n * Recursively merge the properties of one object (copyFrom) into another (startingPoint). Throws if\n * copyFrom would overwrite values already existing in startingPoint.\n *\n * WARNING: Modifies the argument objects in some way. Recommended to use `mergeObjects`\n *\n * @param startingPoint Object that is the starting point for the return value\n * @param copyFrom Object whose values are copied into the return value\n * @param ignoreDuplicateProperties Whether to ignore object properties that are present in\n * `copyFrom` that are already present in `startingPoint`. If `false`, throws when an object\n * property in `copyFrom` is already present in `startingPoint`\n * @returns Object that is the combination of the two documents\n */\nfunction mergeObjectsInternal(\n startingPoint: JsonDocumentLike,\n copyFrom: JsonDocumentLike,\n ignoreDuplicateProperties: boolean,\n): JsonDocumentLike {\n if (!copyFrom) return startingPoint;\n\n if (areNonArrayObjects(startingPoint, copyFrom)) {\n // Merge properties since they are both objects\n\n // We know these are objects from the `if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n const startingPointObj = startingPoint as JsonObjectLike;\n const copyFromObj = copyFrom as JsonObjectLike;\n /* eslint-enable no-type-assertion/no-type-assertion */\n Object.keys(copyFromObj).forEach((key: string | number) => {\n if (Object.hasOwn(startingPointObj, key)) {\n if (areNonArrayObjects(startingPointObj[key], copyFromObj[key])) {\n startingPointObj[key] = mergeObjectsInternal(\n // We know these are objects from the `if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n startingPointObj[key] as JsonObjectLike,\n copyFromObj[key] as JsonObjectLike,\n ignoreDuplicateProperties,\n /* eslint-enable no-type-assertion/no-type-assertion */\n );\n } else if (areArrayObjects(startingPointObj[key], copyFromObj[key])) {\n // Concat the arrays since they are both arrays\n\n // We know these are arrays from the `else if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n startingPointObj[key] = (startingPointObj[key] as JsonArrayLike).concat(\n copyFromObj[key] as JsonArrayLike,\n );\n /* eslint-enable no-type-assertion/no-type-assertion */\n } else if (!ignoreDuplicateProperties)\n throw new Error(`Cannot merge objects: key \"${key}\" already exists in the target object`);\n // Note that the first non-object non-array value that gets placed in a property stays.\n // New values do not override existing ones\n } else {\n startingPointObj[key] = copyFromObj[key];\n }\n });\n } else if (areArrayObjects(startingPoint, copyFrom)) {\n // Concat the arrays since they are both arrays\n\n // Push the contents of copyFrom into startingPoint since it is a const and was already deep cloned\n // We know these are objects from the `else if` check\n /* eslint-disable no-type-assertion/no-type-assertion */\n (startingPoint as JsonArrayLike).push(...(copyFrom as JsonArrayLike));\n /* eslint-enable no-type-assertion/no-type-assertion */\n }\n\n // Note that nothing happens if `startingPoint` is not an object or an array or if `startingPoint`\n // and `copyFrom` are not both object or both arrays. Should we throw? Should we push `copyFrom`'s\n // values into the array? Other? Maybe one day we can add some options to decide what to do in\n // this situation, but YAGNI for now\n\n return startingPoint;\n}\n\n// #endregion\n","import { Mutex as AsyncMutex } from 'async-mutex';\n\n// Extending Mutex from async-mutex so we can add JSDoc\n\n/**\n * Class that allows calling asynchronous functions multiple times at once while only running one at\n * a time.\n *\n * @example\n *\n * ```typescript\n * const mutex = new Mutex();\n *\n * mutex.runExclusive(async () => {\n * // Do some asynchronous stuff\n * console.log('These run one-at-a-time');\n * });\n *\n * mutex.runExclusive(async () => {\n * // Do some asynchronous stuff\n * console.log('These run one-at-a-time');\n * });\n * ```\n *\n * See [`async-mutex`](https://www.npmjs.com/package/async-mutex) for more information.\n */\nclass Mutex extends AsyncMutex {}\n\nexport default Mutex;\n","import Mutex from './mutex';\n\n/** Map of {@link Mutex}es that automatically (lazily) generates a new {@link Mutex} for any new key */\nclass MutexMap {\n private mutexesByID = new Map();\n\n get(mutexID: string): Mutex {\n let retVal = this.mutexesByID.get(mutexID);\n if (retVal) return retVal;\n\n retVal = new Mutex();\n this.mutexesByID.set(mutexID, retVal);\n return retVal;\n }\n}\n\nexport default MutexMap;\n","import DocumentCombiner, { DocumentCombinerOptions, JsonDocumentLike } from './document-combiner';\n\nexport default class NonValidatingDocumentCombiner extends DocumentCombiner {\n // Making the protected base constructor public\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(baseDocument: JsonDocumentLike, options: DocumentCombinerOptions) {\n super(baseDocument, options);\n }\n\n get output(): JsonDocumentLike | undefined {\n return this.latestOutput;\n }\n}\n","/** Enables language-sensitive number formatting. Wraps Intl.NumberFormat */\nexport default class NumberFormat {\n private numberFormatter: Intl.NumberFormat;\n\n constructor(locales?: string | string[], options?: Intl.NumberFormatOptions) {\n this.numberFormatter = new Intl.NumberFormat(locales, options);\n }\n\n /**\n * Formats a number according to the locale and formatting options of this NumberFormat object\n *\n * @param value Number or BigInt to format\n * @returns String representing the given number formatted according to the locale and formatting\n * options of this NumberFormat object\n */\n format(value: number | bigint): string {\n return this.numberFormatter.format(value);\n }\n\n /**\n * Formats a range of numbers according to the locale and formatting options of this NumberFormat\n * object\n *\n * @param startRange Number or bigint representing the start of the range\n * @param endRange Number or bigint representing the end of the range\n * @returns String representing the given range of numbers formatted according to the locale and\n * formatting options of this NumberFormat object\n */\n formatRange(startRange: number | bigint, endRange: number | bigint): string {\n return this.numberFormatter.formatRange(startRange, endRange);\n }\n\n /**\n * Returns an array of objects containing the locale-specific tokens from which it is possible to\n * build custom strings while preserving the locale-specific parts.\n *\n * @param startRange Number or bigint representing start of the range\n * @param endRange Number or bigint representing end of the range\n * @returns Array of NumberRangeFormatPart objects containing the formatted range of numbers in\n * parts\n */\n formatRangeToParts(\n startRange: number | bigint,\n endRange: number | bigint,\n ): Intl.NumberRangeFormatPart[] {\n return this.numberFormatter.formatRangeToParts(startRange, endRange);\n }\n\n /**\n * Allows locale-aware formatting of strings produced by this NumberFormat object\n *\n * @param value Number or bigint to format\n * @returns Array of NumberFormatPart objects containing the formatted number in parts\n */\n formatToParts(value: number | bigint): Intl.NumberFormatPart[] {\n return this.numberFormatter.formatToParts(value);\n }\n\n /**\n * Returns a new object with properties reflecting the locale and number formatting options\n * computed during initialization of this NumberFormat object\n *\n * @returns ResolvedNumberFormatOptions object\n */\n resolvedOptions(): Intl.ResolvedNumberFormatOptions {\n return this.numberFormatter.resolvedOptions();\n }\n}\n","import { Dispose } from './disposal.model';\nimport { Unsubscriber, UnsubscriberAsync } from './unsubscriber';\n\n/** Simple collection for UnsubscriberAsync objects that also provides an easy way to run them. */\nexport default class UnsubscriberAsyncList {\n readonly unsubscribers = new Set();\n\n constructor(private name = 'Anonymous') {}\n\n /**\n * Add unsubscribers to the list. Note that duplicates are not added twice.\n *\n * @param unsubscribers - Objects that were returned from a registration process.\n */\n add(...unsubscribers: (UnsubscriberAsync | Unsubscriber | Dispose)[]) {\n unsubscribers.forEach((unsubscriber) => {\n if ('dispose' in unsubscriber) this.unsubscribers.add(unsubscriber.dispose);\n else this.unsubscribers.add(unsubscriber);\n });\n }\n\n /**\n * Run all unsubscribers added to this list and then clear the list.\n *\n * @returns `true` if all unsubscribers succeeded, `false` otherwise.\n */\n async runAllUnsubscribers(): Promise {\n const unsubs = [...this.unsubscribers].map((unsubscriber) => unsubscriber());\n const results = await Promise.all(unsubs);\n this.unsubscribers.clear();\n return results.every((unsubscriberSucceeded, index) => {\n if (!unsubscriberSucceeded)\n console.error(`UnsubscriberAsyncList ${this.name}: Unsubscriber at index ${index} failed!`);\n\n return unsubscriberSucceeded;\n });\n }\n}\n","var P = Object.defineProperty;\nvar R = (t, e, s) => e in t ? P(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;\nvar n = (t, e, s) => R(t, typeof e != \"symbol\" ? e + \"\" : e, s);\nclass _ {\n constructor() {\n n(this, \"books\");\n n(this, \"firstSelectedBookNum\");\n n(this, \"lastSelectedBookNum\");\n n(this, \"count\");\n n(this, \"selectedBookNumbers\");\n n(this, \"selectedBookIds\");\n }\n}\nconst N = [\n \"GEN\",\n \"EXO\",\n \"LEV\",\n \"NUM\",\n \"DEU\",\n \"JOS\",\n \"JDG\",\n \"RUT\",\n \"1SA\",\n \"2SA\",\n // 10\n \"1KI\",\n \"2KI\",\n \"1CH\",\n \"2CH\",\n \"EZR\",\n \"NEH\",\n \"EST\",\n \"JOB\",\n \"PSA\",\n \"PRO\",\n // 20\n \"ECC\",\n \"SNG\",\n \"ISA\",\n \"JER\",\n \"LAM\",\n \"EZK\",\n \"DAN\",\n \"HOS\",\n \"JOL\",\n \"AMO\",\n // 30\n \"OBA\",\n \"JON\",\n \"MIC\",\n \"NAM\",\n \"HAB\",\n \"ZEP\",\n \"HAG\",\n \"ZEC\",\n \"MAL\",\n \"MAT\",\n // 40\n \"MRK\",\n \"LUK\",\n \"JHN\",\n \"ACT\",\n \"ROM\",\n \"1CO\",\n \"2CO\",\n \"GAL\",\n \"EPH\",\n \"PHP\",\n // 50\n \"COL\",\n \"1TH\",\n \"2TH\",\n \"1TI\",\n \"2TI\",\n \"TIT\",\n \"PHM\",\n \"HEB\",\n \"JAS\",\n \"1PE\",\n // 60\n \"2PE\",\n \"1JN\",\n \"2JN\",\n \"3JN\",\n \"JUD\",\n \"REV\",\n \"TOB\",\n \"JDT\",\n \"ESG\",\n \"WIS\",\n // 70\n \"SIR\",\n \"BAR\",\n \"LJE\",\n \"S3Y\",\n \"SUS\",\n \"BEL\",\n \"1MA\",\n \"2MA\",\n \"3MA\",\n \"4MA\",\n // 80\n \"1ES\",\n \"2ES\",\n \"MAN\",\n \"PS2\",\n \"ODA\",\n \"PSS\",\n \"JSA\",\n // actual variant text for JOS, now in LXA text\n \"JDB\",\n // actual variant text for JDG, now in LXA text\n \"TBS\",\n // actual variant text for TOB, now in LXA text\n \"SST\",\n // actual variant text for SUS, now in LXA text // 90\n \"DNT\",\n // actual variant text for DAN, now in LXA text\n \"BLT\",\n // actual variant text for BEL, now in LXA text\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n // 100\n \"BAK\",\n \"OTH\",\n \"3ES\",\n // Used previously but really should be 2ES\n \"EZA\",\n // Used to be called 4ES, but not actually in any known project\n \"5EZ\",\n // Used to be called 5ES, but not actually in any known project\n \"6EZ\",\n // Used to be called 6ES, but not actually in any known project\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n // 110\n \"NDX\",\n \"DAG\",\n \"PS3\",\n \"2BA\",\n \"LBA\",\n \"JUB\",\n \"ENO\",\n \"1MQ\",\n \"2MQ\",\n \"3MQ\",\n // 120\n \"REP\",\n \"4BA\",\n \"LAO\"\n], B = [\n \"XXA\",\n \"XXB\",\n \"XXC\",\n \"XXD\",\n \"XXE\",\n \"XXF\",\n \"XXG\",\n \"FRT\",\n \"BAK\",\n \"OTH\",\n \"INT\",\n \"CNC\",\n \"GLO\",\n \"TDX\",\n \"NDX\"\n], O = [\n \"Genesis\",\n \"Exodus\",\n \"Leviticus\",\n \"Numbers\",\n \"Deuteronomy\",\n \"Joshua\",\n \"Judges\",\n \"Ruth\",\n \"1 Samuel\",\n \"2 Samuel\",\n \"1 Kings\",\n \"2 Kings\",\n \"1 Chronicles\",\n \"2 Chronicles\",\n \"Ezra\",\n \"Nehemiah\",\n \"Esther (Hebrew)\",\n \"Job\",\n \"Psalms\",\n \"Proverbs\",\n \"Ecclesiastes\",\n \"Song of Songs\",\n \"Isaiah\",\n \"Jeremiah\",\n \"Lamentations\",\n \"Ezekiel\",\n \"Daniel (Hebrew)\",\n \"Hosea\",\n \"Joel\",\n \"Amos\",\n \"Obadiah\",\n \"Jonah\",\n \"Micah\",\n \"Nahum\",\n \"Habakkuk\",\n \"Zephaniah\",\n \"Haggai\",\n \"Zechariah\",\n \"Malachi\",\n \"Matthew\",\n \"Mark\",\n \"Luke\",\n \"John\",\n \"Acts\",\n \"Romans\",\n \"1 Corinthians\",\n \"2 Corinthians\",\n \"Galatians\",\n \"Ephesians\",\n \"Philippians\",\n \"Colossians\",\n \"1 Thessalonians\",\n \"2 Thessalonians\",\n \"1 Timothy\",\n \"2 Timothy\",\n \"Titus\",\n \"Philemon\",\n \"Hebrews\",\n \"James\",\n \"1 Peter\",\n \"2 Peter\",\n \"1 John\",\n \"2 John\",\n \"3 John\",\n \"Jude\",\n \"Revelation\",\n \"Tobit\",\n \"Judith\",\n \"Esther Greek\",\n \"Wisdom of Solomon\",\n \"Sirach (Ecclesiasticus)\",\n \"Baruch\",\n \"Letter of Jeremiah\",\n \"Song of 3 Young Men\",\n \"Susanna\",\n \"Bel and the Dragon\",\n \"1 Maccabees\",\n \"2 Maccabees\",\n \"3 Maccabees\",\n \"4 Maccabees\",\n \"1 Esdras (Greek)\",\n \"2 Esdras (Latin)\",\n \"Prayer of Manasseh\",\n \"Psalm 151\",\n \"Odes\",\n \"Psalms of Solomon\",\n // WARNING, if you change the spelling of the *obsolete* tag be sure to update\n // IsObsolete routine\n \"Joshua A. *obsolete*\",\n \"Judges B. *obsolete*\",\n \"Tobit S. *obsolete*\",\n \"Susanna Th. *obsolete*\",\n \"Daniel Th. *obsolete*\",\n \"Bel Th. *obsolete*\",\n \"Extra A\",\n \"Extra B\",\n \"Extra C\",\n \"Extra D\",\n \"Extra E\",\n \"Extra F\",\n \"Extra G\",\n \"Front Matter\",\n \"Back Matter\",\n \"Other Matter\",\n \"3 Ezra *obsolete*\",\n \"Apocalypse of Ezra\",\n \"5 Ezra (Latin Prologue)\",\n \"6 Ezra (Latin Epilogue)\",\n \"Introduction\",\n \"Concordance \",\n \"Glossary \",\n \"Topical Index\",\n \"Names Index\",\n \"Daniel Greek\",\n \"Psalms 152-155\",\n \"2 Baruch (Apocalypse)\",\n \"Letter of Baruch\",\n \"Jubilees\",\n \"Enoch\",\n \"1 Meqabyan\",\n \"2 Meqabyan\",\n \"3 Meqabyan\",\n \"Reproof (Proverbs 25-31)\",\n \"4 Baruch (Rest of Baruch)\",\n \"Laodiceans\"\n], S = K();\nfunction g(t, e = !0) {\n return e && (t = t.toUpperCase()), t in S ? S[t] : 0;\n}\nfunction k(t) {\n return g(t) > 0;\n}\nfunction x(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return e >= 40 && e <= 66;\n}\nfunction T(t) {\n return (typeof t == \"string\" ? g(t) : t) <= 39;\n}\nfunction X(t) {\n return t <= 66;\n}\nfunction V(t) {\n const e = typeof t == \"string\" ? g(t) : t;\n return w(e) && !X(e);\n}\nfunction* L() {\n for (let t = 1; t <= N.length; t++) yield t;\n}\nconst G = 1, A = N.length;\nfunction H() {\n return [\"XXA\", \"XXB\", \"XXC\", \"XXD\", \"XXE\", \"XXF\", \"XXG\"];\n}\nfunction C(t, e = \"***\") {\n const s = t - 1;\n return s < 0 || s >= N.length ? e : N[s];\n}\nfunction I(t) {\n return t <= 0 || t > A ? \"******\" : O[t - 1];\n}\nfunction y(t) {\n return I(g(t));\n}\nfunction w(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && !B.includes(e);\n}\nfunction q(t) {\n const e = typeof t == \"number\" ? C(t) : t;\n return k(e) && B.includes(e);\n}\nfunction U(t) {\n return O[t - 1].includes(\"*obsolete*\");\n}\nfunction K() {\n const t = {};\n for (let e = 0; e < N.length; e++)\n t[N[e]] = e + 1;\n return t;\n}\nconst m = {\n allBookIds: N,\n nonCanonicalIds: B,\n bookIdToNumber: g,\n isBookIdValid: k,\n isBookNT: x,\n isBookOT: T,\n isBookOTNT: X,\n isBookDC: V,\n allBookNumbers: L,\n firstBook: G,\n lastBook: A,\n extraBooks: H,\n bookNumberToId: C,\n bookNumberToEnglishName: I,\n bookIdToEnglishName: y,\n isCanonical: w,\n isExtraMaterial: q,\n isObsolete: U\n};\nvar l = /* @__PURE__ */ ((t) => (t[t.Unknown = 0] = \"Unknown\", t[t.Original = 1] = \"Original\", t[t.Septuagint = 2] = \"Septuagint\", t[t.Vulgate = 3] = \"Vulgate\", t[t.English = 4] = \"English\", t[t.RussianProtestant = 5] = \"RussianProtestant\", t[t.RussianOrthodox = 6] = \"RussianOrthodox\", t))(l || {});\nconst h = class h {\n // private versInfo: Versification;\n constructor(e) {\n n(this, \"name\");\n n(this, \"fullPath\");\n n(this, \"isPresent\");\n n(this, \"hasVerseSegments\");\n n(this, \"isCustomized\");\n n(this, \"baseVersification\");\n n(this, \"scriptureBooks\");\n n(this, \"_type\");\n if (e == null)\n throw new Error(\"Argument undefined\");\n typeof e == \"string\" ? (this.name = e, this._type = l[e]) : (this._type = e, this.name = l[e]);\n }\n get type() {\n return this._type;\n }\n equals(e) {\n return !e.type || !this.type ? !1 : e.type === this.type;\n }\n};\nn(h, \"Original\", new h(l.Original)), n(h, \"Septuagint\", new h(l.Septuagint)), n(h, \"Vulgate\", new h(l.Vulgate)), n(h, \"English\", new h(l.English)), n(h, \"RussianProtestant\", new h(l.RussianProtestant)), n(h, \"RussianOrthodox\", new h(l.RussianOrthodox));\nlet c = h;\nfunction E(t, e) {\n const s = e[0];\n for (let r = 1; r < e.length; r++)\n t = t.split(e[r]).join(s);\n return t.split(s);\n}\nvar D = /* @__PURE__ */ ((t) => (t[t.Valid = 0] = \"Valid\", t[t.UnknownVersification = 1] = \"UnknownVersification\", t[t.OutOfRange = 2] = \"OutOfRange\", t[t.VerseOutOfOrder = 3] = \"VerseOutOfOrder\", t[t.VerseRepeated = 4] = \"VerseRepeated\", t))(D || {});\nconst i = class i {\n constructor(e, s, r, a) {\n /** Not yet implemented. */\n n(this, \"firstChapter\");\n /** Not yet implemented. */\n n(this, \"lastChapter\");\n /** Not yet implemented. */\n n(this, \"lastVerse\");\n /** Not yet implemented. */\n n(this, \"hasSegmentsDefined\");\n /** Not yet implemented. */\n n(this, \"text\");\n /** Not yet implemented. */\n n(this, \"BBBCCCVVVS\");\n /** Not yet implemented. */\n n(this, \"longHashCode\");\n /** The versification of the reference. */\n n(this, \"versification\");\n n(this, \"rtlMark\", \"‏\");\n n(this, \"_bookNum\", 0);\n n(this, \"_chapterNum\", 0);\n n(this, \"_verseNum\", 0);\n n(this, \"_verse\");\n if (r == null && a == null)\n if (e != null && typeof e == \"string\") {\n const o = e, u = s != null && s instanceof c ? s : void 0;\n this.setEmpty(u), this.parse(o);\n } else if (e != null && typeof e == \"number\") {\n const o = s != null && s instanceof c ? s : void 0;\n this.setEmpty(o), this._verseNum = e % i.chapterDigitShifter, this._chapterNum = Math.floor(\n e % i.bookDigitShifter / i.chapterDigitShifter\n ), this._bookNum = Math.floor(e / i.bookDigitShifter);\n } else if (s == null)\n if (e != null && e instanceof i) {\n const o = e;\n this._bookNum = o.bookNum, this._chapterNum = o.chapterNum, this._verseNum = o.verseNum, this._verse = o.verse, this.versification = o.versification;\n } else {\n if (e == null) return;\n const o = e instanceof c ? e : i.defaultVersification;\n this.setEmpty(o);\n }\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else if (e != null && s != null && r != null)\n if (typeof e == \"string\" && typeof s == \"string\" && typeof r == \"string\")\n this.setEmpty(a), this.updateInternal(e, s, r);\n else if (typeof e == \"number\" && typeof s == \"number\" && typeof r == \"number\")\n this._bookNum = e, this._chapterNum = s, this._verseNum = r, this.versification = a ?? i.defaultVersification;\n else\n throw new Error(\"VerseRef constructor not supported.\");\n else\n throw new Error(\"VerseRef constructor not supported.\");\n }\n /**\n * Determines if the verse string is in a valid format (does not consider versification).\n */\n static isVerseParseable(e) {\n return e.length > 0 && \"0123456789\".includes(e[0]) && !e.endsWith(this.verseRangeSeparator) && !e.endsWith(this.verseSequenceIndicator);\n }\n /**\n * Tries to parse the specified string into a verse reference.\n * @param str - The string to attempt to parse.\n * @returns success: `true` if the specified string was successfully parsed, `false` otherwise.\n * @returns verseRef: The result of the parse if successful, or empty VerseRef if it failed\n */\n static tryParse(e) {\n let s;\n try {\n return s = new i(e), { success: !0, verseRef: s };\n } catch (r) {\n if (r instanceof v)\n return s = new i(), { success: !1, verseRef: s };\n throw r;\n }\n }\n /**\n * Gets the reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n * @param bookNum - Book number (this is 1-based, not an index).\n * @param chapterNum - Chapter number.\n * @param verseNum - Verse number.\n * @returns The reference as a comparable integer where the book, chapter, and verse each occupy 3\n * digits.\n */\n static getBBBCCCVVV(e, s, r) {\n return e % i.bcvMaxValue * i.bookDigitShifter + (s >= 0 ? s % i.bcvMaxValue * i.chapterDigitShifter : 0) + (r >= 0 ? r % i.bcvMaxValue : 0);\n }\n /**\n * Deserializes a serialized VerseRef.\n * @param serializedVerseRef - Serialized VerseRef to create from.\n * @returns the deserialized VerseRef.\n */\n static fromJSON(e) {\n const { book: s, chapterNum: r, verseNum: a, verse: o, versificationStr: u } = e, f = o || a.toString();\n let d;\n return u && (d = new c(u)), s ? new i(s, r.toString(), f, d) : new i();\n }\n /**\n * Parses a verse string and gets the leading numeric portion as a number.\n * @param verseStr - verse string to parse\n * @returns true if the entire string could be parsed as a single, simple verse number (1-999);\n * false if the verse string represented a verse bridge, contained segment letters, or was invalid\n */\n static tryGetVerseNum(e) {\n let s;\n if (!e)\n return s = -1, { success: !0, vNum: s };\n s = 0;\n let r;\n for (let a = 0; a < e.length; a++) {\n if (r = e[a], r < \"0\" || r > \"9\")\n return a === 0 && (s = -1), { success: !1, vNum: s };\n if (s = s * 10 + +r - 0, s > i.bcvMaxValue)\n return s = -1, { success: !1, vNum: s };\n }\n return { success: !0, vNum: s };\n }\n /**\n * Checks to see if a VerseRef hasn't been set - all values are the default.\n */\n get isDefault() {\n return this.bookNum === 0 && this.chapterNum === 0 && this.verseNum === 0 && this.versification == null;\n }\n /**\n * Gets whether the verse contains multiple verses.\n */\n get hasMultiple() {\n return this._verse != null && (this._verse.includes(i.verseRangeSeparator) || this._verse.includes(i.verseSequenceIndicator));\n }\n /**\n * Gets or sets the book of the reference. Book is the 3-letter abbreviation in capital letters,\n * e.g. `'MAT'`.\n */\n get book() {\n return m.bookNumberToId(this.bookNum, \"\");\n }\n set book(e) {\n this.bookNum = m.bookIdToNumber(e);\n }\n /**\n * Gets or sets the chapter of the reference,. e.g. `'3'`.\n */\n get chapter() {\n return this.isDefault || this._chapterNum < 0 ? \"\" : this._chapterNum.toString();\n }\n set chapter(e) {\n const s = +e;\n this._chapterNum = Number.isInteger(s) ? s : -1;\n }\n /**\n * Gets or sets the verse of the reference, including range, segments, and sequences, e.g. `'4'`,\n * or `'4b-5a, 7'`.\n */\n get verse() {\n return this._verse != null ? this._verse : this.isDefault || this._verseNum < 0 ? \"\" : this._verseNum.toString();\n }\n set verse(e) {\n const { success: s, vNum: r } = i.tryGetVerseNum(e);\n this._verse = s ? void 0 : e.replace(this.rtlMark, \"\"), this._verseNum = r, !(this._verseNum >= 0) && ({ vNum: this._verseNum } = i.tryGetVerseNum(this._verse));\n }\n /**\n * Get or set Book based on book number, e.g. `42`.\n */\n get bookNum() {\n return this._bookNum;\n }\n set bookNum(e) {\n if (e <= 0 || e > m.lastBook)\n throw new v(\n \"BookNum must be greater than zero and less than or equal to last book\"\n );\n this._bookNum = e;\n }\n /**\n * Gets or sets the chapter number, e.g. `3`. `-1` if not valid.\n */\n get chapterNum() {\n return this._chapterNum;\n }\n set chapterNum(e) {\n this.chapterNum = e;\n }\n /**\n * Gets or sets verse start number, e.g. `4`. `-1` if not valid.\n */\n get verseNum() {\n return this._verseNum;\n }\n set verseNum(e) {\n this._verseNum = e;\n }\n /**\n * String representing the versification (should ONLY be used for serialization/deserialization).\n *\n * @remarks This is for backwards compatibility when ScrVers was an enumeration.\n */\n get versificationStr() {\n var e;\n return (e = this.versification) == null ? void 0 : e.name;\n }\n set versificationStr(e) {\n this.versification = this.versification != null ? new c(e) : void 0;\n }\n /**\n * Determines if the reference is valid.\n */\n get valid() {\n return this.validStatus === 0;\n }\n /**\n * Get the valid status for this reference.\n */\n get validStatus() {\n return this.validateVerse(i.verseRangeSeparators, i.verseSequenceIndicators);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits and the verse is 0.\n */\n get BBBCCC() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, 0);\n }\n /**\n * Gets the reference as a comparable integer where the book,\n * chapter, and verse each occupy three digits. If verse is not null\n * (i.e., this reference represents a complex reference with verse\n * segments or bridge) this cannot be used for an exact comparison.\n */\n get BBBCCCVVV() {\n return i.getBBBCCCVVV(this._bookNum, this._chapterNum, this._verseNum);\n }\n /**\n * Gets whether the verse is defined as an excluded verse in the versification.\n * Does not handle verse ranges.\n */\n // eslint-disable-next-line @typescript-eslint/class-literal-property-style\n get isExcluded() {\n return !1;\n }\n /**\n * Parses the reference in the specified string.\n * Optionally versification can follow reference as in GEN 3:11/4\n * Throw an exception if\n * - invalid book name\n * - chapter number is missing or not a number\n * - verse number is missing or does not start with a number\n * - versification is invalid\n * @param verseStr - string to parse e.g. 'MAT 3:11'\n */\n parse(e) {\n if (e = e.replace(this.rtlMark, \"\"), e.includes(\"/\")) {\n const o = e.split(\"/\");\n if (e = o[0], o.length > 1)\n try {\n const u = +o[1].trim();\n this.versification = new c(l[u]);\n } catch {\n throw new v(\"Invalid reference : \" + e);\n }\n }\n const s = e.trim().split(\" \");\n if (s.length !== 2)\n throw new v(\"Invalid reference : \" + e);\n const r = s[1].split(\":\"), a = +r[0];\n if (r.length !== 2 || m.bookIdToNumber(s[0]) === 0 || !Number.isInteger(a) || a < 0 || !i.isVerseParseable(r[1]))\n throw new v(\"Invalid reference : \" + e);\n this.updateInternal(s[0], r[0], r[1]);\n }\n /**\n * Simplifies this verse ref so that it has no bridging of verses or\n * verse segments like `'1a'`.\n */\n simplify() {\n this._verse = void 0;\n }\n /**\n * Makes a clone of the reference.\n *\n * @returns The cloned VerseRef.\n */\n clone() {\n return new i(this);\n }\n toString() {\n const e = this.book;\n return e === \"\" ? \"\" : `${e} ${this.chapter}:${this.verse}`;\n }\n toJSON() {\n let e = this.verse;\n (e === \"\" || e === this.verseNum.toString()) && (e = void 0);\n const s = {\n book: this.book,\n chapterNum: this.chapterNum,\n verseNum: this.verseNum,\n verse: e,\n versificationStr: this.versificationStr\n };\n return e || delete s.verse, s;\n }\n /**\n * Compares this `VerseRef` with supplied one.\n * @param verseRef - object to compare this one to.\n * @returns `true` if this `VerseRef` is equal to the supplied one, `false` otherwise.\n */\n equals(e) {\n return e instanceof i ? e._bookNum === this._bookNum && e._chapterNum === this._chapterNum && e._verseNum === this._verseNum && e.verse === this.verse && (e.versification == null && this.versification == null || e.versification != null && this.versification != null && e.versification.equals(this.versification)) : !1;\n }\n /**\n * Enumerate all individual verses contained in a VerseRef.\n * Verse ranges are indicated by \"-\" and consecutive verses by \",\"s.\n * Examples:\n * GEN 1:2 returns GEN 1:2\n * GEN 1:1a-3b,5 returns GEN 1:1a, GEN 1:2, GEN 1:3b, GEN 1:5\n * GEN 1:2a-2c returns //! ??????\n *\n * @param specifiedVersesOnly - if set to true return only verses that are\n * explicitly specified only, not verses within a range. Defaults to `false`.\n * @param verseRangeSeparators - Verse range separators.\n * Defaults to `VerseRef.verseRangeSeparators`.\n * @param verseSequenceSeparators - Verse sequence separators.\n * Defaults to `VerseRef.verseSequenceIndicators`.\n * @returns An array of all single verse references in this VerseRef.\n */\n allVerses(e = !1, s = i.verseRangeSeparators, r = i.verseSequenceIndicators) {\n if (this._verse == null || this.chapterNum <= 0)\n return [this.clone()];\n const a = [], o = E(this._verse, r);\n for (const u of o.map((f) => E(f, s))) {\n const f = this.clone();\n f.verse = u[0];\n const d = f.verseNum;\n if (a.push(f), u.length > 1) {\n const b = this.clone();\n if (b.verse = u[1], !e)\n for (let p = d + 1; p < b.verseNum; p++) {\n const J = new i(\n this._bookNum,\n this._chapterNum,\n p,\n this.versification\n );\n this.isExcluded || a.push(J);\n }\n a.push(b);\n }\n }\n return a;\n }\n /**\n * Validates a verse number using the supplied separators rather than the defaults.\n */\n validateVerse(e, s) {\n if (!this.verse)\n return this.internalValid;\n let r = 0;\n for (const a of this.allVerses(!0, e, s)) {\n const o = a.internalValid;\n if (o !== 0)\n return o;\n const u = a.BBBCCCVVV;\n if (r > u)\n return 3;\n if (r === u)\n return 4;\n r = u;\n }\n return 0;\n }\n /**\n * Gets whether a single verse reference is valid.\n */\n get internalValid() {\n return this.versification == null ? 1 : this._bookNum <= 0 || this._bookNum > m.lastBook ? 2 : (m.isCanonical(this._bookNum), 0);\n }\n setEmpty(e = i.defaultVersification) {\n this._bookNum = 0, this._chapterNum = -1, this._verse = void 0, this.versification = e;\n }\n updateInternal(e, s, r) {\n this.bookNum = m.bookIdToNumber(e), this.chapter = s, this.verse = r;\n }\n};\nn(i, \"defaultVersification\", c.English), n(i, \"verseRangeSeparator\", \"-\"), n(i, \"verseSequenceIndicator\", \",\"), n(i, \"verseRangeSeparators\", [i.verseRangeSeparator]), n(i, \"verseSequenceIndicators\", [i.verseSequenceIndicator]), n(i, \"chapterDigitShifter\", 1e3), n(i, \"bookDigitShifter\", i.chapterDigitShifter * i.chapterDigitShifter), n(i, \"bcvMaxValue\", i.chapterDigitShifter - 1), /**\n * The valid status of the VerseRef.\n */\nn(i, \"ValidStatusType\", D);\nlet M = i;\nclass v extends Error {\n}\nexport {\n _ as BookSet,\n m as Canon,\n c as ScrVers,\n l as ScrVersType,\n M as VerseRef,\n v as VerseRefException\n};\n//# sourceMappingURL=index.es.js.map\n","\"use strict\"\r\n\r\n// Based on: https://github.com/lodash/lodash/blob/6018350ac10d5ce6a5b7db625140b82aeab804df/.internal/unicodeSize.js\r\n\r\nmodule.exports = () => {\r\n\t// Used to compose unicode character classes.\r\n\tconst astralRange = \"\\\\ud800-\\\\udfff\"\r\n\tconst comboMarksRange = \"\\\\u0300-\\\\u036f\"\r\n\tconst comboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\"\r\n\tconst comboSymbolsRange = \"\\\\u20d0-\\\\u20ff\"\r\n\tconst comboMarksExtendedRange = \"\\\\u1ab0-\\\\u1aff\"\r\n\tconst comboMarksSupplementRange = \"\\\\u1dc0-\\\\u1dff\"\r\n\tconst comboRange = comboMarksRange + comboHalfMarksRange + comboSymbolsRange + comboMarksExtendedRange + comboMarksSupplementRange\r\n\tconst varRange = \"\\\\ufe0e\\\\ufe0f\"\r\n\tconst familyRange = \"\\\\uD83D\\\\uDC69\\\\uD83C\\\\uDFFB\\\\u200D\\\\uD83C\\\\uDF93\"\r\n\r\n\t// Used to compose unicode capture groups.\r\n\tconst astral = `[${astralRange}]`\r\n\tconst combo = `[${comboRange}]`\r\n\tconst fitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\"\r\n\tconst modifier = `(?:${combo}|${fitz})`\r\n\tconst nonAstral = `[^${astralRange}]`\r\n\tconst regional = \"(?:\\\\uD83C[\\\\uDDE6-\\\\uDDFF]){2}\"\r\n\tconst surrogatePair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\"\r\n\tconst zwj = \"\\\\u200d\"\r\n\tconst blackFlag = \"(?:\\\\ud83c\\\\udff4\\\\udb40\\\\udc67\\\\udb40\\\\udc62\\\\udb40(?:\\\\udc65|\\\\udc73|\\\\udc77)\\\\udb40(?:\\\\udc6e|\\\\udc63|\\\\udc6c)\\\\udb40(?:\\\\udc67|\\\\udc74|\\\\udc73)\\\\udb40\\\\udc7f)\"\r\n\tconst family = `[${familyRange}]`\r\n\r\n\t// Used to compose unicode regexes.\r\n\tconst optModifier = `${modifier}?`\r\n\tconst optVar = `[${varRange}]?`\r\n\tconst optJoin = `(?:${zwj}(?:${[nonAstral, regional, surrogatePair].join(\"|\")})${optVar + optModifier})*`\r\n\tconst seq = optVar + optModifier + optJoin\r\n\tconst nonAstralCombo = `${nonAstral}${combo}?`\r\n\tconst symbol = `(?:${[nonAstralCombo, combo, regional, surrogatePair, astral, family].join(\"|\")})`\r\n\r\n\t// Used to match [String symbols](https://mathiasbynens.be/notes/javascript-unicode).\r\n\treturn new RegExp(`${blackFlag}|${fitz}(?=${fitz})|${symbol + seq}`, \"g\")\r\n}\r\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-ignore\nvar char_regex_1 = __importDefault(require(\"char-regex\"));\n/**\n * Converts a string to an array of string chars\n * @param {string} str The string to turn into array\n * @returns {string[]}\n */\nfunction toArray(str) {\n if (typeof str !== 'string') {\n throw new Error('A string is expected as input');\n }\n return str.match(char_regex_1.default()) || [];\n}\nexports.toArray = toArray;\n/**\n * Returns the length of a string\n *\n * @export\n * @param {string} str\n * @returns {number}\n */\nfunction length(str) {\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n var match = str.match(char_regex_1.default());\n return match === null ? 0 : match.length;\n}\nexports.length = length;\n/**\n * Returns a substring by providing start and end position\n *\n * @export\n * @param {string} str\n * @param {number} [begin=0] Starting position\n * @param {number} end End position\n * @returns {string}\n */\nfunction substring(str, begin, end) {\n if (begin === void 0) { begin = 0; }\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n // Even though negative numbers work here, theyre not in the spec\n if (typeof begin !== 'number' || begin < 0) {\n begin = 0;\n }\n if (typeof end === 'number' && end < 0) {\n end = 0;\n }\n var match = str.match(char_regex_1.default());\n if (!match)\n return '';\n return match.slice(begin, end).join('');\n}\nexports.substring = substring;\n/**\n * Returns a substring by providing start position and length\n *\n * @export\n * @param {string} str\n * @param {number} [begin=0] Starting position\n * @param {number} len Desired length\n * @returns {string}\n */\nfunction substr(str, begin, len) {\n if (begin === void 0) { begin = 0; }\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n var strLength = length(str);\n // Fix type\n if (typeof begin !== 'number') {\n begin = parseInt(begin, 10);\n }\n // Return zero-length string if got oversize number.\n if (begin >= strLength) {\n return '';\n }\n // Calculating postive version of negative value.\n if (begin < 0) {\n begin += strLength;\n }\n var end;\n if (typeof len === 'undefined') {\n end = strLength;\n }\n else {\n // Fix type\n if (typeof len !== 'number') {\n len = parseInt(len, 10);\n }\n end = len >= 0 ? len + begin : begin;\n }\n var match = str.match(char_regex_1.default());\n if (!match)\n return '';\n return match.slice(begin, end).join('');\n}\nexports.substr = substr;\n/**\n * Enforces a string to be a certain length by\n * adding or removing characters\n *\n * @export\n * @param {string} str\n * @param {number} [limit=16] Limit\n * @param {string} [padString='#'] The Pad String\n * @param {string} [padPosition='right'] The Pad Position\n * @returns {string}\n */\nfunction limit(str, limit, padString, padPosition) {\n if (limit === void 0) { limit = 16; }\n if (padString === void 0) { padString = '#'; }\n if (padPosition === void 0) { padPosition = 'right'; }\n // Input should be a string, limit should be a number\n if (typeof str !== 'string' || typeof limit !== 'number') {\n throw new Error('Invalid arguments specified');\n }\n // Pad position should be either left or right\n if (['left', 'right'].indexOf(padPosition) === -1) {\n throw new Error('Pad position should be either left or right');\n }\n // Pad string can be anything, we convert it to string\n if (typeof padString !== 'string') {\n padString = String(padString);\n }\n // Calculate string length considering astral code points\n var strLength = length(str);\n if (strLength > limit) {\n return substring(str, 0, limit);\n }\n else if (strLength < limit) {\n var padRepeats = padString.repeat(limit - strLength);\n return padPosition === 'left' ? padRepeats + str : str + padRepeats;\n }\n return str;\n}\nexports.limit = limit;\n/**\n * Returns the index of the first occurrence of a given string\n *\n * @export\n * @param {string} str\n * @param {string} [searchStr] the string to search\n * @param {number} [pos] starting position\n * @returns {number}\n */\nfunction indexOf(str, searchStr, pos) {\n if (pos === void 0) { pos = 0; }\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n if (str === '') {\n if (searchStr === '') {\n return 0;\n }\n return -1;\n }\n // fix type\n pos = Number(pos);\n pos = isNaN(pos) ? 0 : pos;\n searchStr = String(searchStr);\n var strArr = toArray(str);\n if (pos >= strArr.length) {\n if (searchStr === '') {\n return strArr.length;\n }\n return -1;\n }\n if (searchStr === '') {\n return pos;\n }\n var searchArr = toArray(searchStr);\n var finded = false;\n var index;\n for (index = pos; index < strArr.length; index += 1) {\n var searchIndex = 0;\n while (searchIndex < searchArr.length &&\n searchArr[searchIndex] === strArr[index + searchIndex]) {\n searchIndex += 1;\n }\n if (searchIndex === searchArr.length &&\n searchArr[searchIndex - 1] === strArr[index + searchIndex - 1]) {\n finded = true;\n break;\n }\n }\n return finded ? index : -1;\n}\nexports.indexOf = indexOf;\n","/**\n * Ensures that the given input is returned as an array.\n *\n * This function takes a value that might be a single item, an array, or `undefined` and returns it\n * as an array:\n *\n * - If the input is `undefined`, an empty array is returned.\n * - If the input is already an array, it is returned as-is.\n * - If the input is a single item, it is wrapped in an array.\n *\n * @typeParam T - The type of the elements in the array.\n * @param maybeArray - The value that may be a single item, an array, or `undefined`.\n * @returns An array containing the input value(s). If the input is `undefined`, an empty array is\n * returned.\n */\nexport default function ensureArray(maybeArray: T | T[] | undefined): T[] {\n if (!maybeArray) return [];\n\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","import { LocalizeKey } from 'menus.model';\nimport {\n indexOf as stringzIndexOf,\n substring as stringzSubstring,\n length as stringzLength,\n toArray as stringzToArray,\n limit as stringzLimit,\n substr as stringzSubstr,\n} from 'stringz';\nimport ensureArray from './array-util';\n\n/**\n * This function mirrors the `at` function from the JavaScript Standard String object. It handles\n * Unicode code points instead of UTF-16 character codes.\n *\n * Finds the Unicode code point at the given index.\n *\n * @param string String to index\n * @param index Position of the character to be returned in range of -length(string) to\n * length(string)\n * @returns New string consisting of the Unicode code point located at the specified offset,\n * undefined if index is out of bounds\n */\nexport function at(string: string, index: number): string | undefined {\n if (index > stringLength(string) || index < -stringLength(string)) return undefined;\n return substr(string, index, 1);\n}\n\n/**\n * This function mirrors the `charAt` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a new string consisting of the single unicode code point at the given index.\n *\n * @param string String to index\n * @param index Position of the string character to be returned, in the range of 0 to\n * length(string)-1\n * @returns New string consisting of the Unicode code point located at the specified offset, empty\n * string if index is out of bounds\n */\nexport function charAt(string: string, index: number): string {\n if (index < 0 || index > stringLength(string) - 1) return '';\n return substr(string, index, 1);\n}\n\n/**\n * This function mirrors the `codePointAt` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a non-negative integer that is the Unicode code point value of the character starting at\n * the given index.\n *\n * @param string String to index\n * @param index Position of the string character to be returned, in the range of 0 to\n * length(string)-1\n * @returns Non-negative integer representing the code point value of the character at the given\n * index, or undefined if there is no element at that position\n */\nexport function codePointAt(string: string, index: number): number | undefined {\n if (index < 0 || index > stringLength(string) - 1) return undefined;\n return substr(string, index, 1).codePointAt(0);\n}\n\n/**\n * This function mirrors the `endsWith` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Determines whether a string ends with the characters of this string.\n *\n * @param string String to search through\n * @param searchString Characters to search for at the end of the string\n * @param endPosition End position where searchString is expected to be found. Default is\n * `length(string)`\n * @returns True if it ends with searchString, false if it does not\n */\nexport function endsWith(\n string: string,\n searchString: string,\n endPosition: number = stringLength(string),\n): boolean {\n const lastIndexOfSearchString = lastIndexOf(string, searchString);\n if (lastIndexOfSearchString === -1) return false;\n if (lastIndexOfSearchString + stringLength(searchString) !== endPosition) return false;\n return true;\n}\n\n/**\n * Get the index of the closest closing curly brace in a string.\n *\n * Note: when escaped, gets the index of the curly brace, not the backslash before it.\n *\n * @param str String to search\n * @param index Index at which to start searching. Inclusive of this index\n * @param escaped Whether to search for an escaped or an unescaped closing curly brace\n * @returns Index of closest closing curly brace or -1 if not found\n */\nfunction indexOfClosestClosingCurlyBrace(str: string, index: number, escaped: boolean) {\n if (index < 0) return -1;\n if (escaped) {\n if (charAt(str, index) === '}' && charAt(str, index - 1) === '\\\\') return index;\n const closeCurlyBraceIndex = indexOf(str, '\\\\}', index);\n return closeCurlyBraceIndex >= 0 ? closeCurlyBraceIndex + 1 : closeCurlyBraceIndex;\n }\n\n let i = index;\n const strLength = stringLength(str);\n while (i < strLength) {\n i = indexOf(str, '}', i);\n\n if (i === -1 || charAt(str, i - 1) !== '\\\\') break;\n\n // Didn't find an un-escaped close brace, so keep looking\n i += 1;\n }\n\n return i >= strLength ? -1 : i;\n}\n\n/**\n * Formats a string, replacing `{replacer key}` with the value in the `replacers` at that replacer\n * key (or multiple replacer values if there are multiple in the string). Will also remove \\ before\n * curly braces if curly braces are escaped with a backslash in order to preserve the curly braces.\n * E.g. 'Hi, this is {name}! I like `\\{curly braces\\}`! would become Hi, this is Jim! I like {curly\n * braces}!\n *\n * If the key in unescaped braces is not found, returns the key without the braces. Empty unescaped\n * curly braces will just return a string without the braces e.g. ('I am {Nemo}', { 'name': 'Jim'})\n * would return 'I am Nemo'.\n *\n * @example\n *\n * ```typescript\n * formatReplacementString(\n * 'Hi, this is {name}! I like \\{curly braces\\}! I have a {carColor} car. My favorite food is {food}.',\n * { name: 'Bill', carColor: 'blue' }\n * );\n *\n * =>\n *\n * 'Hi, this is Bill! I like {curly braces}! I have a blue car. My favorite food is food.'\n * ```\n *\n * @param str String to format\n * @param replacers Object whose keys are replacer keys and whose values are the values with which\n * to replace `{replacer key}`s found in the string to format. Will be coerced to strings using\n * `${replacerValue}`\n * @returns Formatted string\n */\nexport function formatReplacementString(\n str: string,\n replacers: { [key: string | number]: string | unknown } | object,\n): string {\n let updatedStr = str;\n\n let i = 0;\n while (i < stringLength(updatedStr)) {\n switch (charAt(updatedStr, i)) {\n case '{':\n if (charAt(updatedStr, i - 1) !== '\\\\') {\n // This character is an un-escaped open curly brace. Try to match and replace\n const closeCurlyBraceIndex = indexOfClosestClosingCurlyBrace(updatedStr, i, false);\n if (closeCurlyBraceIndex >= 0) {\n // We have matching open and close indices. Try to replace the contents\n const replacerKey = substring(updatedStr, i + 1, closeCurlyBraceIndex);\n // Replace with the replacer string or just remove the curly braces\n const replacerString =\n replacerKey in replacers\n ? // We're getting a value.toString() with any type from an object with any keys\n // here. TypeScript doesn't need to carefully and precisely track the exact type.\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n `${replacers[replacerKey as keyof typeof replacers]}`\n : replacerKey;\n\n updatedStr = `${substring(updatedStr, 0, i)}${replacerString}${substring(updatedStr, closeCurlyBraceIndex + 1)}`;\n // Put our index at the closing brace adjusted for the new string length minus two\n // because we are removing the curly braces\n // Ex: \"stuff {and} things\"\n // Replacer for and: n'\n // closeCurlyBraceIndex is 10\n // \"stuff n' things\"\n // i = 10 + 2 - 3 - 2 = 7\n i = closeCurlyBraceIndex + stringLength(replacerString) - stringLength(replacerKey) - 2;\n } else {\n // This is an unexpected un-escaped open curly brace with no matching closing curly\n // brace. Just ignore, I guess\n }\n } else {\n // This character is an escaped open curly brace. Remove the escape\n updatedStr = `${substring(updatedStr, 0, i - 1)}${substring(updatedStr, i)}`;\n // Adjust our index because we removed the escape\n i -= 1;\n }\n break;\n case '}':\n if (charAt(updatedStr, i - 1) !== '\\\\') {\n // This character is an un-escaped closing curly brace with no matching open curly\n // brace. Just ignore, I guess\n } else {\n // This character is an escaped closing curly brace. Remove the escape\n updatedStr = `${substring(updatedStr, 0, i - 1)}${substring(updatedStr, i)}`;\n // Adjust our index because we removed the escape\n i -= 1;\n }\n break;\n default:\n // No need to do anything with other characters at this point\n break;\n }\n\n i += 1;\n }\n\n return updatedStr;\n}\n/**\n * This function mirrors the `includes` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Performs a case-sensitive search to determine if searchString is found in string.\n *\n * @param string String to search through\n * @param searchString String to search for\n * @param position Position within the string to start searching for searchString. Default is `0`\n * @returns True if search string is found, false if it is not\n */\nexport function includes(string: string, searchString: string, position: number = 0): boolean {\n const partialString = substring(string, position);\n const indexOfSearchString = indexOf(partialString, searchString);\n if (indexOfSearchString === -1) return false;\n return true;\n}\n\n/**\n * This function mirrors the `indexOf` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns the index of the first occurrence of a given string.\n *\n * @param string String to search through\n * @param searchString The string to search for\n * @param position Start of searching. Default is `0`\n * @returns Index of the first occurrence of a given string\n */\nexport function indexOf(\n string: string,\n searchString: string,\n position: number | undefined = 0,\n): number {\n return stringzIndexOf(string, searchString, position);\n}\n\n/**\n * This function mirrors the `lastIndexOf` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Searches this string and returns the index of the last occurrence of the specified substring.\n *\n * @param string String to search through\n * @param searchString Substring to search for\n * @param position The index at which to begin searching. If omitted, the search begins at the end\n * of the string. Default is `undefined`\n * @returns Index of the last occurrence of searchString found, or -1 if not found.\n */\nexport function lastIndexOf(string: string, searchString: string, position?: number): number {\n let validatedPosition = position === undefined ? stringLength(string) : position;\n\n if (validatedPosition < 0) {\n validatedPosition = 0;\n } else if (validatedPosition >= stringLength(string)) {\n validatedPosition = stringLength(string) - 1;\n }\n\n for (let index = validatedPosition; index >= 0; index--) {\n if (substr(string, index, stringLength(searchString)) === searchString) {\n return index;\n }\n }\n\n return -1;\n}\n\n/**\n * This function mirrors the `length` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes. Since `length` appears to be a\n * reserved keyword, the function was renamed to `stringLength`\n *\n * Returns the length of a string.\n *\n * @param string String to return the length for\n * @returns Number that is length of the starting string\n */\nexport function stringLength(string: string): number {\n return stringzLength(string);\n}\n\n/**\n * This function mirrors the `normalize` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns the Unicode Normalization Form of this string.\n *\n * @param string The starting string\n * @param form Form specifying the Unicode Normalization Form. Default is `'NFC'`\n * @returns A string containing the Unicode Normalization Form of the given string.\n */\nexport function normalize(string: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD' | 'none'): string {\n const upperCaseForm = form.toUpperCase();\n if (upperCaseForm === 'NONE') {\n return string;\n }\n return string.normalize(upperCaseForm);\n}\n\n/**\n * Compares two strings using an ordinal comparison approach based on the specified collation\n * options. This function uses the built-in `localeCompare` method with the 'en' locale and the\n * provided collation options to compare the strings.\n *\n * @param string1 The first string to compare.\n * @param string2 The second string to compare.\n * @param options Optional. The collation options used for comparison.\n * @returns A number indicating the result of the comparison: - Negative value if string1 precedes\n * string2 in sorting order. - Zero if string1 and string2 are equivalent in sorting order. -\n * Positive value if string1 follows string2 in sorting order.\n */\nexport function ordinalCompare(\n string1: string,\n string2: string,\n options?: Intl.CollatorOptions,\n): number {\n return string1.localeCompare(string2, 'en', options);\n}\n\n/**\n * This function mirrors the `padEnd` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Pads this string with another string (multiple times, if needed) until the resulting string\n * reaches the given length. The padding is applied from the end of this string.\n *\n * @param string String to add padding too\n * @param targetLength The length of the resulting string once the starting string has been padded.\n * If value is less than or equal to length(string), then string is returned as is.\n * @param padString The string to pad the current string with. If padString is too long to stay\n * within targetLength, it will be truncated. Default is `\" \"`\n * @returns String with appropriate padding at the end\n */\n// Note: Limit with padString only works when length(padString) = 1, will be fixed with https://github.com/sallar/stringz/pull/59\nexport function padEnd(string: string, targetLength: number, padString: string = ' '): string {\n if (targetLength <= stringLength(string)) return string;\n return stringzLimit(string, targetLength, padString, 'right');\n}\n\n/**\n * This function mirrors the `padStart` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Pads this string with another string (multiple times, if needed) until the resulting string\n * reaches the given length. The padding is applied from the start of this string.\n *\n * @param string String to add padding too\n * @param targetLength The length of the resulting string once the starting string has been padded.\n * If value is less than or equal to length(string), then string is returned as is.\n * @param padString The string to pad the current string with. If padString is too long to stay\n * within the targetLength, it will be truncated from the end. Default is `\" \"`\n * @returns String with of specified targetLength with padString applied from the start\n */\n// Note: Limit with padString only works when length(padString) = 1, will be fixed with https://github.com/sallar/stringz/pull/59\nexport function padStart(string: string, targetLength: number, padString: string = ' '): string {\n if (targetLength <= stringLength(string)) return string;\n return stringzLimit(string, targetLength, padString, 'left');\n}\n\n// This is a helper function that performs a correction on the slice index to make sure it\n// cannot go out of bounds\nfunction correctSliceIndex(length: number, index: number) {\n if (index > length) return length;\n if (index < -length) return 0;\n if (index < 0) return index + length;\n return index;\n}\n\n/**\n * This function mirrors the `slice` function from the JavaScript Standard String object. It handles\n * Unicode code points instead of UTF-16 character codes.\n *\n * Extracts a section of this string and returns it as a new string, without modifying the original\n * string.\n *\n * @param string The starting string\n * @param indexStart The index of the first character to include in the returned substring.\n * @param indexEnd The index of the first character to exclude from the returned substring.\n * @returns A new string containing the extracted section of the string.\n */\nexport function slice(string: string, indexStart: number, indexEnd?: number): string {\n const length: number = stringLength(string);\n if (\n indexStart > length ||\n (indexEnd &&\n ((indexStart > indexEnd &&\n !(indexStart >= 0 && indexStart < length && indexEnd < 0 && indexEnd > -length)) ||\n indexEnd < -length))\n )\n return '';\n\n const newStart = correctSliceIndex(length, indexStart);\n const newEnd = indexEnd ? correctSliceIndex(length, indexEnd) : undefined;\n\n return substring(string, newStart, newEnd);\n}\n\n/**\n * This function mirrors the `split` function from the JavaScript Standard String object. It handles\n * Unicode code points instead of UTF-16 character codes.\n *\n * Takes a pattern and divides the string into an ordered list of substrings by searching for the\n * pattern, puts these substrings into an array, and returns the array.\n *\n * @param string The string to split\n * @param separator The pattern describing where each split should occur\n * @param splitLimit Limit on the number of substrings to be included in the array. Splits the\n * string at each occurrence of specified separator, but stops when limit entries have been placed\n * in the array.\n * @returns An array of strings, split at each point where separator occurs in the starting string.\n * Returns undefined if separator is not found in string.\n */\nexport function split(string: string, separator: string | RegExp, splitLimit?: number): string[] {\n const result: string[] = [];\n\n if (splitLimit !== undefined && splitLimit <= 0) {\n return [string];\n }\n\n if (separator === '') return toArray(string).slice(0, splitLimit);\n\n let regexSeparator = separator;\n if (\n typeof separator === 'string' ||\n (separator instanceof RegExp && !includes(separator.flags, 'g'))\n ) {\n regexSeparator = new RegExp(separator, 'g');\n }\n\n const matches: RegExpMatchArray | null = string.match(regexSeparator);\n\n let currentIndex = 0;\n\n if (!matches) return [string];\n\n for (let index = 0; index < (splitLimit ? splitLimit - 1 : matches.length); index++) {\n const matchIndex = indexOf(string, matches[index], currentIndex);\n const matchLength = stringLength(matches[index]);\n\n result.push(substring(string, currentIndex, matchIndex));\n currentIndex = matchIndex + matchLength;\n\n if (splitLimit !== undefined && result.length === splitLimit) {\n break;\n }\n }\n\n result.push(substring(string, currentIndex));\n\n return result;\n}\n\n/**\n * This function mirrors the `startsWith` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Determines whether the string begins with the characters of a specified string, returning true or\n * false as appropriate.\n *\n * @param string String to search through\n * @param searchString The characters to be searched for at the start of this string.\n * @param position The start position at which searchString is expected to be found (the index of\n * searchString's first character). Default is `0`\n * @returns True if the given characters are found at the beginning of the string, including when\n * searchString is an empty string; otherwise, false.\n */\nexport function startsWith(string: string, searchString: string, position: number = 0): boolean {\n const indexOfSearchString = indexOf(string, searchString, position);\n if (indexOfSearchString !== position) return false;\n return true;\n}\n\n/**\n * This function mirrors the `substr` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a substring by providing start and length. This function is not exported because it is\n * considered deprecated, however it is still useful as a local helper function.\n *\n * @param string String to be divided\n * @param begin Start position. Default is `Start of string`\n * @param len Length of result. Default is `String length minus start parameter`. Default is `String\n * length minus start parameter`\n * @returns Substring from starting string\n */\nfunction substr(\n string: string,\n begin: number = 0,\n len: number = stringLength(string) - begin,\n): string {\n return stringzSubstr(string, begin, len);\n}\n\n/**\n * This function mirrors the `substring` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Returns a substring by providing start and end position.\n *\n * @param string String to be divided\n * @param begin Start position\n * @param end End position. Default is `End of string`\n * @returns Substring from starting string\n */\nexport function substring(\n string: string,\n begin: number,\n end: number = stringLength(string),\n): string {\n return stringzSubstring(string, begin, end);\n}\n\n/**\n * This function mirrors the `toArray` function from the JavaScript Standard String object. It\n * handles Unicode code points instead of UTF-16 character codes.\n *\n * Converts a string to an array of string characters.\n *\n * @param string String to convert to array\n * @returns An array of characters from the starting string\n */\nexport function toArray(string: string): string[] {\n return stringzToArray(string);\n}\n\n/** Determine whether the string is a `LocalizeKey` meant to be localized in Platform.Bible. */\nexport function isLocalizeKey(str: string): str is LocalizeKey {\n return startsWith(str, '%') && endsWith(str, '%');\n}\n\n/**\n * Escape RegExp special characters.\n *\n * You can also use this to escape a string that is inserted into the middle of a regex, for\n * example, into a character class.\n *\n * All credit to [`escape-string-regexp`](https://www.npmjs.com/package/escape-string-regexp) - this\n * function is simply copied directly from there to allow a common js export\n *\n * @example\n *\n * import escapeStringRegexp from 'platform-bible-utils';\n *\n * const escapedString = escapeStringRegexp('How much $ for a 🦄?');\n * //=> 'How much \\\\$ for a 🦄\\\\?'\n *\n * new RegExp(escapedString);\n */\nexport function escapeStringRegexp(string: string): string {\n if (typeof string !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\n/**\n * Transforms a string or an array of strings into an array of regular expressions, ensuring that\n * the result is always an array.\n *\n * This function accepts a value that may be a single string, an array of strings, or `undefined`.\n * It then:\n *\n * - Converts each string into a `RegExp` object.\n * - If the input is an array containing nested arrays, it converts each string in the nested arrays\n * into `RegExp` objects.\n * - Ensures that the result is always an array of `RegExp` objects or arrays of `RegExp` objects.\n *\n * @param stringStringMaybeArray - The value to be transformed, which can be a single string, an\n * array of strings or arrays of strings, or `undefined`.\n * @returns An array of `RegExp` objects or arrays of `RegExp` objects. If the input is `undefined`,\n * an empty array is returned.\n */\nexport function transformAndEnsureRegExpRegExpArray(\n stringStringMaybeArray: string | (string | string[])[] | undefined,\n): (RegExp | RegExp[])[] {\n if (!stringStringMaybeArray) return [];\n\n const stringStringArray = ensureArray(stringStringMaybeArray);\n\n const regExpRegExpArray = stringStringArray.map((stringMaybeStringArray: string | string[]) =>\n Array.isArray(stringMaybeStringArray)\n ? stringMaybeStringArray.map((str) => new RegExp(str))\n : new RegExp(stringMaybeStringArray),\n );\n\n return regExpRegExpArray;\n}\n\n/**\n * Transforms a string or an array of strings into an array of regular expressions.\n *\n * This function accepts a value that may be a single string, an array of strings, or `undefined`.\n * It then:\n *\n * - Converts each string into a `RegExp` object.\n * - Ensures that the result is always an array of `RegExp` objects.\n *\n * @param stringMaybeArray - The value to be transformed, which can be a single string, an array of\n * strings, or `undefined`.\n * @returns An array of `RegExp` objects. If the input is `undefined`, an empty array is returned.\n */\nexport function transformAndEnsureRegExpArray(\n stringMaybeArray: string | string[] | undefined,\n): RegExp[] {\n if (!stringMaybeArray) return [];\n\n const stringArray = ensureArray(stringMaybeArray);\n\n const regExpArray = stringArray.map((str: string) => new RegExp(str));\n\n return regExpArray;\n}\n\n/** This is an internal-only export for testing purposes and should not be used in development */\nexport const testingStringUtils = {\n indexOfClosestClosingCurlyBrace,\n};\n","import { Canon, VerseRef } from '@sillsdev/scripture';\nimport { BookInfo, ScriptureReference, ScrollGroupId } from './scripture.model';\nimport { split, startsWith } from './string-util';\nimport { LocalizeKey } from './menus.model';\n\nconst scrBookData: BookInfo[] = [\n { shortName: 'ERR', fullNames: ['ERROR'], chapters: -1 },\n { shortName: 'GEN', fullNames: ['Genesis'], chapters: 50 },\n { shortName: 'EXO', fullNames: ['Exodus'], chapters: 40 },\n { shortName: 'LEV', fullNames: ['Leviticus'], chapters: 27 },\n { shortName: 'NUM', fullNames: ['Numbers'], chapters: 36 },\n { shortName: 'DEU', fullNames: ['Deuteronomy'], chapters: 34 },\n { shortName: 'JOS', fullNames: ['Joshua'], chapters: 24 },\n { shortName: 'JDG', fullNames: ['Judges'], chapters: 21 },\n { shortName: 'RUT', fullNames: ['Ruth'], chapters: 4 },\n { shortName: '1SA', fullNames: ['1 Samuel'], chapters: 31 },\n { shortName: '2SA', fullNames: ['2 Samuel'], chapters: 24 },\n { shortName: '1KI', fullNames: ['1 Kings'], chapters: 22 },\n { shortName: '2KI', fullNames: ['2 Kings'], chapters: 25 },\n { shortName: '1CH', fullNames: ['1 Chronicles'], chapters: 29 },\n { shortName: '2CH', fullNames: ['2 Chronicles'], chapters: 36 },\n { shortName: 'EZR', fullNames: ['Ezra'], chapters: 10 },\n { shortName: 'NEH', fullNames: ['Nehemiah'], chapters: 13 },\n { shortName: 'EST', fullNames: ['Esther'], chapters: 10 },\n { shortName: 'JOB', fullNames: ['Job'], chapters: 42 },\n { shortName: 'PSA', fullNames: ['Psalm', 'Psalms'], chapters: 150 },\n { shortName: 'PRO', fullNames: ['Proverbs'], chapters: 31 },\n { shortName: 'ECC', fullNames: ['Ecclesiastes'], chapters: 12 },\n { shortName: 'SNG', fullNames: ['Song of Solomon', 'Song of Songs'], chapters: 8 },\n { shortName: 'ISA', fullNames: ['Isaiah'], chapters: 66 },\n { shortName: 'JER', fullNames: ['Jeremiah'], chapters: 52 },\n { shortName: 'LAM', fullNames: ['Lamentations'], chapters: 5 },\n { shortName: 'EZK', fullNames: ['Ezekiel'], chapters: 48 },\n { shortName: 'DAN', fullNames: ['Daniel'], chapters: 12 },\n { shortName: 'HOS', fullNames: ['Hosea'], chapters: 14 },\n { shortName: 'JOL', fullNames: ['Joel'], chapters: 3 },\n { shortName: 'AMO', fullNames: ['Amos'], chapters: 9 },\n { shortName: 'OBA', fullNames: ['Obadiah'], chapters: 1 },\n { shortName: 'JON', fullNames: ['Jonah'], chapters: 4 },\n { shortName: 'MIC', fullNames: ['Micah'], chapters: 7 },\n { shortName: 'NAM', fullNames: ['Nahum'], chapters: 3 },\n { shortName: 'HAB', fullNames: ['Habakkuk'], chapters: 3 },\n { shortName: 'ZEP', fullNames: ['Zephaniah'], chapters: 3 },\n { shortName: 'HAG', fullNames: ['Haggai'], chapters: 2 },\n { shortName: 'ZEC', fullNames: ['Zechariah'], chapters: 14 },\n { shortName: 'MAL', fullNames: ['Malachi'], chapters: 4 },\n { shortName: 'MAT', fullNames: ['Matthew'], chapters: 28 },\n { shortName: 'MRK', fullNames: ['Mark'], chapters: 16 },\n { shortName: 'LUK', fullNames: ['Luke'], chapters: 24 },\n { shortName: 'JHN', fullNames: ['John'], chapters: 21 },\n { shortName: 'ACT', fullNames: ['Acts'], chapters: 28 },\n { shortName: 'ROM', fullNames: ['Romans'], chapters: 16 },\n { shortName: '1CO', fullNames: ['1 Corinthians'], chapters: 16 },\n { shortName: '2CO', fullNames: ['2 Corinthians'], chapters: 13 },\n { shortName: 'GAL', fullNames: ['Galatians'], chapters: 6 },\n { shortName: 'EPH', fullNames: ['Ephesians'], chapters: 6 },\n { shortName: 'PHP', fullNames: ['Philippians'], chapters: 4 },\n { shortName: 'COL', fullNames: ['Colossians'], chapters: 4 },\n { shortName: '1TH', fullNames: ['1 Thessalonians'], chapters: 5 },\n { shortName: '2TH', fullNames: ['2 Thessalonians'], chapters: 3 },\n { shortName: '1TI', fullNames: ['1 Timothy'], chapters: 6 },\n { shortName: '2TI', fullNames: ['2 Timothy'], chapters: 4 },\n { shortName: 'TIT', fullNames: ['Titus'], chapters: 3 },\n { shortName: 'PHM', fullNames: ['Philemon'], chapters: 1 },\n { shortName: 'HEB', fullNames: ['Hebrews'], chapters: 13 },\n { shortName: 'JAS', fullNames: ['James'], chapters: 5 },\n { shortName: '1PE', fullNames: ['1 Peter'], chapters: 5 },\n { shortName: '2PE', fullNames: ['2 Peter'], chapters: 3 },\n { shortName: '1JN', fullNames: ['1 John'], chapters: 5 },\n { shortName: '2JN', fullNames: ['2 John'], chapters: 1 },\n { shortName: '3JN', fullNames: ['3 John'], chapters: 1 },\n { shortName: 'JUD', fullNames: ['Jude'], chapters: 1 },\n { shortName: 'REV', fullNames: ['Revelation'], chapters: 22 },\n];\n\nexport const FIRST_SCR_BOOK_NUM = 1;\nexport const LAST_SCR_BOOK_NUM = scrBookData.length - 1;\nexport const FIRST_SCR_CHAPTER_NUM = 1;\nexport const FIRST_SCR_VERSE_NUM = 1;\n\nexport const defaultScrRef: ScriptureReference = {\n bookNum: 1,\n chapterNum: 1,\n verseNum: 1,\n};\n\nexport const getChaptersForBook = (bookNum: number): number => {\n return scrBookData[bookNum]?.chapters ?? -1;\n};\n\nexport const offsetBook = (scrRef: ScriptureReference, offset: number): ScriptureReference => ({\n bookNum: Math.max(FIRST_SCR_BOOK_NUM, Math.min(scrRef.bookNum + offset, LAST_SCR_BOOK_NUM)),\n chapterNum: 1,\n verseNum: 1,\n});\n\nexport const offsetChapter = (scrRef: ScriptureReference, offset: number): ScriptureReference => ({\n ...scrRef,\n chapterNum: Math.min(\n Math.max(FIRST_SCR_CHAPTER_NUM, scrRef.chapterNum + offset),\n getChaptersForBook(scrRef.bookNum),\n ),\n verseNum: 1,\n});\n\nexport const offsetVerse = (scrRef: ScriptureReference, offset: number): ScriptureReference => ({\n ...scrRef,\n verseNum: Math.max(FIRST_SCR_VERSE_NUM, scrRef.verseNum + offset),\n});\n\n/**\n * https://github.com/ubsicap/Paratext/blob/master/ParatextData/SILScriptureExtensions.cs#L72\n *\n * Convert book number to a localized Id (a short description of the book). This should be used\n * whenever a book ID (short code) is shown to the user. It is primarily needed for people who do\n * not read Roman script well and need to have books identified in a alternate script (e.g. Chinese\n * or Russian)\n *\n * @param bookNumber\n * @param localizationLanguage In BCP 47 format\n * @param getLocalizedString Function that provides the localized versions of the book ids and names\n * asynchronously.\n * @returns\n */\nexport async function getLocalizedIdFromBookNumber(\n bookNumber: number,\n localizationLanguage: string,\n getLocalizedString: (item: {\n localizeKey: string;\n languagesToSearch?: string[];\n }) => Promise,\n) {\n const id = Canon.bookNumberToId(bookNumber);\n\n if (!startsWith(Intl.getCanonicalLocales(localizationLanguage)[0], 'zh'))\n return getLocalizedString({\n localizeKey: `LocalizedId.${id}`,\n languagesToSearch: [localizationLanguage],\n });\n\n // For Chinese the normal book name is already fairly short.\n const bookName = await getLocalizedString({\n localizeKey: `Book.${id}`,\n languagesToSearch: [localizationLanguage],\n });\n const parts = split(bookName, '-');\n // some entries had a second name inside ideographic parenthesis\n const parts2 = split(parts[0], '\\xff08');\n const retVal = parts2[0].trim();\n return retVal;\n}\n\n/**\n * Get the Scripture reference as an easily comparable/sortable integer.\n *\n * @param scrRef The Scripture reference.\n * @returns An integer where the first three digits represent the book, the next three represent the\n * chapter and the last three represent the verse.\n */\nexport function scrRefToBBBCCCVVV(scrRef: ScriptureReference): number {\n return new VerseRef(scrRef.bookNum, scrRef.chapterNum, scrRef.verseNum).BBBCCCVVV;\n}\n\n/**\n * Compares two Scripture references canonically.\n *\n * @param scrRef1 The first Scripture reference to compare.\n * @param scrRef2 The second Scripture reference to compare.\n * @returns A number indicating the result of the comparison: - Negative value if scrRef1 precedes\n * scrRef2 in sorting order. - Zero if scrRef1 and scrRef2 are equivalent in sorting order. -\n * Positive value if scrRef1 follows scrRef2 in sorting order.\n */\nexport function compareScrRefs(scrRef1: ScriptureReference, scrRef2: ScriptureReference): number {\n // TODO: consider edge cases for invalid references (current implementation should suffice for\n // all but the most extreme cases)\n return scrRefToBBBCCCVVV(scrRef1) - scrRefToBBBCCCVVV(scrRef2);\n}\n\n/** Get the localized string key for a given scroll group Id (or no scroll group if `undefined`) */\nexport function getLocalizeKeyForScrollGroupId(\n scrollGroupId: ScrollGroupId | undefined | 'undefined',\n): LocalizeKey {\n return `%scrollGroup_${scrollGroupId}%`;\n}\n\n/**\n * Gets a list of localized string keys for provided scroll group Ids. Uses\n * {@link getLocalizeKeyForScrollGroupId} internally\n *\n * @example\n *\n * ```typescript\n * getLocalizeKeysForScrollGroupIds([undefined, 0, 1, 2, 3, 4]);\n * // Gives localized string keys for the provided scroll group ids in an array\n * ```\n *\n * @param scrollGroupIds Scroll group ids to include\n * @returns List of localized string keys for scroll group Ids\n */\nexport function getLocalizeKeysForScrollGroupIds(scrollGroupIds: (ScrollGroupId | undefined)[]) {\n return scrollGroupIds.map((scrollGroupId) => getLocalizeKeyForScrollGroupId(scrollGroupId));\n}\n\n/**\n * Formats a Scripture reference.\n *\n * @param scrRef The Scripture reference to format.\n * @param optionOrLocalizedBookName Either 'id' (the default) to format using the \"standard\" (as\n * defined by SIL/UBS) 3-letter book ID, 'English' to format using the English book name spelled\n * out, or some other string (e.g., a localized book name, vernacular abbreviation, FCBH book id,\n * etc.) to use.\n * @param chapterVerseSeparator The character used to separate the chapter number from the verse\n * number. Default is a colon (:). Note: More than one character is allowed.\n * @param bookChapterSeparator The character used to separate the book from the chapter number.\n * Default is a single space. Note: More than one character is allowed.\n * @returns The formatted reference.\n */\nexport function formatScrRef(\n scrRef: ScriptureReference,\n optionOrLocalizedBookName?: 'id' | 'English' | string,\n chapterVerseSeparator?: string,\n bookChapterSeparator?: string,\n): string {\n let book: string;\n switch (optionOrLocalizedBookName ?? 'id') {\n case 'English':\n book = Canon.bookNumberToEnglishName(scrRef.bookNum);\n break;\n case 'id':\n book = Canon.bookNumberToId(scrRef.bookNum);\n break;\n default:\n // We already dealt with undefined about in the switch, but TS is getting confused.\n book = optionOrLocalizedBookName ?? '';\n break;\n }\n return `${book}${bookChapterSeparator ?? ' '}${scrRef.chapterNum}${chapterVerseSeparator ?? ':'}${scrRef.verseNum}`;\n}\n","/** Function to run to dispose of something. Returns true if successfully unsubscribed */\nexport type Unsubscriber = () => boolean;\n\n/**\n * Returns an Unsubscriber function that combines all the unsubscribers passed in.\n *\n * @param unsubscribers All unsubscribers to aggregate into one unsubscriber\n * @returns Function that unsubscribes from all passed in unsubscribers when run\n */\nexport const aggregateUnsubscribers = (unsubscribers: Unsubscriber[]): Unsubscriber => {\n return (...args) => {\n // Run the unsubscriber for each handler\n const unsubs = unsubscribers.map((unsubscriber) => unsubscriber(...args));\n\n // If all the unsubscribers resolve to truthiness, we succeed\n return unsubs.every((success) => success);\n };\n};\n\n/**\n * Function to run to dispose of something that runs asynchronously. The promise resolves to true if\n * successfully unsubscribed\n */\nexport type UnsubscriberAsync = () => Promise;\n\n/**\n * Returns an UnsubscriberAsync function that combines all the unsubscribers passed in.\n *\n * @param unsubscribers - All unsubscribers to aggregate into one unsubscriber.\n * @returns Function that unsubscribes from all passed in unsubscribers when run\n */\nexport const aggregateUnsubscriberAsyncs = (\n unsubscribers: (UnsubscriberAsync | Unsubscriber)[],\n): UnsubscriberAsync => {\n return async (...args) => {\n // Run the unsubscriber for each handler\n const unsubPromises = unsubscribers.map(async (unsubscriber) => unsubscriber(...args));\n\n // If all the unsubscribers resolve to truthiness, we succeed\n return (await Promise.all(unsubPromises)).every((success) => success);\n };\n};\n","import { type MarkerContent, type MarkerObject } from '@biblionexus-foundation/scripture-utilities';\nimport { VerseRef } from '@sillsdev/scripture';\n\n/** USJ content node type for a chapter */\nexport const CHAPTER_TYPE = 'chapter';\n\n/** USJ content node type for a verse */\nexport const VERSE_TYPE = 'verse';\n\n/** Represents a book, chapter, verse, and offset */\nexport type VerseRefOffset = {\n verseRef: VerseRef;\n offset: number;\n};\n\n/** This could actually have more content clauses at the end, but TS types are limited */\nexport type ContentJsonPath =\n | ''\n | `$`\n | `$.content[${number}]`\n | `$.content[${number}].content[${number}]`\n | `$.content[${number}].content[${number}].content[${number}]`\n | `$.content[${number}].content[${number}].content[${number}].content[${number}]`;\n\n/** Node within a USJ object, an offset within that node, and a JSONPath query to the node */\nexport type UsjContentLocation = {\n node: MarkerContent;\n offset: number;\n jsonPath: ContentJsonPath;\n};\n\n/** Utilities for reading from and writing to `Usj` objects */\nexport interface IUsjReaderWriter {\n /**\n * Return a copy of text following a given starting point\n *\n * @param start Point where text extraction will start\n * @param desiredLength Length of text to extract from this USJ data\n */\n extractText(start: UsjContentLocation, desiredLength: number): string;\n /**\n * Return a copy of text between two points\n *\n * @param start Point where text extraction will start\n * @param end Point where text extraction will end\n * @param maxLength Maximum length of string to return (defaults to 100)\n * @returns Text between the two points, capped at length `maxLength`\n */\n extractTextBetweenPoints(\n start: UsjContentLocation,\n end: UsjContentLocation,\n maxLength: number,\n ): string;\n /**\n * Given a starting point, find the next location in this USJ data that matches the given text\n *\n * @param start Point where the search for `text` will start\n * @param text Text to find\n * @param maxTextLengthToSearch Maximum length of text to search before stopping (default is 1000)\n * @returns Object containing the USJ node where `text` begins (it might be split across nodes),\n * offset within that node that indicates where `text` begins, and a JSONPath string that\n * indicates the location of the of USJ node within `usj`. Note that if the USJ node returned is\n * an object, it is the same object that is within this USJ data. So if you change it, you are\n * changing this USJ data.\n */\n findNextLocationOfMatchingText(\n start: UsjContentLocation,\n text: string,\n maxTextLengthToSearch: number,\n ): UsjContentLocation | undefined;\n /** Find the first value matching the given JSONPath query within this USJ data */\n findSingleValue(jsonPathQuery: string): T | undefined;\n /** Find the parent of the first value matching the given JSONPath query within this USJ data */\n findParent(jsonPathQuery: string): T | undefined;\n /**\n * Convert a JSONPath query into a VerseRef and offset\n *\n * @param jsonPathQuery JSONPath search expression that indicates a node within this USJ data. If\n * the expression matches more than one node, then only the first node found is considered.\n * @param bookId 3 letter ID of the book being searched (must be defined in this USJ data if not\n * provided here)\n * @returns VerseRef and offset that represents the location within this USJ data indicated by\n * `jsonPathQuery`\n */\n jsonPathToVerseRefAndOffset(jsonPathQuery: string, bookId?: string): VerseRefOffset;\n /** Build a JSONPath query that uniquely identifies the given node with this USJ data. */\n nodeToJsonPath(node: MarkerObject): ContentJsonPath;\n /**\n * Determine the VerseRef and offset that correspond to the location of a node somewhere within\n * this USJ data\n *\n * @param bookId ID of the book represented by this USJ data\n * @param node JSON object representing the location of the VerseRef and offset\n * @param nodeParent JSON object that owns the `content` array that includes `node`. If\n * 'undefined' is provided then the `UsjReaderWriter` will attempt to lookup the parent of\n * `node`. The lookup will always fail and throw an error if `node` is a string.\n * @returns VerseRef and offset representing the location of `node`, if one could be found\n */\n nodeToVerseRefAndOffset(\n bookId: string,\n node: MarkerContent,\n nodeParent: MarkerObject | MarkerContent[] | undefined,\n ): { verseRef: VerseRef; offset: number } | undefined;\n /**\n * Remove all nodes from this USJ data that match a given search function.\n *\n * @param searchFunction Function that returns `true` if the given node should be removed\n * @returns Number of nodes removed\n */\n removeContentNodes(searchFunction: (potentiallyMatchingNode: MarkerContent) => boolean): number;\n /**\n * Inform this UsjReaderWriter that the underlying USJ object changed. This is needed to clear\n * caches used when querying.\n */\n usjChanged(): void;\n /**\n * Convert a verse ref + offset into a node + offset within this USJ data and a JSONPath query\n *\n * @param verseRef Indicates the book, chapter, and verse of interest to find\n * @param verseRefOffset Specific location within verse text (defaults to 0)\n * @returns Object containing the USJ node indicated by `verseRef` and `verseRefOffset`, offset\n * within that node that matches the `verseRefOffset`, and a JSONPath string that indicates the\n * location of the of USJ node within this USJ data. Note that if the USJ node returned is an\n * object, it is the same object that is within this USJ data. So if you change it, you are\n * changing this USJ data.\n */\n verseRefToUsjContentLocation(verseRef: VerseRef, verseRefOffset: number): UsjContentLocation;\n}\n","var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n return function isEqual(a, b, state) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n return function isCircular(a, b, state) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n var cache = state.cache;\n var cachedA = cache.get(a);\n var cachedB = cache.get(b);\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n cache.set(a, b);\n cache.set(b, a);\n var result = areItemsEqual(a, b, state);\n cache.delete(a);\n cache.delete(b);\n return result;\n };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nvar hasOwn = Object.hasOwn ||\n (function (object, property) {\n return hasOwnProperty.call(object, property);\n });\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n\nvar OWNER = '_owner';\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.entries();\n var index = 0;\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.entries();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n var _a = aResult.value, aKey = _a[0], aValue = _a[1];\n var _b = bResult.value, bKey = _b[0], bValue = _b[1];\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch =\n state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n state.equals(aValue, bValue, aKey, bKey, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n index++;\n }\n return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n var properties = keys(a);\n var index = properties.length;\n if (keys(b).length !== index) {\n return false;\n }\n var property;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property) ||\n !state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n var properties = getStrictProperties(a);\n var index = properties.length;\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n var property;\n var descriptorA;\n var descriptorB;\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index];\n if (property === OWNER &&\n (a.$$typeof || b.$$typeof) &&\n a.$$typeof !== b.$$typeof) {\n return false;\n }\n if (!hasOwn(b, property)) {\n return false;\n }\n if (!state.equals(a[property], b[property], property, property, a, b, state)) {\n return false;\n }\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n if ((descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n if (a.size !== b.size) {\n return false;\n }\n var matchedIndices = {};\n var aIterable = a.values();\n var aResult;\n var bResult;\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n var bIterable = b.values();\n var hasMatch = false;\n var matchIndex = 0;\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n if (!hasMatch &&\n !matchedIndices[matchIndex] &&\n (hasMatch = state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state))) {\n matchedIndices[matchIndex] = true;\n }\n matchIndex++;\n }\n if (!hasMatch) {\n return false;\n }\n }\n return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n var index = a.length;\n if (b.length !== index) {\n return false;\n }\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n return true;\n}\n\nvar ARGUMENTS_TAG = '[object Arguments]';\nvar BOOLEAN_TAG = '[object Boolean]';\nvar DATE_TAG = '[object Date]';\nvar MAP_TAG = '[object Map]';\nvar NUMBER_TAG = '[object Number]';\nvar OBJECT_TAG = '[object Object]';\nvar REG_EXP_TAG = '[object RegExp]';\nvar SET_TAG = '[object Set]';\nvar STRING_TAG = '[object String]';\nvar isArray = Array.isArray;\nvar isTypedArray = typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nvar assign = Object.assign;\nvar getTag = Object.prototype.toString.call.bind(Object.prototype.toString);\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(_a) {\n var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, arePrimitiveWrappersEqual = _a.arePrimitiveWrappersEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, areTypedArraysEqual = _a.areTypedArraysEqual;\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a, b, state) {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n // If the items are not non-nullish objects, then the only possibility\n // of them being equal but not strictly is if they are both `NaN`. Since\n // `NaN` is uniquely not equal to itself, we can use self-comparison of\n // both objects, which is faster than `isNaN()`.\n if (a == null ||\n b == null ||\n typeof a !== 'object' ||\n typeof b !== 'object') {\n return a !== a && b !== b;\n }\n var constructor = a.constructor;\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n var tag = getTag(a);\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state));\n }\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig(_a) {\n var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;\n var config = {\n areArraysEqual: strict\n ? areObjectsEqualStrict\n : areArraysEqual,\n areDatesEqual: areDatesEqual,\n areMapsEqual: strict\n ? combineComparators(areMapsEqual, areObjectsEqualStrict)\n : areMapsEqual,\n areObjectsEqual: strict\n ? areObjectsEqualStrict\n : areObjectsEqual,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n areRegExpsEqual: areRegExpsEqual,\n areSetsEqual: strict\n ? combineComparators(areSetsEqual, areObjectsEqualStrict)\n : areSetsEqual,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrict\n : areTypedArraysEqual,\n };\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n if (circular) {\n var areArraysEqual$1 = createIsCircular(config.areArraysEqual);\n var areMapsEqual$1 = createIsCircular(config.areMapsEqual);\n var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);\n var areSetsEqual$1 = createIsCircular(config.areSetsEqual);\n config = assign({}, config, {\n areArraysEqual: areArraysEqual$1,\n areMapsEqual: areMapsEqual$1,\n areObjectsEqual: areObjectsEqual$1,\n areSetsEqual: areSetsEqual$1,\n });\n }\n return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n return compare(a, b, state);\n };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual(_a) {\n var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;\n if (createState) {\n return function isEqual(a, b) {\n var _a = createState(), _b = _a.cache, cache = _b === void 0 ? circular ? new WeakMap() : undefined : _b, meta = _a.meta;\n return comparator(a, b, {\n cache: cache,\n equals: equals,\n meta: meta,\n strict: strict,\n });\n };\n }\n if (circular) {\n return function isEqual(a, b) {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals: equals,\n meta: undefined,\n strict: strict,\n });\n };\n }\n var state = {\n cache: undefined,\n equals: equals,\n meta: undefined,\n strict: strict,\n };\n return function isEqual(a, b) {\n return comparator(a, b, state);\n };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nvar deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nvar strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nvar circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nvar shallowEqual = createCustomEqual({\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nvar strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nvar circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: function () { return sameValueZeroEqual; },\n strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options) {\n if (options === void 0) { options = {}; }\n var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;\n var config = createEqualityComparatorConfig(options);\n var comparator = createEqualityComparator(config);\n var equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n return createIsEqual({ circular: circular, comparator: comparator, createState: createState, equals: equals, strict: strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","// There is a circular version https://www.npmjs.com/package/fast-equals#circulardeepequal that I\n// think allows comparing React refs (which have circular references in particular places that this\n// library would ignore). Maybe we can change to that version sometime if needed.\nimport { deepEqual as isEqualDeep } from 'fast-equals';\n\n/**\n * Check that two objects are deeply equal, comparing members of each object and such\n *\n * @param a The first object to compare\n * @param b The second object to compare\n *\n * WARNING: Objects like arrays from different iframes have different constructor function\n * references even if they do the same thing, so this deep equality comparison fails objects that\n * look the same but have different constructors because different constructors could produce\n * false positives in [a few specific\n * situations](https://github.com/planttheidea/fast-equals/blob/a41afc0a240ad5a472e47b53791e9be017f52281/src/comparator.ts#L96).\n * This means that two objects like arrays from different iframes that look the same will fail\n * this check. Please use some other means to check deep equality in those situations.\n *\n * Note: This deep equality check considers `undefined` values on keys of objects NOT to be equal to\n * not specifying the key at all. For example, `{ stuff: 3, things: undefined }` and `{ stuff: 3\n * }` are not considered equal in this case\n *\n * - For more information and examples, see [this\n * CodeSandbox](https://codesandbox.io/s/deepequallibrarycomparison-4g4kk4?file=/src/index.mjs).\n *\n * @returns True if a and b are deeply equal; false otherwise\n */\nexport default function deepEqual(a: unknown, b: unknown) {\n return isEqualDeep(a, b);\n}\n","import deepEqual from './equality-checking';\n\n/**\n * Check if one object is a subset of the other object. \"Subset\" means that all properties of one\n * object are present in the other object, and if they are present that all values of those\n * properties are deeply equal. Sub-objects are also checked to be subsets of the corresponding\n * sub-object in the other object.\n *\n * @example ObjB is a subset of objA given these objects:\n *\n * ```ts\n * objA = { name: 'Alice', age: 30, address: { city: 'Seattle', state: 'Washington' } };\n * objB = { name: 'Alice', address: { city: 'Seattle' } };\n * ```\n *\n * It is important to note that only arrays of primitives (i.e., booleans, numbers, strings) are\n * supported. In particular, objects in arrays will not be checked for deep equality. Also, presence\n * in an array is all this checks, not the number of times that an item appears in an array. `[1,\n * 1]` is a subset of `[1]`.\n *\n * @param objectWithAllProperties Object to be checked if it is a superset of\n * `objectWithPartialProperties`\n * @param objectWithPartialProperties Object to be checked if it is a subset of\n * `objectWithAllProperties`\n * @returns True if `objectWithAllProperties` contains all the properties of\n * `objectWithPartialProperties` and all values of those properties are deeply equal\n */\nexport default function isSubset(\n objectWithAllProperties: unknown,\n objectWithPartialProperties: unknown,\n): boolean {\n if (typeof objectWithAllProperties !== typeof objectWithPartialProperties) return false;\n\n // For this function we're saying that all falsy things of the same type are equal to each other\n if (!objectWithAllProperties && !objectWithPartialProperties) return true;\n\n if (Array.isArray(objectWithAllProperties)) {\n // We know these are arrays from the line above\n /* eslint-disable no-type-assertion/no-type-assertion */\n const partialArray = objectWithPartialProperties as Array;\n const allArray = objectWithAllProperties as Array;\n /* eslint-enable no-type-assertion/no-type-assertion */\n\n if (partialArray.length === 0) return true;\n\n // This only works with arrays of primitives.\n // If someone cares about checking arrays of objects this needs updating.\n return partialArray.every((item) => allArray.includes(item));\n }\n\n if (typeof objectWithAllProperties !== 'object')\n return deepEqual(objectWithAllProperties, objectWithPartialProperties);\n\n // We know these are objects that potentially have properties because of the earlier checks\n /* eslint-disable no-type-assertion/no-type-assertion */\n const partialObj = objectWithPartialProperties as Record;\n const allObj = objectWithAllProperties as Record;\n /* eslint-enable no-type-assertion/no-type-assertion */\n\n let retVal = true;\n Object.keys(partialObj).forEach((key) => {\n if (!retVal) return;\n if (!Object.hasOwn(allObj, key)) retVal = false;\n else if (!isSubset(allObj[key], partialObj[key])) retVal = false;\n });\n return retVal;\n}\n","/**\n * Converts a JavaScript value to a JSON string, changing `undefined` properties in the JavaScript\n * object to `null` properties in the JSON string.\n *\n * WARNING: `null` values will become `undefined` values after passing through {@link serialize} then\n * {@link deserialize}. For example, `{ a: 1, b: undefined, c: null }` will become `{ a: 1, b:\n * undefined, c: undefined }`. If you are passing around user data that needs to retain `null`\n * values, you should wrap them yourself in a string before using this function. Alternatively, you\n * can write your own replacer that will preserve `null` in a way that you can recover later.\n *\n * @param value A JavaScript value, usually an object or array, to be converted.\n * @param replacer A function that transforms the results. Note that all `undefined` values returned\n * by the replacer will be further transformed into `null` in the JSON string.\n * @param space Adds indentation, white space, and line break characters to the return-value JSON\n * text to make it easier to read. See the `space` parameter of `JSON.stringify` for more\n * details.\n */\nexport function serialize(\n value: unknown,\n replacer?: (this: unknown, key: string, value: unknown) => unknown,\n space?: string | number,\n): string {\n const undefinedReplacer = (replacerKey: string, replacerValue: unknown) => {\n let newValue = replacerValue;\n if (replacer) newValue = replacer(replacerKey, newValue);\n // All `undefined` values become `null` on the way from JS objects into JSON strings\n // eslint-disable-next-line no-null/no-null\n if (newValue === undefined) newValue = null;\n return newValue;\n };\n return JSON.stringify(value, undefinedReplacer, space);\n}\n\n/**\n * Converts a JSON string into a value, converting all `null` properties from JSON into `undefined`\n * in the returned JavaScript value/object.\n *\n * WARNING: `null` values will become `undefined` values after passing through {@link serialize} then\n * {@link deserialize}. For example, `{ a: 1, b: undefined, c: null }` will become `{ a: 1, b:\n * undefined, c: undefined }`. If you are passing around user data that needs to retain `null`\n * values, you should wrap them yourself in a string before using this function. Alternatively, you\n * can write your own replacer that will preserve `null` in a way that you can recover later.\n *\n * @param value A valid JSON string.\n * @param reviver A function that transforms the results. This function is called for each member of\n * the object. If a member contains nested objects, the nested objects are transformed before the\n * parent object is. Note that `null` values are converted into `undefined` values after the\n * reviver has run.\n */\nexport function deserialize(\n value: string,\n reviver?: (this: unknown, key: string, value: unknown) => unknown,\n // Need to use `any` instead of `unknown` here to match the signature of JSON.parse\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // Helper function to replace `null` with `undefined` on a per property basis. This can't be done\n // with our own reviver because `JSON.parse` removes `undefined` properties from the return value.\n function replaceNull(obj: Record): Record {\n Object.keys(obj).forEach((key: string | number) => {\n // We only want to replace `null`, not other falsy values\n // eslint-disable-next-line no-null/no-null\n if (obj[key] === null) obj[key] = undefined;\n // If the property is an object, recursively call the helper function on it\n else if (typeof obj[key] === 'object')\n // Since the object came from a string, we know the keys will not be symbols\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n obj[key] = replaceNull(obj[key] as Record);\n });\n return obj;\n }\n\n const parsedObject = JSON.parse(value, reviver);\n // Explicitly convert the value 'null' that isn't stored as a property on an object to 'undefined'\n // eslint-disable-next-line no-null/no-null\n if (parsedObject === null) return undefined;\n if (typeof parsedObject === 'object') return replaceNull(parsedObject);\n return parsedObject;\n}\n\n/**\n * Check to see if the value is serializable without losing information\n *\n * @param value Value to test\n * @returns True if serializable; false otherwise\n *\n * Note: the values `undefined` and `null` are serializable (on their own or in an array), but\n * `null` values get transformed into `undefined` when serializing/deserializing.\n *\n * WARNING: This is inefficient right now as it stringifies, parses, stringifies, and === the value.\n * Please only use this if you need to\n *\n * DISCLAIMER: this does not successfully detect that values are not serializable in some cases:\n *\n * - Losses of removed properties like functions and `Map`s\n * - Class instances (not deserializable into class instances without special code)\n *\n * We intend to improve this in the future if it becomes important to do so. See [`JSON.stringify`\n * documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description)\n * for more information.\n */\nexport function isSerializable(value: unknown): boolean {\n try {\n const serializedValue = serialize(value);\n return serializedValue === serialize(deserialize(serializedValue));\n } catch (e) {\n return false;\n }\n}\n\n/**\n * HTML Encodes the provided string. Thanks to ChatGPT\n *\n * @param str String to HTML encode\n * @returns HTML-encoded string\n */\nexport const htmlEncode = (str: string): string =>\n str\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/\\//g, '/');\n","import DateTimeFormat from './intl-date-time-format';\n\n/**\n * Retrieves the current locale of the user's environment.\n *\n * @returns A string representing the current locale. If the locale cannot be determined, the\n * function returns an empty string.\n */\nexport default function getCurrentLocale(): string {\n // Use navigator when available\n if (typeof navigator !== 'undefined' && navigator.languages) {\n return navigator.languages[0];\n }\n // For Node.js\n return new DateTimeFormat().resolvedOptions().locale;\n}\n","import NumberFormat from './intl-number-format';\n\n/**\n * Formats a number according to the locale and formatting options of this NumberFormat object\n *\n * @example FormatBytes(1024) => \"1 KB\"\n *\n * @example FormatBytes(1024, 0) => \"1 KB\"\n *\n * @param fileSize Number to format\n * @param decimals Number of decimal places to round to\n * @returns String representing the given number formatted according to the locale and formatting\n * options of this NumberFormat object\n */\nexport default function formatBytes(fileSize: number, decimals: number = 2): string {\n if (fileSize === 0) return '0 Bytes';\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(fileSize) / Math.log(1024));\n const sizeToUse = sizes[i];\n const formattingFileSize = new NumberFormat('en', {\n style: 'decimal',\n maximumFractionDigits: decimals,\n minimumFractionDigits: 0,\n }).format(fileSize / 1024 ** i);\n return `${formattingFileSize} ${sizeToUse}`;\n}\n","//----------------------------------------------------------------------------------------------\n// NOTE: If you change any of the types, make sure the JSON schema at the end of this file gets\n// changed so they align.\n//----------------------------------------------------------------------------------------------\n\nimport { LocalizeKey, ReferencedItem } from 'menus.model';\n\n/** The data an extension provides to inform Platform.Bible of the settings it provides */\nexport type SettingsContribution = SettingsGroup | SettingsGroup[];\n/** A description of an extension's setting entry */\nexport type Setting = ExtensionControlledSetting;\n/** Setting definition that is validated by the extension. */\nexport type ExtensionControlledSetting = SettingBase & ModifierExtensionControlled;\n/** Base information needed to describe a setting entry */\nexport type SettingBase = StateBase & {\n [k: string]: unknown;\n /** LocalizeKey that displays in the settings dialog as the setting name */\n label: LocalizeKey;\n /** LocalizeKey that displays in the settings dialog to describe the setting */\n description?: LocalizeKey;\n};\n/** The data an extension provides to inform Platform.Bible of the project settings it provides */\nexport type ProjectSettingsContribution = ProjectSettingsGroup | ProjectSettingsGroup[];\n/** A description of an extension's setting entry */\nexport type ProjectSetting = ExtensionControlledProjectSetting;\n/** Setting definition that is validated by the extension. */\nexport type ExtensionControlledProjectSetting = ProjectSettingBase & ModifierExtensionControlled;\n/** Base information needed to describe a project setting entry */\nexport type ProjectSettingBase = SettingBase & ModifierProject;\n/** A description of an extension's user state entry */\nexport type UserState = ExtensionControlledState;\n/** State definition that is validated by the extension. */\nexport type ExtensionControlledState = StateBase & ModifierExtensionControlled;\n/** Group of related settings definitions */\nexport interface SettingsGroup {\n [k: string]: unknown;\n /** LocalizeKey that displays in the settings dialog as the group name */\n label: LocalizeKey;\n /** LocalizeKey that displays in the settings dialog to describe the group */\n description?: LocalizeKey;\n properties: SettingProperties;\n}\n/** Object whose keys are setting IDs and whose values are settings objects */\nexport interface SettingProperties {\n [k: ReferencedItem]: Setting;\n}\n/** Base information needed to describe a state entry */\nexport interface StateBase {\n [k: string]: unknown;\n /** Default value for the state/setting */\n default: unknown;\n /**\n * A state/setting ID whose value to set to this state/setting's starting value the first time\n * this state/setting is loaded\n */\n derivesFrom?: ReferencedItem;\n}\n/**\n * Modifies state/setting type to be extension-controlled. \"Extension-controlled\" means the\n * extension provides the component and the validator for the state/setting, so the state/setting is\n * controlled by the extension.\n */\nexport interface ModifierExtensionControlled {\n [k: string]: unknown;\n platformType?: undefined;\n type?: undefined;\n}\n/** Group of related settings definitions */\nexport interface ProjectSettingsGroup {\n [k: string]: unknown;\n /** LocalizeKey that displays in the project settings dialog as the group name */\n label: LocalizeKey;\n /** LocalizeKey that displays in the project settings dialog to describe the group */\n description?: LocalizeKey;\n properties: ProjectSettingProperties;\n}\n/** Object whose keys are setting IDs and whose values are settings objects */\nexport interface ProjectSettingProperties {\n [k: ReferencedItem]: ProjectSetting;\n}\n\n// Note: we removed the index signature on ModifierProject to avoid having it on\n// `ProjectMetadataFilterOptions`. Unfortunately adding \"additionalProperties\": false on the json\n// schema messes up validation. Please remove the index signature again in the future if you\n// regenerate types\nexport interface ModifierProject {\n /**\n * String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s\n * (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if they should be included.\n *\n * If this is one string, it will be matched against `projectInterface`s. If this is an array,\n * each entry is handled based on its type (at least one entry must match for this filter\n * condition to pass):\n *\n * - If the entry is a string, it will be matched against each `projectInterface`. If any match, the\n * project will pass this filter condition\n * - If the entry is an array of strings, each will be matched against each `projectInterface`. If\n * every string matches against at least one `projectInterface`, the project will pass this\n * filter condition\n *\n * In other words, each entry in the first-level array is `OR`'ed together. Each entry in\n * second-level arrays (arrays within the first-level array) are `AND`'ed together.\n *\n * Defaults to all {@link ProjectInterfaces}, so all projects that do not match\n * `excludeProjectInterfaces` will be included\n *\n * @example\n *\n * ```typescript\n * includeProjectInterfaces: ['one', ['two', 'three']];\n * ```\n *\n * This filter condition will succeed on projects whose `projectInterface`s fulfill at least one\n * of the following conditions (At least one entry in the array must match):\n *\n * - Include `one`\n * - Include both `two` and `three`.\n */\n includeProjectInterfaces?: undefined | string | (string | string[])[];\n /**\n * String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s\n * (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if they should absolutely not be included even if they match with\n * `includeProjectInterfaces`.\n *\n * If this is one string, it will be matched against `projectInterface`s. If this is an array,\n * each entry is handled based on its type (at least one entry must match for this filter\n * condition to exclude the project):\n *\n * - If the entry is a string, it will be matched against each `projectInterface`. If any match, the\n * project will pass this filter condition and exclude the project\n * - If the entry is an array of strings, each will be matched against each `projectInterface`. If\n * every string matches against at least one `projectInterface`, the project will pass this\n * filter condition and exclude the project\n *\n * In other words, each entry in the first-level array is `OR`'ed together. Each entry in\n * second-level arrays (arrays within the first-level array) are `AND`'ed together.\n *\n * Defaults to no {@link ProjectInterfaces}, so all projects that match `includeProjectInterfaces`\n * will be included\n *\n * @example\n *\n * ```typescript\n * excludeProjectInterfaces: ['one', ['two', 'three']];\n * ```\n *\n * This filter condition will succeed and exclude projects whose `projectInterface`s fulfill at\n * least one of the following conditions (At least one entry in the array must match):\n *\n * - Include `one`\n * - Include both `two` and `three`.\n */\n excludeProjectInterfaces?: undefined | string | (string | string[])[];\n /**\n * String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory\n * Ids that provided each project's metadata (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if the projects should be included.\n *\n * Defaults to all Project Data Provider Factory Ids, so all projects that do not match\n * `excludePdpFactoryIds` will be included\n */\n includePdpFactoryIds?: undefined | string | string[];\n /**\n * String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory\n * Ids that provided each project's metadata (using the\n * [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test)\n * function) to determine if the projects should absolutely not be included even if they match\n * with `includeProjectInterfaces`.\n *\n * Defaults to none, so all projects that match `includePdpFactoryIds` will be included\n */\n excludePdpFactoryIds?: undefined | string | string[];\n}\n\n/** The data an extension provides to inform Platform.Bible of the user state it provides */\nexport interface UserStateContribution {\n [k: ReferencedItem]: UserState;\n}\n/** The data an extension provides to inform Platform.Bible of the project state it provides */\nexport interface ProjectStateContribution {\n [k: ReferencedItem]: UserState;\n}\n\n//----------------------------------------------------------------------------------------------\n// NOTE: If you change the schema below, make sure the TS types above get changed so they align.\n//----------------------------------------------------------------------------------------------\nconst settingsDefs = {\n projectSettingsContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the project settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/projectSettingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/projectSettingsGroup',\n },\n },\n ],\n },\n projectSettingsGroup: {\n description: 'Group of related settings definitions',\n type: 'object',\n properties: {\n label: {\n description: 'localizeKey that displays in the project settings dialog as the group name',\n $ref: '#/$defs/localizeKey',\n },\n description: {\n description:\n 'localizeKey that displays in the project settings dialog to describe the group',\n $ref: '#/$defs/localizeKey',\n },\n properties: {\n $ref: '#/$defs/projectSettingProperties',\n },\n },\n required: ['label', 'properties'],\n },\n projectSettingProperties: {\n description: 'Object whose keys are setting IDs and whose values are settings objects',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n $ref: '#/$defs/projectSetting',\n },\n },\n additionalProperties: false,\n },\n projectSetting: {\n description: \"A description of an extension's setting entry\",\n anyOf: [\n {\n $ref: '#/$defs/extensionControlledProjectSetting',\n },\n ],\n },\n extensionControlledProjectSetting: {\n description: 'Setting definition that is validated by the extension.',\n allOf: [\n {\n $ref: '#/$defs/projectSettingBase',\n },\n {\n $ref: '#/$defs/modifierExtensionControlled',\n },\n ],\n },\n projectSettingBase: {\n description: 'Base information needed to describe a project setting entry',\n allOf: [\n {\n $ref: '#/$defs/settingBase',\n },\n {\n $ref: '#/$defs/modifierProject',\n },\n ],\n },\n modifierProject: {\n description: 'Modifies setting type to be project setting',\n type: 'object',\n properties: {\n includeProjectInterfaces: {\n description:\n \"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should be included.\\n\\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to pass):\\n\\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition\\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition\\n\\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\\n\\nDefaults to all {@link ProjectInterfaces}, so all projects that do not match `excludeProjectInterfaces` will be included\\n\\n@example\\n\\n```typescript\\nincludeProjectInterfaces: ['one', ['two', 'three']];\\n```\\n\\nThis filter condition will succeed on projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\\n\\n- Include `one`\\n- Include both `two` and `three`.\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n },\n ],\n },\n excludeProjectInterfaces: {\n description:\n \"String representation of `RegExp` pattern(s) to match against projects' `projectInterface`s (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if they should absolutely not be included even if they match with `includeProjectInterfaces`.\\n\\nIf this is one string, it will be matched against `projectInterface`s. If this is an array, each entry is handled based on its type (at least one entry must match for this filter condition to exclude the project):\\n\\n- If the entry is a string, it will be matched against each `projectInterface`. If any match, the project will pass this filter condition and exclude the project\\n- If the entry is an array of strings, each will be matched against each `projectInterface`. If every string matches against at least one `projectInterface`, the project will pass this filter condition and exclude the project\\n\\nIn other words, each entry in the first-level array is `OR`'ed together. Each entry in second-level arrays (arrays within the first-level array) are `AND`'ed together.\\n\\nDefaults to no {@link ProjectInterfaces}, so all projects that match `includeProjectInterfaces` will be included\\n\\n@example\\n\\n```typescript\\nexcludeProjectInterfaces: ['one', ['two', 'three']];\\n```\\n\\nThis filter condition will succeed and exclude projects whose `projectInterface`s fulfill at least one of the following conditions (At least one entry in the array must match):\\n\\n- Include `one`\\n- Include both `two` and `three`.\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n },\n ],\n },\n includePdpFactoryIds: {\n description:\n \"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should be included.\\n\\nDefaults to all Project Data Provider Factory Ids, so all projects that do not match `excludePdpFactoryIds` will be included\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n excludePdpFactoryIds: {\n description:\n \"String representation of `RegExp` pattern(s) to match against the Project Data Provider Factory Ids that provided each project's metadata (using the [`test`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) function) to determine if the projects should absolutely not be included even if they match with `includeProjectInterfaces`.\\n\\nDefaults to none, so all projects that match `includePdpFactoryIds` will be included\",\n anyOf: [\n {\n type: 'null',\n },\n {\n type: 'string',\n },\n {\n type: 'array',\n items: { type: 'string' },\n },\n ],\n },\n },\n },\n settingsContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/settingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/settingsGroup',\n },\n },\n ],\n },\n settingsGroup: {\n description: 'Group of related settings definitions',\n type: 'object',\n properties: {\n label: {\n description: 'localizeKey that displays in the settings dialog as the group name',\n $ref: '#/$defs/localizeKey',\n },\n description: {\n description: 'localizeKey that displays in the settings dialog to describe the group',\n $ref: '#/$defs/localizeKey',\n },\n properties: {\n $ref: '#/$defs/settingProperties',\n },\n },\n required: ['label', 'properties'],\n },\n settingProperties: {\n description: 'Object whose keys are setting IDs and whose values are settings objects',\n type: 'object',\n patternProperties: {\n '^[\\\\w-]+\\\\.[\\\\w-]+$': {\n $ref: '#/$defs/setting',\n },\n },\n additionalProperties: false,\n },\n setting: {\n description: \"A description of an extension's setting entry\",\n anyOf: [\n {\n $ref: '#/$defs/extensionControlledSetting',\n },\n ],\n },\n extensionControlledSetting: {\n description: 'Setting definition that is validated by the extension.',\n allOf: [\n {\n $ref: '#/$defs/settingBase',\n },\n {\n $ref: '#/$defs/modifierExtensionControlled',\n },\n ],\n },\n settingBase: {\n description: 'Base information needed to describe a setting entry',\n allOf: [\n {\n $ref: '#/$defs/stateBase',\n },\n {\n type: 'object',\n properties: {\n label: {\n description: 'localizeKey that displays in the settings dialog as the setting name',\n $ref: '#/$defs/localizeKey',\n },\n description: {\n description: 'localizeKey that displays in the settings dialog to describe the setting',\n $ref: '#/$defs/localizeKey',\n },\n },\n required: ['label'],\n },\n ],\n },\n projectStateContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the project state it provides',\n $ref: '#/$defs/userStateProperties',\n },\n userStateContribution: {\n description:\n 'The data an extension provides to inform Platform.Bible of the user state it provides',\n $ref: '#/$defs/userStateProperties',\n },\n userStateProperties: {\n description: 'Object whose keys are state IDs and whose values are state objects',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n $ref: '#/$defs/userState',\n },\n },\n additionalProperties: false,\n },\n userState: {\n description: \"A description of an extension's user state entry\",\n anyOf: [\n {\n $ref: '#/$defs/extensionControlledState',\n },\n ],\n },\n extensionControlledState: {\n description: 'State definition that is validated by the extension.',\n allOf: [\n {\n $ref: '#/$defs/stateBase',\n },\n {\n $ref: '#/$defs/modifierExtensionControlled',\n },\n ],\n },\n modifierExtensionControlled: {\n description:\n 'Modifies state/setting type to be extension-controlled. \"Extension-controlled\" means the extension provides the component and the validator for the state/setting, so the state/setting is controlled by the extension.',\n not: {\n anyOf: [\n {\n type: 'object',\n required: ['platformType'],\n },\n {\n type: 'object',\n required: ['type'],\n },\n ],\n },\n },\n stateBase: {\n description: 'Base information needed to describe a state entry',\n type: 'object',\n properties: {\n default: {\n description: 'default value for the state/setting',\n type: 'any',\n },\n derivesFrom: {\n description:\n \"a state/setting ID whose value to set to this state/setting's starting value the first time this state/setting is loaded\",\n $ref: '#/$defs/id',\n },\n },\n required: ['default'],\n },\n localizeKey: {\n description: \"Identifier for a string that will be localized based on the user's UI language\",\n type: 'string',\n pattern: '^%[\\\\w\\\\-\\\\.]+%$',\n tsType: 'LocalizeKey',\n },\n id: {\n description: '',\n type: 'string',\n pattern: '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$',\n tsType: 'Id',\n },\n};\n\n/**\n * Json-schema-to-typescript has some added stuff that isn't actually compatible with JSON schema,\n * so we remove them here\n *\n * @param defs The `$defs` property of a JSON schema (will be modified in place)\n */\n// JSON schema types are weird, so we'll just be careful\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function removeJsonToTypeScriptTypesStuff(defs: any) {\n if (!defs) return;\n\n // JSON schema types are weird, so we'll just be careful\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Object.values(defs).forEach((def: any) => {\n if (!def.type) return;\n\n if ('tsType' in def) delete def.tsType;\n\n if (def.type === 'any') {\n delete def.type;\n return;\n }\n\n if (def.type === 'object') {\n removeJsonToTypeScriptTypesStuff(def.properties);\n }\n });\n}\n\nremoveJsonToTypeScriptTypesStuff(settingsDefs);\n\n/** JSON schema object that aligns with the ProjectSettingsContribution type */\nexport const projectSettingsDocumentSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'Project Settings Contribution',\n description:\n 'The data an extension provides to inform Platform.Bible of the project settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/projectSettingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/projectSettingsGroup',\n },\n },\n ],\n\n $defs: settingsDefs,\n};\n\nObject.freeze(projectSettingsDocumentSchema);\n\n/** JSON schema object that aligns with the {@link SettingsContribution} type */\nexport const settingsDocumentSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'Settings Contribution',\n description:\n 'The data an extension provides to inform Platform.Bible of the settings it provides',\n anyOf: [\n {\n $ref: '#/$defs/settingsGroup',\n },\n {\n type: 'array',\n items: {\n $ref: '#/$defs/settingsGroup',\n },\n },\n ],\n\n $defs: settingsDefs,\n};\n\nObject.freeze(settingsDocumentSchema);\n","//----------------------------------------------------------------------------------------------\n// NOTE: If you change any of the types, make sure the JSON schema at the end of this file gets\n// changed so they align.\n//----------------------------------------------------------------------------------------------\n\nimport { LocalizeKey } from 'menus.model';\nimport { removeJsonToTypeScriptTypesStuff } from './settings.model';\n\n/** Localized string value associated with this key */\nexport type LocalizedStringValue = string;\n\n/** The data an extension provides to inform Platform.Bible of the localized strings it provides. */\nexport interface LocalizedStringDataContribution {\n [k: string]: unknown;\n metadata?: StringsMetadata;\n localizedStrings?: {\n [k: string]: LanguageStrings;\n };\n}\n/**\n * Map whose keys are localized string keys and whose values provide additional non-locale-specific\n * information about the localized string key\n */\nexport interface StringsMetadata {\n [k: LocalizeKey]: StringMetadata;\n}\n/** Additional non-locale-specific information about a localized string key */\nexport interface StringMetadata {\n [k: string]: unknown;\n /**\n * Localized string key from which to get this value if one does not exist in the specified\n * language. If a new key/value pair needs to be made to replace an existing one, this could help\n * smooth over the transition if the meanings are close enough\n *\n * You can use Paratext 9 Localized String Keys here. Be sure to escape any % signs with a\n * backslash `\\`.\n */\n fallbackKey?: LocalizeKey;\n /**\n * Additional information provided by developers in English to help the translator to know how to\n * translate this localized string accurately\n */\n notes?: string;\n}\n/**\n * Map whose keys are localized string keys and whose values provide information about how to\n * localize strings for the localized string key\n */\nexport interface LanguageStrings {\n [k: LocalizeKey]: LocalizedStringValue;\n}\n\n//----------------------------------------------------------------------------------------------\n// NOTE: If you change the schema below, make sure the TS types above get changed so they align.\n//----------------------------------------------------------------------------------------------\n\nconst localizedStringsDefs = {\n languageStrings: {\n description:\n 'Map whose keys are localized string keys and whose values provide information about how to localize strings for the localized string key',\n type: 'object',\n patternProperties: {\n '^%[\\\\w\\\\-\\\\.]+%$': {\n $ref: '#/$defs/localizedStringValue',\n },\n },\n additionalProperties: false,\n },\n localizedStringValue: {\n description: 'Localized string value associated with this key',\n type: 'string',\n },\n stringsMetadata: {\n description:\n 'Map whose keys are localized string keys and whose values provide additional non-locale-specific information about the localized string key',\n type: 'object',\n patternProperties: {\n '^%[\\\\w\\\\-\\\\.]+%$': {\n $ref: '#/$defs/stringMetadata',\n },\n },\n additionalProperties: false,\n },\n stringMetadata: {\n description: 'Additional non-locale-specific information about a localized string key',\n type: 'object',\n properties: {\n fallbackKey: {\n description:\n 'Localized string key from which to get this value if one does not exist in the specified language. If a new key/value pair needs to be made to replace an existing one, this could help smooth over the transition if the meanings are close enough.\\nYou can use Paratext 9 Localized String Keys here. Be sure to escape any % signs with a backslash `\\\\`.',\n type: 'string',\n pattern: \"^%[\\\\w\\\\-\\\\.;&,' (){}#:/\\\\\\\\?%⋮|[\\\\]“”‘’!~*\\u00A0+=•`…\\u200B↑↓]+%$\",\n tsType: 'LocalizeKey',\n },\n notes: {\n description:\n 'Additional information provided by developers in English to help the translator to know how to translate this localized string accurately',\n type: 'string',\n },\n },\n },\n localizeKey: {\n description: \"Identifier for a string that will be localized based on the user's UI language\",\n type: 'string',\n pattern: '^%[\\\\w\\\\-\\\\.]+%$',\n tsType: 'LocalizeKey',\n },\n};\n\nremoveJsonToTypeScriptTypesStuff(localizedStringsDefs);\n\n/** JSON schema object that aligns with the LocalizedStringDataContribution type */\nexport const localizedStringsDocumentSchema = {\n $schema: 'https://json-schema.org/draft/2020-12/schema',\n title: 'Localized String Data Contribution',\n description:\n 'The data an extension provides to inform Platform.Bible of the localized strings it provides.',\n type: 'object',\n properties: {\n metadata: {\n $ref: '#/$defs/stringsMetadata',\n },\n localizedStrings: {\n type: 'object',\n additionalProperties: {\n $ref: '#/$defs/languageStrings',\n },\n },\n },\n $defs: localizedStringsDefs,\n};\n\nObject.freeze(localizedStringsDocumentSchema);\n","//----------------------------------------------------------------------------------------------\n// NOTE: If you change any of the types, make sure the JSON schema at the end of this file gets\n// changed so they align.\n//----------------------------------------------------------------------------------------------\n\nimport { ReplaceType } from './util';\n\n/** Identifier for a string that will be localized in a menu based on the user's UI language */\nexport type LocalizeKey = `%${string}%`;\n\n/** Name of some UI element (i.e., tab, column, group, menu item) or some PAPI object (i.e., command) */\nexport type ReferencedItem = `${string}.${string}`;\n\nexport type OrderedItem = {\n /** Relative order of this item compared to other items in the same parent/scope (sorted ascending) */\n order: number;\n};\n\nexport type OrderedExtensibleContainer = OrderedItem & {\n /** Determines whether other items can be added to this after it has been defined */\n isExtensible?: boolean;\n};\n\n/** Group of menu items that belongs in a column */\nexport type MenuGroupDetailsInColumn = OrderedExtensibleContainer & {\n /** ID of column in which this group resides */\n column: ReferencedItem;\n};\n\n/** Group of menu items that belongs in a submenu */\nexport type MenuGroupDetailsInSubMenu = OrderedExtensibleContainer & {\n /** ID of menu item hosting the submenu in which this group resides */\n menuItem: ReferencedItem;\n};\n\n/** Column that includes header text in a menu */\nexport type MenuColumnWithHeader = OrderedExtensibleContainer & {\n /** Key that represents the text of the header text of the column */\n label: LocalizeKey;\n};\n\nexport type MenuItemBase = OrderedItem & {\n /** Menu group to which this menu item belongs */\n group: ReferencedItem;\n /** Key that represents the text of this menu item to display */\n label: LocalizeKey;\n /** Key that represents words the platform should reference when users are searching for menu items */\n searchTerms?: LocalizeKey;\n /** Key that represents the text to display if a mouse pointer hovers over the menu item */\n tooltip?: LocalizeKey;\n /** Additional information provided by developers to help people who perform localization */\n localizeNotes: string;\n};\n\n/** Menu item that hosts a submenu */\nexport type MenuItemContainingSubmenu = MenuItemBase & {\n /** ID for this menu item that holds a submenu */\n id: ReferencedItem;\n};\n\n/** Menu item that runs a command */\nexport type MenuItemContainingCommand = MenuItemBase & {\n /** Name of the PAPI command to run when this menu item is selected. */\n command: ReferencedItem;\n /**\n * Uri path to the icon to display after the menu text. Ex:\n * `papi-extension://helloWorld/assets/icon.png`\n */\n iconPathAfter?: string;\n /**\n * Uri path to the icon to display before the menu text. Ex:\n * `papi-extension://helloWorld/assets/icon.png`\n */\n iconPathBefore?: string;\n};\n\n/**\n * Group of menu items that can be combined with other groups to form a single context menu/submenu.\n * Groups are separated using a line within the menu/submenu.\n */\nexport type GroupsInSingleColumnMenu = {\n /** Named menu group */\n [property: ReferencedItem]: OrderedExtensibleContainer | MenuGroupDetailsInSubMenu;\n};\n\n/**\n * Group of menu items that can be combined with other groups to form a single menu/submenu within a\n * multi-column menu. Groups are separated using a line within the menu/submenu.\n */\nexport type GroupsInMultiColumnMenu = {\n /** Named menu group */\n [property: ReferencedItem]: MenuGroupDetailsInColumn | MenuGroupDetailsInSubMenu;\n};\n\n/** Group of columns that can be combined with other columns to form a multi-column menu */\nexport type ColumnsWithHeaders = {\n /** Named column of a menu */\n [property: ReferencedItem]: MenuColumnWithHeader;\n /** Defines whether columns can be added to this multi-column menu */\n isExtensible?: boolean;\n};\n\n/** Menu that contains a column without a header */\nexport type SingleColumnMenu = {\n /** Groups that belong in this menu */\n groups: GroupsInSingleColumnMenu;\n /** List of menu items that belong in this menu */\n items: (MenuItemContainingCommand | MenuItemContainingSubmenu)[];\n};\n\n/** Menu that contains multiple columns with headers */\nexport type MultiColumnMenu = {\n /** Columns that belong in this menu */\n columns: ColumnsWithHeaders;\n /** Groups that belong in this menu */\n groups: GroupsInMultiColumnMenu;\n /** List of menu items that belong in this menu */\n items: (MenuItemContainingCommand | MenuItemContainingSubmenu)[];\n};\n\n/** Menus for one single web view */\nexport type WebViewMenu = {\n /** Indicates whether the platform default menus should be included for this webview */\n includeDefaults: boolean | undefined;\n /** Menu that opens when you click on the top left corner of a tab */\n topMenu: MultiColumnMenu | undefined;\n /** Menu that opens when you right click on the main body/area of a tab */\n contextMenu: SingleColumnMenu | undefined;\n};\n\n/** Menus for all web views */\nexport type WebViewMenus = {\n /** Named web view */\n [property: ReferencedItem]: WebViewMenu;\n};\n\n/** Platform.Bible menus before they are localized */\nexport type PlatformMenus = {\n /** Top level menu for the application */\n mainMenu: MultiColumnMenu;\n /** Menus that apply per web view in the application */\n webViewMenus: WebViewMenus;\n /** Default context menu for web views that don't specify their own */\n defaultWebViewContextMenu: SingleColumnMenu;\n /** Default top menu for web views that don't specify their own */\n defaultWebViewTopMenu: MultiColumnMenu;\n};\n\n/**\n * Type that converts any menu type before it is localized to what it is after it is localized. This\n * can be applied to any menu type as needed.\n */\nexport type Localized = ReplaceType, ReferencedItem, string>;\n\n//----------------------------------------------------------------------------------------------\n// NOTE: If you change the schema below, make sure the TS types above get changed so they align.\n//----------------------------------------------------------------------------------------------\n/** JSON schema object that aligns with the PlatformMenus type */\nexport const menuDocumentSchema = {\n title: 'Platform.Bible menus',\n type: 'object',\n properties: {\n mainMenu: {\n description: 'Top level menu for the application',\n $ref: '#/$defs/multiColumnMenu',\n },\n defaultWebViewTopMenu: {\n description: \"Default top menu for web views that don't specify their own\",\n $ref: '#/$defs/multiColumnMenu',\n },\n defaultWebViewContextMenu: {\n description: \"Default context menu for web views that don't specify their own\",\n $ref: '#/$defs/singleColumnMenu',\n },\n webViewMenus: {\n description: 'Menus that apply per web view in the application',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n $ref: '#/$defs/menusForOneWebView',\n },\n },\n additionalProperties: false,\n },\n },\n required: ['mainMenu', 'defaultWebViewTopMenu', 'defaultWebViewContextMenu', 'webViewMenus'],\n additionalProperties: false,\n $defs: {\n localizeKey: {\n description:\n \"Identifier for a string that will be localized in a menu based on the user's UI language\",\n type: 'string',\n pattern: '^%[\\\\w\\\\-\\\\.]+%$',\n },\n referencedItem: {\n description:\n 'Name of some UI element (i.e., tab, column, group, menu item) or some PAPI object (i.e., command)',\n type: 'string',\n pattern: '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$',\n },\n columnsWithHeaders: {\n description:\n 'Group of columns that can be combined with other columns to form a multi-column menu',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n description: 'Single column with a header string',\n type: 'object',\n properties: {\n label: {\n description: 'Header text for this this column in the UI',\n $ref: '#/$defs/localizeKey',\n },\n localizeNotes: {\n description:\n 'Additional information provided by developers to help people who perform localization',\n type: 'string',\n },\n order: {\n description:\n 'Relative order of this column compared to other columns (sorted ascending)',\n type: 'number',\n },\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add menu groups to this column',\n type: 'boolean',\n },\n },\n required: ['label', 'order'],\n additionalProperties: false,\n },\n },\n properties: {\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add columns to this multi-column menu',\n type: 'boolean',\n },\n },\n },\n menuGroups: {\n description:\n 'Group of menu items that can be combined with other groups to form a single menu/submenu. Groups are separated using a line within the menu/submenu.',\n type: 'object',\n patternProperties: {\n '^[\\\\w\\\\-]+\\\\.[\\\\w\\\\-]+$': {\n description: 'Single group that contains menu items',\n type: 'object',\n oneOf: [\n {\n properties: {\n column: {\n description:\n 'Column where this group belongs, not required for single column menus',\n $ref: '#/$defs/referencedItem',\n },\n order: {\n description:\n 'Relative order of this group compared to other groups in the same column or submenu (sorted ascending)',\n type: 'number',\n },\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add menu items to this menu group',\n type: 'boolean',\n },\n },\n required: ['order'],\n additionalProperties: false,\n },\n {\n properties: {\n menuItem: {\n description: 'Menu item that anchors the submenu where this group belongs',\n $ref: '#/$defs/referencedItem',\n },\n order: {\n description:\n 'Relative order of this group compared to other groups in the same column or submenu (sorted ascending)',\n type: 'number',\n },\n isExtensible: {\n description:\n 'Defines whether contributions are allowed to add menu items to this menu group',\n type: 'boolean',\n },\n },\n required: ['menuItem', 'order'],\n additionalProperties: false,\n },\n ],\n },\n },\n additionalProperties: false,\n },\n menuItem: {\n description:\n 'Single item in a menu that can be clicked on to take an action or can be the parent of a submenu',\n type: 'object',\n oneOf: [\n {\n properties: {\n id: {\n description: 'ID for this menu item that holds a submenu',\n $ref: '#/$defs/referencedItem',\n },\n },\n required: ['id'],\n },\n {\n properties: {\n command: {\n description: 'Name of the PAPI command to run when this menu item is selected.',\n $ref: '#/$defs/referencedItem',\n },\n iconPathBefore: {\n description:\n 'Uri path to the icon to display before the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`',\n type: 'string',\n },\n iconPathAfter: {\n description:\n 'Uri path to the icon to display after the menu text. Ex: `papi-extension://helloWorld/assets/icon.png`',\n type: 'string',\n },\n },\n required: ['command'],\n },\n ],\n properties: {\n label: {\n description: 'Key that represents the text of this menu item to display',\n $ref: '#/$defs/localizeKey',\n },\n tooltip: {\n description:\n 'Key that represents the text to display if a mouse pointer hovers over the menu item',\n $ref: '#/$defs/localizeKey',\n },\n searchTerms: {\n description:\n 'Key that represents additional words the platform should reference when users are searching for menu items',\n $ref: '#/$defs/localizeKey',\n },\n localizeNotes: {\n description:\n 'Additional information provided by developers to help people who perform localization',\n type: 'string',\n },\n group: {\n description: 'Group to which this menu item belongs',\n $ref: '#/$defs/referencedItem',\n },\n order: {\n description:\n 'Relative order of this menu item compared to other menu items in the same group (sorted ascending)',\n type: 'number',\n },\n },\n required: ['label', 'group', 'order'],\n unevaluatedProperties: false,\n },\n groupsAndItems: {\n description: 'Core schema for a column',\n type: 'object',\n properties: {\n groups: {\n description: 'Groups that belong in this menu',\n $ref: '#/$defs/menuGroups',\n },\n items: {\n description: 'List of menu items that belong in this menu',\n type: 'array',\n items: { $ref: '#/$defs/menuItem' },\n uniqueItems: true,\n },\n },\n required: ['groups', 'items'],\n },\n singleColumnMenu: {\n description: 'Menu that contains a column without a header',\n type: 'object',\n allOf: [{ $ref: '#/$defs/groupsAndItems' }],\n unevaluatedProperties: false,\n },\n multiColumnMenu: {\n description: 'Menu that can contain multiple columns with headers',\n type: 'object',\n allOf: [\n { $ref: '#/$defs/groupsAndItems' },\n {\n properties: {\n columns: {\n description: 'Columns that belong in this menu',\n $ref: '#/$defs/columnsWithHeaders',\n },\n },\n required: ['columns'],\n },\n ],\n unevaluatedProperties: false,\n },\n menusForOneWebView: {\n description: 'Set of menus that are associated with a single tab',\n type: 'object',\n properties: {\n includeDefaults: {\n description:\n 'Indicates whether the platform default menus should be included for this webview',\n type: 'boolean',\n },\n topMenu: {\n description: 'Menu that opens when you click on the top left corner of a tab',\n $ref: '#/$defs/multiColumnMenu',\n },\n contextMenu: {\n description: 'Menu that opens when you right click on the main body/area of a tab',\n $ref: '#/$defs/singleColumnMenu',\n },\n },\n additionalProperties: false,\n },\n },\n};\n\nObject.freeze(menuDocumentSchema);\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record} current\n * @param {string} element\n * @returns {Record}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long\n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//